UNPKG

cfc-ds

Version:

Design System do Conselho Federal de Contabilidade baseado no govbr-ds

145 lines 22.1 kB
import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { InputState } from '../../enums/input-state.enum'; import { InputDensity } from '../../enums/input-density.enum'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/extended"; import * as i3 from "ngx-mask"; export class InputComponent { value = ''; id = ''; name = ''; autocomplete = ''; readonly = false; autofocus = false; mask = ''; inputClass = ''; disabled = false; buttonAriaLabel = ''; formControlName = null; isPassword = false; isHighlight = false; inverted = false; labelInline = false; state = InputState.default; density = InputDensity.medium; buttonIcon; label; type; placeholder = ''; icon; input = new EventEmitter(); focus = new EventEmitter(); blur = new EventEmitter(); enter = new EventEmitter(); change = new EventEmitter(); onChange = () => { }; onTouched = () => { }; writeValue(value) { this.value = value ?? ''; } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } setDisabledState(isDisabled) { this.disabled = isDisabled; } onInputChange(event) { const inputValue = event.target.value; this.value = inputValue; this.onChange(inputValue); this.onTouched(); this.input.emit(event); } onFocus(event) { this.focus.emit(event); } onBlur(event) { this.onTouched(); this.blur.emit(event); } onEnter(event) { this.enter.emit(event); } onNativeChange(event) { this.change.emit(event); } inputDensities = InputDensity; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InputComponent, selector: "cfc-input", inputs: { value: "value", id: "id", name: "name", autocomplete: "autocomplete", readonly: "readonly", autofocus: "autofocus", mask: "mask", inputClass: "inputClass", disabled: "disabled", buttonAriaLabel: "buttonAriaLabel", formControlName: "formControlName", isPassword: "isPassword", isHighlight: "isHighlight", inverted: "inverted", labelInline: "labelInline", state: "state", density: "density", buttonIcon: "buttonIcon", label: "label", type: "type", placeholder: "placeholder", icon: "icon" }, outputs: { input: "input", focus: "focus", blur: "blur", enter: "enter", change: "change" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputComponent), multi: true } ], ngImport: i0, template: "<div\r\n class=\"br-input\"\r\n [class.input-inline]=\"labelInline\"\r\n [class.input-button]=\"labelInline\"\r\n [ngClass]=\"state\">\r\n <div\r\n *ngIf=\"label\"\r\n class=\"input-label\">\r\n <label\r\n class=\"text-nowrap\"\r\n [for]=\"id || 'input-'+(icon ? icon + '-' : '')+density\">\r\n {{ label }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"input-content\">\r\n <div\r\n class=\"input-group\">\r\n <div\r\n *ngIf=\"icon\"\r\n class=\"input-icon\">\r\n <i\r\n [class]=\"'fas fa-' + icon\"\r\n aria-hidden=\"true\">\r\n </i>\r\n </div>\r\n\r\n <input\r\n *ngIf=\"mask\"\r\n [id]=\"id || null\"\r\n [name]=\"name || null\"\r\n [type]=\"type || (isPassword ? 'password' : 'text')\"\r\n [autocomplete]=\"autocomplete || null\"\r\n [mask]=\"mask\"\r\n [readonly]=\"readonly\"\r\n [autofocus]=\"autofocus\"\r\n [class]=\"inputClass\"\r\n [value]=\"value\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (keyup.enter)=\"onEnter($event)\"\r\n (change)=\"onNativeChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n />\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n [id]=\"id || null\"\r\n [name]=\"name || null\"\r\n [type]=\"type || (isPassword ? 'password' : 'text')\"\r\n [autocomplete]=\"autocomplete || null\"\r\n [readonly]=\"readonly\"\r\n [autofocus]=\"autofocus\"\r\n [class]=\"inputClass\"\r\n [value]=\"value\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (keyup.enter)=\"onEnter($event)\"\r\n (change)=\"onNativeChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n />\r\n\r\n <button\r\n *ngIf=\"buttonIcon\"\r\n class=\"br-button\"\r\n type=\"button\"\r\n [ariaLabel]=\"buttonAriaLabel\">\r\n <i\r\n [class]=\"'fa fa-' + buttonIcon\"\r\n aria-hidden=\"true\">\r\n </i>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i3.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputComponent, decorators: [{ type: Component, args: [{ selector: 'cfc-input', providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputComponent), multi: true } ], template: "<div\r\n class=\"br-input\"\r\n [class.input-inline]=\"labelInline\"\r\n [class.input-button]=\"labelInline\"\r\n [ngClass]=\"state\">\r\n <div\r\n *ngIf=\"label\"\r\n class=\"input-label\">\r\n <label\r\n class=\"text-nowrap\"\r\n [for]=\"id || 'input-'+(icon ? icon + '-' : '')+density\">\r\n {{ label }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"input-content\">\r\n <div\r\n class=\"input-group\">\r\n <div\r\n *ngIf=\"icon\"\r\n class=\"input-icon\">\r\n <i\r\n [class]=\"'fas fa-' + icon\"\r\n aria-hidden=\"true\">\r\n </i>\r\n </div>\r\n\r\n <input\r\n *ngIf=\"mask\"\r\n [id]=\"id || null\"\r\n [name]=\"name || null\"\r\n [type]=\"type || (isPassword ? 'password' : 'text')\"\r\n [autocomplete]=\"autocomplete || null\"\r\n [mask]=\"mask\"\r\n [readonly]=\"readonly\"\r\n [autofocus]=\"autofocus\"\r\n [class]=\"inputClass\"\r\n [value]=\"value\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (keyup.enter)=\"onEnter($event)\"\r\n (change)=\"onNativeChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n />\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n [id]=\"id || null\"\r\n [name]=\"name || null\"\r\n [type]=\"type || (isPassword ? 'password' : 'text')\"\r\n [autocomplete]=\"autocomplete || null\"\r\n [readonly]=\"readonly\"\r\n [autofocus]=\"autofocus\"\r\n [class]=\"inputClass\"\r\n [value]=\"value\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (keyup.enter)=\"onEnter($event)\"\r\n (change)=\"onNativeChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n />\r\n\r\n <button\r\n *ngIf=\"buttonIcon\"\r\n class=\"br-button\"\r\n type=\"button\"\r\n [ariaLabel]=\"buttonAriaLabel\">\r\n <i\r\n [class]=\"'fa fa-' + buttonIcon\"\r\n aria-hidden=\"true\">\r\n </i>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n" }] }], propDecorators: { value: [{ type: Input }], id: [{ type: Input }], name: [{ type: Input }], autocomplete: [{ type: Input }], readonly: [{ type: Input }], autofocus: [{ type: Input }], mask: [{ type: Input }], inputClass: [{ type: Input }], disabled: [{ type: Input }], buttonAriaLabel: [{ type: Input }], formControlName: [{ type: Input }], isPassword: [{ type: Input }], isHighlight: [{ type: Input }], inverted: [{ type: Input }], labelInline: [{ type: Input }], state: [{ type: Input }], density: [{ type: Input }], buttonIcon: [{ type: Input }], label: [{ type: Input }], type: [{ type: Input }], placeholder: [{ type: Input }], icon: [{ type: Input }], input: [{ type: Output }], focus: [{ type: Output }], blur: [{ type: Output }], enter: [{ type: Output }], change: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2ZjLWRzL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQWM5RCxNQUFNLE9BQU8sY0FBYztJQUNoQixLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDUixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ1YsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDaEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLGVBQWUsR0FBMkIsSUFBSSxDQUFDO0lBQy9DLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsS0FBSyxHQUFlLFVBQVUs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LEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbnB1dFN0YXRlIH0gZnJvbSAnLi4vLi4vZW51bXMvaW5wdXQtc3RhdGUuZW51bSc7XHJcbmltcG9ydCB7IElucHV0RGVuc2l0eSB9IGZyb20gJy4uLy4uL2VudW1zL2lucHV0LWRlbnNpdHkuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NmYy1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnkgPSAnJztcclxuICBASW5wdXQoKSBpZCA9ICcnO1xyXG4gIEBJbnB1dCgpIG5hbWUgPSAnJztcclxuICBASW5wdXQoKSBhdXRvY29tcGxldGUgPSAnJztcclxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2sgPSAnJztcclxuICBASW5wdXQoKSBpbnB1dENsYXNzID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBidXR0b25BcmlhTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGlzUGFzc3dvcmQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0hpZ2hsaWdodCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGludmVydGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGFiZWxJbmxpbmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdGF0ZTogSW5wdXRTdGF0ZSA9IElucHV0U3RhdGUuZGVmYXVsdDtcclxuICBASW5wdXQoKSBkZW5zaXR5OiBJbnB1dERlbnNpdHkgPSBJbnB1dERlbnNpdHkubWVkaXVtO1xyXG4gIEBJbnB1dCgpIGJ1dHRvbkljb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHlwZT86IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIGljb24/OiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKSBpbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnZhbHVlID0gaW5wdXRWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UoaW5wdXRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5pbnB1dC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXMuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkVudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbnRlci5lbWl0KGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25OYXRpdmVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgaW5wdXREZW5zaXRpZXMgPSBJbnB1dERlbnNpdHk7XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiYnItaW5wdXRcIlxyXG4gIFtjbGFzcy5pbnB1dC1pbmxpbmVdPVwibGFiZWxJbmxpbmVcIlxyXG4gIFtjbGFzcy5pbnB1dC1idXR0b25dPVwibGFiZWxJbmxpbmVcIlxyXG4gIFtuZ0NsYXNzXT1cInN0YXRlXCI+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJsYWJlbFwiXHJcbiAgICBjbGFzcz1cImlucHV0LWxhYmVsXCI+XHJcbiAgICA8bGFiZWxcclxuICAgICAgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiXHJcbiAgICAgIFtmb3JdPVwiaWQgfHwgJ2lucHV0LScrKGljb24gPyBpY29uICsgJy0nIDogJycpK2RlbnNpdHlcIj5cclxuICAgICAge3sgbGFiZWwgfX1cclxuICAgIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpbnB1dC1jb250ZW50XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiaWNvblwiXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dC1pY29uXCI+XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgIFtjbGFzc109XCInZmFzIGZhLScgKyBpY29uXCJcclxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvaT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAqbmdJZj1cIm1hc2tcIlxyXG4gICAgICAgIFtpZF09XCJpZCB8fCBudWxsXCJcclxuICAgICAgICBbbmFtZV09XCJuYW1lIHx8IG51bGxcIlxyXG4gICAgICAgIFt0eXBlXT1cInR5cGUgfHwgKGlzUGFzc3dvcmQgPyAncGFzc3dvcmQnIDogJ3RleHQnKVwiXHJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGUgfHwgbnVsbFwiXHJcbiAgICAgICAgW21hc2tdPVwibWFza1wiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXHJcbiAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJvbkVudGVyKCRldmVudClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25OYXRpdmVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgKm5nSWY9XCIhbWFza1wiXHJcbiAgICAgICAgW2lkXT1cImlkIHx8IG51bGxcIlxyXG4gICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbnVsbFwiXHJcbiAgICAgICAgW3R5cGVdPVwidHlwZSB8fCAoaXNQYXNzd29yZCA/ICdwYXNzd29yZCcgOiAndGV4dCcpXCJcclxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZSB8fCBudWxsXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcclxuICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1wiXHJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uRW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJidXR0b25JY29uXCJcclxuICAgICAgICBjbGFzcz1cImJyLWJ1dHRvblwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJidXR0b25BcmlhTGFiZWxcIj5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgW2NsYXNzXT1cIidmYSBmYS0nICsgYnV0dG9uSWNvblwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICA8L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=