cfc-ds
Version:
Design System do Conselho Federal de Contabilidade baseado no govbr-ds
86 lines • 15.4 kB
JavaScript
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
import { SignInType } from '../../enums/sign-in-type.enum';
import { SignInDensity } from '../../enums/sign-in-density.enum';
import { SignInMode } from '../../enums/sign-in-mode.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";
export class SignInComponent {
elementRef;
zone;
cdr;
label = 'user';
type = SignInType.secondary;
density = SignInDensity.middle;
mode = SignInMode.internal;
disabled = false;
active = false;
block = false;
circle = false;
externalImageUrl = '';
externalLabel;
onClick = new EventEmitter();
onLogout = new EventEmitter();
// Use o sufixo .px para evitar strings e conversões extras
hostWidth = '';
isLogoutVisible = false;
signinTypes = SignInType;
signinDensities = SignInDensity;
signinModes = SignInMode;
constructor(elementRef, zone, cdr) {
this.elementRef = elementRef;
this.zone = zone;
this.cdr = cdr;
}
ngAfterViewInit() {
// Sair da zona, medir no próximo frame e voltar para atualizar
this.zone.runOutsideAngular(() => {
requestAnimationFrame(() => {
const w = `${this.elementRef.nativeElement.offsetWidth}px` || '0px';
this.zone.run(() => {
this.hostWidth = w;
// garante estabilidade em OnPush; em Default também resolve NG0100
this.cdr.detectChanges();
});
});
});
}
showLogout(isVisible) {
this.isLogoutVisible = isVisible && this.mode === this.signinModes.logout;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInComponent, selector: "cfc-sign-in", inputs: { label: "label", type: "type", density: "density", mode: "mode", disabled: "disabled", active: "active", block: "block", circle: "circle", externalImageUrl: "externalImageUrl", externalLabel: "externalLabel" }, outputs: { onClick: "onClick", onLogout: "onLogout" }, host: { properties: { "style.width": "this.hostWidth" } }, ngImport: i0, template: "<div\r\n (mouseenter)=\"showLogout(true)\"\r\n (mouseleave)=\"showLogout(false)\">\r\n\r\n <button\r\n class=\"br-sign-in\"\r\n style=\"width: 100%;\"\r\n [ngClass]=\"density\"\r\n [class.primary]=\"type === signinTypes.primary\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"active\"\r\n [class.circle]=\"circle\"\r\n [class.block]=\"block\"\r\n type=\"button\"\r\n fxLayoutGap=\"0.3rem\"\r\n (click)=\"!isLogoutVisible ? onClick.emit($event) : onLogout.emit($event)\">\r\n <i\r\n *ngIf=\"!circle && (mode === signinModes.internal || mode === signinModes.logout)\"\r\n [ngClass]=\"!isLogoutVisible ? 'fas fa-user' : 'fas fa-sign-out-alt'\"\r\n aria-hidden=\"true\">\r\n </i>\r\n <span\r\n style=\"font-size: 14px;\"\r\n *ngIf=\"!circle\">\r\n {{ !isLogoutVisible ? label : 'Sair' }}\r\n </span>\r\n <img\r\n *ngIf=\"!isLogoutVisible && !circle && mode === signinModes.externalImg\"\r\n [src]=\"externalImageUrl\"\r\n alt=\"Descri\u00E7\u00E3o da minha imagem\"\r\n style=\"margin-left: 0.5rem;\"/>\r\n <span\r\n *ngIf=\"!isLogoutVisible && !circle && externalLabel && mode === signinModes.externalTxt\"\r\n class=\"text-black\"\r\n style=\"margin-left: 0.5rem;\">\r\n {{ externalLabel }}\r\n </span>\r\n </button>\r\n</div>\r\n", styles: [":host{transition:width .3s ease-in-out}\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: 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: 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"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInComponent, decorators: [{
type: Component,
args: [{ selector: 'cfc-sign-in', template: "<div\r\n (mouseenter)=\"showLogout(true)\"\r\n (mouseleave)=\"showLogout(false)\">\r\n\r\n <button\r\n class=\"br-sign-in\"\r\n style=\"width: 100%;\"\r\n [ngClass]=\"density\"\r\n [class.primary]=\"type === signinTypes.primary\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"active\"\r\n [class.circle]=\"circle\"\r\n [class.block]=\"block\"\r\n type=\"button\"\r\n fxLayoutGap=\"0.3rem\"\r\n (click)=\"!isLogoutVisible ? onClick.emit($event) : onLogout.emit($event)\">\r\n <i\r\n *ngIf=\"!circle && (mode === signinModes.internal || mode === signinModes.logout)\"\r\n [ngClass]=\"!isLogoutVisible ? 'fas fa-user' : 'fas fa-sign-out-alt'\"\r\n aria-hidden=\"true\">\r\n </i>\r\n <span\r\n style=\"font-size: 14px;\"\r\n *ngIf=\"!circle\">\r\n {{ !isLogoutVisible ? label : 'Sair' }}\r\n </span>\r\n <img\r\n *ngIf=\"!isLogoutVisible && !circle && mode === signinModes.externalImg\"\r\n [src]=\"externalImageUrl\"\r\n alt=\"Descri\u00E7\u00E3o da minha imagem\"\r\n style=\"margin-left: 0.5rem;\"/>\r\n <span\r\n *ngIf=\"!isLogoutVisible && !circle && externalLabel && mode === signinModes.externalTxt\"\r\n class=\"text-black\"\r\n style=\"margin-left: 0.5rem;\">\r\n {{ externalLabel }}\r\n </span>\r\n </button>\r\n</div>\r\n", styles: [":host{transition:width .3s ease-in-out}\n"] }]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { label: [{
type: Input
}], type: [{
type: Input
}], density: [{
type: Input
}], mode: [{
type: Input
}], disabled: [{
type: Input
}], active: [{
type: Input
}], block: [{
type: Input
}], circle: [{
type: Input
}], externalImageUrl: [{
type: Input
}], externalLabel: [{
type: Input
}], onClick: [{
type: Output
}], onLogout: [{
type: Output
}], hostWidth: [{
type: HostBinding,
args: ['style.width']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL3NpZ24taW4vc2lnbi1pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQU8zRCxNQUFNLE9BQU8sZUFBZTtJQXlCaEI7SUFDQTtJQUNBO0lBMUJELEtBQUssR0FBRyxNQUFNLENBQUM7SUFDZixJQUFJLEdBQWUsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUN4QyxPQUFPLEdBQWtCLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDOUMsSUFBSSxHQUFlLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDdkMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNkLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsYUFBYSxDQUFVO0lBRXRCLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ2xDLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTdDLDJEQUEyRDtJQUMvQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBRW5ELGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFZixXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLGVBQWUsR0FBRyxhQUFhLENBQUM7SUFDaEMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUVsQyxZQUNVLFVBQW1DLEVBQ25DLElBQVksRUFDWixHQUFzQjtRQUZ0QixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFDN0IsQ0FBQztJQUVKLGVBQWU7UUFDYiwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsSUFBSSxJQUFJLEtBQUssQ0FBQztnQkFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFDbkIsbUVBQW1FO29CQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMzQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWtCO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQzt3R0E5Q1UsZUFBZTs0RkFBZixlQUFlLGlZQ1Y1Qix1MUNBdUNBOzs0RkQ3QmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxhQUFhO29JQUtkLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFHcUIsU0FBUztzQkFBcEMsV0FBVzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBOZ1pvbmUsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpZ25JblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9zaWduLWluLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFNpZ25JbkRlbnNpdHkgfSBmcm9tICcuLi8uLi9lbnVtcy9zaWduLWluLWRlbnNpdHkuZW51bSc7XHJcbmltcG9ydCB7IFNpZ25Jbk1vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9zaWduLWluLW1vZGUuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NmYy1zaWduLWluJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbi1pbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NpZ24taW4uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWduSW5Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBsYWJlbCA9ICd1c2VyJztcclxuICBASW5wdXQoKSB0eXBlOiBTaWduSW5UeXBlID0gU2lnbkluVHlwZS5zZWNvbmRhcnk7XHJcbiAgQElucHV0KCkgZGVuc2l0eTogU2lnbkluRGVuc2l0eSA9IFNpZ25JbkRlbnNpdHkubWlkZGxlO1xyXG4gIEBJbnB1dCgpIG1vZGU6IFNpZ25Jbk1vZGUgPSBTaWduSW5Nb2RlLmludGVybmFsO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWN0aXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYmxvY2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjaXJjbGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBleHRlcm5hbEltYWdlVXJsID0gJyc7XHJcbiAgQElucHV0KCkgZXh0ZXJuYWxMYWJlbD86IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Mb2dvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gVXNlIG8gc3VmaXhvIC5weCBwYXJhIGV2aXRhciBzdHJpbmdzIGUgY29udmVyc8O1ZXMgZXh0cmFzXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aCcpIGhvc3RXaWR0aDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGlzTG9nb3V0VmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBzaWduaW5UeXBlcyA9IFNpZ25JblR5cGU7XHJcbiAgcmVhZG9ubHkgc2lnbmluRGVuc2l0aWVzID0gU2lnbkluRGVuc2l0eTtcclxuICByZWFkb25seSBzaWduaW5Nb2RlcyA9IFNpZ25Jbk1vZGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gU2FpciBkYSB6b25hLCBtZWRpciBubyBwcsOzeGltbyBmcmFtZSBlIHZvbHRhciBwYXJhIGF0dWFsaXphclxyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICBjb25zdCB3ID0gYCR7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9cHhgIHx8ICcwcHgnO1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ob3N0V2lkdGggPSB3O1xyXG4gICAgICAgICAgLy8gZ2FyYW50ZSBlc3RhYmlsaWRhZGUgZW0gT25QdXNoOyBlbSBEZWZhdWx0IHRhbWLDqW0gcmVzb2x2ZSBORzAxMDBcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dMb2dvdXQoaXNWaXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTG9nb3V0VmlzaWJsZSA9IGlzVmlzaWJsZSAmJiB0aGlzLm1vZGUgPT09IHRoaXMuc2lnbmluTW9kZXMubG9nb3V0O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKG1vdXNlZW50ZXIpPVwic2hvd0xvZ291dCh0cnVlKVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwic2hvd0xvZ291dChmYWxzZSlcIj5cclxuXHJcbiAgPGJ1dHRvblxyXG4gICAgY2xhc3M9XCJici1zaWduLWluXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7XCJcclxuICAgIFtuZ0NsYXNzXT1cImRlbnNpdHlcIlxyXG4gICAgW2NsYXNzLnByaW1hcnldPVwidHlwZSA9PT0gc2lnbmluVHlwZXMucHJpbWFyeVwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gICAgW2NsYXNzLmNpcmNsZV09XCJjaXJjbGVcIlxyXG4gICAgW2NsYXNzLmJsb2NrXT1cImJsb2NrXCJcclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgZnhMYXlvdXRHYXA9XCIwLjNyZW1cIlxyXG4gICAgKGNsaWNrKT1cIiFpc0xvZ291dFZpc2libGUgPyBvbkNsaWNrLmVtaXQoJGV2ZW50KSA6IG9uTG9nb3V0LmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgPGlcclxuICAgICAgKm5nSWY9XCIhY2lyY2xlICYmIChtb2RlID09PSBzaWduaW5Nb2Rlcy5pbnRlcm5hbCB8fCBtb2RlID09PSBzaWduaW5Nb2Rlcy5sb2dvdXQpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiIWlzTG9nb3V0VmlzaWJsZSA/ICdmYXMgZmEtdXNlcicgOiAnZmFzIGZhLXNpZ24tb3V0LWFsdCdcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgIDwvaT5cclxuICAgIDxzcGFuXHJcbiAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiXHJcbiAgICAgICpuZ0lmPVwiIWNpcmNsZVwiPlxyXG4gICAgICB7eyAhaXNMb2dvdXRWaXNpYmxlID8gbGFiZWwgOiAnU2FpcicgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxpbWdcclxuICAgICAgKm5nSWY9XCIhaXNMb2dvdXRWaXNpYmxlICYmICFjaXJjbGUgJiYgbW9kZSA9PT0gc2lnbmluTW9kZXMuZXh0ZXJuYWxJbWdcIlxyXG4gICAgICBbc3JjXT1cImV4dGVybmFsSW1hZ2VVcmxcIlxyXG4gICAgICBhbHQ9XCJEZXNjcmnDp8OjbyBkYSBtaW5oYSBpbWFnZW1cIlxyXG4gICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwLjVyZW07XCIvPlxyXG4gICAgPHNwYW5cclxuICAgICAgKm5nSWY9XCIhaXNMb2dvdXRWaXNpYmxlICYmICFjaXJjbGUgJiYgZXh0ZXJuYWxMYWJlbCAmJiBtb2RlID09PSBzaWduaW5Nb2Rlcy5leHRlcm5hbFR4dFwiXHJcbiAgICAgIGNsYXNzPVwidGV4dC1ibGFja1wiXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDAuNXJlbTtcIj5cclxuICAgICAge3sgZXh0ZXJuYWxMYWJlbCB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19