@messaia/cdk 17.1.5 → 18.0.0-rc02
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/base/base.module.mjs +8 -8
- package/esm2022/lib/base/components/base.component.mjs +4 -4
- package/esm2022/lib/base/components/dynamic-table-config-dialog.comnponent.mjs +3 -3
- package/esm2022/lib/base/components/generic-form-base.component.mjs +4 -4
- package/esm2022/lib/base/components/generic-form.component.mjs +3 -3
- package/esm2022/lib/base/components/generic-list.component.mjs +4 -4
- package/esm2022/lib/base/components/generic-reactive-form.component.mjs +4 -4
- package/esm2022/lib/base/constants/common.mjs +2 -2
- package/esm2022/lib/base/helpers/auth-helper.mjs +1 -1
- package/esm2022/lib/base/interceptors/base.interceptor.mjs +4 -4
- package/esm2022/lib/base/interceptors/caching-interceptor.mjs +4 -4
- package/esm2022/lib/base/interceptors/loading.interceptor.mjs +4 -4
- package/esm2022/lib/base/services/file.service.mjs +3 -3
- package/esm2022/lib/base/services/loading-screen.service.mjs +3 -3
- package/esm2022/lib/base/services/print.service.mjs +3 -3
- package/esm2022/lib/chips/chips.module.mjs +4 -4
- package/esm2022/lib/chips/components/chips.component.mjs +4 -4
- package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +3 -3
- package/esm2022/lib/chips/directives/chip.directive.mjs +3 -3
- package/esm2022/lib/common/behaviors/control-value-accesor.mixin.mjs +1 -1
- package/esm2022/lib/common/behaviors/disabled.mixin.mjs +1 -1
- package/esm2022/lib/common/common.module.mjs +4 -4
- package/esm2022/lib/common/directives/delayed-hover.directive.mjs +4 -4
- package/esm2022/lib/common/directives/disable-control.directive.mjs +4 -4
- package/esm2022/lib/common/functions/utils.mjs +4 -4
- package/esm2022/lib/common/helpers/app-storage.mjs +4 -4
- package/esm2022/lib/common/helpers/dynamic-builder.mjs +4 -4
- package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +3 -3
- package/esm2022/lib/common/models/app-setting.mjs +3 -3
- package/esm2022/lib/common/pipes/data-source.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/enum.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/file-size.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/filter.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/first-letter.mjs +3 -3
- package/esm2022/lib/common/pipes/form-array.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/form-control.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/form-group.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/func.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/join.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/keys.mjs +4 -4
- package/esm2022/lib/common/pipes/month-name.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/nested-property.mjs +3 -3
- package/esm2022/lib/common/pipes/only-number.mjs +4 -4
- package/esm2022/lib/common/pipes/order.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/placeholder.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/property-join.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/split.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/time.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/titlecase.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/truncate.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/values.mjs +3 -3
- package/esm2022/lib/common/services/base.service.mjs +3 -3
- package/esm2022/lib/common/services/enum.service.mjs +4 -4
- package/esm2022/lib/common/services/event-queue.service.mjs +3 -3
- package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +3 -3
- package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/dialogs/dialog.component.mjs +13 -13
- package/esm2022/lib/dialogs/dialogs.module.mjs +4 -4
- package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +3 -3
- package/esm2022/lib/dialogs/services/dialog.service.mjs +4 -4
- package/esm2022/lib/file/file-input.component.mjs +4 -4
- package/esm2022/lib/file/file.module.mjs +4 -4
- package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +1 -1
- package/esm2022/lib/form-validators/core/default-container.mjs +10 -10
- package/esm2022/lib/form-validators/directives/base-directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/control-host.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +3 -3
- package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +3 -3
- package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +4 -4
- package/esm2022/lib/form-validators/domain/disable-provider.mjs +1 -1
- package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +4 -4
- package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +1 -1
- package/esm2022/lib/form-validators/domain/form-data.mjs +1 -1
- package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/custom.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/pattern.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/rule.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +1 -1
- package/esm2022/lib/form-validators/services/base-form-builder.mjs +1 -1
- package/esm2022/lib/form-validators/services/entity.service.mjs +1 -1
- package/esm2022/lib/form-validators/services/form-control.mjs +1 -1
- package/esm2022/lib/form-validators/services/reactive-form.module.mjs +8 -8
- package/esm2022/lib/form-validators/services/rx-form-array.mjs +1 -1
- package/esm2022/lib/form-validators/services/rx-form-builder.mjs +4 -4
- package/esm2022/lib/form-validators/services/rx-form-group.mjs +1 -1
- package/esm2022/lib/form-validators/services/typed-form-builder.mjs +3 -3
- package/esm2022/lib/form-validators/util/app-util.mjs +1 -1
- package/esm2022/lib/form-validators/util/check-length.mjs +1 -1
- package/esm2022/lib/form-validators/util/config-provider.mjs +1 -1
- package/esm2022/lib/form-validators/util/date-checker.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/date-provider.mjs +1 -1
- package/esm2022/lib/form-validators/util/form-provider.mjs +1 -1
- package/esm2022/lib/form-validators/util/instance-provider.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/ip-checker.mjs +1 -1
- package/esm2022/lib/form-validators/util/linq.mjs +1 -1
- package/esm2022/lib/form-validators/util/object-maker.mjs +1 -1
- package/esm2022/lib/form-validators/util/reactive-form-config.mjs +1 -1
- package/esm2022/lib/form-validators/util/regex-validator.mjs +1 -1
- package/esm2022/lib/form-validators/util/relational-checker.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/reset-form.mjs +1 -1
- package/esm2022/lib/form-validators/util/sanitizers.mjs +1 -1
- package/esm2022/lib/form-validators/util/time-checker.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/validator-value-checker.mjs +1 -1
- package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +1 -1
- package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +1 -1
- package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +1 -1
- package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +3 -3
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +16 -16
- package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +4 -4
- package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +4 -4
- package/esm2022/lib/forms/directives/nested-property-ng-model.directive.mjs +4 -4
- package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +3 -3
- package/esm2022/lib/forms/forms.module.mjs +4 -4
- package/esm2022/lib/forms/functions/decorators.mjs +1 -1
- package/esm2022/lib/forms/functions/functions.mjs +1 -1
- package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +4 -4
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +4 -4
- package/esm2022/lib/forms/helpers/value-accessor-base.mjs +3 -3
- package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +4 -4
- package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +4 -4
- package/esm2022/lib/forms/validators/equal-validator.directive.mjs +4 -4
- package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +4 -4
- package/esm2022/lib/forms/validators/unique-validator-directive.mjs +4 -4
- package/esm2022/lib/http/http.module.mjs +7 -11
- package/esm2022/lib/http/services/generic.service.mjs +1 -1
- package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +3 -3
- package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +3 -3
- package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +4 -4
- package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +4 -4
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +4 -4
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +9 -9
- package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +5 -5
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +4 -4
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +9 -9
- package/esm2022/lib/layout/layout-toggle.class.mjs +4 -4
- package/esm2022/lib/layout/layout.component.mjs +4 -4
- package/esm2022/lib/layout/layout.directives.mjs +9 -9
- package/esm2022/lib/layout/layout.module.mjs +4 -4
- package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +3 -3
- package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +10 -10
- package/esm2022/lib/list/components/list.component.mjs +3 -3
- package/esm2022/lib/list/directives/vd-list-option.directive.mjs +3 -3
- package/esm2022/lib/list/list.module.mjs +4 -4
- package/esm2022/lib/media/directives/media-toggle.directive.mjs +4 -4
- package/esm2022/lib/media/media.module.mjs +4 -4
- package/esm2022/lib/media/services/media.service.mjs +4 -4
- package/esm2022/lib/menu/components/menu.component.mjs +4 -4
- package/esm2022/lib/menu/menu.module.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +3 -3
- package/esm2022/lib/menu/services/menu-items.service.mjs +3 -3
- package/esm2022/lib/menu/services/menu.resolve.mjs +7 -7
- package/esm2022/lib/menu/services/menu.service.mjs +3 -3
- package/esm2022/lib/search/search.module.mjs +4 -4
- package/esm2022/lib/select/components/select.component.mjs +4 -4
- package/esm2022/lib/select/directives/vd-select-option.directive.mjs +3 -3
- package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +3 -3
- package/esm2022/lib/select/select.module.mjs +4 -4
- package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-clear.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-date.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-input.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-select.component.mjs +7 -7
- package/esm2022/lib/table/directives/data-source-filter.directive.mjs +4 -4
- package/esm2022/lib/table/directives/vd-table-field.directive.mjs +3 -3
- package/esm2022/lib/table/functions/decorators.mjs +1 -1
- package/esm2022/lib/table/functions/functions.mjs +1 -1
- package/esm2022/lib/table/paginator-intl.mjs +4 -4
- package/esm2022/lib/table/table.data-source.mjs +1 -1
- package/esm2022/lib/table/table.module.mjs +4 -4
- package/esm2022/lib/table/table.static-data-source.mjs +1 -1
- package/fesm2022/messaia-cdk.mjs +486 -490
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/common/styles/_theme-functions.scss +0 -23
- package/lib/common/styles/colors/_colors-dark.scss +1350 -345
- package/lib/common/styles/colors/_colors-light.scss +3157 -829
- package/lib/common/styles/core/_button.scss +35 -29
- package/lib/common/styles/{_common-theme.scss → m2/_common-theme.scss} +6 -6
- package/lib/common/styles/m2/_theme-functions.scss +21 -0
- package/lib/common/styles/m3/_common-theme.scss +47 -0
- package/lib/common/styles/m3/_theme-functions.scss +21 -0
- package/lib/common/styles/platform.scss +1 -1
- package/lib/common/theming/_all-theme.scss +1 -1
- package/lib/common/theming/_m2-all-theme.scss +27 -0
- package/lib/http/http.module.d.ts +1 -2
- package/lib/layout/{_layout-theme.scss → _m2-layout-theme.scss} +11 -10
- package/package.json +3 -3
|
@@ -268,8 +268,8 @@ export class VdFileInputComponent {
|
|
|
268
268
|
this.stateChanges.complete();
|
|
269
269
|
this.fm.stopMonitoring(this._elementRef.nativeElement);
|
|
270
270
|
}
|
|
271
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
272
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
271
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFileInputComponent, deps: [{ token: i1.NgControl }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
272
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: VdFileInputComponent, selector: "[vd-file-input]", inputs: { accept: "accept", placeholder: "placeholder", required: "required", multiple: "multiple", disabled: "disabled", errorState: "errorState" }, outputs: { onSelect: "select", onClear: "clear" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["fileElement"], descendants: true, static: true }, { propertyName: "_fileInputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: `
|
|
273
273
|
<div layout="row" flex>
|
|
274
274
|
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click(); $event.stopPropagation()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
275
275
|
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
@@ -283,7 +283,7 @@ export class VdFileInputComponent {
|
|
|
283
283
|
</div>
|
|
284
284
|
</div>`, isInline: true, styles: [".btn-suffix .mat-mdc-icon-button{position:absolute;right:-16px;top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] });
|
|
285
285
|
}
|
|
286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFileInputComponent, decorators: [{
|
|
287
287
|
type: Component,
|
|
288
288
|
args: [{ selector: '[vd-file-input]', template: `
|
|
289
289
|
<div layout="row" flex>
|
|
@@ -331,4 +331,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
331
331
|
type: HostBinding,
|
|
332
332
|
args: ['attr.aria-describedby']
|
|
333
333
|
}] } });
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUUvQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBMEJyQixNQUFNLE9BQU8sb0JBQW9CO0lBc0xiO0lBQThCO0lBQTBCO0lBQWlDO0lBQThCO0lBcEwxSTs7T0FFRztJQUNJLFdBQVcsR0FBRyxlQUFlLENBQUM7SUFFckM7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUxQzs7T0FFRztJQUNLLFlBQVksQ0FBVTtJQUU5Qjs7T0FFRztJQUNJLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFakM7O09BRUc7SUFDSSxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRWxDOztPQUVHO0lBQ0ksU0FBUyxHQUFZLEtBQUssQ0FBQztJQUVsQzs7T0FFRztJQUNJLFNBQVMsR0FBWSxL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QURsQixLQUFLO2dCQVFLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBU0MsRUFBRTtzQkFEUixXQUFXO2dCQVVELGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBNkZTLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHsgfTtcclxubGV0IG5leHRVbmlxdWVJZCA9IDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ1t2ZC1maWxlLWlucHV0XScsXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0PGlucHV0IG1hdElucHV0ICNmaWxlRWxlbWVudCBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuXHRcdFx0PGlucHV0IGhpZGRlbiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0XCIgI2ZpbGVJbnB1dCAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQpXCIgLz5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1zdWZmaXhcIj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhdmFsdWVcIiBtYXRTdWZmaXggKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuXHRcdFx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJ2YWx1ZVwiIG1hdFN1ZmZpeCAoY2xpY2spPVwiY2xlYXIoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5jbG9zZTwvbWF0LWljb24+XHJcblx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+YCxcclxuXHRzdHlsZXM6IFtgXHJcblx0XHQuYnRuLXN1ZmZpeCAubWF0LW1kYy1pY29uLWJ1dHRvbiB7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0cmlnaHQ6IC0xNnB4O1xyXG5cdFx0XHR0b3A6IDA7XHJcblx0XHR9YFxyXG5cdF0sXHJcblx0cHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRGaWxlSW5wdXRDb21wb25lbnQgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkRmlsZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcclxuXHJcblx0LyoqIFxyXG5cdCAqIEEgbmFtZSBmb3IgdGhpcyBjb250cm9sIHRoYXQgY2FuIGJlIHVzZWQgYnkgYHZkLWZpbGUtaW5wdXRgLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb250cm9sVHlwZSA9ICd2ZC1maWxlLWlucHV0JztcclxuXHJcblx0LyoqXHJcblx0ICogQmVjYXVzZSB0aGUgPG1hdC1mb3JtLWZpZWxkPiB1c2VzIHRoZSBPblB1c2ggY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSwgd2UgbmVlZCBcclxuXHQgKiB0byBsZXQgaXQga25vdyB3aGVuIHNvbWV0aGluZyBoYXBwZW5zIGluIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgdGhhdCBtYXkgcmVxdWlyZSBcclxuXHQgKiB0aGUgZm9ybSBmaWVsZCB0byBydW4gY2hhbmdlIGRldGVjdGlvbi4gV2UgZG8gdGhpcyB2aWEgdGhlIHN0YXRlQ2hhbmdlcyBwcm9wZXJ0eS4gXHJcblx0ICogU28gZmFyIHRoZSBvbmx5IHRoaW5nIHRoZSBmb3JtIGZpZWxkIG5lZWRzIHRvIGtub3cgYWJvdXQgaXMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gXHJcblx0ICogV2UnbGwgbmVlZCB0byBlbWl0IG9uIHRoZSBzdGF0ZUNoYW5nZXMgc3RyZWFtIHdoZW4gdGhhdCBoYXBwZW5zLCBhbmQgYXMgd2UgY29udGludWUgXHJcblx0ICogZmx1c2hpbmcgb3V0IHRoZXNlIHByb3BlcnRpZXMgd2UnbGwgbGlrZWx5IGZpbmQgbW9yZSBwbGFjZXMgd2UgbmVlZCB0byBlbWl0LiBXZSBcclxuXHQgKiBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdG8gY29tcGxldGUgc3RhdGVDaGFuZ2VzIHdoZW4gb3VyIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgcGxhY2Vob2xkZXIgZGlzcGxheWVkIGluIHRoZSB0cmlnZ2VyIG9mIHRoZSBzZWxlY3QuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHRlbGxzIHRoZSBmb3JtIGZpZWxkIHdoZW4gaXQgc2hvdWxkIGJlIGluIHRoZSBkaXNhYmxlZCBzdGF0ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBzdXBwb3J0IG11bHRpcGxlIGZpbGVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBhbGxvd3Mgc29tZW9uZSB0byBzZXQgb3IgZ2V0IHRoZSB2YWx1ZSBvZiBvdXIgY29udHJvbC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3ZhbHVlPzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBhY2NlcHQ/OiBzdHJpbmdcclxuXHQgKiBTZXRzIGZpbGVzIGFjY2VwdGVkIHdoZW4gb3BlbmluZyB0aGUgZmlsZSBicm93c2VyIGRpYWxvZy5cclxuXHQgKiBTYW1lIGFzICdhY2NlcHQnIGF0dHJpYnV0ZSBpbiA8aW5wdXQvPiBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGFjY2VwdD86IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0PzogZnVuY3Rpb25cclxuXHQgKiBFdmVudCBlbWl0dGVkIGEgZmlsZSBpcyBzZWxlY3RlZFxyXG5cdCAqIEVtaXRzIGEgW0ZpbGUgfCBGaWxlTGlzdF0gb2JqZWN0LlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ3NlbGVjdCcpXHJcblx0cHVibGljIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8RmlsZSB8IEZpbGVMaXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZSB8IEZpbGVMaXN0PigpO1xyXG5cclxuXHQvKipcclxuXHQqIGNsZWFyPzogZnVuY3Rpb25cclxuXHQqIEV2ZW50IGVtaXR0ZWQgYSBmaWxlIGlzIGNsZWFyZWRcclxuXHQqL1xyXG5cdEBPdXRwdXQoJ2NsZWFyJylcclxuXHRwdWJsaWMgb25DbGVhcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqIFxyXG5cdCAqIFRoZSBpbnB1dCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZmlsZUVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHByaXZhdGUgX2lucHV0RWxlbWVudD86IEVsZW1lbnRSZWY7XHJcblx0cHVibGljIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7IH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPVwiZmlsZVwiPiBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwcml2YXRlIF9maWxlSW5wdXRFbGVtZW50PzogRWxlbWVudFJlZjtcclxuXHRwdWJsaWMgZ2V0IGZpbGVJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9maWxlSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50OyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRlcnMgYW5kIGdldHRlcnMgZm9yIHRoZSBpbnB1dCB2YWx1ZS5cclxuXHQgKiBJdHMgdHlwZSBzaG91bGQgYmUgdGhlIHNhbWUgdHlwZSB3ZSB1c2VkIGZvciB0aGUgdHlwZSBwYXJhbWV0ZXIgd2hlbiB3ZSBcclxuXHQgKiBpbXBsZW1lbnRlZCBNYXRGb3JtRmllbGRDb250cm9sLiBTaW5jZSBvdXIgY29tcG9uZW50IGFscmVhZHkgaGFzIGEgdmFsdWUgXHJcblx0ICogcHJvcGVydHksIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgZm9yIHRoaXMgb25lLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH07XHJcblx0cHVibGljIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcclxuXHRcdGlmICh2ICE9PSB0aGlzLl92YWx1ZSkge1xyXG5cdFx0XHR0aGlzLl92YWx1ZSA9IHY7XHJcblx0XHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayh2KTtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGZvY3VzZWQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBmb2N1c2VkKCkgeyByZXR1cm4gdGhpcy5fZmlsZUlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZm9jdXNlZCA9PT0gdHJ1ZTsgfVxyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaGFzIGEgdmFsdWUuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLnZhbHVlOyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBQbGFjZWhvbGRlciB0byBiZSBzaG93biBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC5cclxuXHQgKiBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlIHBsYWNlaG9sZGVyIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBcclxuXHQgKiB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaW4gdGhlIHBhcmVudCBmb3JtIGZpZWxkIGJ5IGVtaXR0aW5nIG9uIHRoZSBzdGF0ZUNoYW5nZXMgXHJcblx0ICogc3RyZWFtIHdoZW4gdGhlIHBsYWNlaG9sZGVyIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlciA/PyAnJzsgfVxyXG5cdHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIHJlcXVpcmVkLlxyXG5cdCAqIEFnYWluLCB3ZSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBydW4gY2hhbmdlIGRldGVjdGlvbiBpZiB0aGUgcmVxdWlyZWQgc3RhdGUgY2hhbmdlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLl9yZXF1aXJlZDsgfVxyXG5cdHB1YmxpYyBzZXQgcmVxdWlyZWQocmVxKSB7XHJcblx0XHR0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgbXVsdGlwbGUuXHJcblx0ICogQWdhaW4sIHdlJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSByZXF1aXJlZCBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBtdWx0aXBsZSgpIHsgcmV0dXJuIHRoaXMuX211bHRpcGxlOyB9XHJcblx0cHVibGljIHNldCBtdWx0aXBsZShyZXEpIHtcclxuXHRcdHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbiBhZGRpdGlvbiB0byByZXBvcnRpbmcgdGhlIHJpZ2h0IHN0YXRlIHRvIHRoZSBmb3JtIGZpZWxkLCB3ZSBuZWVkIHRvIFxyXG5cdCAqIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGluZGl2aWR1YWwgaW5wdXRzIHRoYXQgbWFrZSB1cCBvdXIgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XHJcblx0cHVibGljIHNldCBkaXNhYmxlZChkaXMpIHtcclxuXHRcdHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGRpcyk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLm5nQ29udHJvbC5lcnJvcnMgIT09IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZCkgPz8gZmFsc2U7IH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBzaG91bGQgcmV0dXJuIHRoZSBJRCBvZiBhbiBlbGVtZW50IGluIHRoZSBjb21wb25lbnQncyB0ZW1wbGF0ZSBcclxuXHQgKiB0aGF0IHdlIHdhbnQgdGhlIDxtYXQtZm9ybS1maWVsZD4gdG8gYXNzb2NpYXRlIGFsbCBvZiBpdHMgbGFiZWxzIGFuZCBoaW50cyB3aXRoLiBcclxuXHQgKiBJbiB0aGlzIGNhc2UsIHdlJ2xsIHVzZSB0aGUgaG9zdCBlbGVtZW50IGFuZCBqdXN0IGdlbmVyYXRlIGEgdW5pcXVlIElEIGZvciBpdC5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoKVxyXG5cdHB1YmxpYyBpZDogc3RyaW5nID0gYHZkLWZpbGUtaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGJlIGluIHRoZSBmbG9hdGluZyBwb3NpdGlvbi5cclxuXHQgKiBXZSdsbCB1c2UgdGhlIHNhbWUgbG9naWMgYXMgbWF0SW5wdXQgYW5kIGZsb2F0IHRoZSBwbGFjZWhvbGRlciB3aGVuIHRoZSBpbnB1dCBpcyBmb2N1c2VkXHJcblx0ICogIG9yIG5vbi1lbXB0eS4gU2luY2UgdGhlIHBsYWNlaG9sZGVyIHdpbGwgYmUgb3ZlcmxhcHBpbmcgb3VyIGNvbnRyb2wgd2hlbiB3aGVuIGl0J3Mgbm90IFxyXG5cdCAqIGZsb2F0aW5nLCB3ZSBzaG91bGQgaGlkZSB0aGUg4oCTIGNoYXJhY3RlcnMgd2hlbiBpdCdzIG5vdCBmbG9hdGluZy5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0aW5nJylcclxuXHRwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gX21lcmNoYW50U2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsIHByaXZhdGUgZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHRuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcblx0XHRmbS5tb25pdG9yKF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xyXG5cdFx0XHR0aGlzLl9mb2N1c2VkID0gISFvcmlnaW47XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBNZXRob2QgZXhlY3V0ZWQgd2hlbiBhIGZpbGUgaXMgc2VsZWN0ZWQuXHJcblx0Ki9cclxuXHRwdWJsaWMgaGFuZGxlU2VsZWN0KCRldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGxldCBmaWxlID0gKCgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyA/PyBbXSlbMF07XHJcblx0XHRpZiAoZmlsZSkge1xyXG5cdFx0XHR0aGlzLndyaXRlVmFsdWUoZmlsZS5uYW1lKTtcclxuXHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KGZpbGUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBVc2VkIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlcyBmcm9tIHRoZSBbVmRGaWxlSW5wdXRDb21wb25lbnRdLlxyXG5cdCovXHJcblx0cHVibGljIGNsZWFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnB1dEVsZW1lbnQsICd2YWx1ZScsIG51bGwpO1xyXG5cdFx0dGhpcy5vbkNsZWFyLmVtaXQobnVsbCk7XHJcblx0fVxyXG5cclxuXHQvKiogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gdGhlIGRpc2FibGVkIHZhbHVlIGNoYW5nZXMgKi9cclxuXHRwdWJsaWMgb25EaXNhYmxlZENoYW5nZSh2OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRpZiAodikge1xyXG5cdFx0XHR0aGlzLmNsZWFyKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcblx0Ki9cclxuXHRwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcblx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdHRoaXMuZmlsZUlucHV0RWxlbWVudCEudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcblx0ICogQHBhcmFtIGZuIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gZm4gXHJcblx0ICovXHJcblx0cHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBsYWNlaG9sZGVycyBmb3IgdGhlIGNhbGxiYWNrcyB3aGljaCBhcmUgbGF0ZXIgcHJvdmlkZXNkIFxyXG5cdCAqIGJ5IHRoZSBDb250cm9sIFZhbHVlIEFjY2Vzc29yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuXHRwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgPG1hdC1mb3JtLWZpZWxkPiB0byBzcGVjaWZ5IHRoZSBJRHMgdGhhdCBcclxuXHQgKiBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIG9mIHlvdXIgY29tcG9uZW50LiBcclxuXHQgKiBUaGUgbWV0aG9kIGhhcyBvbmUgcGFyYW1ldGVyLCB0aGUgbGlzdCBvZiBJRHMsIHdlIGp1c3QgbmVlZCB0byBhcHBseVxyXG5cdCAqICB0aGUgZ2l2ZW4gSURzIHRvIG91ciBob3N0IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG5cdHB1YmxpYyBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcblx0XHR0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGZvcm0gZmllbGQgaXMgY2xpY2tlZCBvbi4gXHJcblx0ICogSXQgYWxsb3dzIHRoZSBjb21wb25lbnQgdG8gaG9vayBpbiBhbmQgaGFuZGxlIHRoYXQgY2xpY2sgaG93ZXZlciBpdCB3YW50cy4gXHJcblx0ICogVGhlIG1ldGhvZCBoYXMgb25lIHBhcmFtZXRlciwgdGhlIE1vdXNlRXZlbnQgZm9yIHRoZSBjbGljay4gSW4gb3VyIGNhc2Ugd2UnbGwgXHJcblx0ICoganVzdCBmb2N1cyB0aGUgZmlyc3QgPGlucHV0PiBpZiB0aGUgdXNlciBpc24ndCBhYm91dCB0byBjbGljayBhbiA8aW5wdXQ+IGFueXdheXMuXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcblx0XHRpZiAodGhpcy5lbXB0eSkge1xyXG5cdFx0XHR0aGlzLmlucHV0RWxlbWVudD8uY2xpY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYSBkaXJlY3RpdmUsIHBpcGUgb3Igc2VydmljZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuXHRcdHRoaXMuZm0uc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHR9XHJcbn0iXX0=
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUUvQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBMEJyQixNQUFNLE9BQU8sb0JBQW9CO0lBc0xiO0lBQThCO0lBQTBCO0lBQWlDO0lBQThCO0lBcEwxSTs7T0FFRztJQUNJLFdBQVcsR0FBRyxlQUFlLENBQUM7SUFFckM7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUxQzs7T0FFRztJQUNLLFlBQVksQ0FBVTtJQUU5Qjs7T0FFRztJQUNJLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFakM7O09BRUc7SUFDSSxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRWxDOztPQUVHO0lBQ0ksU0FBUyxHQUFZLEtBQUssQ0FBQztJQUVsQzs7T0FFRztJQUNJLFNBQVMsR0FBWSxL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c0JBRHJCLEtBQUs7Z0JBWUssUUFBUTtzQkFEbEIsS0FBSztnQkFZSyxRQUFRO3NCQURsQixLQUFLO2dCQVlLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssVUFBVTtzQkFEcEIsS0FBSztnQkFTQyxFQUFFO3NCQURSLFdBQVc7Z0JBVUQsZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQjtnQkE2RlMsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnW3ZkLWZpbGUtaW5wdXRdJyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHQ8aW5wdXQgbWF0SW5wdXQgI2ZpbGVFbGVtZW50IFsobmdNb2RlbCldPVwidmFsdWVcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHJlYWRvbmx5PVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxyXG5cdFx0XHQ8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIiAjZmlsZUlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudClcIiAvPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLXN1ZmZpeFwiPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiF2YWx1ZVwiIG1hdFN1ZmZpeCAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+ZmlsZV91cGxvYWQ8L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cInZhbHVlXCIgbWF0U3VmZml4IChjbGljayk9XCJjbGVhcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuXHRcdFx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5gLFxyXG5cdHN0eWxlczogW2BcclxuXHRcdC5idG4tc3VmZml4IC5tYXQtbWRjLWljb24tYnV0dG9uIHtcclxuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0XHRyaWdodDogLTE2cHg7XHJcblx0XHRcdHRvcDogMDtcclxuXHRcdH1gXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBWZEZpbGVJbnB1dENvbXBvbmVudCB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRGaWxlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xyXG5cclxuXHQvKiogXHJcblx0ICogQSBuYW1lIGZvciB0aGlzIGNvbnRyb2wgdGhhdCBjYW4gYmUgdXNlZCBieSBgdmQtZmlsZS1pbnB1dGAuXHJcblx0ICovXHJcblx0cHVibGljIGNvbnRyb2xUeXBlID0gJ3ZkLWZpbGUtaW5wdXQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBCZWNhdXNlIHRoZSA8bWF0LWZvcm0tZmllbGQ+IHVzZXMgdGhlIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LCB3ZSBuZWVkIFxyXG5cdCAqIHRvIGxldCBpdCBrbm93IHdoZW4gc29tZXRoaW5nIGhhcHBlbnMgaW4gdGhlIGZvcm0gZmllbGQgY29udHJvbCB0aGF0IG1heSByZXF1aXJlIFxyXG5cdCAqIHRoZSBmb3JtIGZpZWxkIHRvIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uLiBXZSBkbyB0aGlzIHZpYSB0aGUgc3RhdGVDaGFuZ2VzIHByb3BlcnR5LiBcclxuXHQgKiBTbyBmYXIgdGhlIG9ubHkgdGhpbmcgdGhlIGZvcm0gZmllbGQgbmVlZHMgdG8ga25vdyBhYm91dCBpcyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBcclxuXHQgKiBXZSdsbCBuZWVkIHRvIGVtaXQgb24gdGhlIHN0YXRlQ2hhbmdlcyBzdHJlYW0gd2hlbiB0aGF0IGhhcHBlbnMsIGFuZCBhcyB3ZSBjb250aW51ZSBcclxuXHQgKiBmbHVzaGluZyBvdXQgdGhlc2UgcHJvcGVydGllcyB3ZSdsbCBsaWtlbHkgZmluZCBtb3JlIHBsYWNlcyB3ZSBuZWVkIHRvIGVtaXQuIFdlIFxyXG5cdCAqIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0byBjb21wbGV0ZSBzdGF0ZUNoYW5nZXMgd2hlbiBvdXIgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcblx0LyoqIFxyXG5cdCAqIFRoZSBwbGFjZWhvbGRlciBkaXNwbGF5ZWQgaW4gdGhlIHRyaWdnZXIgb2YgdGhlIHNlbGVjdC5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9wbGFjZWhvbGRlcj86IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGlucHV0IGlzIGZvY3VzZWQuXHJcblx0ICovXHJcblx0cHVibGljIF9mb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgdGVsbHMgdGhlIGZvcm0gZmllbGQgd2hlbiBpdCBzaG91bGQgYmUgaW4gdGhlIGRpc2FibGVkIHN0YXRlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGlucHV0IGlzIHJlcXVpcmVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGlucHV0IHN1cHBvcnQgbXVsdGlwbGUgZmlsZXMuXHJcblx0ICovXHJcblx0cHVibGljIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IGFsbG93cyBzb21lb25lIHRvIHNldCBvciBnZXQgdGhlIHZhbHVlIG9mIG91ciBjb250cm9sLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfdmFsdWU/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGFjY2VwdD86IHN0cmluZ1xyXG5cdCAqIFNldHMgZmlsZXMgYWNjZXB0ZWQgd2hlbiBvcGVuaW5nIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nLlxyXG5cdCAqIFNhbWUgYXMgJ2FjY2VwdCcgYXR0cmlidXRlIGluIDxpbnB1dC8+IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYWNjZXB0Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3Q/OiBmdW5jdGlvblxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgYSBmaWxlIGlzIHNlbGVjdGVkXHJcblx0ICogRW1pdHMgYSBbRmlsZSB8IEZpbGVMaXN0XSBvYmplY3QuXHJcblx0ICovXHJcblx0QE91dHB1dCgnc2VsZWN0JylcclxuXHRwdWJsaWMgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCogY2xlYXI/OiBmdW5jdGlvblxyXG5cdCogRXZlbnQgZW1pdHRlZCBhIGZpbGUgaXMgY2xlYXJlZFxyXG5cdCovXHJcblx0QE91dHB1dCgnY2xlYXInKVxyXG5cdHB1YmxpYyBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIGlucHV0IGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmaWxlRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHJpdmF0ZSBfaW5wdXRFbGVtZW50PzogRWxlbWVudFJlZjtcclxuXHRwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudDsgfVxyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIG5hdGl2ZSBgPGlucHV0IHR5cGU9XCJmaWxlXCI+IGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHByaXZhdGUgX2ZpbGVJbnB1dEVsZW1lbnQ/OiBFbGVtZW50UmVmO1xyXG5cdHB1YmxpYyBnZXQgZmlsZUlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2ZpbGVJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7IH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgdGhlIGlucHV0IHZhbHVlLlxyXG5cdCAqIEl0cyB0eXBlIHNob3VsZCBiZSB0aGUgc2FtZSB0eXBlIHdlIHVzZWQgZm9yIHRoZSB0eXBlIHBhcmFtZXRlciB3aGVuIHdlIFxyXG5cdCAqIGltcGxlbWVudGVkIE1hdEZvcm1GaWVsZENvbnRyb2wuIFNpbmNlIG91ciBjb21wb25lbnQgYWxyZWFkeSBoYXMgYSB2YWx1ZSBcclxuXHQgKiBwcm9wZXJ0eSwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBmb3IgdGhpcyBvbmUuXHJcblx0ICovXHJcblx0cHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fdmFsdWUgfTtcclxuXHRwdWJsaWMgc2V0IHZhbHVlKHY6IHN0cmluZykge1xyXG5cdFx0aWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcblx0XHRcdHRoaXMuX3ZhbHVlID0gdjtcclxuXHRcdFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgZm9jdXNlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGZvY3VzZWQoKSB7IHJldHVybiB0aGlzLl9maWxlSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5mb2N1c2VkID09PSB0cnVlOyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBXaGV0aGVyIHRoZSBpbnB1dCBoYXMgYSB2YWx1ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMudmFsdWU7IH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFBsYWNlaG9sZGVyIHRvIGJlIHNob3duIGlmIG5vIHZhbHVlIGhhcyBiZWVuIHNlbGVjdGVkLlxyXG5cdCAqIFNpbmNlIHRoZSB2YWx1ZSBvZiB0aGUgcGxhY2Vob2xkZXIgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvIFxyXG5cdCAqIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpbiB0aGUgcGFyZW50IGZvcm0gZmllbGQgYnkgZW1pdHRpbmcgb24gdGhlIHN0YXRlQ2hhbmdlcyBcclxuXHQgKiBzdHJlYW0gd2hlbiB0aGUgcGxhY2Vob2xkZXIgY2hhbmdlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyID8/ICcnOyB9XHJcblx0cHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVxdWlyZWQuXHJcblx0ICogQWdhaW4sIHdlJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSByZXF1aXJlZCBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCByZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMuX3JlcXVpcmVkOyB9XHJcblx0cHVibGljIHNldCByZXF1aXJlZChyZXEpIHtcclxuXHRcdHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBtdWx0aXBsZS5cclxuXHQgKiBBZ2Fpbiwgd2UnbGwgd2FudCB0byBtYWtlIHN1cmUgd2UgcnVuIGNoYW5nZSBkZXRlY3Rpb24gaWYgdGhlIHJlcXVpcmVkIHN0YXRlIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IG11bHRpcGxlKCkgeyByZXR1cm4gdGhpcy5fbXVsdGlwbGU7IH1cclxuXHRwdWJsaWMgc2V0IG11bHRpcGxlKHJlcSkge1xyXG5cdFx0dGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluIGFkZGl0aW9uIHRvIHJlcG9ydGluZyB0aGUgcmlnaHQgc3RhdGUgdG8gdGhlIGZvcm0gZmllbGQsIHdlIG5lZWQgdG8gXHJcblx0ICogc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiB0aGUgaW5kaXZpZHVhbCBpbnB1dHMgdGhhdCBtYWtlIHVwIG91ciBjb21wb25lbnQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuXHRwdWJsaWMgc2V0IGRpc2FibGVkKGRpcykge1xyXG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMubmdDb250cm9sLmVycm9ycyAhPT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkKSA/PyBmYWxzZTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHNob3VsZCByZXR1cm4gdGhlIElEIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGNvbXBvbmVudCdzIHRlbXBsYXRlIFxyXG5cdCAqIHRoYXQgd2Ugd2FudCB0aGUgPG1hdC1mb3JtLWZpZWxkPiB0byBhc3NvY2lhdGUgYWxsIG9mIGl0cyBsYWJlbHMgYW5kIGhpbnRzIHdpdGguIFxyXG5cdCAqIEluIHRoaXMgY2FzZSwgd2UnbGwgdXNlIHRoZSBob3N0IGVsZW1lbnQgYW5kIGp1c3QgZ2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIGl0LlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygpXHJcblx0cHVibGljIGlkOiBzdHJpbmcgPSBgdmQtZmlsZS1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYmUgaW4gdGhlIGZsb2F0aW5nIHBvc2l0aW9uLlxyXG5cdCAqIFdlJ2xsIHVzZSB0aGUgc2FtZSBsb2dpYyBhcyBtYXRJbnB1dCBhbmQgZmxvYXQgdGhlIHBsYWNlaG9sZGVyIHdoZW4gdGhlIGlucHV0IGlzIGZvY3VzZWRcclxuXHQgKiAgb3Igbm9uLWVtcHR5LiBTaW5jZSB0aGUgcGxhY2Vob2xkZXIgd2lsbCBiZSBvdmVybGFwcGluZyBvdXIgY29udHJvbCB3aGVuIHdoZW4gaXQncyBub3QgXHJcblx0ICogZmxvYXRpbmcsIHdlIHNob3VsZCBoaWRlIHRoZSDigJMgY2hhcmFjdGVycyB3aGVuIGl0J3Mgbm90IGZsb2F0aW5nLlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygnY2xhc3MuZmxvYXRpbmcnKVxyXG5cdHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuXHRcdHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBfbWVyY2hhbnRTZXJ2aWNlIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuXHRcdGZtLm1vbml0b3IoX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XHJcblx0XHRcdHRoaXMuX2ZvY3VzZWQgPSAhIW9yaWdpbjtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGEgZmlsZSBpcyBzZWxlY3RlZC5cclxuXHQqL1xyXG5cdHB1YmxpYyBoYW5kbGVTZWxlY3QoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0bGV0IGZpbGUgPSAoKCRldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzID8/IFtdKVswXTtcclxuXHRcdGlmIChmaWxlKSB7XHJcblx0XHRcdHRoaXMud3JpdGVWYWx1ZShmaWxlLm5hbWUpO1xyXG5cdFx0XHR0aGlzLm9uU2VsZWN0LmVtaXQoZmlsZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIFVzZWQgdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGVzIGZyb20gdGhlIFtWZEZpbGVJbnB1dENvbXBvbmVudF0uXHJcblx0Ki9cclxuXHRwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcblx0XHR0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0RWxlbWVudCwgJ3ZhbHVlJywgbnVsbCk7XHJcblx0XHR0aGlzLm9uQ2xlYXIuZW1pdChudWxsKTtcclxuXHR9XHJcblxyXG5cdC8qKiBNZXRob2QgZXhlY3V0ZWQgd2hlbiB0aGUgZGlzYWJsZWQgdmFsdWUgY2hhbmdlcyAqL1xyXG5cdHB1YmxpYyBvbkRpc2FibGVkQ2hhbmdlKHY6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdGlmICh2KSB7XHJcblx0XHRcdHRoaXMuY2xlYXIoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuXHQqL1xyXG5cdHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHJcblx0XHRpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xyXG5cdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuXHRcdGlmICghdmFsdWUpIHtcclxuXHRcdFx0dGhpcy5maWxlSW5wdXRFbGVtZW50IS52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gZm4gXHJcblx0ICovXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSBmbiBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGxhY2Vob2xkZXJzIGZvciB0aGUgY2FsbGJhY2tzIHdoaWNoIGFyZSBsYXRlciBwcm92aWRlc2QgXHJcblx0ICogYnkgdGhlIENvbnRyb2wgVmFsdWUgQWNjZXNzb3JcclxuXHQgKi9cclxuXHRwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG5cdHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSA8bWF0LWZvcm0tZmllbGQ+IHRvIHNwZWNpZnkgdGhlIElEcyB0aGF0IFxyXG5cdCAqIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgb2YgeW91ciBjb21wb25lbnQuIFxyXG5cdCAqIFRoZSBtZXRob2QgaGFzIG9uZSBwYXJhbWV0ZXIsIHRoZSBsaXN0IG9mIElEcywgd2UganVzdCBuZWVkIHRvIGFwcGx5XHJcblx0ICogIHRoZSBnaXZlbiBJRHMgdG8gb3VyIGhvc3QgZWxlbWVudC5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcblx0cHVibGljIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcclxuXHRcdHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgZm9ybSBmaWVsZCBpcyBjbGlja2VkIG9uLiBcclxuXHQgKiBJdCBhbGxvd3MgdGhlIGNvbXBvbmVudCB0byBob29rIGluIGFuZCBoYW5kbGUgdGhhdCBjbGljayBob3dldmVyIGl0IHdhbnRzLiBcclxuXHQgKiBUaGUgbWV0aG9kIGhhcyBvbmUgcGFyYW1ldGVyLCB0aGUgTW91c2VFdmVudCBmb3IgdGhlIGNsaWNrLiBJbiBvdXIgY2FzZSB3ZSdsbCBcclxuXHQgKiBqdXN0IGZvY3VzIHRoZSBmaXJzdCA8aW5wdXQ+IGlmIHRoZSB1c2VyIGlzbid0IGFib3V0IHRvIGNsaWNrIGFuIDxpbnB1dD4gYW55d2F5cy5cclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0cHVibGljIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuXHRcdGlmICh0aGlzLmVtcHR5KSB7XHJcblx0XHRcdHRoaXMuaW5wdXRFbGVtZW50Py5jbGljaygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIGRpcmVjdGl2ZSwgcGlwZSBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG5cdFx0dGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG5cdH1cclxufSJdfQ==
|
|
@@ -8,19 +8,19 @@ import { VdFileInputComponent } from './file-input.component';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export { VdFileInputComponent } from './file-input.component';
|
|
10
10
|
export class VdFileModule {
|
|
11
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
11
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: VdFileModule, declarations: [VdFileInputComponent], imports: [CommonModule,
|
|
13
13
|
FormsModule,
|
|
14
14
|
MatInputModule,
|
|
15
15
|
MatIconModule,
|
|
16
16
|
MatButtonModule], exports: [VdFileInputComponent] });
|
|
17
|
-
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
17
|
+
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFileModule, imports: [CommonModule,
|
|
18
18
|
FormsModule,
|
|
19
19
|
MatInputModule,
|
|
20
20
|
MatIconModule,
|
|
21
21
|
MatButtonModule] });
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFileModule, decorators: [{
|
|
24
24
|
type: NgModule,
|
|
25
25
|
args: [{
|
|
26
26
|
imports: [
|
|
@@ -30,4 +30,4 @@ export function calculate(numbers) {
|
|
|
30
30
|
/* Return the calculated checksum value */
|
|
31
31
|
return modulus;
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVobi1hbGdvcml0aG0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvYWxnb3JpdGhtL2x1aG4tYWxnb3JpdGhtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBZTtJQUNyQyxrQ0FBa0M7SUFDbEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLDhFQUE4RTtJQUM5RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLFNBQVMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpELHlGQUF5RjtJQUN6RixLQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlDLGtHQUFrRztRQUNsRyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCx5REFBeUQ7SUFDekQsSUFBSSxPQUFPLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUU3QixvRUFBb0U7SUFDcEUsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFdkIsdUNBQXVDO0lBQ3ZDLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENhbGN1bGF0ZXMgdGhlIGNoZWNrc3VtIGFjY29yZGluZyB0byB0aGUgTHVobiBhbGdvcml0aG0gZm9yIHRoZSBwcm92aWRlZCBzdHJpbmcgb2YgZGlnaXRzLlxyXG4gKiBUaGUgTHVobiBhbGdvcml0aG0gaXMgY29tbW9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBpZGVudGlmaWNhdGlvbiBudW1iZXJzIGxpa2UgY3JlZGl0IGNhcmQgbnVtYmVycy5cclxuICogXHJcbiAqIEBwYXJhbSBudW1iZXJzIEEgc3RyaW5nIG9mIGRpZ2l0cyBmb3Igd2hpY2ggdGhlIGNoZWNrc3VtIGlzIHRvIGJlIGNhbGN1bGF0ZWQuXHJcbiAqIEByZXR1cm5zIFRoZSBjYWxjdWxhdGVkIGNoZWNrc3VtIHZhbHVlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZShudW1iZXJzOiBzdHJpbmcpIHtcclxuICAgIC8qIEluaXRpYWxpemUgdGhlIHN1bSBvZiBkaWdpdHMgKi9cclxuICAgIGxldCBudW1iZXJTdW0gPSAwO1xyXG5cclxuICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCBhZGQgaXQgdG8gdGhlIHN1bSAqL1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbnVtYmVyU3VtICs9IHBhcnNlSW50KG51bWJlcnMuc3Vic3RyaW5nKGksIGkgKyAxKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyogRGVmaW5lIHByZXNldCBkZWx0YXMgZm9yIGNlcnRhaW4gZGlnaXQgcG9zaXRpb25zICovXHJcbiAgICBsZXQgZGVsdGFzID0gbmV3IEFycmF5KDAsIDEsIDIsIDMsIDQsIC00LCAtMywgLTIsIC0xLCAwKTtcclxuXHJcbiAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGlucHV0IHN0cmluZyBmcm9tIHJpZ2h0IHRvIGxlZnQsIHNraXBwaW5nIGV2ZXJ5IG90aGVyIGNoYXJhY3RlciAqL1xyXG4gICAgZm9yICh2YXIgaSA9IG51bWJlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDIpIHtcclxuICAgICAgICAvKiBFeHRyYWN0IHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgZGVsdGFzIGFycmF5IGFuZCBhZGQgaXQgdG8gdGhlIHN1bSAqL1xyXG4gICAgICAgIG51bWJlclN1bSArPSBkZWx0YXNbcGFyc2VJbnQobnVtYmVycy5zdWJzdHJpbmcoaSwgaSArIDEpKV07XHJcbiAgICB9XHJcblxyXG4gICAgLyogQ2FsY3VsYXRlIHRoZSBtb2R1bHVzIG9mIHRoZSBzdW0gd2l0aCByZXNwZWN0IHRvIDEwICovXHJcbiAgICBsZXQgbW9kdWx1cyA9IG51bWJlclN1bSAlIDEwO1xyXG5cclxuICAgIC8qIENhbGN1bGF0ZSB0aGUgY29tcGxlbWVudCBvZiB0aGUgbW9kdWx1cyAoMTAgbWludXMgdGhlIG1vZHVsdXMpICovXHJcbiAgICBtb2R1bHVzID0gMTAgLSBtb2R1bHVzO1xyXG5cclxuICAgIC8qIElmIHRoZSBtb2R1bHVzIGlzIDEwLCBzZXQgaXQgdG8gMCAqL1xyXG4gICAgaWYgKG1vZHVsdXMgPT0gMTApIHtcclxuICAgICAgICBtb2R1bHVzID0gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKiBSZXR1cm4gdGhlIGNhbGN1bGF0ZWQgY2hlY2tzdW0gdmFsdWUgKi9cclxuICAgIHJldHVybiBtb2R1bHVzO1xyXG59Il19
|
|
@@ -252,26 +252,26 @@ export class DefaultContainer {
|
|
|
252
252
|
addInstanceContainer(instanceFunc) {
|
|
253
253
|
/* Define an instance container */
|
|
254
254
|
let instanceContainer = {
|
|
255
|
-
instance: instanceFunc,
|
|
256
|
-
propertyAnnotations: [],
|
|
257
|
-
properties: [],
|
|
255
|
+
instance: instanceFunc, /* Instance associated with the container */
|
|
256
|
+
propertyAnnotations: [], /* Annotations for the properties */
|
|
257
|
+
properties: [], /* Properties associated with the instance */
|
|
258
258
|
nonValidationDecorators: {
|
|
259
259
|
/* Disabled decorators */
|
|
260
260
|
disabled: {
|
|
261
|
-
conditionalExpressions: {},
|
|
262
|
-
changeDetection: {},
|
|
261
|
+
conditionalExpressions: {}, /* Conditional expressions for disabled decorators */
|
|
262
|
+
changeDetection: {}, /* Change detection for disabled decorators */
|
|
263
263
|
controlProp: {} /* Control properties for disabled decorators */
|
|
264
264
|
},
|
|
265
265
|
/* Error decorators */
|
|
266
266
|
error: {
|
|
267
|
-
conditionalExpressions: {},
|
|
268
|
-
changeDetection: {},
|
|
267
|
+
conditionalExpressions: {}, /* Conditional expressions for error decorators */
|
|
268
|
+
changeDetection: {}, /* Change detection for error decorators */
|
|
269
269
|
controlProp: {} /* Control properties for error decorators */
|
|
270
270
|
},
|
|
271
271
|
/* Element class decorators */
|
|
272
272
|
elementClass: {
|
|
273
|
-
conditionalExpressions: {},
|
|
274
|
-
changeDetection: {},
|
|
273
|
+
conditionalExpressions: {}, /* Conditional expressions for element class decorators */
|
|
274
|
+
changeDetection: {}, /* Change detection for element class decorators */
|
|
275
275
|
controlProp: {} /* Control properties for element class decorators */
|
|
276
276
|
}
|
|
277
277
|
},
|
|
@@ -495,4 +495,4 @@ export class DefaultContainer {
|
|
|
495
495
|
* This class serves as a container for managing instance-related configurations and properties.
|
|
496
496
|
*/
|
|
497
497
|
export const defaultContainer = new DefaultContainer();
|
|
498
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvY29yZS9kZWZhdWx0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7OztJQUdBO0lBQ08sY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7O09BR0c7SUFDSyxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBSSxZQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzNGLDhDQUE4QztRQUM5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUUvQyw0RUFBNEU7UUFDNUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFB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QVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzNDO2lCQUNKO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7Q0FDSjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVJSQVlfUFJPUEVSVFksIE9CSkVDVF9QUk9QRVJUWSwgUFJPUEVSVFksIFJYQ09ERSB9IGZyb20gXCIuLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBERUNPUkFUT1JTIH0gZnJvbSBcIi4uL2NvbnN0L2RlY29yYXRvcnMuY29uc3RcIjtcclxuaW1wb3J0IHsgUHJvcHNDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9wcm9wcy1jb25maWdcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZGVjb3JhdG9yLWNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgSW5zdGFuY2VDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2luc3RhbmNlLWNvbnRhaW5lclwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3BlcnR5LWluZm9cIjtcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4vYW5ub3RhdGlvbi10eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBkZWZhdWx0IGNvbnRhaW5lciBmb3IgbWFuYWdpbmcgaW5zdGFuY2UgY29uZmlndXJhdGlvbnMuXHJcbiAqIFxyXG4gKiBNYW5hZ2VzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIHZhbGlkYXRpb24gZGVjb3JhdG9ycywgc2FuaXRpemVycywgYW5kIG90aGVyIHByb3BlcnRpZXMgZm9yIGNsYXNzZXMuXHJcbiAqIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBwcm9wZXJ0aWVzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERlZmF1bHRDb250YWluZXIge1xyXG4gICAgLyoqXHJcbiAgKiBSZXByZXNlbnRzIHdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBvcGVyYXRpbmcgaW4gZXhwZXJpbWVudGFsIG1vZGUuXHJcbiAgKiBFeHBlcmltZW50YWwgbW9kZSBtYXkgaW50cm9kdWNlIGZlYXR1cmVzIHRoYXQgYXJlIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IG9yIHRlc3RpbmcuXHJcbiAgKi9cclxuICAgIHB1YmxpYyBpc0V4cGVyaW1lbnRhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgY29udGFpbmluZyBpbnN0YW5jZXMgYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICogRWFjaCBlbGVtZW50IHJlcHJlc2VudHMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggYXNzb2NpYXRlZCBwcm9wZXJ0aWVzIGFuZCBkZWNvcmF0b3JzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluc3RhbmNlczogSW5zdGFuY2VDb250YWluZXJbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ291bnRlciB1c2VkIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgbW9kZWwgaW5zdGFuY2VzLlxyXG4gICAgICogVGhpcyBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBtb2RlbCBpbnN0YW5jZSBpcyBhZGRlZCB0byB0aGUgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbW9kZWxJbmNyZW1lbnRDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluc3RhbmNlIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0PFQ+KGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyBhbiBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVySW5kZXggVGhlIHBhcmFtZXRlciBpbmRleC5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUgcHJvcGVydHkga2V5LlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICogQHJldHVybnMgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEluc3RhbmNlKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSBpbnN0YW5jZSBmdW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBrZXkgaXMgZGVmaW5lZCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUZ1bmMgPSAhaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAgICAgLyogRmlsdGVyIGluc3RhbmNlcyB0byBmaW5kIHRoZSBvbmUgbWF0Y2hpbmcgdGhlIGluc3RhbmNlIGZ1bmN0aW9uICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG5cclxuICAgICAgICAvKiBJZiBubyBpbnN0YW5jZSBpcyBmb3VuZCwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZXR1cm4gdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgcHJvcGVydHkgY29uZmlndXJhdGlvbnMgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBjb25maWdzIFRoZSBjb25maWd1cmF0aW9ucy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BzQ29uZmlnKHRhcmdldDogYW55LCBjb25maWdzPzogUHJvcHNDb25maWdbXSkge1xyXG4gICAgICAgIC8qIEZpbmQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IHRhcmdldCk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBpbnN0YW5jZSBjb250YWluZXIgZXhpc3RzICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm9uZSBhcmUgcHJvdmlkZWQgKi9cclxuICAgICAgICAgICAgZm9yIChsZXQgY29uZmlnIG9mIGNvbmZpZ3MgPz8gW10pIHtcclxuICAgICAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvcGVydHkgbmFtZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb3Agb2YgY29uZmlnLnByb3BOYW1lcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEZpbmQgdGhlIHByb3BlcnR5IGluZm8gaW4gdGhlIGluc3RhbmNlIGNvbnRhaW5lcidzIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlJbmZvID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcz8uZmluZCh0ID0+IHQubmFtZSA9PSBwcm9wICYmICh0LnByb3BlcnR5VHlwZSAhPT0gT0JKRUNUX1BST1BFUlRZICYmIHQucHJvcGVydHlUeXBlICE9PSBBUlJBWV9QUk9QRVJUWSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBJZiB0aGUgcHJvcGVydHkgaW5mbyBleGlzdHMsIGFkZCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5SW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BDb25maWcodGFyZ2V0LCBbcHJvcGVydHlJbmZvXSwgY29uZmlnKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBuYW1lIGlzICc6YWxsOicsIGFkZCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIGZvciBhbGwgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCI6YWxsOlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BDb25maWcodGFyZ2V0LCBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5maWx0ZXIodCA9PiB0LnByb3BlcnR5VHlwZSAhPT0gT0JKRUNUX1BST1BFUlRZICYmIHQucHJvcGVydHlUeXBlICE9PSBBUlJBWV9QUk9QRVJUWSkhLCBjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb25maWdzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLyogSWYgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBkb2VzIG5vdCBleGlzdCBhbmQgbm8gY29uZmlndXJhdGlvbnMgYXJlIHByb3ZpZGVkLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIodGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgcHJvcGVydHkgY29uZmlndXJhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcENvbmZpZyh0YXJnZXQ6IGFueSwgcHJvcGVydGllczogUHJvcGVydHlJbmZvW10sIGNvbmZpZzogUHJvcHNDb25maWcpIHtcclxuICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIHRoZSBwcm92aWRlZCBwcm9wZXJ0aWVzIGFuZCBhcHBsaWVzIGNvbmZpZ3VyYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb25maWcgb2JqZWN0ICovXHJcbiAgICAgICAgZm9yICh2YXIgcHJvcGVydHlJbmZvIG9mIHByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgbGV0IGV4Y2x1ZGVQcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiBleGNsdWRlUHJvcE5hbWVzIGV4aXN0IGluIHRoZSBjb25maWcgKi9cclxuICAgICAgICAgICAgaWYgKGNvbmZpZy5leGNsdWRlUHJvcE5hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY3VycmVudCBwcm9wZXJ0eSBzaG91bGQgYmUgZXhjbHVkZWQgYmFzZWQgb24gaXRzIG5hbWUgKi9cclxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVQcm9wID0gY29uZmlnLmV4Y2x1ZGVQcm9wTmFtZXMuZmluZCh0ID0+IHQgPT0gcHJvcGVydHlJbmZvLm5hbWUpICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGV4Y2x1ZGVkICovXHJcbiAgICAgICAgICAgIGlmICghZXhjbHVkZVByb3ApIHtcclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudmFsaWRhdGlvbkNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9ucyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHR5cGVOYW1lIGluIGNvbmZpZy52YWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemUgdmFsaWRhdGlvbiBmb3IgdGhlIHByb3BlcnR5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdCh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIHR5cGVOYW1lLCAoY29uZmlnLnZhbGlkYXRpb25Db25maWcgYXMgYW55KVt0eXBlTmFtZV0gPT09IHRydWUgPyB1bmRlZmluZWQgOiAoY29uZmlnLnZhbGlkYXRpb25Db25maWcgYXMgYW55KVt0eXBlTmFtZV0sIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgZXJyb3IgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5lcnJvciwgREVDT1JBVE9SUy5lcnJvcilcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBcHBseSBkaXNhYmxlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmRpc2FibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5kaXNhYmxlLCBERUNPUkFUT1JTLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGVsZW1lbnRDbGFzcyBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lbGVtZW50Q2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5lbGVtZW50Q2xhc3MsIERFQ09SQVRPUlMuZWxlbWVudENsYXNzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGlnbm9yZSBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmlnbm9yZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SW5mby5pZ25vcmUgPSBjb25maWcuaWdub3JlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgc2FuaXRpemVyIHRvIHRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVySW5kZXggVGhlIHBhcmFtZXRlciBpbmRleC5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUgcHJvcGVydHkga2V5LlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFNhbml0aXplcih0YXJnZXQ6IGFueSwgcGFyYW1ldGVySW5kZXg6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xyXG4gICAgICAgIC8qIFJldHJpZXZlcyB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzIGFuZCBhZGRzIGEgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24gdG8gaXQgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmdldEluc3RhbmNlKHRhcmdldCwgcGFyYW1ldGVySW5kZXgsIHByb3BlcnR5S2V5LCBkZWNvcmF0b3JUeXBlKTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHNhbml0aXplcnMgb2JqZWN0IGZvciB0aGUgcHJvcGVydHkgZXhpc3RzICovXHJcbiAgICAgICAgICAgIGlmICghKGluc3RhbmNlLnNhbml0aXplcnMgYXMgYW55KVtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgICAgICAgIChpbnN0YW5jZS5zYW5pdGl6ZXJzIGFzIGFueSlbcHJvcGVydHlLZXldID0gW107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIFB1c2ggdGhlIHNhbml0aXplciBjb25maWd1cmF0aW9uIHRvIHRoZSBzYW5pdGl6ZXJzIG9iamVjdCAqL1xyXG4gICAgICAgICAgICAoaW5zdGFuY2Uuc2FuaXRpemVycyBhcyBhbnkpW3Byb3BlcnR5S2V5XS5wdXNoKHsgbmFtZTogZGVjb3JhdG9yVHlwZSwgY29uZmlnOiB2YWx1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkRGVjb3JhdG9yQ29uZmlnKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBjb25maWc6IGFueSwgZGVjb3JhdG9yVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIGlmIHRoZSBwcm9wZXJ0eSBrZXkgaXMgZGVmaW5lZCAqL1xyXG4gICAgICAgIGxldCBpc1Byb3BlcnR5S2V5ID0gKHByb3BlcnR5S2V5ICE9IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICAgIC8qIERldGVybWluZSB0aGUgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IgdG8gYmUgdXNlZCBhcyBpbnN0YW5jZUZ1bmMgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2VGdW5jID0gIWlzUHJvcGVydHlLZXkgPyB0YXJnZXQgOiB0YXJnZXQuY29uc3RydWN0b3I7XHJcblxyXG4gICAgICAgIC8qIEZpbmQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiBpbnN0YW5jZUZ1bmMgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maW5kKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpO1xyXG5cclxuICAgICAgICAvKiBJZiB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBvbmUgKi9cclxuICAgICAgICBpZiAoIWluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQWRkIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIHRvIHRoZSBub24tdmFsaWRhdGlvbiBkZWNvcmF0b3JzIG9mIHRoZSBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29uZGl0aW9uYWxFeHByZXNzaW9uc1twcm9wZXJ0eUtleV0gPSBjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uO1xyXG5cclxuICAgICAgICAvKiBFeHRyYWN0IGNvbHVtbnMgZnJvbSB0aGUgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiAqL1xyXG4gICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uLCB0cnVlKTtcclxuXHJcbiAgICAgICAgLyogSXRlcmF0ZSBvdmVyIGVhY2ggY29sdW1uICovXHJcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXJndW1lbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIC8qIENvbnN0cnVjdCB0aGUgY29sdW1uIG5hbWUgYmFzZWQgb24gd2hldGhlciBvYmplY3RQcm9wTmFtZSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uTmFtZSA9ICghY29sdW1uLm9iamVjdFByb3BOYW1lKSA/IGAke2NvbHVtbi5wcm9wTmFtZX0ke1JYQ09ERX0ke2NvbHVtbi5hcmd1bWVudEluZGV4fWAgOiBgJHtjb2x1bW4ub2JqZWN0UHJvcE5hbWV9LiR7Y29sdW1uLnByb3BOYW1lfSR7UlhDT0RFfSR7Y29sdW1uLmFyZ3VtZW50SW5kZXh9YDtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY29sdW1uIGV4aXN0cyBpbiBjaGFuZ2VEZXRlY3Rpb24gYW5kIGluaXRpYWxpemUgaXQgaWYgbmVjZXNzYXJ5ICovXHJcbiAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY2hhbmdlRGV0ZWN0aW9uW2NvbHVtbk5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQWRkIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdGhlIGNoYW5nZURldGVjdGlvbiBjb2x1bW4gKi9cclxuICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZENvbHVtbnMgPSAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY2hhbmdlRGV0ZWN0aW9uW2NvbHVtbk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbk5hbWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkQ29sdW1ucy5wdXNoKHByb3BlcnR5S2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIEhhbmRsZSB0aGUgY29udHJvbFByb3AgaWYgYXJndW1lbnRJbmRleCBpcyAtMSAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNvbnRyb2xQcm9wW3Byb3BlcnR5S2V5XSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFNldCB0aGUgY29sdW1uIG5hbWUgdG8gdHJ1ZSBpbiBjb250cm9sUHJvcCAqL1xyXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNvbnRyb2xQcm9wW3Byb3BlcnR5S2V5XVtjb2x1bW4ucHJvcE5hbWUucmVwbGFjZShcIjtcIiwgXCJcIildID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNBc3luYyBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0KHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBhbm5vdGF0aW9uVHlwZTogc3RyaW5nLCBjb25maWc6IGFueSwgaXNBc3luYzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIC8qIERlZmluZSB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICB2YXIgZGVjb3JhdG9yQ29uZmlndXJhdGlvbjogRGVjb3JhdG9yQ29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgcHJvcGVydHlJbmRleDogcGFyYW1ldGVySW5kZXgsXHJcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIGFubm90YXRpb25UeXBlOiBhbm5vdGF0aW9uVHlwZSxcclxuICAgICAgICAgICAgY29uZmlnOiBjb25maWcsXHJcbiAgICAgICAgICAgIGlzQXN5bmM6IGlzQXN5bmMsXHJcbiAgICAgICAgICAgIGlzVmFsaWRhdG9yOiBhbm5vdGF0aW9uVHlwZSAhPT0gXCJ1cGRhdGVPblwiXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGFzIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbighaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvciwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIHByb3BlcnR5IG9iamVjdC5cclxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5VHlwZSBUaGUgcHJvcGVydHkgdHlwZS5cclxuICAgICAqIEBwYXJhbSBlbnRpdHkgVGhlIGVudGl0eS5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0UHJvcGVydHlPYmplY3QobmFtZTogc3RyaW5nLCBwcm9wZXJ0eVR5cGU6IHN0cmluZywgZW50aXR5OiBhbnksIHRhcmdldDogYW55LCBjb25maWc/OiBhbnkpIHtcclxuICAgICAgICAvKiBEZWZpbmUgdGhlIHByb3BlcnR5IGluZm9ybWF0aW9uICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBwcm9wZXJ0eVR5cGU6IHByb3BlcnR5VHlwZSxcclxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXHJcbiAgICAgICAgICAgIGRhdGFQcm9wZXJ0eU5hbWU6IGNvbmZpZyA/IGNvbmZpZy5uYW1lIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBlbnRpdHlQcm92aWRlcjogY29uZmlnID8gY29uZmlnLmVudGl0eVByb3ZpZGVyIDogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgdGhlIHByb3BlcnR5IHRvIHRoZSB0YXJnZXQncyBjb25zdHJ1Y3RvciAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkodGFyZ2V0LmNvbnN0cnVjdG9yLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhbiBpbnN0YW5jZSBjb250YWluZXIgdG8gdGhlIGxpc3Qgb2YgaW5zdGFuY2VzLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgYWRkZWQgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgLyogRGVmaW5lIGFuIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZUZ1bmMsICAgICAvKiBJbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUFubm90YXRpb25zOiBbXSwgICAgLyogQW5ub3RhdGlvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdLCAgICAgICAgICAgICAvKiBQcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgbm9uVmFsaWRhdGlvbkRlY29yYXRvcnM6IHtcclxuICAgICAgICAgICAgICAgIC8qIERpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBkaXNhYmxlZCBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiB7fSwgICAgICAgIC8qIENoYW5nZSBkZXRlY3Rpb24gZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBkaXNhYmxlZCBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBlcnJvciBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiB7fSwgICAgICAgIC8qIENoYW5nZSBkZXRlY3Rpb24gZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBlcnJvciBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEVsZW1lbnQgY2xhc3MgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudENsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbFByb3A6IHt9ICAgICAgICAgICAgIC8qIENvbnRyb2wgcHJvcGVydGllcyBmb3IgZWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvKiBTYW5pdGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgc2FuaXRpemVyczoge31cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvKiBBZGQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciB0byB0aGUgaW5zdGFuY2VzIGFycmF5ICovXHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMucHVzaChpbnN0YW5jZUNvbnRhaW5lcik7XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgY3JlYXRlZCBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICByZXR1cm4gaW5zdGFuY2VDb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZUZ1bmMgVGhlIGluc3RhbmNlIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyBUaGUgcHJvcGVydHkgaW5mb3JtYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNGcm9tQW5ub3RhdGlvbiBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFkZGVkIGZyb20gYW4gYW5ub3RhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BlcnR5KGluc3RhbmNlRnVuYzogYW55LCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbywgaXNGcm9tQW5ub3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBpbnN0YW5jZSBleGlzdHMgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBleGlzdGluZyBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZSwgcHJvcGVydHlJbmZvLCAhaXNGcm9tQW5ub3RhdGlvbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLyogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGNvbnRhaW5lciBpZiBpdCBkb2Vzbid0IGV4aXN0ICovXHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG5cclxuICAgICAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyBUaGUgcHJvcGVydHkgaW5mb3JtYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNBZGRQcm9wZXJ0eSBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFkZGVkIGFzIGEgbmV3IHByb3BlcnR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8sIGlzQWRkUHJvcGVydHk6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIC8qIEZpbmQgdGhlIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgaW5zdGFuY2UncyBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5ID0gaW5zdGFuY2UucHJvcGVydGllcz8uZmluZCh0ID0+IHQubmFtZSA9PSBwcm9wZXJ0eUluZm8ubmFtZSk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0IGFscmVhZHkgZXhpc3QgKi9cclxuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0aWVzPy5wdXNoKHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0FkZFByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIC8qIFVwZGF0ZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWQgKi9cclxuICAgICAgICAgICAgcHJvcGVydHkuZGF0YVByb3BlcnR5TmFtZSA9IHByb3BlcnR5SW5mby5kYXRhUHJvcGVydHlOYW1lO1xyXG4gICAgICAgICAgICBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUgPSBwcm9wZXJ0eUluZm8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gYW5ub3RhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yQ29uZmlndXJhdGlvbiBUaGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydHkgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydHlBbm5vdGF0aW9ucy5wdXNoKGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY2hhbmdlIHZhbGlkYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lLCBjb2x1bW5zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIHZhbGlkYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5keW5hbWljQ29uZmlnLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIGNvbHVtbnMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbENvbHVtbnMoaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBjb25kaXRpb25hbCBjb2x1bW5zIGJhc2VkIG9uIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvckNvbmZpZ3VyYXRpb24gVGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9uYWxDb2x1bW5zKGluc3RhbmNlOiBhbnksIGRlY29yYXRvckNvbmZpZ3VyYXRpb246IERlY29yYXRvckNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW4gaW5zdGFuY2UgYW5kIGRlY29yYXRvciBjb25maWd1cmF0aW9uIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcpIHtcclxuICAgICAgICAgICAgLyogSGFuZGxlcyBsb2dpY2FsIGFubm90YXRpb25zIChBTkQsIE9SLCBOT1QpICovXHJcbiAgICAgICAgICAgIGlmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5hbmQgfHxcclxuICAgICAgICAgICAgICAgIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm9yIHx8XHJcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ub3RcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlcyBvdmVyIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb24pLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tzIGlmIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgbm90IGEgYm9vbGVhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcudmFsaWRhdGlvblt0XSAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0cyBsb2dpY2FsIGNvbmRpdGlvbmFsIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2dpY2FsQ29uZGl0aW9uYWwoaW5zdGFuY2UsIHQsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFNldHMgbG9naWNhbCBjb25kaXRpb25hbCBmb3Igbm9uLWxvZ2ljYWwgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbG9naWNhbCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBwcm9wZXJ0eSBuYW1lLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlOiBhbnksIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBhbmQgYW5ub3RhdGlvbiB0eXBlIHdpdGggYXBwbGljYWJsZSBjb25kaXRpb25zXHJcbiAgICAgICAgICogZm9yIHNldHRpbmcgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgKFxyXG4gICAgICAgICAgICAoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHxcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZGlmZmVyZW50IHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heFRpbWUpIHx8XHJcbiAgICAgICAgICAgIChhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmaWVsZE5hbWUpIHx8XHJcbiAgICAgICAgICAgICgoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZpZWxkTmFtZSlcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICAgIC8qIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydHkgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgKi9cclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZmllbGROYW1lLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIHByb3BlcnR5IG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcmVmUHJvcGVydHlOYW1lIFRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJlZlByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogQ2hlY2tzIGlmIHByb3BOYW1lIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgLyogU3BsaXRzIHByb3BOYW1lIGludG8gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGxldCBzcGxpdFByb3BzID0gcHJvcGVydHlOYW1lLnNwbGl0ID8gcHJvcGVydHlOYW1lLnNwbGl0KCcuJykgOiAnJztcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHNwbGl0UHJvcHMgaXMgbGVzcyB0aGFuIDIgKi9cclxuICAgICAgICAgICAgaWYgKHNwbGl0UHJvcHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgaWYgaXQgZG9lcyBub3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFB1c2hlcyByZWZQcm9wTmFtZSBpbnRvIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihyZWZQcm9wZXJ0eU5hbWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXS5wdXNoKHJlZlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKiBBZGRzIGNoYW5nZSB2YWxpZGF0aW9uIGZvciBjb21wbGV4IHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgcmVmUHJvcGVydHlOYW1lLCBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IHNwbGl0UHJvcHNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWU6IHNwbGl0UHJvcHNbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUHJvcE5hbWU6IHJlZlByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICAgfV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBjaGFuZ2UgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgY29sdW1ucy5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrcyBpZiBpbnN0YW5jZSBleGlzdHMuICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIGNvbHVtbnMuICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrcyBpZiBwcm9wTmFtZSBleGlzdHMgYW5kIG9iamVjdFByb3BOYW1lIGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplcyBjb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoZXMgcHJvcGVydHlOYW1lIGludG8gY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0gaWYgaXQgZG9lcyBub3QgZXhpc3QuICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdLmluZGV4T2YocHJvcGVydHlOYW1lKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgYXMgYW55KVt0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVja3MgaWYgcHJvcE5hbWUgYW5kIG9iamVjdFByb3BOYW1lIGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxPYmplY3RQcm9wcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldHMgcmVmZXJlbmNlUHJvcE5hbWUgYW5kIGFkZHMgaXQgdG8gY29uZGl0aW9uYWxPYmplY3RQcm9wcy4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdC5yZWZlcmVuY2VQcm9wTmFtZSA9IHByb3BlcnR5TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9IG5ldyBEZWZhdWx0Q29udGFpbmVyKCk7Il19
|
|
498
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvY29yZS9kZWZhdWx0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7OztJQUdBO0lBQ08sY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7O09BR0c7SUFDSyxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBSSxZQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzNGLDhDQUE4QztRQUM5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUUvQyw0RUFBNEU7UUFDNUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFB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b0JBQzlFLElBQUksQ0FBRSxRQUFRLENBQUMsMEJBQWtDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7d0JBQzNELFFBQVEsQ0FBQywwQkFBa0MsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsRSxDQUFDO29CQUVELDJGQUEyRjtvQkFDM0YsSUFBSyxRQUFRLENBQUMsMEJBQWtDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN0RixRQUFRLENBQUMsMEJBQWtDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDaEYsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osa0RBQWtEO29CQUNsRCxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUNqQyw4REFBOEQ7d0JBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzs0QkFDbkMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQzt3QkFFRCxtRUFBbUU7d0JBQ25FLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUM7d0JBQ25DLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVJSQVlfUFJPUEVSVFksIE9CSkVDVF9QUk9QRVJUWSwgUFJPUEVSVFksIFJYQ09ERSB9IGZyb20gXCIuLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBERUNPUkFUT1JTIH0gZnJvbSBcIi4uL2NvbnN0L2RlY29yYXRvcnMuY29uc3RcIjtcclxuaW1wb3J0IHsgUHJvcHNDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9wcm9wcy1jb25maWdcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZGVjb3JhdG9yLWNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgSW5zdGFuY2VDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2luc3RhbmNlLWNvbnRhaW5lclwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3BlcnR5LWluZm9cIjtcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4vYW5ub3RhdGlvbi10eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBkZWZhdWx0IGNvbnRhaW5lciBmb3IgbWFuYWdpbmcgaW5zdGFuY2UgY29uZmlndXJhdGlvbnMuXHJcbiAqIFxyXG4gKiBNYW5hZ2VzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIHZhbGlkYXRpb24gZGVjb3JhdG9ycywgc2FuaXRpemVycywgYW5kIG90aGVyIHByb3BlcnRpZXMgZm9yIGNsYXNzZXMuXHJcbiAqIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBwcm9wZXJ0aWVzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERlZmF1bHRDb250YWluZXIge1xyXG4gICAgLyoqXHJcbiAgKiBSZXByZXNlbnRzIHdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBvcGVyYXRpbmcgaW4gZXhwZXJpbWVudGFsIG1vZGUuXHJcbiAgKiBFeHBlcmltZW50YWwgbW9kZSBtYXkgaW50cm9kdWNlIGZlYXR1cmVzIHRoYXQgYXJlIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IG9yIHRlc3RpbmcuXHJcbiAgKi9cclxuICAgIHB1YmxpYyBpc0V4cGVyaW1lbnRhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgY29udGFpbmluZyBpbnN0YW5jZXMgYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICogRWFjaCBlbGVtZW50IHJlcHJlc2VudHMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggYXNzb2NpYXRlZCBwcm9wZXJ0aWVzIGFuZCBkZWNvcmF0b3JzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluc3RhbmNlczogSW5zdGFuY2VDb250YWluZXJbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ291bnRlciB1c2VkIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgbW9kZWwgaW5zdGFuY2VzLlxyXG4gICAgICogVGhpcyBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBtb2RlbCBpbnN0YW5jZSBpcyBhZGRlZCB0byB0aGUgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbW9kZWxJbmNyZW1lbnRDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluc3RhbmNlIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0PFQ+KGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyBhbiBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVySW5kZXggVGhlIHBhcmFtZXRlciBpbmRleC5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUgcHJvcGVydHkga2V5LlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICogQHJldHVybnMgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEluc3RhbmNlKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSBpbnN0YW5jZSBmdW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBrZXkgaXMgZGVmaW5lZCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUZ1bmMgPSAhaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAgICAgLyogRmlsdGVyIGluc3RhbmNlcyB0byBmaW5kIHRoZSBvbmUgbWF0Y2hpbmcgdGhlIGluc3RhbmNlIGZ1bmN0aW9uICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG5cclxuICAgICAgICAvKiBJZiBubyBpbnN0YW5jZSBpcyBmb3VuZCwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZXR1cm4gdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgcHJvcGVydHkgY29uZmlndXJhdGlvbnMgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBjb25maWdzIFRoZSBjb25maWd1cmF0aW9ucy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BzQ29uZmlnKHRhcmdldDogYW55LCBjb25maWdzPzogUHJvcHNDb25maWdbXSkge1xyXG4gICAgICAgIC8qIEZpbmQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IHRhcmdldCk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBpbnN0YW5jZSBjb250YWluZXIgZXhpc3RzICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm9uZSBhcmUgcHJvdmlkZWQgKi9cclxuICAgICAgICAgICAgZm9yIChsZXQgY29uZmlnIG9mIGNvbmZpZ3MgPz8gW10pIHtcclxuICAgICAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvcGVydHkgbmFtZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb3Agb2YgY29uZmlnLnByb3BOYW1lcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEZpbmQgdGhlIHByb3BlcnR5IGluZm8gaW4gdGhlIGluc3RhbmNlIGNvbnRhaW5lcidzIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlJbmZvID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcz8uZmluZCh0ID0+IHQubmFtZSA9PSBwcm9wICYmICh0LnByb3BlcnR5VHlwZSAhPT0gT0JKRUNUX1BST1BFUlRZICYmIHQucHJvcGVydHlUeXBlICE9PSBBUlJBWV9QUk9QRVJUWSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBJZiB0aGUgcHJvcGVydHkgaW5mbyBleGlzdHMsIGFkZCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5SW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BDb25maWcodGFyZ2V0LCBbcHJvcGVydHlJbmZvXSwgY29uZmlnKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBuYW1lIGlzICc6YWxsOicsIGFkZCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIGZvciBhbGwgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCI6YWxsOlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BDb25maWcodGFyZ2V0LCBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5maWx0ZXIodCA9PiB0LnByb3BlcnR5VHlwZSAhPT0gT0JKRUNUX1BST1BFUlRZICYmIHQucHJvcGVydHlUeXBlICE9PSBBUlJBWV9QUk9QRVJUWSkhLCBjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb25maWdzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLyogSWYgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBkb2VzIG5vdCBleGlzdCBhbmQgbm8gY29uZmlndXJhdGlvbnMgYXJlIHByb3ZpZGVkLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIodGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgcHJvcGVydHkgY29uZmlndXJhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcENvbmZpZyh0YXJnZXQ6IGFueSwgcHJvcGVydGllczogUHJvcGVydHlJbmZvW10sIGNvbmZpZzogUHJvcHNDb25maWcpIHtcclxuICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIHRoZSBwcm92aWRlZCBwcm9wZXJ0aWVzIGFuZCBhcHBsaWVzIGNvbmZpZ3VyYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb25maWcgb2JqZWN0ICovXHJcbiAgICAgICAgZm9yICh2YXIgcHJvcGVydHlJbmZvIG9mIHByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgbGV0IGV4Y2x1ZGVQcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiBleGNsdWRlUHJvcE5hbWVzIGV4aXN0IGluIHRoZSBjb25maWcgKi9cclxuICAgICAgICAgICAgaWYgKGNvbmZpZy5leGNsdWRlUHJvcE5hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY3VycmVudCBwcm9wZXJ0eSBzaG91bGQgYmUgZXhjbHVkZWQgYmFzZWQgb24gaXRzIG5hbWUgKi9cclxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVQcm9wID0gY29uZmlnLmV4Y2x1ZGVQcm9wTmFtZXMuZmluZCh0ID0+IHQgPT0gcHJvcGVydHlJbmZvLm5hbWUpICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGV4Y2x1ZGVkICovXHJcbiAgICAgICAgICAgIGlmICghZXhjbHVkZVByb3ApIHtcclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudmFsaWRhdGlvbkNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9ucyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHR5cGVOYW1lIGluIGNvbmZpZy52YWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemUgdmFsaWRhdGlvbiBmb3IgdGhlIHByb3BlcnR5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdCh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIHR5cGVOYW1lLCAoY29uZmlnLnZhbGlkYXRpb25Db25maWcgYXMgYW55KVt0eXBlTmFtZV0gPT09IHRydWUgPyB1bmRlZmluZWQgOiAoY29uZmlnLnZhbGlkYXRpb25Db25maWcgYXMgYW55KVt0eXBlTmFtZV0sIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgZXJyb3IgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5lcnJvciwgREVDT1JBVE9SUy5lcnJvcilcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBcHBseSBkaXNhYmxlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmRpc2FibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5kaXNhYmxlLCBERUNPUkFUT1JTLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGVsZW1lbnRDbGFzcyBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lbGVtZW50Q2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5lbGVtZW50Q2xhc3MsIERFQ09SQVRPUlMuZWxlbWVudENsYXNzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGlnbm9yZSBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmlnbm9yZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SW5mby5pZ25vcmUgPSBjb25maWcuaWdub3JlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgc2FuaXRpemVyIHRvIHRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVySW5kZXggVGhlIHBhcmFtZXRlciBpbmRleC5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUgcHJvcGVydHkga2V5LlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFNhbml0aXplcih0YXJnZXQ6IGFueSwgcGFyYW1ldGVySW5kZXg6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xyXG4gICAgICAgIC8qIFJldHJpZXZlcyB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzIGFuZCBhZGRzIGEgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24gdG8gaXQgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmdldEluc3RhbmNlKHRhcmdldCwgcGFyYW1ldGVySW5kZXgsIHByb3BlcnR5S2V5LCBkZWNvcmF0b3JUeXBlKTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHNhbml0aXplcnMgb2JqZWN0IGZvciB0aGUgcHJvcGVydHkgZXhpc3RzICovXHJcbiAgICAgICAgICAgIGlmICghKGluc3RhbmNlLnNhbml0aXplcnMgYXMgYW55KVtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgICAgICAgIChpbnN0YW5jZS5zYW5pdGl6ZXJzIGFzIGFueSlbcHJvcGVydHlLZXldID0gW107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIFB1c2ggdGhlIHNhbml0aXplciBjb25maWd1cmF0aW9uIHRvIHRoZSBzYW5pdGl6ZXJzIG9iamVjdCAqL1xyXG4gICAgICAgICAgICAoaW5zdGFuY2Uuc2FuaXRpemVycyBhcyBhbnkpW3Byb3BlcnR5S2V5XS5wdXNoKHsgbmFtZTogZGVjb3JhdG9yVHlwZSwgY29uZmlnOiB2YWx1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkRGVjb3JhdG9yQ29uZmlnKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBjb25maWc6IGFueSwgZGVjb3JhdG9yVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIGlmIHRoZSBwcm9wZXJ0eSBrZXkgaXMgZGVmaW5lZCAqL1xyXG4gICAgICAgIGxldCBpc1Byb3BlcnR5S2V5ID0gKHByb3BlcnR5S2V5ICE9IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICAgIC8qIERldGVybWluZSB0aGUgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IgdG8gYmUgdXNlZCBhcyBpbnN0YW5jZUZ1bmMgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2VGdW5jID0gIWlzUHJvcGVydHlLZXkgPyB0YXJnZXQgOiB0YXJnZXQuY29uc3RydWN0b3I7XHJcblxyXG4gICAgICAgIC8qIEZpbmQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiBpbnN0YW5jZUZ1bmMgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maW5kKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpO1xyXG5cclxuICAgICAgICAvKiBJZiB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBvbmUgKi9cclxuICAgICAgICBpZiAoIWluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQWRkIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIHRvIHRoZSBub24tdmFsaWRhdGlvbiBkZWNvcmF0b3JzIG9mIHRoZSBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29uZGl0aW9uYWxFeHByZXNzaW9uc1twcm9wZXJ0eUtleV0gPSBjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uO1xyXG5cclxuICAgICAgICAvKiBFeHRyYWN0IGNvbHVtbnMgZnJvbSB0aGUgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiAqL1xyXG4gICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uLCB0cnVlKTtcclxuXHJcbiAgICAgICAgLyogSXRlcmF0ZSBvdmVyIGVhY2ggY29sdW1uICovXHJcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXJndW1lbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIC8qIENvbnN0cnVjdCB0aGUgY29sdW1uIG5hbWUgYmFzZWQgb24gd2hldGhlciBvYmplY3RQcm9wTmFtZSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uTmFtZSA9ICghY29sdW1uLm9iamVjdFByb3BOYW1lKSA/IGAke2NvbHVtbi5wcm9wTmFtZX0ke1JYQ09ERX0ke2NvbHVtbi5hcmd1bWVudEluZGV4fWAgOiBgJHtjb2x1bW4ub2JqZWN0UHJvcE5hbWV9LiR7Y29sdW1uLnByb3BOYW1lfSR7UlhDT0RFfSR7Y29sdW1uLmFyZ3VtZW50SW5kZXh9YDtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY29sdW1uIGV4aXN0cyBpbiBjaGFuZ2VEZXRlY3Rpb24gYW5kIGluaXRpYWxpemUgaXQgaWYgbmVjZXNzYXJ5ICovXHJcbiAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY2hhbmdlRGV0ZWN0aW9uW2NvbHVtbk5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQWRkIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdGhlIGNoYW5nZURldGVjdGlvbiBjb2x1bW4gKi9cclxuICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZENvbHVtbnMgPSAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY2hhbmdlRGV0ZWN0aW9uW2NvbHVtbk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbk5hbWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkQ29sdW1ucy5wdXNoKHByb3BlcnR5S2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIEhhbmRsZSB0aGUgY29udHJvbFByb3AgaWYgYXJndW1lbnRJbmRleCBpcyAtMSAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNvbnRyb2xQcm9wW3Byb3BlcnR5S2V5XSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFNldCB0aGUgY29sdW1uIG5hbWUgdG8gdHJ1ZSBpbiBjb250cm9sUHJvcCAqL1xyXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNvbnRyb2xQcm9wW3Byb3BlcnR5S2V5XVtjb2x1bW4ucHJvcE5hbWUucmVwbGFjZShcIjtcIiwgXCJcIildID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNBc3luYyBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0KHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBhbm5vdGF0aW9uVHlwZTogc3RyaW5nLCBjb25maWc6IGFueSwgaXNBc3luYzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIC8qIERlZmluZSB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICB2YXIgZGVjb3JhdG9yQ29uZmlndXJhdGlvbjogRGVjb3JhdG9yQ29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgcHJvcGVydHlJbmRleDogcGFyYW1ldGVySW5kZXgsXHJcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIGFubm90YXRpb25UeXBlOiBhbm5vdGF0aW9uVHlwZSxcclxuICAgICAgICAgICAgY29uZmlnOiBjb25maWcsXHJcbiAgICAgICAgICAgIGlzQXN5bmM6IGlzQXN5bmMsXHJcbiAgICAgICAgICAgIGlzVmFsaWRhdG9yOiBhbm5vdGF0aW9uVHlwZSAhPT0gXCJ1cGRhdGVPblwiXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGFzIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbighaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvciwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIHByb3BlcnR5IG9iamVjdC5cclxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5VHlwZSBUaGUgcHJvcGVydHkgdHlwZS5cclxuICAgICAqIEBwYXJhbSBlbnRpdHkgVGhlIGVudGl0eS5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0UHJvcGVydHlPYmplY3QobmFtZTogc3RyaW5nLCBwcm9wZXJ0eVR5cGU6IHN0cmluZywgZW50aXR5OiBhbnksIHRhcmdldDogYW55LCBjb25maWc/OiBhbnkpIHtcclxuICAgICAgICAvKiBEZWZpbmUgdGhlIHByb3BlcnR5IGluZm9ybWF0aW9uICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBwcm9wZXJ0eVR5cGU6IHByb3BlcnR5VHlwZSxcclxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXHJcbiAgICAgICAgICAgIGRhdGFQcm9wZXJ0eU5hbWU6IGNvbmZpZyA/IGNvbmZpZy5uYW1lIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBlbnRpdHlQcm92aWRlcjogY29uZmlnID8gY29uZmlnLmVudGl0eVByb3ZpZGVyIDogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgdGhlIHByb3BlcnR5IHRvIHRoZSB0YXJnZXQncyBjb25zdHJ1Y3RvciAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkodGFyZ2V0LmNvbnN0cnVjdG9yLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhbiBpbnN0YW5jZSBjb250YWluZXIgdG8gdGhlIGxpc3Qgb2YgaW5zdGFuY2VzLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgYWRkZWQgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgLyogRGVmaW5lIGFuIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZUZ1bmMsICAgICAvKiBJbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUFubm90YXRpb25zOiBbXSwgICAgLyogQW5ub3RhdGlvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdLCAgICAgICAgICAgICAvKiBQcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgbm9uVmFsaWRhdGlvbkRlY29yYXRvcnM6IHtcclxuICAgICAgICAgICAgICAgIC8qIERpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBkaXNhYmxlZCBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiB7fSwgICAgICAgIC8qIENoYW5nZSBkZXRlY3Rpb24gZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBkaXNhYmxlZCBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBlcnJvciBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiB7fSwgICAgICAgIC8qIENoYW5nZSBkZXRlY3Rpb24gZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBlcnJvciBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEVsZW1lbnQgY2xhc3MgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudENsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbFByb3A6IHt9ICAgICAgICAgICAgIC8qIENvbnRyb2wgcHJvcGVydGllcyBmb3IgZWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvKiBTYW5pdGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgc2FuaXRpemVyczoge31cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvKiBBZGQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciB0byB0aGUgaW5zdGFuY2VzIGFycmF5ICovXHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMucHVzaChpbnN0YW5jZUNvbnRhaW5lcik7XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgY3JlYXRlZCBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICByZXR1cm4gaW5zdGFuY2VDb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZUZ1bmMgVGhlIGluc3RhbmNlIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyBUaGUgcHJvcGVydHkgaW5mb3JtYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNGcm9tQW5ub3RhdGlvbiBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFkZGVkIGZyb20gYW4gYW5ub3RhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BlcnR5KGluc3RhbmNlRnVuYzogYW55LCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbywgaXNGcm9tQW5ub3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBpbnN0YW5jZSBleGlzdHMgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBleGlzdGluZyBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZSwgcHJvcGVydHlJbmZvLCAhaXNGcm9tQW5ub3RhdGlvbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLyogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGNvbnRhaW5lciBpZiBpdCBkb2Vzbid0IGV4aXN0ICovXHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG5cclxuICAgICAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyBUaGUgcHJvcGVydHkgaW5mb3JtYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNBZGRQcm9wZXJ0eSBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFkZGVkIGFzIGEgbmV3IHByb3BlcnR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8sIGlzQWRkUHJvcGVydHk6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIC8qIEZpbmQgdGhlIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgaW5zdGFuY2UncyBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5ID0gaW5zdGFuY2UucHJvcGVydGllcz8uZmluZCh0ID0+IHQubmFtZSA9PSBwcm9wZXJ0eUluZm8ubmFtZSk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0IGFscmVhZHkgZXhpc3QgKi9cclxuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0aWVzPy5wdXNoKHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0FkZFByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIC8qIFVwZGF0ZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWQgKi9cclxuICAgICAgICAgICAgcHJvcGVydHkuZGF0YVByb3BlcnR5TmFtZSA9IHByb3BlcnR5SW5mby5kYXRhUHJvcGVydHlOYW1lO1xyXG4gICAgICAgICAgICBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUgPSBwcm9wZXJ0eUluZm8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gYW5ub3RhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yQ29uZmlndXJhdGlvbiBUaGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydHkgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydHlBbm5vdGF0aW9ucy5wdXNoKGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY2hhbmdlIHZhbGlkYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lLCBjb2x1bW5zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIHZhbGlkYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5keW5hbWljQ29uZmlnLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIGNvbHVtbnMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbENvbHVtbnMoaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBjb25kaXRpb25hbCBjb2x1bW5zIGJhc2VkIG9uIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvckNvbmZpZ3VyYXRpb24gVGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9uYWxDb2x1bW5zKGluc3RhbmNlOiBhbnksIGRlY29yYXRvckNvbmZpZ3VyYXRpb246IERlY29yYXRvckNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW4gaW5zdGFuY2UgYW5kIGRlY29yYXRvciBjb25maWd1cmF0aW9uIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcpIHtcclxuICAgICAgICAgICAgLyogSGFuZGxlcyBsb2dpY2FsIGFubm90YXRpb25zIChBTkQsIE9SLCBOT1QpICovXHJcbiAgICAgICAgICAgIGlmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5hbmQgfHxcclxuICAgICAgICAgICAgICAgIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm9yIHx8XHJcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ub3RcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlcyBvdmVyIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb24pLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tzIGlmIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgbm90IGEgYm9vbGVhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcudmFsaWRhdGlvblt0XSAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0cyBsb2dpY2FsIGNvbmRpdGlvbmFsIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2dpY2FsQ29uZGl0aW9uYWwoaW5zdGFuY2UsIHQsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFNldHMgbG9naWNhbCBjb25kaXRpb25hbCBmb3Igbm9uLWxvZ2ljYWwgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbG9naWNhbCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBwcm9wZXJ0eSBuYW1lLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlOiBhbnksIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBhbmQgYW5ub3RhdGlvbiB0eXBlIHdpdGggYXBwbGljYWJsZSBjb25kaXRpb25zXHJcbiAgICAgICAgICogZm9yIHNldHRpbmcgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgKFxyXG4gICAgICAgICAgICAoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHxcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZGlmZmVyZW50IHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heFRpbWUpIHx8XHJcbiAgICAgICAgICAgIChhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmaWVsZE5hbWUpIHx8XHJcbiAgICAgICAgICAgICgoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZpZWxkTmFtZSlcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICAgIC8qIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydHkgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgKi9cclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZmllbGROYW1lLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIHByb3BlcnR5IG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcmVmUHJvcGVydHlOYW1lIFRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJlZlByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogQ2hlY2tzIGlmIHByb3BOYW1lIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgLyogU3BsaXRzIHByb3BOYW1lIGludG8gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGxldCBzcGxpdFByb3BzID0gcHJvcGVydHlOYW1lLnNwbGl0ID8gcHJvcGVydHlOYW1lLnNwbGl0KCcuJykgOiAnJztcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHNwbGl0UHJvcHMgaXMgbGVzcyB0aGFuIDIgKi9cclxuICAgICAgICAgICAgaWYgKHNwbGl0UHJvcHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgaWYgaXQgZG9lcyBub3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFB1c2hlcyByZWZQcm9wTmFtZSBpbnRvIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihyZWZQcm9wZXJ0eU5hbWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXS5wdXNoKHJlZlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKiBBZGRzIGNoYW5nZSB2YWxpZGF0aW9uIGZvciBjb21wbGV4IHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgcmVmUHJvcGVydHlOYW1lLCBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IHNwbGl0UHJvcHNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWU6IHNwbGl0UHJvcHNbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUHJvcE5hbWU6IHJlZlByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICAgfV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBjaGFuZ2UgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgY29sdW1ucy5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrcyBpZiBpbnN0YW5jZSBleGlzdHMuICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIGNvbHVtbnMuICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrcyBpZiBwcm9wTmFtZSBleGlzdHMgYW5kIG9iamVjdFByb3BOYW1lIGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplcyBjb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoZXMgcHJvcGVydHlOYW1lIGludG8gY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0gaWYgaXQgZG9lcyBub3QgZXhpc3QuICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdLmluZGV4T2YocHJvcGVydHlOYW1lKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgYXMgYW55KVt0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVja3MgaWYgcHJvcE5hbWUgYW5kIG9iamVjdFByb3BOYW1lIGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxPYmplY3RQcm9wcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldHMgcmVmZXJlbmNlUHJvcE5hbWUgYW5kIGFkZHMgaXQgdG8gY29uZGl0aW9uYWxPYmplY3RQcm9wcy4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdC5yZWZlcmVuY2VQcm9wTmFtZSA9IHByb3BlcnR5TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9IG5ldyBEZWZhdWx0Q29udGFpbmVyKCk7Il19
|
|
@@ -64,12 +64,12 @@ export class BaseDirective {
|
|
|
64
64
|
ApplicationUtil.configureControl(control, annotation.config ? annotation.config : "", annotation.annotationType);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
68
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
67
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: BaseDirective, inputs: { model: "model" }, ngImport: i0 });
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseDirective, decorators: [{
|
|
71
71
|
type: Directive
|
|
72
72
|
}], propDecorators: { model: [{
|
|
73
73
|
type: Input
|
|
74
74
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy9iYXNlLWRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRW5EOztHQUVHO0FBRUgsTUFBTSxPQUFnQixhQUFhO0lBQy9COztPQUVHO0lBRUksS0FBSyxDQUFNO0lBRWxCOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxRQUFhLEVBQUUsUUFBYSxJQUFJO1FBQ3BELGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLGlFQUFpRTtZQUNqRSxJQUFJLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFeEUscUNBQXFDO1lBQ3JDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2QsMkRBQTJEO2dCQUMzRCxXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDdkMsMENBQTBDO29CQUMxQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDMUIsb0NBQW9DO3dCQUNwQyxRQUFRLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDNUIsS0FBSyxRQUFRO2dDQUNULHlEQUF5RDtnQ0FDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dDQUN4RSxNQUFNOzRCQUVWLEtBQUssZUFBZTtnQ0FDaEIsZ0VBQWdFO2dDQUNoRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dDQUN6RSxNQUFNO3dCQUNkLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssa0JBQWtCLENBQUMsT0FBd0IsRUFBRSxXQUE4QixFQUFFLFFBQXNCO1FBQ3ZHLGlEQUFpRDtRQUNqRCxJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0Ysa0NBQWtDO1FBQ2xDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsK0RBQStEO1lBQy9ELElBQUksQ0FBRSxPQUFlLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO2dCQUNoRCwyQkFBMkI7Z0JBQzFCLE9BQWUsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0RCxDQUFDO1lBRUQsbURBQW1EO1lBQ25ELGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNwSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7MEhBL0RpQixhQUFhOzhHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRGxDLFNBQVM7OEJBTUMsS0FBSztzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBPQkpFQ1RfUFJPUEVSVFksIFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IFRFTVBMQVRFX1ZBTElEQVRJT05fQ09ORklHIH0gZnJvbSAnLi4vY29uc3QvYXBwLmNvbnN0JztcclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gXCIuLi9jb3JlL2RlZmF1bHQtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlQ29udGFpbmVyIH0gZnJvbSBcIi4uL21vZGVscy9pbnN0YW5jZS1jb250YWluZXJcIjtcclxuaW1wb3J0IHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4uL21vZGVscy9wcm9wZXJ0eS1pbmZvXCI7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gXCIuLi91dGlsL2FwcC11dGlsXCI7XHJcblxyXG4vKipcclxuICogQWJzdHJhY3QgYmFzZSBkaXJlY3RpdmUgZm9yIGFwcGx5aW5nIHZhbGlkYXRpb25zIHRvIGZvcm0gY29udHJvbHMuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEaXJlY3RpdmUge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgdGhlIG1vZGVsIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBtb2RlbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXBwbGllcyB2YWxpZGF0aW9ucyB0byB0aGUgZ2l2ZW4gY29udHJvbHMgYmFzZWQgb24gdGhlIG1vZGVsIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbHMgVGhlIGNvbnRyb2xzIHRvIHdoaWNoIHZhbGlkYXRpb25zIGFyZSBhcHBsaWVkLlxyXG4gICAgICogQHBhcmFtIG1vZGVsIE9wdGlvbmFsIG1vZGVsIG9iamVjdC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgbW9kZWwgcHJvcGVydHkgb2YgdGhlIGRpcmVjdGl2ZSBpcyB1c2VkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXBwbHlWYWxpZGF0aW9ucyhjb250cm9sczogYW55LCBtb2RlbDogYW55ID0gbnVsbCkge1xyXG4gICAgICAgIC8qIENoZWNrIGlmIGEgbW9kZWwgaXMgcHJvdmlkZWQgKi9cclxuICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgICAgICAvKiBSZXRyaWV2ZSB0aGUgbW9kZWwgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBkZWZhdWx0IGNvbnRhaW5lciAqL1xyXG4gICAgICAgICAgICBsZXQgbW9kZWxDb25maWcgPSBkZWZhdWx0Q29udGFpbmVyLmdldChtb2RlbCB8fCB0aGlzLm1vZGVsLmNvbnN0cnVjdG9yKTtcclxuXHJcbiAgICAgICAgICAgIC8qIElmIGEgbW9kZWwgY29uZmlndXJhdGlvbiBleGlzdHMgKi9cclxuICAgICAgICAgICAgaWYgKG1vZGVsQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlIG92ZXIgZWFjaCBwcm9wZXJ0eSBpbiB0aGUgbW9kZWwgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgbW9kZWxDb25maWcucHJvcGVydGllcz8uZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHByb3BlcnR5IGNvbnRyb2wgZXhpc3RzICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzW3Byb3BlcnR5Lm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIERldGVybWluZSB0aGUgdHlwZSBvZiBwcm9wZXJ0eSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LnByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBcHBseSB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBmb3Igc2ltcGxlIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvckNvbmZpZyhjb250cm9sc1twcm9wZXJ0eS5uYW1lXSwgbW9kZWxDb25maWcsIHByb3BlcnR5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9QUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWN1cnNpdmVseSBhcHBseSB2YWxpZGF0aW9ucyBmb3IgbmVzdGVkIG9iamVjdCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25zKGNvbnRyb2xzW3Byb3BlcnR5Lm5hbWVdLmNvbnRyb2xzLCBwcm9wZXJ0eS5lbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIHZhbGlkYXRvciBjb25maWd1cmF0aW9uIGZvciBhIHNwZWNpZmljIGNvbnRyb2wgYmFzZWQgb24gbW9kZWwgYW5ub3RhdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBUaGUgY29udHJvbCB0byB3aGljaCB0aGUgdmFsaWRhdG9yIGNvbmZpZ3VyYXRpb24gaXMgYXBwbGllZC5cclxuICAgICAqIEBwYXJhbSBtb2RlbENvbmZpZyBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgbW9kZWwuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgVGhlIHByb3BlcnR5IGluZm8gb2YgdGhlIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0VmFsaWRhdG9yQ29uZmlnKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbW9kZWxDb25maWc6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eTogUHJvcGVydHlJbmZvKSB7XHJcbiAgICAgICAgLyogRmlsdGVyIGFubm90YXRpb25zIGZvciB0aGUgY3VycmVudCBwcm9wZXJ0eSAqL1xyXG4gICAgICAgIGxldCBhbm5vdGF0aW9ucyA9IG1vZGVsQ29uZmlnLnByb3BlcnR5QW5ub3RhdGlvbnMuZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eU5hbWUgPT0gcHJvcGVydHkubmFtZSk7XHJcblxyXG4gICAgICAgIC8qIEl0ZXJhdGUgb3ZlciBlYWNoIGFubm90YXRpb24gKi9cclxuICAgICAgICBhbm5vdGF0aW9ucy5mb3JFYWNoKGFubm90YXRpb24gPT4ge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiBURU1QTEFURV9WQUxJREFUSU9OX0NPTkZJRyBleGlzdHMgb24gdGhlIGNvbnRyb2wgKi9cclxuICAgICAgICAgICAgaWYgKCEoY29udHJvbCBhcyBhbnkpW1RFTVBMQVRFX1ZBTElEQVRJT05fQ09ORklHXSkge1xyXG4gICAgICAgICAgICAgICAgLyogSWYgbm90LCBpbml0aWFsaXplIGl0ICovXHJcbiAgICAgICAgICAgICAgICAoY29udHJvbCBhcyBhbnkpW1RFTVBMQVRFX1ZBTElEQVRJT05fQ09ORklHXSA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBDb25maWd1cmUgdGhlIGNvbnRyb2wgYmFzZWQgb24gdGhlIGFubm90YXRpb24gKi9cclxuICAgICAgICAgICAgQXBwbGljYXRpb25VdGlsLmNvbmZpZ3VyZUNvbnRyb2woY29udHJvbCwgYW5ub3RhdGlvbi5jb25maWcgPyBhbm5vdGF0aW9uLmNvbmZpZyA6IFwiXCIsIGFubm90YXRpb24uYW5ub3RhdGlvblR5cGUpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -40,10 +40,10 @@ export class ControlHostDirective {
|
|
|
40
40
|
this.viewContainerRef.clear();
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
44
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
43
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ControlHostDirective, selector: "[controlHost]", inputs: { portal: ["controlHost", "portal"] }, ngImport: i0 });
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlHostDirective, decorators: [{
|
|
47
47
|
type: Directive,
|
|
48
48
|
args: [{
|
|
49
49
|
selector: '[controlHost]'
|
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
52
52
|
type: Input,
|
|
53
53
|
args: ['controlHost']
|
|
54
54
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1ob3N0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9kaXJlY3RpdmVzL2NvbnRyb2wtaG9zdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsS0FBSyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvRjs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFVVjtJQVRuQjs7T0FFRztJQUNJLElBQUksQ0FBd0I7SUFFbkM7OztPQUdHO0lBQ0gsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBSSxDQUFDO0lBRTFEOzs7T0FHRztJQUNILElBQ0ksTUFBTSxDQUFDLE9BQVk7UUFDbkIsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDMUIsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDOzBIQXZDUSxvQkFBb0I7OEdBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtpQkFDNUI7cUZBa0JPLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbWJlZGRlZFZpZXdSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBEaXJlY3RpdmUgZm9yIGhvc3RpbmcgZHluYW1pYyBmb3JtIGNvbnRyb2xzLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjb250cm9sSG9zdF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sSG9zdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICAvKipcclxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgZW1iZWRkZWQgdmlldy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHZpZXc/OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lclJlZiBUaGUgdmlldyBjb250YWluZXIgcmVmZXJlbmNlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciBmb3IgdGhlIHBvcnRhbCBpbnB1dC5cclxuICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IGZvciB0aGUgY29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ2NvbnRyb2xIb3N0JylcclxuICAgIHNldCBwb3J0YWwoY29udGV4dDogYW55KSB7XHJcbiAgICAgICAgaWYgKGNvbnRleHQudGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlldyA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy52aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhjb250ZXh0LnRlbXBsYXRlUmVmLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy52aWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlldy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy52aWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -21,10 +21,10 @@ export class HtmlControlTemplateDirective {
|
|
|
21
21
|
this.templateRef = templateRef;
|
|
22
22
|
}
|
|
23
23
|
;
|
|
24
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
25
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
24
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HtmlControlTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
25
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: HtmlControlTemplateDirective, selector: "[htmlControlTemplate]", inputs: { type: ["htmlControlTemplate", "type"] }, ngImport: i0 });
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HtmlControlTemplateDirective, decorators: [{
|
|
28
28
|
type: Directive,
|
|
29
29
|
args: [{
|
|
30
30
|
selector: '[htmlControlTemplate]'
|