@abgov/angular-components
Version:
Government of Alberta - UI components for Angular
217 lines • 18.5 kB
JavaScript
import { CUSTOM_ELEMENTS_SCHEMA, Component, EventEmitter, Input, Output, forwardRef, booleanAttribute, numberAttribute, } from "@angular/core";
import { NG_VALUE_ACCESSOR } from "@angular/forms";
import { GoabControlValueAccessor } from "../base.component";
import * as i0 from "@angular/core";
export class GoabInput extends GoabControlValueAccessor {
constructor() {
super(...arguments);
this.type = "text";
this.textAlign = "left";
this.onTrailingIconClick = new EventEmitter();
this.onFocus = new EventEmitter();
this.onBlur = new EventEmitter();
this.onKeyPress = new EventEmitter();
this.onChange = new EventEmitter();
this.handleTrailingIconClick = false;
}
ngOnInit() {
this.handleTrailingIconClick = this.onTrailingIconClick.observed;
if (typeof this.value === "number") {
console.warn("For numeric values use goab-input-number.");
}
}
_onTrailingIconClick(_) {
if (this.handleTrailingIconClick) {
this.onTrailingIconClick.emit();
}
}
_onChange(e) {
this.markAsTouched();
const detail = e.detail;
this.onChange.emit(detail);
this.fcChange?.(detail.value);
}
_onKeyPress(e) {
this.markAsTouched();
const detail = e.detail;
this.onKeyPress.emit(detail);
this.fcTouched?.();
}
_onFocus(e) {
this.markAsTouched();
const detail = e.detail;
this.onFocus.emit(detail);
}
_onBlur(e) {
const detail = e.detail;
this.onBlur.emit(detail);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: GoabInput, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.3", type: GoabInput, isStandalone: true, selector: "goab-input", inputs: { type: "type", name: "name", debounce: ["debounce", "debounce", numberAttribute], autoCapitalize: "autoCapitalize", autoComplete: "autoComplete", placeholder: "placeholder", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", variant: "variant", focused: ["focused", "focused", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], width: "width", prefix: "prefix", suffix: "suffix", ariaLabel: "ariaLabel", maxLength: ["maxLength", "maxLength", numberAttribute], min: "min", max: "max", step: ["step", "step", numberAttribute], ariaLabelledBy: "ariaLabelledBy", trailingIconAriaLabel: "trailingIconAriaLabel", textAlign: "textAlign" }, outputs: { onTrailingIconClick: "onTrailingIconClick", onFocus: "onFocus", onBlur: "onBlur", onKeyPress: "onKeyPress", onChange: "onChange" }, providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GoabInput),
},
], usesInheritance: true, ngImport: i0, template: `
<goa-input
[]="type"
[]="name"
[]="focused"
[]="value"
[]="autoCapitalize"
[]="autoComplete"
[]="placeholder"
[]="leadingIcon"
[]="trailingIcon"
[]="variant"
[]="disabled"
[]="readonly"
[]="error"
[]="testId"
[]="width"
[]="ariaLabel"
[]="ariaLabelledBy"
[]="min"
[]="max"
[]="step"
[]="prefix"
[]="suffix"
[]="debounce"
[]="maxLength"
[]="id"
[]="mt"
[]="mr"
[]="mb"
[]="ml"
[]="handleTrailingIconClick"
[]="textAlign"
(_trailingIconClick)="_onTrailingIconClick($event)"
(_change)="_onChange($event)"
(_focus)="_onFocus($event)"
(_blur)="_onBlur($event)"
(_keyPress)="_onKeyPress($event)"
[]="trailingIconAriaLabel"
>
<ng-content />
</goa-input>
`, isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: GoabInput, decorators: [{
type: Component,
args: [{
standalone: true,
selector: "goab-input",
template: `
<goa-input
[]="type"
[]="name"
[]="focused"
[]="value"
[]="autoCapitalize"
[]="autoComplete"
[]="placeholder"
[]="leadingIcon"
[]="trailingIcon"
[]="variant"
[]="disabled"
[]="readonly"
[]="error"
[]="testId"
[]="width"
[]="ariaLabel"
[]="ariaLabelledBy"
[]="min"
[]="max"
[]="step"
[]="prefix"
[]="suffix"
[]="debounce"
[]="maxLength"
[]="id"
[]="mt"
[]="mr"
[]="mb"
[]="ml"
[]="handleTrailingIconClick"
[]="textAlign"
(_trailingIconClick)="_onTrailingIconClick($event)"
(_change)="_onChange($event)"
(_focus)="_onFocus($event)"
(_blur)="_onBlur($event)"
(_keyPress)="_onKeyPress($event)"
[]="trailingIconAriaLabel"
>
<ng-content />
</goa-input>
`,
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GoabInput),
},
],
}]
}], propDecorators: { type: [{
type: Input
}], name: [{
type: Input
}], debounce: [{
type: Input,
args: [{ transform: numberAttribute }]
}], autoCapitalize: [{
type: Input
}], autoComplete: [{
type: Input
}], placeholder: [{
type: Input
}], leadingIcon: [{
type: Input
}], trailingIcon: [{
type: Input
}], variant: [{
type: Input
}], focused: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], readonly: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], width: [{
type: Input
}], prefix: [{
type: Input
}], suffix: [{
type: Input
}], ariaLabel: [{
type: Input
}], maxLength: [{
type: Input,
args: [{ transform: numberAttribute }]
}], min: [{
type: Input
}], max: [{
type: Input
}], step: [{
type: Input,
args: [{ transform: numberAttribute }]
}], ariaLabelledBy: [{
type: Input
}], trailingIconAriaLabel: [{
type: Input
}], textAlign: [{
type: Input
}], onTrailingIconClick: [{
type: Output
}], onFocus: [{
type: Output
}], onBlur: [{
type: Output
}], onKeyPress: [{
type: Output
}], onChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUVWLGdCQUFnQixFQUNoQixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQTZEN0QsTUFBTSxPQUFPLFNBQVUsU0FBUSx3QkFBd0I7SUF2RHZEOztRQXdEVyxTQUFJLEdBQW1CLE1BQU0sQ0FBQztRQXFCOUIsY0FBUyxHQUFzQixNQUFNLENBQUM7UUFFckMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDckQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQ25ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUMzRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFakUsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO0tBeUNqQztJQXZDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFDakUsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBUTtRQUMzQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxDQUFRO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBSSxDQUEwQyxDQUFDLE1BQU0sQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBUTtRQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsTUFBTSxNQUFNLEdBQUksQ0FBNEMsQ0FBQyxNQUFNLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFRO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sTUFBTSxHQUFJLENBQXlDLENBQUMsTUFBTSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBUTtRQUNkLE1BQU0sTUFBTSxHQUFJLENBQXdDLENBQUMsTUFBTSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBdEVVLFNBQVM7a0dBQVQsU0FBUyx1SEFHQSxlQUFlLDZNQU9mLGdCQUFnQixzQ0FDaEIsZ0JBQWdCLHFIQUtoQixlQUFlLGtEQUdmLGVBQWUseVFBM0J4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3pDO1NBQ0YsaURBbERTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7OzJGQVVVLFNBQVM7a0JBdkRyQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUM7eUJBQ3pDO3FCQUNGO2lCQUNGOzhCQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ2lDLFFBQVE7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUM1QixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNrQyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ2lDLFNBQVM7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUM1QixHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNpQyxJQUFJO3NCQUExQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDNUIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgR29hYkljb25UeXBlLFxuICBHb2FiSW5wdXRBdXRvQ2FwaXRhbGl6ZSxcbiAgR29hYklucHV0T25CbHVyRGV0YWlsLFxuICBHb2FiSW5wdXRPbkNoYW5nZURldGFpbCxcbiAgR29hYklucHV0T25Gb2N1c0RldGFpbCxcbiAgR29hYklucHV0T25LZXlQcmVzc0RldGFpbCxcbiAgR29hYklucHV0VHlwZSxcbn0gZnJvbSBcIkBhYmdvdi91aS1jb21wb25lbnRzLWNvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIGZvcndhcmRSZWYsXG4gIE9uSW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEdvYWJDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gXCIuLi9iYXNlLmNvbXBvbmVudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElnbm9yZU1lIHtcbiAgaWdub3JlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJnb2FiLWlucHV0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGdvYS1pbnB1dFxuICAgICAgW2F0dHIudHlwZV09XCJ0eXBlXCJcbiAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICBbYXR0ci5mb2N1c2VkXT1cImZvY3VzZWRcIlxuICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgW2F0dHIuYXV0b2NhcGl0YWxpemVdPVwiYXV0b0NhcGl0YWxpemVcIlxuICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZVwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbYXR0ci5sZWFkaW5naWNvbl09XCJsZWFkaW5nSWNvblwiXG4gICAgICBbYXR0ci50cmFpbGluZ2ljb25dPVwidHJhaWxpbmdJY29uXCJcbiAgICAgIFthdHRyLnZhcmlhbnRdPVwidmFyaWFudFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgW2F0dHIuZXJyb3JdPVwiZXJyb3JcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkXCJcbiAgICAgIFthdHRyLndpZHRoXT1cIndpZHRoXCJcbiAgICAgIFthdHRyLmFyaWFsYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgW2F0dHIuYXJpYWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICBbYXR0ci5wcmVmaXhdPVwicHJlZml4XCJcbiAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgW2F0dHIuZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgICBbYXR0ci5tdF09XCJtdFwiXG4gICAgICBbYXR0ci5tcl09XCJtclwiXG4gICAgICBbYXR0ci5tYl09XCJtYlwiXG4gICAgICBbYXR0ci5tbF09XCJtbFwiXG4gICAgICBbYXR0ci5oYW5kbGV0cmFpbGluZ2ljb25jbGlja109XCJoYW5kbGVUcmFpbGluZ0ljb25DbGlja1wiXG4gICAgICBbYXR0ci50ZXh0YWxpZ25dPVwidGV4dEFsaWduXCJcbiAgICAgIChfdHJhaWxpbmdJY29uQ2xpY2spPVwiX29uVHJhaWxpbmdJY29uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAoX2NoYW5nZSk9XCJfb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoX2ZvY3VzKT1cIl9vbkZvY3VzKCRldmVudClcIlxuICAgICAgKF9ibHVyKT1cIl9vbkJsdXIoJGV2ZW50KVwiXG4gICAgICAoX2tleVByZXNzKT1cIl9vbktleVByZXNzKCRldmVudClcIlxuICAgICAgW2F0dHIudHJhaWxpbmdpY29uYXJpYWxhYmVsXT1cInRyYWlsaW5nSWNvbkFyaWFMYWJlbFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICA8L2dvYS1pbnB1dD5cbiAgYCxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR29hYklucHV0KSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBHb2FiSW5wdXQgZXh0ZW5kcyBHb2FiQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0eXBlPzogR29hYklucHV0VHlwZSA9IFwidGV4dFwiO1xuICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBkZWJvdW5jZT86IG51bWJlcjtcbiAgQElucHV0KCkgYXV0b0NhcGl0YWxpemU/OiBHb2FiSW5wdXRBdXRvQ2FwaXRhbGl6ZTtcbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlPzogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgQElucHV0KCkgbGVhZGluZ0ljb24/OiBHb2FiSWNvblR5cGU7XG4gIEBJbnB1dCgpIHRyYWlsaW5nSWNvbj86IEdvYWJJY29uVHlwZTtcbiAgQElucHV0KCkgdmFyaWFudD86IHN0cmluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZvY3VzZWQ/OiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVhZG9ubHk/OiBib29sZWFuO1xuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgcHJlZml4Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzdWZmaXg/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBtaW4/OiBzdHJpbmcgfCBudW1iZXI7XG4gIEBJbnB1dCgpIG1heD86IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc3RlcD86IG51bWJlcjtcbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRyYWlsaW5nSWNvbkFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgdGV4dEFsaWduPzogXCJsZWZ0XCIgfCBcInJpZ2h0XCIgPSBcImxlZnRcIjtcblxuICBAT3V0cHV0KCkgb25UcmFpbGluZ0ljb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEdvYWJJbnB1dE9uRm9jdXNEZXRhaWw+KCk7XG4gIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEdvYWJJbnB1dE9uQmx1ckRldGFpbD4oKTtcbiAgQE91dHB1dCgpIG9uS2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEdvYWJJbnB1dE9uS2V5UHJlc3NEZXRhaWw+KCk7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R29hYklucHV0T25DaGFuZ2VEZXRhaWw+KCk7XG5cbiAgaGFuZGxlVHJhaWxpbmdJY29uQ2xpY2sgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhhbmRsZVRyYWlsaW5nSWNvbkNsaWNrID0gdGhpcy5vblRyYWlsaW5nSWNvbkNsaWNrLm9ic2VydmVkO1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY29uc29sZS53YXJuKFwiRm9yIG51bWVyaWMgdmFsdWVzIHVzZSBnb2FiLWlucHV0LW51bWJlci5cIik7XG4gICAgfVxuICB9XG5cbiAgX29uVHJhaWxpbmdJY29uQ2xpY2soXzogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVUcmFpbGluZ0ljb25DbGljaykge1xuICAgICAgdGhpcy5vblRyYWlsaW5nSWNvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBfb25DaGFuZ2UoZTogRXZlbnQpIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBjb25zdCBkZXRhaWwgPSAoZSBhcyBDdXN0b21FdmVudDxHb2FiSW5wdXRPbkNoYW5nZURldGFpbD4pLmRldGFpbDtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZGV0YWlsKTtcblxuICAgIHRoaXMuZmNDaGFuZ2U/LihkZXRhaWwudmFsdWUpO1xuICB9XG5cbiAgX29uS2V5UHJlc3MoZTogRXZlbnQpIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBjb25zdCBkZXRhaWwgPSAoZSBhcyBDdXN0b21FdmVudDxHb2FiSW5wdXRPbktleVByZXNzRGV0YWlsPikuZGV0YWlsO1xuICAgIHRoaXMub25LZXlQcmVzcy5lbWl0KGRldGFpbCk7XG5cbiAgICB0aGlzLmZjVG91Y2hlZD8uKCk7XG4gIH1cblxuICBfb25Gb2N1cyhlOiBFdmVudCkge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGNvbnN0IGRldGFpbCA9IChlIGFzIEN1c3RvbUV2ZW50PEdvYWJJbnB1dE9uRm9jdXNEZXRhaWw+KS5kZXRhaWw7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoZGV0YWlsKTtcbiAgfVxuXG4gIF9vbkJsdXIoZTogRXZlbnQpIHtcbiAgICBjb25zdCBkZXRhaWwgPSAoZSBhcyBDdXN0b21FdmVudDxHb2FiSW5wdXRPbkJsdXJEZXRhaWw+KS5kZXRhaWw7XG4gICAgdGhpcy5vbkJsdXIuZW1pdChkZXRhaWwpO1xuICB9XG59XG4iXX0=