UNPKG

cfc-ds

Version:

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

75 lines 19.5 kB
// wizard-navigation.component.ts import { Component, Input, Output, EventEmitter } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/extended"; export class WizardNavigationComponent { showCancelButton = true; isFirstStep = false; isLastStep = false; alwaysShowBackButton = false; disableBack = false; disableNext = false; disableFinish = false; // Propriedade para controlar o modo móvel isMobile = false; cancelText = 'Cancelar'; backText = 'Voltar'; nextText = 'Avançar'; finishText = 'Concluir'; cancel = new EventEmitter(); back = new EventEmitter(); next = new EventEmitter(); finish = new EventEmitter(); onCancel() { this.cancel.emit(); } onBack() { this.back.emit(); } onNext() { this.next.emit(); } onFinish() { this.finish.emit(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WizardNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WizardNavigationComponent, selector: "cfc-wizard-navigation", inputs: { showCancelButton: "showCancelButton", isFirstStep: "isFirstStep", isLastStep: "isLastStep", alwaysShowBackButton: "alwaysShowBackButton", disableBack: "disableBack", disableNext: "disableNext", disableFinish: "disableFinish", isMobile: "isMobile", cancelText: "cancelText", backText: "backText", nextText: "nextText", finishText: "finishText" }, outputs: { cancel: "cancel", back: "back", next: "next", finish: "finish" }, ngImport: i0, template: "<!-- wizard-navigation.component.html -->\n<div class=\"wizard-navigation-bar\" [ngClass]=\"{'mobile-navigation': isMobile}\">\n <!-- Link Cancelar -->\n <div class=\"cancel-area\">\n <a *ngIf=\"showCancelButton\" \n class=\"cancel-link\" \n (click)=\"onCancel()\">\n {{ cancelText }}\n </a>\n </div>\n \n <!-- Bot\u00F5es de navega\u00E7\u00E3o -->\n <div class=\"navigation-buttons\">\n <!-- Bot\u00E3o Voltar -->\n <button \n *ngIf=\"!isFirstStep || alwaysShowBackButton\" \n [disabled]=\"isFirstStep || disableBack\"\n [ngClass]=\"isMobile ? 'mobile-back-button' : 'back-button'\"\n (click)=\"onBack()\">\n <ng-container *ngIf=\"!isMobile\">\n {{ backText }}\n </ng-container>\n <ng-container *ngIf=\"isMobile\">\n <!-- Seta para esquerda -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\n </svg>\n </ng-container>\n </button>\n \n <!-- Bot\u00E3o Avan\u00E7ar -->\n <button \n *ngIf=\"!isLastStep\" \n [disabled]=\"disableNext\"\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'next-button'\"\n (click)=\"onNext()\">\n <ng-container *ngIf=\"!isMobile\">\n {{ nextText }}\n </ng-container>\n <ng-container *ngIf=\"isMobile\">\n <!-- Seta para direita -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n </svg>\n </ng-container>\n </button>\n \n <!-- Bot\u00E3o Concluir -->\n <button \n *ngIf=\"isLastStep\" \n [disabled]=\"disableFinish\"\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'finish-button'\"\n (click)=\"onFinish()\">\n <ng-container *ngIf=\"!isMobile\">\n {{ finishText }}\n </ng-container>\n <ng-container *ngIf=\"isMobile\">\n <!-- Check mark ou seta para direita -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n </svg>\n </ng-container>\n </button>\n </div>\n</div>", styles: [".wizard-navigation-bar{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-top:1px solid #e0e0e0;background-color:#fff}.mobile-navigation{position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 5px #0000001a}.cancel-area .cancel-link{color:#06c;text-decoration:none;cursor:pointer;font-size:14px}.cancel-area .cancel-link:hover{color:#004999;text-decoration:underline}.navigation-buttons{display:flex;gap:8px}button{cursor:pointer;font-size:14px;font-weight:500;border-radius:20px;padding:8px 24px;min-width:100px;transition:background-color .2s}button:disabled{opacity:.5;cursor:not-allowed}.back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.back-button:hover:not(:disabled){background-color:#0066cc0d}.next-button,.finish-button{background-color:#06c;color:#fff;border:none}.next-button:hover:not(:disabled),.finish-button:hover:not(:disabled){background-color:#004999}.mobile-back-button,.mobile-next-button{width:40px;height:40px;min-width:40px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center}.mobile-back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.mobile-back-button:hover:not(:disabled){background-color:#0066cc0d}.mobile-next-button{background-color:#06c;color:#fff;border:none}.mobile-next-button:hover:not(:disabled){background-color:#004999}.arrow-icon{width:16px;height:16px}\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.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: WizardNavigationComponent, decorators: [{ type: Component, args: [{ selector: 'cfc-wizard-navigation', template: "<!-- wizard-navigation.component.html -->\n<div class=\"wizard-navigation-bar\" [ngClass]=\"{'mobile-navigation': isMobile}\">\n <!-- Link Cancelar -->\n <div class=\"cancel-area\">\n <a *ngIf=\"showCancelButton\" \n class=\"cancel-link\" \n (click)=\"onCancel()\">\n {{ cancelText }}\n </a>\n </div>\n \n <!-- Bot\u00F5es de navega\u00E7\u00E3o -->\n <div class=\"navigation-buttons\">\n <!-- Bot\u00E3o Voltar -->\n <button \n *ngIf=\"!isFirstStep || alwaysShowBackButton\" \n [disabled]=\"isFirstStep || disableBack\"\n [ngClass]=\"isMobile ? 'mobile-back-button' : 'back-button'\"\n (click)=\"onBack()\">\n <ng-container *ngIf=\"!isMobile\">\n {{ backText }}\n </ng-container>\n <ng-container *ngIf=\"isMobile\">\n <!-- Seta para esquerda -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\n </svg>\n </ng-container>\n </button>\n \n <!-- Bot\u00E3o Avan\u00E7ar -->\n <button \n *ngIf=\"!isLastStep\" \n [disabled]=\"disableNext\"\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'next-button'\"\n (click)=\"onNext()\">\n <ng-container *ngIf=\"!isMobile\">\n {{ nextText }}\n </ng-container>\n <ng-container *ngIf=\"isMobile\">\n <!-- Seta para direita -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n </svg>\n </ng-container>\n </button>\n \n <!-- Bot\u00E3o Concluir -->\n <button \n *ngIf=\"isLastStep\" \n [disabled]=\"disableFinish\"\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'finish-button'\"\n (click)=\"onFinish()\">\n <ng-container *ngIf=\"!isMobile\">\n {{ finishText }}\n </ng-container>\n <ng-container *ngIf=\"isMobile\">\n <!-- Check mark ou seta para direita -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\n </svg>\n </ng-container>\n </button>\n </div>\n</div>", styles: [".wizard-navigation-bar{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-top:1px solid #e0e0e0;background-color:#fff}.mobile-navigation{position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 5px #0000001a}.cancel-area .cancel-link{color:#06c;text-decoration:none;cursor:pointer;font-size:14px}.cancel-area .cancel-link:hover{color:#004999;text-decoration:underline}.navigation-buttons{display:flex;gap:8px}button{cursor:pointer;font-size:14px;font-weight:500;border-radius:20px;padding:8px 24px;min-width:100px;transition:background-color .2s}button:disabled{opacity:.5;cursor:not-allowed}.back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.back-button:hover:not(:disabled){background-color:#0066cc0d}.next-button,.finish-button{background-color:#06c;color:#fff;border:none}.next-button:hover:not(:disabled),.finish-button:hover:not(:disabled){background-color:#004999}.mobile-back-button,.mobile-next-button{width:40px;height:40px;min-width:40px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center}.mobile-back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.mobile-back-button:hover:not(:disabled){background-color:#0066cc0d}.mobile-next-button{background-color:#06c;color:#fff;border:none}.mobile-next-button:hover:not(:disabled){background-color:#004999}.arrow-icon{width:16px;height:16px}\n"] }] }], propDecorators: { showCancelButton: [{ type: Input }], isFirstStep: [{ type: Input }], isLastStep: [{ type: Input }], alwaysShowBackButton: [{ type: Input }], disableBack: [{ type: Input }], disableNext: [{ type: Input }], disableFinish: [{ type: Input }], isMobile: [{ type: Input }], cancelText: [{ type: Input }], backText: [{ type: Input }], nextText: [{ type: Input }], finishText: [{ type: Input }], cancel: [{ type: Output }], back: [{ type: Output }], next: [{ type: Output }], finish: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2ZjLWRzL3NyYy9saWIvY29tcG9uZW50cy93aXphcmQvd2l6YXJkTmF2aWdhdGlvbi93aXphcmQtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL3dpemFyZC93aXphcmROYXZpZ2F0aW9uL3dpemFyZC1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3ZFLE1BQU0sT0FBTyx5QkFBeUI7SUFDM0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFL0IsMENBQTBDO0lBQ2pDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUN4QixRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDckIsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUV2QixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNsQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoQyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO3dHQXBDVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qiw4ZUNSdEMsMHFGQWdFTTs7NEZEeERPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7OEJBS3hCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyB3aXphcmQtbmF2aWdhdGlvbi5jb21wb25lbnQudHNcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NmYy13aXphcmQtbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi93aXphcmQtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpemFyZC1uYXZpZ2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkTmF2aWdhdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBpc0ZpcnN0U3RlcCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xhc3RTdGVwID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dCYWNrQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVCYWNrID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVOZXh0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVGaW5pc2ggPSBmYWxzZTtcbiAgXG4gIC8vIFByb3ByaWVkYWRlIHBhcmEgY29udHJvbGFyIG8gbW9kbyBtw7N2ZWxcbiAgQElucHV0KCkgaXNNb2JpbGUgPSBmYWxzZTtcbiAgXG4gIEBJbnB1dCgpIGNhbmNlbFRleHQgPSAnQ2FuY2VsYXInO1xuICBASW5wdXQoKSBiYWNrVGV4dCA9ICdWb2x0YXInO1xuICBASW5wdXQoKSBuZXh0VGV4dCA9ICdBdmFuw6dhcic7XG4gIEBJbnB1dCgpIGZpbmlzaFRleHQgPSAnQ29uY2x1aXInO1xuICBcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBuZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZmluaXNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG4gIFxuICBvbkJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrLmVtaXQoKTtcbiAgfVxuICBcbiAgb25OZXh0KCk6IHZvaWQge1xuICAgIHRoaXMubmV4dC5lbWl0KCk7XG4gIH1cbiAgXG4gIG9uRmluaXNoKCk6IHZvaWQge1xuICAgIHRoaXMuZmluaXNoLmVtaXQoKTtcbiAgfVxufSIsIjwhLS0gd2l6YXJkLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwgLS0+XG48ZGl2IGNsYXNzPVwid2l6YXJkLW5hdmlnYXRpb24tYmFyXCIgW25nQ2xhc3NdPVwieydtb2JpbGUtbmF2aWdhdGlvbic6IGlzTW9iaWxlfVwiPlxuICA8IS0tIExpbmsgQ2FuY2VsYXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYW5jZWwtYXJlYVwiPlxuICAgIDxhICpuZ0lmPVwic2hvd0NhbmNlbEJ1dHRvblwiIFxuICAgICAgIGNsYXNzPVwiY2FuY2VsLWxpbmtcIiBcbiAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxuICAgICAge3sgY2FuY2VsVGV4dCB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIFxuICA8IS0tIEJvdMO1ZXMgZGUgbmF2ZWdhw6fDo28gLS0+XG4gIDxkaXYgY2xhc3M9XCJuYXZpZ2F0aW9uLWJ1dHRvbnNcIj5cbiAgICA8IS0tIEJvdMOjbyBWb2x0YXIgLS0+XG4gICAgPGJ1dHRvbiBcbiAgICAgICpuZ0lmPVwiIWlzRmlyc3RTdGVwIHx8IGFsd2F5c1Nob3dCYWNrQnV0dG9uXCIgXG4gICAgICBbZGlzYWJsZWRdPVwiaXNGaXJzdFN0ZXAgfHwgZGlzYWJsZUJhY2tcIlxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnbW9iaWxlLWJhY2stYnV0dG9uJyA6ICdiYWNrLWJ1dHRvbidcIlxuICAgICAgKGNsaWNrKT1cIm9uQmFjaygpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XG4gICAgICAgIHt7IGJhY2tUZXh0IH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01vYmlsZVwiPlxuICAgICAgICA8IS0tIFNldGEgcGFyYSBlc3F1ZXJkYSAtLT5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYXJyb3ctaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMS4zNTQgMS42NDZhLjUuNSAwIDAgMSAwIC43MDhMNS43MDcgOGw1LjY0NyA1LjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC02LTZhLjUuNSAwIDAgMSAwLS43MDhsNi02YS41LjUgMCAwIDEgLjcwOCAwelwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgICBcbiAgICA8IS0tIEJvdMOjbyBBdmFuw6dhciAtLT5cbiAgICA8YnV0dG9uIFxuICAgICAgKm5nSWY9XCIhaXNMYXN0U3RlcFwiIFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVOZXh0XCJcbiAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlID8gJ21vYmlsZS1uZXh0LWJ1dHRvbicgOiAnbmV4dC1idXR0b24nXCJcbiAgICAgIChjbGljayk9XCJvbk5leHQoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxuICAgICAgICB7eyBuZXh0VGV4dCB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cbiAgICAgICAgPCEtLSBTZXRhIHBhcmEgZGlyZWl0YSAtLT5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYXJyb3ctaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00LjY0NiAxLjY0NmEuNS41IDAgMCAxIC43MDggMGw2IDZhLjUuNSAwIDAgMSAwIC43MDhsLTYgNmEuNS41IDAgMCAxLS43MDgtLjcwOEwxMC4yOTMgOCA0LjY0NiAyLjM1NGEuNS41IDAgMCAxIDAtLjcwOHpcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gICAgXG4gICAgPCEtLSBCb3TDo28gQ29uY2x1aXIgLS0+XG4gICAgPGJ1dHRvbiBcbiAgICAgICpuZ0lmPVwiaXNMYXN0U3RlcFwiIFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVGaW5pc2hcIlxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnbW9iaWxlLW5leHQtYnV0dG9uJyA6ICdmaW5pc2gtYnV0dG9uJ1wiXG4gICAgICAoY2xpY2spPVwib25GaW5pc2goKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxuICAgICAgICB7eyBmaW5pc2hUZXh0IH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01vYmlsZVwiPlxuICAgICAgICA8IS0tIENoZWNrIG1hcmsgb3Ugc2V0YSBwYXJhIGRpcmVpdGEgLS0+XG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBjbGFzcz1cImFycm93LWljb25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNC42NDYgMS42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEgMCAuNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDggNC42NDYgMi4zNTRhLjUuNSAwIDAgMSAwLS43MDh6XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==