UNPKG

cfc-ds

Version:

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

68 lines 16.2 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { ModalDensity } from '../../enums/modal-density.enum'; import { ButtonType } from '../../enums/button-type.enum'; import { ModalType } from '../../enums/modal-type.enum'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/flex"; import * as i3 from "@angular/flex-layout/extended"; import * as i4 from "../button/button.component"; import * as i5 from "../scrim/scrim.component"; export class ModalComponent { type = ModalType.dialog; title; isClosable = true; density = ModalDensity.medium; primaryActionLabel; primaryActionIcon; secondaryActionLabel; secondaryActionIcon; hasOverlay = false; width = 'auto'; height = 'auto'; onPrimaryAction = new EventEmitter(); onSecondaryAction = new EventEmitter(); isOpened = true; buttonTypes = ButtonType; modalTypes = ModalType; modalDensities = ModalDensity; open() { this.isOpened = true; } close() { this.isOpened = false; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalComponent, selector: "cfc-modal", inputs: { type: "type", title: "title", isClosable: "isClosable", density: "density", primaryActionLabel: "primaryActionLabel", primaryActionIcon: "primaryActionIcon", secondaryActionLabel: "secondaryActionLabel", secondaryActionIcon: "secondaryActionIcon", hasOverlay: "hasOverlay", width: "width", height: "height" }, outputs: { onPrimaryAction: "onPrimaryAction", onSecondaryAction: "onSecondaryAction" }, ngImport: i0, template: "<div\r\n *ngIf=\"isOpened\"\r\n class=\"br-modal\"\r\n [ngClass]=\"{\r\n density,\r\n 'has-overlay': hasOverlay\r\n }\"\r\n [ngStyle]=\"{\r\n 'width': width,\r\n 'height': height\r\n }\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"true\"\r\n aria-labelledby=\"modalalerttitle\"\r\n>\r\n <div\r\n class=\"br-modal-header\"\r\n fxLayout=\"row\"\r\n fxLayoutAlign=\"space-between center\">\r\n <div\r\n class=\"modal-title\"\r\n id=\"modalalerttitle\">\r\n {{ title }}\r\n </div>\r\n <cfc-button\r\n *ngIf=\"isClosable\"\r\n [circle]=\"true\"\r\n [type]=\"buttonTypes.tertiary\"\r\n icon=\"fas fa-times\"\r\n data-dismiss=\"br-modal\"\r\n aria-label=\"Fechar\"\r\n (onClick)=\"close()\">\r\n </cfc-button>\r\n </div>\r\n\r\n <main class=\"br-modal-body\">\r\n <ng-content></ng-content>\r\n </main>\r\n\r\n <footer class=\"br-modal-footer justify-content-end\"\r\n fxLayoutGap=\"0.5rem\"\r\n [fxLayoutAlign]=\"\r\n type === modalTypes.dialog\r\n ? 'space-between end'\r\n : 'end end'\r\n \">\r\n <cfc-button\r\n *ngIf=\"secondaryActionLabel\"\r\n [label]=\"secondaryActionLabel\"\r\n [type]=\"buttonTypes.tertiary\"\r\n [icon]=\"secondaryActionIcon ?? ''\"\r\n (onClick)=\"onSecondaryAction ? onSecondaryAction.emit() : close()\">\r\n </cfc-button>\r\n <cfc-button\r\n [label]=\"primaryActionLabel\"\r\n [type]=\"buttonTypes.primary\"\r\n [icon]=\"primaryActionIcon\"\r\n (onClick)=\"onPrimaryAction.emit()\">\r\n </cfc-button>\r\n </footer>\r\n</div>\r\n\r\n<cfc-scrim\r\n [isVisible]=\"hasOverlay && isOpened\"\r\n [isClosable]=\"isClosable\"\r\n></cfc-scrim>\r\n", styles: [".has-overlay{top:50%;left:50%;transform:translate(-50%,-50%);position:absolute;z-index:1001}\n"], 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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.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.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "component", type: i4.ButtonComponent, selector: "cfc-button", inputs: ["label", "type", "submit", "circle", "density", "disabled", "block", "icon", "active", "inverted", "loading"], outputs: ["onClick"] }, { kind: "component", type: i5.ScrimComponent, selector: "cfc-scrim", inputs: ["isVisible", "isClosable"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalComponent, decorators: [{ type: Component, args: [{ selector: 'cfc-modal', template: "<div\r\n *ngIf=\"isOpened\"\r\n class=\"br-modal\"\r\n [ngClass]=\"{\r\n density,\r\n 'has-overlay': hasOverlay\r\n }\"\r\n [ngStyle]=\"{\r\n 'width': width,\r\n 'height': height\r\n }\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"true\"\r\n aria-labelledby=\"modalalerttitle\"\r\n>\r\n <div\r\n class=\"br-modal-header\"\r\n fxLayout=\"row\"\r\n fxLayoutAlign=\"space-between center\">\r\n <div\r\n class=\"modal-title\"\r\n id=\"modalalerttitle\">\r\n {{ title }}\r\n </div>\r\n <cfc-button\r\n *ngIf=\"isClosable\"\r\n [circle]=\"true\"\r\n [type]=\"buttonTypes.tertiary\"\r\n icon=\"fas fa-times\"\r\n data-dismiss=\"br-modal\"\r\n aria-label=\"Fechar\"\r\n (onClick)=\"close()\">\r\n </cfc-button>\r\n </div>\r\n\r\n <main class=\"br-modal-body\">\r\n <ng-content></ng-content>\r\n </main>\r\n\r\n <footer class=\"br-modal-footer justify-content-end\"\r\n fxLayoutGap=\"0.5rem\"\r\n [fxLayoutAlign]=\"\r\n type === modalTypes.dialog\r\n ? 'space-between end'\r\n : 'end end'\r\n \">\r\n <cfc-button\r\n *ngIf=\"secondaryActionLabel\"\r\n [label]=\"secondaryActionLabel\"\r\n [type]=\"buttonTypes.tertiary\"\r\n [icon]=\"secondaryActionIcon ?? ''\"\r\n (onClick)=\"onSecondaryAction ? onSecondaryAction.emit() : close()\">\r\n </cfc-button>\r\n <cfc-button\r\n [label]=\"primaryActionLabel\"\r\n [type]=\"buttonTypes.primary\"\r\n [icon]=\"primaryActionIcon\"\r\n (onClick)=\"onPrimaryAction.emit()\">\r\n </cfc-button>\r\n </footer>\r\n</div>\r\n\r\n<cfc-scrim\r\n [isVisible]=\"hasOverlay && isOpened\"\r\n [isClosable]=\"isClosable\"\r\n></cfc-scrim>\r\n", styles: [".has-overlay{top:50%;left:50%;transform:translate(-50%,-50%);position:absolute;z-index:1001}\n"] }] }], propDecorators: { type: [{ type: Input }], title: [{ type: Input }], isClosable: [{ type: Input }], density: [{ type: Input }], primaryActionLabel: [{ type: Input }], primaryActionIcon: [{ type: Input }], secondaryActionLabel: [{ type: Input }], secondaryActionIcon: [{ type: Input }], hasOverlay: [{ type: Input }], width: [{ type: Input }], height: [{ type: Input }], onPrimaryAction: [{ type: Output }], onSecondaryAction: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2ZjLWRzL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLGNBQWM7SUFFaEIsSUFBSSxHQUFjLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsS0FBSyxDQUFVO0lBQ2YsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixPQUFPLEdBQWlCLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDNUMsa0JBQWtCLENBQVU7SUFDNUIsaUJBQWlCLENBQVU7SUFDM0Isb0JBQW9CLENBQVU7SUFDOUIsbUJBQW1CLENBQVU7SUFDN0IsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixLQUFLLEdBQVcsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sR0FBVyxNQUFNLENBQUM7SUFFdkIsZUFBZSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzdELGlCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXpFLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFUCxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDdkIsY0FBYyxHQUFHLFlBQVksQ0FBQztJQUV2QyxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO3dHQTdCVSxjQUFjOzRGQUFkLGNBQWMsMGNDVjNCLHV0REFrRUE7OzRGRHhEYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7OEJBTVosSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTW9kYWxEZW5zaXR5IH0gZnJvbSAnLi4vLi4vZW51bXMvbW9kYWwtZGVuc2l0eS5lbnVtJztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2J1dHRvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBNb2RhbFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9tb2RhbC10eXBlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjZmMtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSB0eXBlOiBNb2RhbFR5cGUgPSBNb2RhbFR5cGUuZGlhbG9nO1xyXG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzQ2xvc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRlbnNpdHk6IE1vZGFsRGVuc2l0eSA9IE1vZGFsRGVuc2l0eS5tZWRpdW07XHJcbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvbkxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByaW1hcnlBY3Rpb25JY29uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlY29uZGFyeUFjdGlvbkxhYmVsPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlY29uZGFyeUFjdGlvbkljb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGFzT3ZlcmxheTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnYXV0byc7XHJcblxyXG4gIEBPdXRwdXQoKSBvblByaW1hcnlBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2Vjb25kYXJ5QWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBpc09wZW5lZCA9IHRydWU7XHJcblxyXG4gIHJlYWRvbmx5IGJ1dHRvblR5cGVzID0gQnV0dG9uVHlwZTtcclxuICByZWFkb25seSBtb2RhbFR5cGVzID0gTW9kYWxUeXBlO1xyXG4gIHJlYWRvbmx5IG1vZGFsRGVuc2l0aWVzID0gTW9kYWxEZW5zaXR5O1xyXG5cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNPcGVuZWQgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICpuZ0lmPVwiaXNPcGVuZWRcIlxyXG4gIGNsYXNzPVwiYnItbW9kYWxcIlxyXG4gIFtuZ0NsYXNzXT1cIntcclxuICAgIGRlbnNpdHksXHJcbiAgICAnaGFzLW92ZXJsYXknOiBoYXNPdmVybGF5XHJcbiAgfVwiXHJcbiAgW25nU3R5bGVdPVwie1xyXG4gICAgJ3dpZHRoJzogd2lkdGgsXHJcbiAgICAnaGVpZ2h0JzogaGVpZ2h0XHJcbiAgfVwiXHJcbiAgcm9sZT1cImRpYWxvZ1wiXHJcbiAgW2F0dHIuYXJpYS1tb2RhbF09XCJ0cnVlXCJcclxuICBhcmlhLWxhYmVsbGVkYnk9XCJtb2RhbGFsZXJ0dGl0bGVcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJici1tb2RhbC1oZWFkZXJcIlxyXG4gICAgZnhMYXlvdXQ9XCJyb3dcIlxyXG4gICAgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9kYWwtdGl0bGVcIlxyXG4gICAgICBpZD1cIm1vZGFsYWxlcnR0aXRsZVwiPlxyXG4gICAgICB7eyB0aXRsZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8Y2ZjLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cImlzQ2xvc2FibGVcIlxyXG4gICAgICBbY2lyY2xlXT1cInRydWVcIlxyXG4gICAgICBbdHlwZV09XCJidXR0b25UeXBlcy50ZXJ0aWFyeVwiXHJcbiAgICAgIGljb249XCJmYXMgZmEtdGltZXNcIlxyXG4gICAgICBkYXRhLWRpc21pc3M9XCJici1tb2RhbFwiXHJcbiAgICAgIGFyaWEtbGFiZWw9XCJGZWNoYXJcIlxyXG4gICAgICAob25DbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICA8L2NmYy1idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYWluIGNsYXNzPVwiYnItbW9kYWwtYm9keVwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvbWFpbj5cclxuXHJcbiAgPGZvb3RlciBjbGFzcz1cImJyLW1vZGFsLWZvb3RlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgIGZ4TGF5b3V0R2FwPVwiMC41cmVtXCJcclxuICAgIFtmeExheW91dEFsaWduXT1cIlxyXG4gICAgICB0eXBlID09PSBtb2RhbFR5cGVzLmRpYWxvZ1xyXG4gICAgICAgID8gJ3NwYWNlLWJldHdlZW4gZW5kJ1xyXG4gICAgICAgIDogJ2VuZCBlbmQnXHJcbiAgICBcIj5cclxuICAgIDxjZmMtYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwic2Vjb25kYXJ5QWN0aW9uTGFiZWxcIlxyXG4gICAgICBbbGFiZWxdPVwic2Vjb25kYXJ5QWN0aW9uTGFiZWxcIlxyXG4gICAgICBbdHlwZV09XCJidXR0b25UeXBlcy50ZXJ0aWFyeVwiXHJcbiAgICAgIFtpY29uXT1cInNlY29uZGFyeUFjdGlvbkljb24gPz8gJydcIlxyXG4gICAgICAob25DbGljayk9XCJvblNlY29uZGFyeUFjdGlvbiA/IG9uU2Vjb25kYXJ5QWN0aW9uLmVtaXQoKSA6IGNsb3NlKClcIj5cclxuICAgIDwvY2ZjLWJ1dHRvbj5cclxuICAgIDxjZmMtYnV0dG9uXHJcbiAgICAgIFtsYWJlbF09XCJwcmltYXJ5QWN0aW9uTGFiZWxcIlxyXG4gICAgICBbdHlwZV09XCJidXR0b25UeXBlcy5wcmltYXJ5XCJcclxuICAgICAgW2ljb25dPVwicHJpbWFyeUFjdGlvbkljb25cIlxyXG4gICAgICAob25DbGljayk9XCJvblByaW1hcnlBY3Rpb24uZW1pdCgpXCI+XHJcbiAgICA8L2NmYy1idXR0b24+XHJcbiAgPC9mb290ZXI+XHJcbjwvZGl2PlxyXG5cclxuPGNmYy1zY3JpbVxyXG4gIFtpc1Zpc2libGVdPVwiaGFzT3ZlcmxheSAmJiBpc09wZW5lZFwiXHJcbiAgW2lzQ2xvc2FibGVdPVwiaXNDbG9zYWJsZVwiXHJcbj48L2NmYy1zY3JpbT5cclxuIl19