@sumaris-net/ngx-components 2.7.3-rc57 → 2.7.3-rc59
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/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +4 -4
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +24 -20
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +7 -5
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +4 -4
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +4 -3
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +5 -4
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +3 -3
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +3 -3
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +12 -12
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +12 -11
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +9 -10
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +9 -10
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +8 -9
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +10 -10
- package/esm2022/src/app/shared/material/testing/common.test.mjs +14 -15
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +5 -4
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +8 -4
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +4 -2
- package/fesm2022/sumaris-net.ngx-components.mjs +364 -349
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +3 -2
- package/src/app/shared/material/datetime/material.date.d.ts +2 -2
- package/src/app/shared/material/datetime/material.dateshort.d.ts +1 -1
- package/src/app/shared/material/datetime/material.datetime.d.ts +1 -1
- package/src/app/shared/material/duration/material.duration.d.ts +1 -1
- package/src/app/shared/material/text/text-form.component.d.ts +3 -1
- package/src/app/shared/pipes/string.pipes.d.ts +2 -1
- package/src/assets/manifest.json +1 -1
|
@@ -8,13 +8,13 @@ import { isMobile } from '../../platforms';
|
|
|
8
8
|
import { IonicSlides } from '@ionic/angular';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@angular/forms";
|
|
11
|
-
import * as i2 from "@angular
|
|
12
|
-
import * as i3 from "@
|
|
13
|
-
import * as i4 from "@angular/material/
|
|
14
|
-
import * as i5 from "@
|
|
15
|
-
import * as i6 from "@
|
|
16
|
-
import * as i7 from "@angular/material/
|
|
17
|
-
import * as i8 from "@angular/
|
|
11
|
+
import * as i2 from "@ionic/angular";
|
|
12
|
+
import * as i3 from "@angular/material/button";
|
|
13
|
+
import * as i4 from "@angular/material/icon";
|
|
14
|
+
import * as i5 from "@ngx-translate/core";
|
|
15
|
+
import * as i6 from "@angular/material/form-field";
|
|
16
|
+
import * as i7 from "@angular/material/input";
|
|
17
|
+
import * as i8 from "@angular/common";
|
|
18
18
|
import * as i9 from "../../pipes/types.pipes";
|
|
19
19
|
const DEFAULT_VALUE_ACCESSOR = {
|
|
20
20
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -305,11 +305,11 @@ export class MatSwipeField {
|
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatSwipeField, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
308
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
308
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatSwipeField, selector: "mat-swipe-field", inputs: { logPrefix: "logPrefix", formControl: "formControl", formControlName: "formControlName", floatLabel: "floatLabel", appearance: "appearance", placeholder: "placeholder", debug: "debug", required: "required", mobile: "mobile", clearable: "clearable", equals: "equals", displayWith: "displayWith", displayAttributes: "displayAttributes", appAutofocus: "appAutofocus", classList: ["class", "classList"], tabindex: "tabindex", items: "items" }, outputs: { onClick: "click", blurred: "blur", focused: "focus" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }, { propertyName: "swiperRef", first: true, predicate: ["swiper"], descendants: true, static: true }, { propertyName: "prevButton", first: true, predicate: ["prevButton"], descendants: true }, { propertyName: "nextButton", first: true, predicate: ["nextButton"], descendants: true }], ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n matInput\n #fakeInput\n type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\"\n />\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <swiper-container\n #swiper\n [modules]=\"swiperModules\"\n [speed]=\"100\"\n [slidesPerView]=\"1\"\n (init)=\"swiperLoaded()\"\n (reachbeginning)=\"reachStart(true)\"\n (reachend)=\"reachEnd(true)\"\n (slidenexttransitionend)=\"reachStart(false)\"\n (slideprevtransitionend)=\"reachEnd(false)\"\n (slidechange)=\"slideChanged()\"\n >\n @for (item of $items | async; track item) {\n <swiper-slide>\n <ion-label>{{ displayWith(item) }}</ion-label>\n </swiper-slide>\n }\n </swiper-container>\n </div>\n\n <button\n #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button\n #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (formControl.hasError('required')) {\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n }\n @if (formControl.hasError('entity')) {\n <mat-error translate>ERROR.FIELD_INVALID</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:inline-block;width:100%;position:relative}input.hidden{display:none}.slides-container{padding-inline-start:40px;padding-inline-end:40px}.slides-container .swiper-slide{font-size:16px!important}.slides-container.hidden{visibility:hidden;height:0!important}.button-prev,.button-next{width:24px;height:24px;padding:0;position:absolute;top:15px;z-index:10}.button-prev ion-icon,.button-prev .mat-icon,.button-next ion-icon,.button-next .mat-icon{font-size:calculateRem(18px);line-height:1.125}.button-prev .mat-mdc-button-touch-target,.button-next .mat-mdc-button-touch-target{width:24px}.button-prev{left:0;right:auto}.button-next{left:auto;right:5px}\n"], dependencies: [{ kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.AsFloatLabelTypePipe, name: "asFloatLabelType" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
309
309
|
}
|
|
310
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatSwipeField, decorators: [{
|
|
311
311
|
type: Component,
|
|
312
|
-
args: [{ selector: 'mat-swipe-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\"\n>\n
|
|
312
|
+
args: [{ selector: 'mat-swipe-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n matInput\n #fakeInput\n type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\"\n />\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <swiper-container\n #swiper\n [modules]=\"swiperModules\"\n [speed]=\"100\"\n [slidesPerView]=\"1\"\n (init)=\"swiperLoaded()\"\n (reachbeginning)=\"reachStart(true)\"\n (reachend)=\"reachEnd(true)\"\n (slidenexttransitionend)=\"reachStart(false)\"\n (slideprevtransitionend)=\"reachEnd(false)\"\n (slidechange)=\"slideChanged()\"\n >\n @for (item of $items | async; track item) {\n <swiper-slide>\n <ion-label>{{ displayWith(item) }}</ion-label>\n </swiper-slide>\n }\n </swiper-container>\n </div>\n\n <button\n #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button\n #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (formControl.hasError('required')) {\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n }\n @if (formControl.hasError('entity')) {\n <mat-error translate>ERROR.FIELD_INVALID</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:inline-block;width:100%;position:relative}input.hidden{display:none}.slides-container{padding-inline-start:40px;padding-inline-end:40px}.slides-container .swiper-slide{font-size:16px!important}.slides-container.hidden{visibility:hidden;height:0!important}.button-prev,.button-next{width:24px;height:24px;padding:0;position:absolute;top:15px;z-index:10}.button-prev ion-icon,.button-prev .mat-icon,.button-next ion-icon,.button-next .mat-icon{font-size:calculateRem(18px);line-height:1.125}.button-prev .mat-mdc-button-touch-target,.button-next .mat-mdc-button-touch-target{width:24px}.button-prev{left:0;right:auto}.button-next{left:auto;right:5px}\n"] }]
|
|
313
313
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormGroupDirective, decorators: [{
|
|
314
314
|
type: Optional
|
|
315
315
|
}] }], propDecorators: { logPrefix: [{
|
|
@@ -369,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
369
369
|
type: ViewChild,
|
|
370
370
|
args: ['nextButton']
|
|
371
371
|
}] } });
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuc3dpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9zd2lwZS9tYXRlcmlhbC5zd2lwZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3N3aXBlL21hdGVyaWFsLnN3aXBlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QyxpQkFBaUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQUk3QyxNQUFNLHNCQUFzQixHQUFhO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDNUMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLGFBQWE7SUErRlo7SUFDVTtJQS9GZCxpQkFBaUIsR0FBcUIsSUFBSSxD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QUFDLFlBQVk7Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBQcm92aWRlcixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGlzT2JzZXJ2YWJsZSwgbm9vcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwsIGpvaW5Qcm9wZXJ0aWVzUGF0aCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBJbnB1dEVsZW1lbnQsIHNlbGVjdElucHV0Q29udGVudCB9IGZyb20gJy4uLy4uL2lucHV0cyc7XG5pbXBvcnQgeyBBcHBGbG9hdExhYmVsVHlwZSwgRGlzcGxheUZuLCBFcXVhbHNGbiB9IGZyb20gJy4uLy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgZmlyc3RUcnVlUHJvbWlzZSB9IGZyb20gJy4uLy4uL29ic2VydmFibGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vLi4vcGxhdGZvcm1zJztcbmltcG9ydCB7IFN3aXBlciB9IGZyb20gJ3N3aXBlci90eXBlcyc7XG5pbXBvcnQgeyBJb25pY1NsaWRlcyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmNvbnN0IERFRkFVTFRfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0U3dpcGVGaWVsZCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXN3aXBlLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwuc3dpcGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwuc3dpcGUuaHRtbCcsXG4gIHByb3ZpZGVyczogW0RFRkFVTFRfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0U3dpcGVGaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgSW5wdXRFbGVtZW50LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIF9pdGVtc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF93cml0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX3RhYmluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgX3N3aXBlcjogU3dpcGVyO1xuICBwcm90ZWN0ZWQgcHJldmlvdXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIG5leHREaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHNob3dTbGlkZXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkICRpdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCAkbG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHN3aXBlck1vZHVsZXMgPSBbSW9uaWNTbGlkZXNdO1xuXG4gIEBJbnB1dCgpIGxvZ1ByZWZpeCA9ICdbbWF0LXN3aXBlLWZpZWxkXSc7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZTtcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9iaWxlOiBib29sZWFuO1xuICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgZXF1YWxzOiBFcXVhbHNGbiB8IG51bGw7XG4gIEBJbnB1dCgpIGRpc3BsYXlXaXRoOiBEaXNwbGF5Rm4gfCBudWxsO1xuICBASW5wdXQoKSBkaXNwbGF5QXR0cmlidXRlczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGFwcEF1dG9mb2N1czogYm9vbGVhbjtcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzTGlzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3RhYmluZGV4ICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVUYWJJbmRleCgpKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiaW5kZXg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IE9ic2VydmFibGU8YW55W10+IHwgYW55W10pIHtcbiAgICAvLyBSZW1vdmUgcHJldmlvdXMgc3Vic2NyaXB0aW9uIG9uIGl0ZW1zLCAoaWYgZXhpdHMpXG4gICAgaWYgKHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5sb2dQcmVmaXh9IEl0ZW1zIHJlY2VpdmVkIHR3aWNlICFgKTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5yZW1vdmUodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pO1xuICAgICAgdGhpcy5faXRlbXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy5faXRlbXNTdWJzY3JpcHRpb24gPSB2YWx1ZS5zdWJzY3JpYmUoKHYpID0+IHRoaXMubG9hZEl0ZW1zKHYpKTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuJGl0ZW1zLmdldFZhbHVlKCkpIHtcbiAgICAgICAgdGhpcy5sb2FkSXRlbXModmFsdWUgYXMgYW55W10pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBpdGVtcygpOiBPYnNlcnZhYmxlPGFueVtdPiB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4kaXRlbXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBpdGVtQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuJGl0ZW1zLmdldFZhbHVlKCkgfHwgW10pLmxlbmd0aDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCdjbGljaycpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCdibHVyJykgYmx1cnJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoJ2ZvY3VzJykgZm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdmYWtlSW5wdXQnKSBmYWtlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3N3aXBlcicsIHsgc3RhdGljOiB0cnVlIH0pIHN3aXBlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgncHJldkJ1dHRvbicpIHByZXZCdXR0b246IE1hdEJ1dHRvbjtcbiAgQFZpZXdDaGlsZCgnbmV4dEJ1dHRvbicpIG5leHRCdXR0b246IE1hdEJ1dHRvbjtcblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBlbmFibGVkKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3dpcGVyID0gdGhpcy5zd2lwZXJSZWYubmF0aXZlRWxlbWVudC5zd2lwZXIgYXMgU3dpcGVyO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPVxuICAgICAgdGhpcy5mb3JtQ29udHJvbCB8fCAodGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5mb3JtR3JvdXBEaXIgJiYgKHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2wpKTtcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSAnZm9ybUNvbnRyb2wnIG9yICdmb3JtQ29udHJvbE5hbWUnIGluIDxtYXQtc3dpcGUtZmllbGQ+LlwiKTtcblxuICAgIC8vIERlZmF1bHQgdmFsdWVzXG4gICAgdGhpcy5kaXNwbGF5QXR0cmlidXRlcyA9IHRoaXMuZGlzcGxheUF0dHJpYnV0ZXMgfHwgWydsYWJlbCcsICduYW1lJ107XG4gICAgdGhpcy5kaXNwbGF5V2l0aCA9IHRoaXMuZGlzcGxheVdpdGggfHwgKChvYmopID0+IG9iaiAmJiBqb2luUHJvcGVydGllc1BhdGgob2JqLCB0aGlzLmRpc3BsYXlBdHRyaWJ1dGVzKSk7XG4gICAgdGhpcy5lcXVhbHMgPSB0aGlzLmVxdWFscyB8fCAoKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xICYmIG8yICYmIG8xLmlkID09PSBvMi5pZCk7XG4gICAgdGhpcy5tb2JpbGUgPSBpc05vdE5pbCh0aGlzLm1vYmlsZSkgPyB0aGlzLm1vYmlsZSA6IGlzTW9iaWxlKHdpbmRvdyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl92YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiRpdGVtcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgX29uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gSGlkZSB0aGUgZmFrZSBpbnB1dFxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICAvLyBzaG93IHNsaWRlcyBjb21wb25lbnRcbiAgICB0aGlzLnNob3dTbGlkZXMgPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmV2QnV0dG9uKSB7XG4gICAgICAgIHRoaXMucHJldkJ1dHRvbi5mb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICAgIH0pO1xuXG4gICAgaWYgKGlzTmlsKHRoaXMuX3ZhbHVlKSkge1xuICAgICAgLy8gU2xpZGUgdG8gZmlyc3QgYW5kIGFmZmVjdCB2YWx1ZVxuICAgICAgdGhpcy5zbGlkZVRvKDApO1xuICAgICAgdGhpcy5zbGlkZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UsIGJlY2F1c2UsIHRoaXMgY29tcG9uZW50IGhhcyBhIHRlbXBvcmFyeSBjb21wb25lbnQgZGlzcGxheWVkIGJlZm9yZSB0aGUgZmlyc3QgZm9jdXMgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVGFiSW5kZXgoKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuX3RhYmluZGV4KSB8fCB0aGlzLl90YWJpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgaWYgKHRoaXMuc2hvd1NsaWRlcykge1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5fdGFiaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnByZXZCdXR0b24gJiYgdGhpcy5uZXh0QnV0dG9uKSB7XG4gICAgICB0aGlzLnByZXZCdXR0b24uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1NsaWRlcyA/IHRoaXMuX3RhYmluZGV4IDogLTE7XG4gICAgICB0aGlzLm5leHRCdXR0b24uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1NsaWRlcyA/IHRoaXMuX3RhYmluZGV4ICsgMSA6IC0xO1xuICAgIH1cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjtcblxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGlmICghdGhpcy5lcXVhbHModmFsdWUsIHRoaXMuX3ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2hvd1NsaWRlcyA9IGlzTm90TmlsKHRoaXMuX3ZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlU2xpZGVzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlVGFiSW5kZXgoKSk7XG4gICAgfVxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbGVhclZhbHVlKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBjbGVhciB2YWx1ZWApO1xuICAgIHRoaXMuX3ZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5zaG93U2xpZGVzID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgICB0aGlzLnNsaWRlVG8oMCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICAgICAgfSwgMTAwKTtcbiAgICB9KTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKG51bGwpO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubG9ja1N3aXBlcyhpc0Rpc2FibGVkKTtcbiAgICB0aGlzLnVwZGF0ZUJ1dHRvbnMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2VsZWN0SW5wdXRDb250ZW50ID0gc2VsZWN0SW5wdXRDb250ZW50O1xuXG4gIHByZXZpb3VzKCkge1xuICAgIHRoaXMuX3N3aXBlci5zbGlkZVByZXYoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fc3dpcGVyLnNsaWRlTmV4dCgpO1xuICB9XG5cbiAgcmVhY2hTdGFydChyZWFjaGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wcmV2aW91c0Rpc2FibGVkID0gcmVhY2hlZDtcbiAgfVxuXG4gIHJlYWNoRW5kKHJlYWNoZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm5leHREaXNhYmxlZCA9IHJlYWNoZWQ7XG4gIH1cblxuICBzd2lwZXJMb2FkZWQoKSB7XG4gICAgY29uc29sZS5sb2coJ1RPRE8gc3dpcGVyIGluaXQnKTtcbiAgICB0aGlzLl9zd2lwZXIgPSB0aGlzLnN3aXBlclJlZi5uYXRpdmVFbGVtZW50LnN3aXBlcjtcbiAgICB0aGlzLiRsb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHNsaWRlQ2hhbmdlZCgpIHtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuX3N3aXBlci5hY3RpdmVJbmRleDtcbiAgICBpZiAodGhpcy5fd3JpdGluZyB8fCBpc05pbChhY3RpdmVJbmRleCkpIHJldHVybjtcblxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuJGl0ZW1zLmdldFZhbHVlKCkgfHwgW10pW2FjdGl2ZUluZGV4XSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IHNsaWRlIGNoYW5nZWQgQWN0aXZlSW5kZXg6JHthY3RpdmVJbmRleH0sIG5ldyB2YWx1ZToke3ZhbHVlfWApO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNoZWNrSWZUb3VjaGVkKCk7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBsb2NrU3dpcGVzKGxvY2s6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSAhbG9jaztcbiAgICB0aGlzLl9zd2lwZXIuYWxsb3dTbGlkZVByZXYgPSAhbG9jaztcbiAgICB0aGlzLl9zd2lwZXIuYWxsb3dUb3VjaE1vdmUgPSAhbG9jaztcbiAgICB0aGlzLl9zd2lwZXIudXBkYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJdGVtcyhpdGVtczogYW55W10pIHtcbiAgICB0aGlzLiRsb2FkZWQubmV4dChmYWxzZSk7XG4gICAgdGhpcy4kaXRlbXMubmV4dChpdGVtcyk7XG4gICAgdGhpcy5yZWFkeSgpLnRoZW4oKCkgPT4gdGhpcy5fc3dpcGVyLnVwZGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZlRvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2xpZGVzKCkge1xuICAgIGlmICh0aGlzLnNob3dTbGlkZXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1JbmRleCA9ICh0aGlzLiRpdGVtcy5nZXRWYWx1ZSgpIHx8IFtdKS5maW5kSW5kZXgoKHZhbHVlKSA9PiB0aGlzLmVxdWFscyh2YWx1ZSwgdGhpcy5fdmFsdWUpKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPj0gMCkge1xuICAgICAgICB0aGlzLnNsaWRlVG8oaXRlbUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLmxvZ1ByZWZpeH0gSXRlbSBub3QgZm91bmRgLCB0aGlzLl92YWx1ZSk7XG4gICAgICAgIHRoaXMuc2xpZGVUbygwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNsaWRlVG8oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuX3N3aXBlci5zbGlkZVRvKGluZGV4LCAwLCBmYWxzZSk7XG4gICAgdGhpcy5fc3dpcGVyLnVwZGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQnV0dG9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCdXR0b25zKCkge1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fc3dpcGVyLmFjdGl2ZUluZGV4O1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSB1cGRhdGUgYnV0dG9ucyBBY3RpdmVJbmRleDoke2FjdGl2ZUluZGV4fWApO1xuICAgIHRoaXMucHJldmlvdXNEaXNhYmxlZCA9IGFjdGl2ZUluZGV4ID09PSAwIHx8IHRoaXMuZGlzYWJsZWQ7XG4gICAgdGhpcy5uZXh0RGlzYWJsZWQgPSBhY3RpdmVJbmRleCA9PT0gdGhpcy5pdGVtQ291bnQgLSAxIHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBub3QgdXNlZCAuLi5cbiAgYXN5bmMgZ2V0U3dpcGVyKCk6IFByb21pc2U8U3dpcGVyPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLl9zd2lwZXI7XG4gIH1cblxuICBhc3luYyByZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBXYWl0IGxvYWRlZFxuICAgIGlmICh0aGlzLiRsb2FkZWQuZ2V0VmFsdWUoKSA9PT0gZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSB3YWl0aW5nIHNsaWRlcyB0byBiZSByZWFkeS4uLmApO1xuICAgICAgYXdhaXQgZmlyc3RUcnVlUHJvbWlzZSh0aGlzLiRsb2FkZWQpO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkXG4gIFtmbG9hdExhYmVsXT1cInNob3dTbGlkZXMgJiYgKCFmbG9hdExhYmVsIHx8IGZsb2F0TGFiZWwgPT09ICdhdXRvJykgPyAnYWx3YXlzJyA6IChmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZSlcIlxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCIhIXBsYWNlaG9sZGVyICYmIGZsb2F0TGFiZWwgIT09ICduZXZlcidcIj5cbiAgICB7eyBwbGFjZWhvbGRlciB9fVxuICA8L21hdC1sYWJlbD5cbiAgPGlucHV0XG4gICAgbWF0SW5wdXRcbiAgICAjZmFrZUlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dTbGlkZXNcIlxuICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gIC8+XG5cbiAgPGRpdiBjbGFzcz1cInNsaWRlcy1jb250YWluZXJcIiBbY2xhc3MuaGlkZGVuXT1cIiFzaG93U2xpZGVzXCI+XG4gICAgPHN3aXBlci1jb250YWluZXJcbiAgICAgICNzd2lwZXJcbiAgICAgIFttb2R1bGVzXT1cInN3aXBlck1vZHVsZXNcIlxuICAgICAgW3NwZWVkXT1cIjEwMFwiXG4gICAgICBbc2xpZGVzUGVyVmlld109XCIxXCJcbiAgICAgIChpbml0KT1cInN3aXBlckxvYWRlZCgpXCJcbiAgICAgIChyZWFjaGJlZ2lubmluZyk9XCJyZWFjaFN0YXJ0KHRydWUpXCJcbiAgICAgIChyZWFjaGVuZCk9XCJyZWFjaEVuZCh0cnVlKVwiXG4gICAgICAoc2xpZGVuZXh0dHJhbnNpdGlvbmVuZCk9XCJyZWFjaFN0YXJ0KGZhbHNlKVwiXG4gICAgICAoc2xpZGVwcmV2dHJhbnNpdGlvbmVuZCk9XCJyZWFjaEVuZChmYWxzZSlcIlxuICAgICAgKHNsaWRlY2hhbmdlKT1cInNsaWRlQ2hhbmdlZCgpXCJcbiAgICA+XG4gICAgICA8c3dpcGVyLXNsaWRlICpuZ0Zvcj1cImxldCBpdGVtIG9mICRpdGVtcyB8IGFzeW5jXCI+XG4gICAgICAgIDxpb24tbGFiZWw+e3sgZGlzcGxheVdpdGgoaXRlbSkgfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvc3dpcGVyLXNsaWRlPlxuICAgIDwvc3dpcGVyLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvblxuICAgICNwcmV2QnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidXR0b24tcHJldlwiXG4gICAgW2hpZGRlbl09XCIhc2hvd1NsaWRlc1wiXG4gICAgW2Rpc2FibGVkXT1cInByZXZpb3VzRGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJwcmV2aW91cygpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICNuZXh0QnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidXR0b24tbmV4dFwiXG4gICAgW2hpZGRlbl09XCIhc2hvd1NsaWRlc1wiXG4gICAgW2Rpc2FibGVkXT1cIm5leHREaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cIm5leHQoKVwiXG4gID5cbiAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBtYXRTdWZmaXhcbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgKGNsaWNrKT1cImNsZWFyVmFsdWUoJGV2ZW50KVwiXG4gICAgW2hpZGRlbl09XCJkaXNhYmxlZCB8fCAhZm9ybUNvbnRyb2wudmFsdWVcIlxuICA+XG4gICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignZW50aXR5JylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfSU5WQUxJRDwvbWF0LWVycm9yPlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuc3dpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9zd2lwZS9tYXRlcmlhbC5zd2lwZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3N3aXBlL21hdGVyaWFsLnN3aXBlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QyxpQkFBaUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQUk3QyxNQUFNLHNCQUFzQixHQUFhO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDNUMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLGFBQWE7SUErRlo7SUFDVTtJQS9GZCxpQkFBaUIsR0FBcUIsSUFBSSxD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QUFDLFlBQVk7Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBQcm92aWRlcixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGlzT2JzZXJ2YWJsZSwgbm9vcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwsIGpvaW5Qcm9wZXJ0aWVzUGF0aCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBJbnB1dEVsZW1lbnQsIHNlbGVjdElucHV0Q29udGVudCB9IGZyb20gJy4uLy4uL2lucHV0cyc7XG5pbXBvcnQgeyBBcHBGbG9hdExhYmVsVHlwZSwgRGlzcGxheUZuLCBFcXVhbHNGbiB9IGZyb20gJy4uLy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgZmlyc3RUcnVlUHJvbWlzZSB9IGZyb20gJy4uLy4uL29ic2VydmFibGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vLi4vcGxhdGZvcm1zJztcbmltcG9ydCB7IFN3aXBlciB9IGZyb20gJ3N3aXBlci90eXBlcyc7XG5pbXBvcnQgeyBJb25pY1NsaWRlcyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmNvbnN0IERFRkFVTFRfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0U3dpcGVGaWVsZCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXN3aXBlLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwuc3dpcGUuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwuc3dpcGUuaHRtbCcsXG4gIHByb3ZpZGVyczogW0RFRkFVTFRfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0U3dpcGVGaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgSW5wdXRFbGVtZW50LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIF9pdGVtc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF93cml0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX3RhYmluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgX3N3aXBlcjogU3dpcGVyO1xuICBwcm90ZWN0ZWQgcHJldmlvdXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIG5leHREaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHNob3dTbGlkZXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkICRpdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCAkbG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHN3aXBlck1vZHVsZXMgPSBbSW9uaWNTbGlkZXNdO1xuXG4gIEBJbnB1dCgpIGxvZ1ByZWZpeCA9ICdbbWF0LXN3aXBlLWZpZWxkXSc7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZTtcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9iaWxlOiBib29sZWFuO1xuICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgZXF1YWxzOiBFcXVhbHNGbiB8IG51bGw7XG4gIEBJbnB1dCgpIGRpc3BsYXlXaXRoOiBEaXNwbGF5Rm4gfCBudWxsO1xuICBASW5wdXQoKSBkaXNwbGF5QXR0cmlidXRlczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGFwcEF1dG9mb2N1czogYm9vbGVhbjtcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzTGlzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3RhYmluZGV4ICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVUYWJJbmRleCgpKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiaW5kZXg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IE9ic2VydmFibGU8YW55W10+IHwgYW55W10pIHtcbiAgICAvLyBSZW1vdmUgcHJldmlvdXMgc3Vic2NyaXB0aW9uIG9uIGl0ZW1zLCAoaWYgZXhpdHMpXG4gICAgaWYgKHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5sb2dQcmVmaXh9IEl0ZW1zIHJlY2VpdmVkIHR3aWNlICFgKTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5yZW1vdmUodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pO1xuICAgICAgdGhpcy5faXRlbXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy5faXRlbXNTdWJzY3JpcHRpb24gPSB2YWx1ZS5zdWJzY3JpYmUoKHYpID0+IHRoaXMubG9hZEl0ZW1zKHYpKTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuJGl0ZW1zLmdldFZhbHVlKCkpIHtcbiAgICAgICAgdGhpcy5sb2FkSXRlbXModmFsdWUgYXMgYW55W10pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBpdGVtcygpOiBPYnNlcnZhYmxlPGFueVtdPiB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4kaXRlbXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBpdGVtQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuJGl0ZW1zLmdldFZhbHVlKCkgfHwgW10pLmxlbmd0aDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCdjbGljaycpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCdibHVyJykgYmx1cnJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoJ2ZvY3VzJykgZm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdmYWtlSW5wdXQnKSBmYWtlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3N3aXBlcicsIHsgc3RhdGljOiB0cnVlIH0pIHN3aXBlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgncHJldkJ1dHRvbicpIHByZXZCdXR0b246IE1hdEJ1dHRvbjtcbiAgQFZpZXdDaGlsZCgnbmV4dEJ1dHRvbicpIG5leHRCdXR0b246IE1hdEJ1dHRvbjtcblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBlbmFibGVkKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3dpcGVyID0gdGhpcy5zd2lwZXJSZWYubmF0aXZlRWxlbWVudC5zd2lwZXIgYXMgU3dpcGVyO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPVxuICAgICAgdGhpcy5mb3JtQ29udHJvbCB8fCAodGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5mb3JtR3JvdXBEaXIgJiYgKHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2wpKTtcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSAnZm9ybUNvbnRyb2wnIG9yICdmb3JtQ29udHJvbE5hbWUnIGluIDxtYXQtc3dpcGUtZmllbGQ+LlwiKTtcblxuICAgIC8vIERlZmF1bHQgdmFsdWVzXG4gICAgdGhpcy5kaXNwbGF5QXR0cmlidXRlcyA9IHRoaXMuZGlzcGxheUF0dHJpYnV0ZXMgfHwgWydsYWJlbCcsICduYW1lJ107XG4gICAgdGhpcy5kaXNwbGF5V2l0aCA9IHRoaXMuZGlzcGxheVdpdGggfHwgKChvYmopID0+IG9iaiAmJiBqb2luUHJvcGVydGllc1BhdGgob2JqLCB0aGlzLmRpc3BsYXlBdHRyaWJ1dGVzKSk7XG4gICAgdGhpcy5lcXVhbHMgPSB0aGlzLmVxdWFscyB8fCAoKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xICYmIG8yICYmIG8xLmlkID09PSBvMi5pZCk7XG4gICAgdGhpcy5tb2JpbGUgPSBpc05vdE5pbCh0aGlzLm1vYmlsZSkgPyB0aGlzLm1vYmlsZSA6IGlzTW9iaWxlKHdpbmRvdyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl92YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiRpdGVtcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgX29uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gSGlkZSB0aGUgZmFrZSBpbnB1dFxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICAvLyBzaG93IHNsaWRlcyBjb21wb25lbnRcbiAgICB0aGlzLnNob3dTbGlkZXMgPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmV2QnV0dG9uKSB7XG4gICAgICAgIHRoaXMucHJldkJ1dHRvbi5mb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICAgIH0pO1xuXG4gICAgaWYgKGlzTmlsKHRoaXMuX3ZhbHVlKSkge1xuICAgICAgLy8gU2xpZGUgdG8gZmlyc3QgYW5kIGFmZmVjdCB2YWx1ZVxuICAgICAgdGhpcy5zbGlkZVRvKDApO1xuICAgICAgdGhpcy5zbGlkZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UsIGJlY2F1c2UsIHRoaXMgY29tcG9uZW50IGhhcyBhIHRlbXBvcmFyeSBjb21wb25lbnQgZGlzcGxheWVkIGJlZm9yZSB0aGUgZmlyc3QgZm9jdXMgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVGFiSW5kZXgoKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuX3RhYmluZGV4KSB8fCB0aGlzLl90YWJpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgaWYgKHRoaXMuc2hvd1NsaWRlcykge1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICB0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5fdGFiaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnByZXZCdXR0b24gJiYgdGhpcy5uZXh0QnV0dG9uKSB7XG4gICAgICB0aGlzLnByZXZCdXR0b24uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1NsaWRlcyA/IHRoaXMuX3RhYmluZGV4IDogLTE7XG4gICAgICB0aGlzLm5leHRCdXR0b24uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1NsaWRlcyA/IHRoaXMuX3RhYmluZGV4ICsgMSA6IC0xO1xuICAgIH1cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjtcblxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGlmICghdGhpcy5lcXVhbHModmFsdWUsIHRoaXMuX3ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2hvd1NsaWRlcyA9IGlzTm90TmlsKHRoaXMuX3ZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlU2xpZGVzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlVGFiSW5kZXgoKSk7XG4gICAgfVxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbGVhclZhbHVlKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBjbGVhciB2YWx1ZWApO1xuICAgIHRoaXMuX3ZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5zaG93U2xpZGVzID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgICB0aGlzLnNsaWRlVG8oMCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICAgICAgfSwgMTAwKTtcbiAgICB9KTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKG51bGwpO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubG9ja1N3aXBlcyhpc0Rpc2FibGVkKTtcbiAgICB0aGlzLnVwZGF0ZUJ1dHRvbnMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2VsZWN0SW5wdXRDb250ZW50ID0gc2VsZWN0SW5wdXRDb250ZW50O1xuXG4gIHByZXZpb3VzKCkge1xuICAgIHRoaXMuX3N3aXBlci5zbGlkZVByZXYoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fc3dpcGVyLnNsaWRlTmV4dCgpO1xuICB9XG5cbiAgcmVhY2hTdGFydChyZWFjaGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wcmV2aW91c0Rpc2FibGVkID0gcmVhY2hlZDtcbiAgfVxuXG4gIHJlYWNoRW5kKHJlYWNoZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm5leHREaXNhYmxlZCA9IHJlYWNoZWQ7XG4gIH1cblxuICBzd2lwZXJMb2FkZWQoKSB7XG4gICAgY29uc29sZS5sb2coJ1RPRE8gc3dpcGVyIGluaXQnKTtcbiAgICB0aGlzLl9zd2lwZXIgPSB0aGlzLnN3aXBlclJlZi5uYXRpdmVFbGVtZW50LnN3aXBlcjtcbiAgICB0aGlzLiRsb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHNsaWRlQ2hhbmdlZCgpIHtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuX3N3aXBlci5hY3RpdmVJbmRleDtcbiAgICBpZiAodGhpcy5fd3JpdGluZyB8fCBpc05pbChhY3RpdmVJbmRleCkpIHJldHVybjtcblxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuJGl0ZW1zLmdldFZhbHVlKCkgfHwgW10pW2FjdGl2ZUluZGV4XSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IHNsaWRlIGNoYW5nZWQgQWN0aXZlSW5kZXg6JHthY3RpdmVJbmRleH0sIG5ldyB2YWx1ZToke3ZhbHVlfWApO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNoZWNrSWZUb3VjaGVkKCk7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBsb2NrU3dpcGVzKGxvY2s6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSAhbG9jaztcbiAgICB0aGlzLl9zd2lwZXIuYWxsb3dTbGlkZVByZXYgPSAhbG9jaztcbiAgICB0aGlzLl9zd2lwZXIuYWxsb3dUb3VjaE1vdmUgPSAhbG9jaztcbiAgICB0aGlzLl9zd2lwZXIudXBkYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJdGVtcyhpdGVtczogYW55W10pIHtcbiAgICB0aGlzLiRsb2FkZWQubmV4dChmYWxzZSk7XG4gICAgdGhpcy4kaXRlbXMubmV4dChpdGVtcyk7XG4gICAgdGhpcy5yZWFkeSgpLnRoZW4oKCkgPT4gdGhpcy5fc3dpcGVyLnVwZGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZlRvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2xpZGVzKCkge1xuICAgIGlmICh0aGlzLnNob3dTbGlkZXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1JbmRleCA9ICh0aGlzLiRpdGVtcy5nZXRWYWx1ZSgpIHx8IFtdKS5maW5kSW5kZXgoKHZhbHVlKSA9PiB0aGlzLmVxdWFscyh2YWx1ZSwgdGhpcy5fdmFsdWUpKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPj0gMCkge1xuICAgICAgICB0aGlzLnNsaWRlVG8oaXRlbUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLmxvZ1ByZWZpeH0gSXRlbSBub3QgZm91bmRgLCB0aGlzLl92YWx1ZSk7XG4gICAgICAgIHRoaXMuc2xpZGVUbygwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNsaWRlVG8oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuX3N3aXBlci5zbGlkZVRvKGluZGV4LCAwLCBmYWxzZSk7XG4gICAgdGhpcy5fc3dpcGVyLnVwZGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQnV0dG9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCdXR0b25zKCkge1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fc3dpcGVyLmFjdGl2ZUluZGV4O1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSB1cGRhdGUgYnV0dG9ucyBBY3RpdmVJbmRleDoke2FjdGl2ZUluZGV4fWApO1xuICAgIHRoaXMucHJldmlvdXNEaXNhYmxlZCA9IGFjdGl2ZUluZGV4ID09PSAwIHx8IHRoaXMuZGlzYWJsZWQ7XG4gICAgdGhpcy5uZXh0RGlzYWJsZWQgPSBhY3RpdmVJbmRleCA9PT0gdGhpcy5pdGVtQ291bnQgLSAxIHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBub3QgdXNlZCAuLi5cbiAgYXN5bmMgZ2V0U3dpcGVyKCk6IFByb21pc2U8U3dpcGVyPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLl9zd2lwZXI7XG4gIH1cblxuICBhc3luYyByZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBXYWl0IGxvYWRlZFxuICAgIGlmICh0aGlzLiRsb2FkZWQuZ2V0VmFsdWUoKSA9PT0gZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSB3YWl0aW5nIHNsaWRlcyB0byBiZSByZWFkeS4uLmApO1xuICAgICAgYXdhaXQgZmlyc3RUcnVlUHJvbWlzZSh0aGlzLiRsb2FkZWQpO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkXG4gIFtmbG9hdExhYmVsXT1cInNob3dTbGlkZXMgJiYgKCFmbG9hdExhYmVsIHx8IGZsb2F0TGFiZWwgPT09ICdhdXRvJykgPyAnYWx3YXlzJyA6IChmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZSlcIlxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gID5cbiAgQGlmIChmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIpIHtcbiAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gIH1cbiAgPGlucHV0XG4gICAgbWF0SW5wdXRcbiAgICAjZmFrZUlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dTbGlkZXNcIlxuICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgLz5cblxuICA8ZGl2IGNsYXNzPVwic2xpZGVzLWNvbnRhaW5lclwiIFtjbGFzcy5oaWRkZW5dPVwiIXNob3dTbGlkZXNcIj5cbiAgICA8c3dpcGVyLWNvbnRhaW5lclxuICAgICAgI3N3aXBlclxuICAgICAgW21vZHVsZXNdPVwic3dpcGVyTW9kdWxlc1wiXG4gICAgICBbc3BlZWRdPVwiMTAwXCJcbiAgICAgIFtzbGlkZXNQZXJWaWV3XT1cIjFcIlxuICAgICAgKGluaXQpPVwic3dpcGVyTG9hZGVkKClcIlxuICAgICAgKHJlYWNoYmVnaW5uaW5nKT1cInJlYWNoU3RhcnQodHJ1ZSlcIlxuICAgICAgKHJlYWNoZW5kKT1cInJlYWNoRW5kKHRydWUpXCJcbiAgICAgIChzbGlkZW5leHR0cmFuc2l0aW9uZW5kKT1cInJlYWNoU3RhcnQoZmFsc2UpXCJcbiAgICAgIChzbGlkZXByZXZ0cmFuc2l0aW9uZW5kKT1cInJlYWNoRW5kKGZhbHNlKVwiXG4gICAgICAoc2xpZGVjaGFuZ2UpPVwic2xpZGVDaGFuZ2VkKClcIlxuICAgICAgPlxuICAgICAgQGZvciAoaXRlbSBvZiAkaXRlbXMgfCBhc3luYzsgdHJhY2sgaXRlbSkge1xuICAgICAgICA8c3dpcGVyLXNsaWRlPlxuICAgICAgICAgIDxpb24tbGFiZWw+e3sgZGlzcGxheVdpdGgoaXRlbSkgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgPC9zd2lwZXItc2xpZGU+XG4gICAgICB9XG4gICAgPC9zd2lwZXItY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8YnV0dG9uXG4gICAgI3ByZXZCdXR0b25cbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ1dHRvbi1wcmV2XCJcbiAgICBbaGlkZGVuXT1cIiFzaG93U2xpZGVzXCJcbiAgICBbZGlzYWJsZWRdPVwicHJldmlvdXNEaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cInByZXZpb3VzKClcIlxuICAgID5cbiAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICAjbmV4dEJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYnV0dG9uLW5leHRcIlxuICAgIFtoaWRkZW5dPVwiIXNob3dTbGlkZXNcIlxuICAgIFtkaXNhYmxlZF09XCJuZXh0RGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJuZXh0KClcIlxuICAgID5cbiAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIEBpZiAoY2xlYXJhYmxlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0U3VmZml4XG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgIFtoaWRkZW5dPVwiZGlzYWJsZWQgfHwgIWZvcm1Db250cm9sLnZhbHVlXCJcbiAgICAgID5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIH1cblxuICBAaWYgKGZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgfVxuICBAaWYgKGZvcm1Db250cm9sLmhhc0Vycm9yKCdlbnRpdHknKSkge1xuICAgIDxtYXQtZXJyb3IgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX0lOVkFMSUQ8L21hdC1lcnJvcj5cbiAgfVxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
@@ -9,18 +9,17 @@ import { StatusList } from '../../../core/services/model/referential.model';
|
|
|
9
9
|
import { Subscription } from 'rxjs';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@angular/forms";
|
|
12
|
-
import * as i2 from "@angular
|
|
13
|
-
import * as i3 from "@
|
|
14
|
-
import * as i4 from "@angular/material/
|
|
15
|
-
import * as i5 from "@angular/material/
|
|
16
|
-
import * as i6 from "@angular/material/
|
|
17
|
-
import * as i7 from "@angular/material/
|
|
18
|
-
import * as i8 from "
|
|
19
|
-
import * as i9 from "../
|
|
20
|
-
import * as i10 from "
|
|
21
|
-
import * as i11 from "
|
|
22
|
-
import * as i12 from "../../pipes/
|
|
23
|
-
import * as i13 from "../../pipes/form.pipes";
|
|
12
|
+
import * as i2 from "@ionic/angular";
|
|
13
|
+
import * as i3 from "@angular/material/form-field";
|
|
14
|
+
import * as i4 from "@angular/material/input";
|
|
15
|
+
import * as i5 from "@angular/material/checkbox";
|
|
16
|
+
import * as i6 from "@angular/material/select";
|
|
17
|
+
import * as i7 from "@angular/material/core";
|
|
18
|
+
import * as i8 from "../datetime/material.datetime";
|
|
19
|
+
import * as i9 from "../boolean/material.boolean";
|
|
20
|
+
import * as i10 from "@ngx-translate/core";
|
|
21
|
+
import * as i11 from "../../pipes/property.pipes";
|
|
22
|
+
import * as i12 from "../../pipes/form.pipes";
|
|
24
23
|
export class MatCommonTestPage {
|
|
25
24
|
formBuilder;
|
|
26
25
|
cd;
|
|
@@ -103,10 +102,10 @@ export class MatCommonTestPage {
|
|
|
103
102
|
}
|
|
104
103
|
stringify = JSON.stringify;
|
|
105
104
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatCommonTestPage, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: MatCommonTestPage, selector: "mat-common-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Common field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>\n {{ stringify(form.controls.empty.value) }}\n </pre>\n <br />\n <pre>\n formControl.valid? {{ form.controls.empty?.valid }}\n </pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"empty\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <!-- Empty value + required -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value (required)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.emptyRequired.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"emptyRequired\" [required]=\"true\" />\n\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.enable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"enable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disable</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"disable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly toggle</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"desktopReadonlyField.readOnly = $event.checked\"\n [checked]=\"desktopReadonlyField.readOnly\"\n >Readonly ?</mat-checkbox>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput #desktopReadonlyField formControlName=\"readonly\" [readOnly]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Boolean -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Boolean</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field formControlName=\"boolean\" placeholder=\"Boolean\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatSelect -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat Select</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Select</mat-label>\n <mat-select [formControl]=\"form.controls['select'] | formGetControl\" placeholder=\"Select a value\">\n <mat-select-trigger>\n {{ (form | formGetValue: 'select' | propertyGet: 'label' | translate) || '' }}\n </mat-select-trigger>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item\">{{ item.label | translate }}</mat-option>\n </mat-select>\n\n\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatDateTime -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat DateTime</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.date.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field\n [formControl]=\"form.controls['date'] | formGetControl\"\n placeholder=\"Date/Time\">\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n</ion-content>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i3.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonRow, selector: "ion-row" }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i7.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i9.MatDateTime, selector: "mat-date-time-field", inputs: ["placeholder", "floatLabel", "mobile", "compact", "autofocus", "startDate", "clearable", "datePickerFilter", "appearance", "subscriptSizing", "formControl", "formControlName", "required", "readonly", "tabindex"] }, { kind: "component", type: i10.MatBooleanField, selector: "mat-boolean-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "readonly", "required", "compact", "style", "buttonsColCount", "class", "yesLabel", "noLabel", "showButtonIcons", "yesIcon", "noIcon", "tabindex", "value"], outputs: ["keyup.enter", "onBlur"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: i13.FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: i13.FormGetValuePipe, name: "formGetValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
105
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatCommonTestPage, selector: "mat-common-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Common field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>\n {{ stringify(form.controls.empty.value) }}\n </pre>\n <br />\n <pre>\n formControl.valid? {{ form.controls.empty?.valid }}\n </pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"empty\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <!-- Empty value + required -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value (required)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.emptyRequired.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"emptyRequired\" [required]=\"true\" />\n\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.enable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"enable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disable</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"disable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly toggle</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"desktopReadonlyField.readOnly = $event.checked\"\n [checked]=\"desktopReadonlyField.readOnly\"\n >Readonly ?</mat-checkbox>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput #desktopReadonlyField formControlName=\"readonly\" [readOnly]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Boolean -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Boolean</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field formControlName=\"boolean\" placeholder=\"Boolean\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatSelect -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat Select</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Select</mat-label>\n <mat-select [formControl]=\"form.controls['select'] | formGetControl\" placeholder=\"Select a value\">\n <mat-select-trigger>\n {{ (form | formGetValue: 'select' | propertyGet: 'label' | translate) || '' }}\n </mat-select-trigger>\n @for (item of statusList; track item) {\n <mat-option [value]=\"item\">{{ item.label | translate }}</mat-option>\n }\n </mat-select>\n\n\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatDateTime -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat DateTime</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.date.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field\n [formControl]=\"form.controls['date'] | formGetControl\"\n placeholder=\"Date/Time\">\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n</ion-content>\n", dependencies: [{ kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i6.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatDateTime, selector: "mat-date-time-field", inputs: ["placeholder", "floatLabel", "mobile", "compact", "autofocus", "startDate", "clearable", "datePickerFilter", "appearance", "subscriptSizing", "formControl", "formControlName", "required", "readonly", "tabindex"] }, { kind: "component", type: i9.MatBooleanField, selector: "mat-boolean-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "readonly", "required", "compact", "style", "buttonsColCount", "class", "yesLabel", "noLabel", "showButtonIcons", "yesIcon", "noIcon", "tabindex", "value"], outputs: ["keyup.enter", "onBlur"] }, { kind: "directive", type: i10.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: i12.FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: i12.FormGetValuePipe, name: "formGetValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
107
106
|
}
|
|
108
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatCommonTestPage, decorators: [{
|
|
109
108
|
type: Component,
|
|
110
|
-
args: [{ selector: 'mat-common-test', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Common field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>\n {{ stringify(form.controls.empty.value) }}\n </pre>\n <br />\n <pre>\n formControl.valid? {{ form.controls.empty?.valid }}\n </pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"empty\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <!-- Empty value + required -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value (required)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.emptyRequired.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"emptyRequired\" [required]=\"true\" />\n\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.enable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"enable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disable</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"disable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly toggle</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"desktopReadonlyField.readOnly = $event.checked\"\n [checked]=\"desktopReadonlyField.readOnly\"\n >Readonly ?</mat-checkbox>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput #desktopReadonlyField formControlName=\"readonly\" [readOnly]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Boolean -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Boolean</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field formControlName=\"boolean\" placeholder=\"Boolean\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatSelect -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat Select</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Select</mat-label>\n <mat-select [formControl]=\"form.controls['select'] | formGetControl\" placeholder=\"Select a value\">\n <mat-select-trigger>\n {{ (form | formGetValue: 'select' | propertyGet: 'label' | translate) || '' }}\n </mat-select-trigger>\n
|
|
109
|
+
args: [{ selector: 'mat-common-test', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Common field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>\n {{ stringify(form.controls.empty.value) }}\n </pre>\n <br />\n <pre>\n formControl.valid? {{ form.controls.empty?.valid }}\n </pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"empty\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <!-- Empty value + required -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Empty value (required)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.emptyRequired.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"emptyRequired\" [required]=\"true\" />\n\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With value</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.enable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"enable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disable</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"disable\" [required]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly toggle</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"desktopReadonlyField.readOnly = $event.checked\"\n [checked]=\"desktopReadonlyField.readOnly\"\n >Readonly ?</mat-checkbox>\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput #desktopReadonlyField formControlName=\"readonly\" [readOnly]=\"true\" />\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Boolean -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Boolean</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.disable.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field formControlName=\"boolean\" placeholder=\"Boolean\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatSelect -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat Select</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.readonly.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field>\n <mat-label>Select</mat-label>\n <mat-select [formControl]=\"form.controls['select'] | formGetControl\" placeholder=\"Select a value\">\n <mat-select-trigger>\n {{ (form | formGetValue: 'select' | propertyGet: 'label' | translate) || '' }}\n </mat-select-trigger>\n @for (item of statusList; track item) {\n <mat-option [value]=\"item\">{{ item.label | translate }}</mat-option>\n }\n </mat-select>\n\n\n </mat-form-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- MatDateTime -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Mat DateTime</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(form.controls.date.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field\n [formControl]=\"form.controls['date'] | formGetControl\"\n placeholder=\"Date/Time\">\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n</ion-content>\n" }]
|
|
111
110
|
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }] });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC90ZXN0aW5nL2NvbW1vbi50ZXN0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvdGVzdGluZy9jb21tb24udGVzdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPcEMsTUFBTSxPQUFPLGlCQUFpQjtJQVdoQjtJQUNBO0lBWFosWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRWhCLElBQUksQ0FBbUI7SUFFdkIsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUVoQixZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxQyxZQUNZLFdBQStCLEVBQy9CLEVBQXFCO1FBRHJCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixPQUFFLEdBQUYs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YTtRQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO3VHQTNHaEIsaUJBQWlCOzJGQUFqQixpQkFBaUIsdURDZjlCLGkzUEFpT0E7OzJGRGxOYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUVWLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcEZvcm1VdGlscyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNoYXJlZEZvcm1Hcm91cFZhbGlkYXRvcnMsIFNoYXJlZFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL3BsYXRmb3Jtcyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMsIHRvRGF0ZUlTT1N0cmluZyB9IGZyb20gJy4uLy4uL2RhdGVzJztcbmltcG9ydCB7IFN0YXR1c0xpc3QgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtY29tbW9uLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLnRlc3QuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRDb21tb25UZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2hvd0xvZ1BhbmVsID0gdHJ1ZTtcbiAgbG9nQ29udGVudCA9ICcnO1xuXG4gIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgc3RhdHVzTGlzdCA9IFN0YXR1c0xpc3Q7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cChcbiAgICAgIHtcbiAgICAgICAgZW1wdHk6IFtudWxsXSxcbiAgICAgICAgZW1wdHlSZXF1aXJlZDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBlbmFibGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgZGlzYWJsZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICByZWFkb25seTogW251bGxdLFxuICAgICAgICBzZWxlY3Q6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgYm9vbGVhbjogW251bGxdLFxuICAgICAgICBkYXRlOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBTaGFyZWRWYWxpZGF0b3JzLnZhbGlkRGF0ZV0pXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFNoYXJlZEZvcm1Hcm91cFZhbGlkYXRvcnMuZGF0ZVJhbmdlKCdlbXB0eScsICdlbmFibGUnKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZGlzYWJsZUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdkaXNhYmxlJyk7XG4gICAgZGlzYWJsZUNvbnRyb2wuZGlzYWJsZSgpO1xuXG4gICAgLy8gQ29weSB0aGUgJ2VuYWJsZScgdmFsdWUsIGludG8gdGhlIGRpc2FibGUgY29udHJvbFxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZvcm0uZ2V0KCdlbmFibGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gZGlzYWJsZUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpKSk7XG5cbiAgICB0aGlzLnNob3dMb2dQYW5lbCA9IHRoaXMuc2hvd0xvZ1BhbmVsIHx8IGlzTW9iaWxlKHdpbmRvdyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoKSwgMjUwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyBMb2FkIHRoZSBmb3JtIHdpdGggZGF0YVxuICBhc3luYyBsb2FkRGF0YSgpIHtcbiAgICBjb25zdCBub3cgPSBEYXRlVXRpbHMubW9tZW50KCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgZW1wdHk6IG51bGwsIC8vIHRvRGF0ZUlTT1N0cmluZyhub3cuY2xvbmUoKS5hZGQoMiwgJ2hvdXJzJykpLFxuICAgICAgZW1wdHlSZXF1aXJlZDogbnVsbCxcbiAgICAgIGVuYWJsZTogdG9EYXRlSVNPU3RyaW5nKG5vdyksXG4gICAgICBkaXNhYmxlOiBub3cuY2xvbmUoKSxcbiAgICAgIHJlYWRvbmx5OiBub3cuY2xvbmUoKSxcbiAgICAgIHNlbGVjdDogbnVsbCxcbiAgICAgIGJvb2xlYW46IG51bGwsXG4gICAgICBkYXRlOiBudWxsLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0uc2V0VmFsdWUoZGF0YSk7XG5cbiAgICB0aGlzLmxvZygnW3Rlc3QtcGFnZV0gRGF0YSBsb2FkZWQ6ICcgKyBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmZvcm1cbiAgICAgICAgLmdldCgnZW1wdHknKVxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLmxvZygnW3Rlc3QtcGFnZV0gVmFsdWUgbsKwMTogJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZm9ybVxuICAgICAgICAuZ2V0KCdlbmFibGUnKVxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLmxvZygnW3Rlc3QtcGFnZV0gVmFsdWUgbsKwMjogJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpXG4gICAgKTtcbiAgfVxuXG4gIGRvU3VibWl0KF8pIHtcbiAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBGb3JtIGNvbnRlbnQ6ICcgKyBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0udmFsdWUpKTtcbiAgICB0aGlzLmxvZygnW3Rlc3QtcGFnZV0gRm9ybSBzdGF0dXM6ICcgKyB0aGlzLmZvcm0uc3RhdHVzKTtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBGb3JtIGVycm9yczogJyArIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5lcnJvcnMpKTtcblxuICAgICAgLy8gREVCVUdcbiAgICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKHRoaXMuZm9ybSk7XG4gICAgfVxuICB9XG5cbiAgbG9nKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnNvbGUuZGVidWcobWVzc2FnZSk7XG5cbiAgICBpZiAodGhpcy5zaG93TG9nUGFuZWwpIHtcbiAgICAgIHRoaXMubG9nQ29udGVudCArPSBtZXNzYWdlICsgJzxici8+JztcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJMb2dQYW5lbCgpIHtcbiAgICB0aGlzLmxvZ0NvbnRlbnQgPSAnJztcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnk7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5Db21tb24gZmllbGQgdGVzdCBwYWdlPC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDxmb3JtIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwiZG9TdWJtaXQoJGV2ZW50KVwiPlxuICAgIDxpb24tZ3JpZD5cbiAgICAgIDxpb24tcm93PlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8IS0tIEVtcHR5IHZhbHVlIC0tPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkVtcHR5IHZhbHVlPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5lbXB0eS52YWx1ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICA8cHJlPlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLnZhbGlkPyB7eyBmb3JtLmNvbnRyb2xzLmVtcHR5Py52YWxpZCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbHVlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImVtcHR5XCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgPCEtLSBFbXB0eSB2YWx1ZSArIHJlcXVpcmVkIC0tPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkVtcHR5IHZhbHVlIChyZXF1aXJlZCk8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVtcHR5UmVxdWlyZWQudmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWx1ZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbXB0eVJlcXVpcmVkXCIgW3JlcXVpcmVkXT1cInRydWVcIiAvPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBFbmFibGUgIC0tPlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5XaXRoIHZhbHVlPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5lbmFibGUudmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWx1ZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gRGlzYWJsZSAtLT5cbiAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RGlzYWJsZTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZGlzYWJsZS52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbHVlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRpc2FibGVcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gUmVhZG9ubHkgIC0tPlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5SZWFkb25seSB0b2dnbGU8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLnJlYWRvbmx5LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZGVza3RvcFJlYWRvbmx5RmllbGQucmVhZE9ubHkgPSAkZXZlbnQuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZGVza3RvcFJlYWRvbmx5RmllbGQucmVhZE9ubHlcIlxuICAgICAgICAgICAgICA+UmVhZG9ubHkgPzwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWx1ZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjZGVza3RvcFJlYWRvbmx5RmllbGQgZm9ybUNvbnRyb2xOYW1lPVwicmVhZG9ubHlcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gQm9vbGVhbiAtLT5cbiAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+Qm9vbGVhbjwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZGlzYWJsZS52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZCBmb3JtQ29udHJvbE5hbWU9XCJib29sZWFuXCIgcGxhY2Vob2xkZXI9XCJCb29sZWFuXCI+PC9tYXQtYm9vbGVhbi1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBNYXRTZWxlY3QgIC0tPlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5NYXQgU2VsZWN0PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5yZWFkb25seS52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydzZWxlY3QnXSB8IGZvcm1HZXRDb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSB2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAge3sgKGZvcm0gfCBmb3JtR2V0VmFsdWU6ICdzZWxlY3QnIHwgcHJvcGVydHlHZXQ6ICdsYWJlbCcgfCB0cmFuc2xhdGUpIHx8ICcnIH19XG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN0YXR1c0xpc3RcIiBbdmFsdWVdPVwiaXRlbVwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuXG5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBNYXREYXRlVGltZSAgLS0+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPk1hdCBEYXRlVGltZTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZGF0ZS52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZGF0ZS10aW1lLWZpZWxkXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ2RhdGUnXSB8IGZvcm1HZXRDb250cm9sXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkRhdGUvVGltZVwiPlxuICAgICAgICAgICAgICA8L21hdC1kYXRlLXRpbWUtZmllbGQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgIDwvaW9uLWdyaWQ+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC90ZXN0aW5nL2NvbW1vbi50ZXN0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvdGVzdGluZy9jb21tb24udGVzdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU9wQyxNQUFNLE9BQU8saUJBQWlCO0lBV2hCO0lBQ0E7SUFYWixZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFaEIsSUFBSSxDQUFtQjtJQUV2QixVQUFVLEdBQUcsVUFBVSxDQUFDO0lBRWhCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTFDLFlBQ1ksV0FBK0IsRUFDL0IsRUFBcUI7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLE9BQUUsR0FBRixF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O1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7dUdBM0doQixpQkFBaUI7MkZBQWpCLGlCQUFpQix1RENmOUIsaTZQQW1PQTs7MkZEcE5hLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBRVYsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwRm9ybVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9mb3JtL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2hhcmVkRm9ybUdyb3VwVmFsaWRhdG9ycywgU2hhcmVkVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvci92YWxpZGF0b3JzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vLi4vcGxhdGZvcm1zJztcbmltcG9ydCB7IERhdGVVdGlscywgdG9EYXRlSVNPU3RyaW5nIH0gZnJvbSAnLi4vLi4vZGF0ZXMnO1xuaW1wb3J0IHsgU3RhdHVzTGlzdCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcmVmZXJlbnRpYWwubW9kZWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1jb21tb24tdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tb24udGVzdC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdENvbW1vblRlc3RQYWdlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzaG93TG9nUGFuZWwgPSB0cnVlO1xuICBsb2dDb250ZW50ID0gJyc7XG5cbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICBzdGF0dXNMaXN0ID0gU3RhdHVzTGlzdDtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKFxuICAgICAge1xuICAgICAgICBlbXB0eTogW251bGxdLFxuICAgICAgICBlbXB0eVJlcXVpcmVkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIGVuYWJsZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBkaXNhYmxlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIHJlYWRvbmx5OiBbbnVsbF0sXG4gICAgICAgIHNlbGVjdDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBib29sZWFuOiBbbnVsbF0sXG4gICAgICAgIGRhdGU6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFNoYXJlZFZhbGlkYXRvcnMudmFsaWREYXRlXSldLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdG9yczogU2hhcmVkRm9ybUdyb3VwVmFsaWRhdG9ycy5kYXRlUmFuZ2UoJ2VtcHR5JywgJ2VuYWJsZScpLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBkaXNhYmxlQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ2Rpc2FibGUnKTtcbiAgICBkaXNhYmxlQ29udHJvbC5kaXNhYmxlKCk7XG5cbiAgICAvLyBDb3B5IHRoZSAnZW5hYmxlJyB2YWx1ZSwgaW50byB0aGUgZGlzYWJsZSBjb250cm9sXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybS5nZXQoJ2VuYWJsZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiBkaXNhYmxlQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSkpKTtcblxuICAgIHRoaXMuc2hvd0xvZ1BhbmVsID0gdGhpcy5zaG93TG9nUGFuZWwgfHwgaXNNb2JpbGUod2luZG93KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkRGF0YSgpLCAyNTApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8vIExvYWQgdGhlIGZvcm0gd2l0aCBkYXRhXG4gIGFzeW5jIGxvYWREYXRhKCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGVVdGlscy5tb21lbnQoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBlbXB0eTogbnVsbCwgLy8gdG9EYXRlSVNPU3RyaW5nKG5vdy5jbG9uZSgpLmFkZCgyLCAnaG91cnMnKSksXG4gICAgICBlbXB0eVJlcXVpcmVkOiBudWxsLFxuICAgICAgZW5hYmxlOiB0b0RhdGVJU09TdHJpbmcobm93KSxcbiAgICAgIGRpc2FibGU6IG5vdy5jbG9uZSgpLFxuICAgICAgcmVhZG9ubHk6IG5vdy5jbG9uZSgpLFxuICAgICAgc2VsZWN0OiBudWxsLFxuICAgICAgYm9vbGVhbjogbnVsbCxcbiAgICAgIGRhdGU6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShkYXRhKTtcblxuICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBEYXRhIGxvYWRlZDogJyArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZm9ybVxuICAgICAgICAuZ2V0KCdlbXB0eScpXG4gICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMubG9nKCdbdGVzdC1wYWdlXSBWYWx1ZSBuwrAxOiAnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5mb3JtXG4gICAgICAgIC5nZXQoJ2VuYWJsZScpXG4gICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMubG9nKCdbdGVzdC1wYWdlXSBWYWx1ZSBuwrAyOiAnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpKSlcbiAgICApO1xuICB9XG5cbiAgZG9TdWJtaXQoXykge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIEZvcm0gY29udGVudDogJyArIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS52YWx1ZSkpO1xuICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBGb3JtIHN0YXR1czogJyArIHRoaXMuZm9ybS5zdGF0dXMpO1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIEZvcm0gZXJyb3JzOiAnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmVycm9ycykpO1xuXG4gICAgICAvLyBERUJVR1xuICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnModGhpcy5mb3JtKTtcbiAgICB9XG4gIH1cblxuICBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlKTtcblxuICAgIGlmICh0aGlzLnNob3dMb2dQYW5lbCkge1xuICAgICAgdGhpcy5sb2dDb250ZW50ICs9IG1lc3NhZ2UgKyAnPGJyLz4nO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckxvZ1BhbmVsKCkge1xuICAgIHRoaXMubG9nQ29udGVudCA9ICcnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBzdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeTtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPkNvbW1vbiBmaWVsZCB0ZXN0IHBhZ2U8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgPGZvcm0gY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJkb1N1Ym1pdCgkZXZlbnQpXCI+XG4gICAgPGlvbi1ncmlkPlxuICAgICAgPGlvbi1yb3c+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIDwhLS0gRW1wdHkgdmFsdWUgLS0+XG4gICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW1wdHkgdmFsdWU8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8cHJlPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVtcHR5LnZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wudmFsaWQ/IHt7IGZvcm0uY29udHJvbHMuZW1wdHk/LnZhbGlkIH19XG4gICAgICAgICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsdWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1wdHlcIiAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8IS0tIEVtcHR5IHZhbHVlICsgcmVxdWlyZWQgLS0+XG4gICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW1wdHkgdmFsdWUgKHJlcXVpcmVkKTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZW1wdHlSZXF1aXJlZC52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbHVlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImVtcHR5UmVxdWlyZWRcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIC8+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIEVuYWJsZSAgLS0+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPldpdGggdmFsdWU8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVuYWJsZS52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbHVlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImVuYWJsZVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBEaXNhYmxlIC0tPlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5EaXNhYmxlPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5kaXNhYmxlLnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsdWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGlzYWJsZVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBSZWFkb25seSAgLS0+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPlJlYWRvbmx5IHRvZ2dsZTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMucmVhZG9ubHkudmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJkZXNrdG9wUmVhZG9ubHlGaWVsZC5yZWFkT25seSA9ICRldmVudC5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJkZXNrdG9wUmVhZG9ubHlGaWVsZC5yZWFkT25seVwiXG4gICAgICAgICAgICAgID5SZWFkb25seSA/PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbHVlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0ICNkZXNrdG9wUmVhZG9ubHlGaWVsZCBmb3JtQ29udHJvbE5hbWU9XCJyZWFkb25seVwiIFtyZWFkT25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBCb29sZWFuIC0tPlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5Cb29sZWFuPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5kaXNhYmxlLnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkIGZvcm1Db250cm9sTmFtZT1cImJvb2xlYW5cIiBwbGFjZWhvbGRlcj1cIkJvb2xlYW5cIj48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIE1hdFNlbGVjdCAgLS0+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPk1hdCBTZWxlY3Q8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLnJlYWRvbmx5LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VsZWN0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ3NlbGVjdCddIHwgZm9ybUdldENvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIHZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICB7eyAoZm9ybSB8IGZvcm1HZXRWYWx1ZTogJ3NlbGVjdCcgfCBwcm9wZXJ0eUdldDogJ2xhYmVsJyB8IHRyYW5zbGF0ZSkgfHwgJycgfX1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBzdGF0dXNMaXN0OyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cblxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIE1hdERhdGVUaW1lICAtLT5cbiAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+TWF0IERhdGVUaW1lPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5kYXRlLnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1kYXRlLXRpbWUtZmllbGRcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9sc1snZGF0ZSddIHwgZm9ybUdldENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGF0ZS9UaW1lXCI+XG4gICAgICAgICAgICAgIDwvbWF0LWRhdGUtdGltZS1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|