UNPKG

ng-materialgrammi

Version:

An Angular framework which follows

74 lines 18.2 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/router"; export class NavbarComponent { constructor() { this.searchedText = new EventEmitter(); this.spaceAround = true; this.theme = "primary"; this.onSmallMenuButton = "="; this.isFixed = false; this.partitionType = "2:1"; this.navData = {}; this.onSmallActive = false; this.searchQuery = ""; } ngOnInit() { } onSmallClass() { return this.onSmallActive ? 'active' : ''; } toggleNav() { this.onSmallActive = !this.onSmallActive; } mainNavClasses() { let classes = this.onSmallClass(); if (this.isFixed) { classes += ` fixed`; } classes += this.spaceAround ? " space-around" : ""; if (this.partitionType == "2:1") { classes += ` position-2-1`; } else if (this.partitionType == "1:2") { classes += ` position-1-2`; } else if (this.partitionType == "1:1") { classes += ` position-1-1`; } return classes; } onEnterSearchQuery(event) { if (event.key == "Enter") { this.sendSearch(); } else { this.searchQuery = event.target.value; } } sendSearch() { this.searchedText.emit(this.searchQuery); } } NavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); NavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NavbarComponent, selector: "mg-navbar", inputs: { spaceAround: "spaceAround", theme: "theme", onSmallMenuButton: "onSmallMenuButton", isFixed: "isFixed", partitionType: "partitionType", navData: "navData" }, outputs: { searchedText: "searchedText" }, ngImport: i0, template: "<div class=\"navbar-wrapper\">\n <div class=\"navbar {{theme}}\" [ngClass]=\"mainNavClasses()\">\n <div class=\"section brand\">\n <ng-container *ngIf=\"navData && navData.brand\">\n <a [innerHtml]=\"navData.brand.name\" [routerLink]=\"navData.brand.link\"></a>\n <a (click)=\"toggleNav()\" class=\"small-only-open-nav\" [innerHtml]=\"onSmallMenuButton\"></a>\n </ng-container>\n <ng-container *ngIf=\"!navData.brand\">\n <ng-content select=\"[slot=brand]\"></ng-content>\n </ng-container>\n </div>\n <div class=\"section left-nav\">\n <ng-container *ngIf=\"navData.left\">\n <ng-container *ngIf=\"navData && navData.left && navData.left.navType == 'input'\">\n <input type=\"text\" (keyup) = \"onEnterSearchQuery($event)\" class=\"input\" [placeholder]=\"navData.left.data.placeholder\" />\n <a class=\"input-button\" *ngIf=\"navData.left.data.btn\" [innerHtml]=\"navData.left.data.name\"></a>\n </ng-container>\n <ng-container *ngIf=\"navData && navData.left && navData.left.navType == 'links'\">\n <ng-container *ngFor=\"let ndata of navData.left.data\">\n <!-- dropdown -->\n <ng-container *ngIf=\"ndata.type && ndata.type == 'dropdown'\">\n <div class=\"dropdown\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\" class=\"trigger-dropdown\"></a>\n <div class=\"drop-menu\">\n <a *ngFor=\"let droplink of ndata.links\" [innerHtml]=\"droplink.name\"></a>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ndata.type\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\"></a>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!navData.left\">\n <ng-content select=\"[slot=left-nav]\"></ng-content>\n </ng-container>\n </div>\n <div class=\"section right-nav\">\n <ng-container *ngIf=\"navData.right\">\n <ng-container *ngIf=\"navData && navData.right && navData.right.navType == 'links'\">\n <ng-container *ngFor=\"let ndata of navData.right.data\">\n <!-- dropdown -->\n <ng-container *ngIf=\"ndata.type && ndata.type == 'dropdown'\">\n <div class=\"dropdown\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\" class=\"trigger-dropdown\"></a>\n <div class=\"drop-menu\">\n <a *ngFor=\"let droplink of ndata.links\" [innerHtml]=\"droplink.name\"></a>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ndata.type\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\"></a>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!navData.right\">\n <ng-content select=\"[slot=right-nav]\"></ng-content>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [""], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NavbarComponent, decorators: [{ type: Component, args: [{ selector: 'mg-navbar', template: "<div class=\"navbar-wrapper\">\n <div class=\"navbar {{theme}}\" [ngClass]=\"mainNavClasses()\">\n <div class=\"section brand\">\n <ng-container *ngIf=\"navData && navData.brand\">\n <a [innerHtml]=\"navData.brand.name\" [routerLink]=\"navData.brand.link\"></a>\n <a (click)=\"toggleNav()\" class=\"small-only-open-nav\" [innerHtml]=\"onSmallMenuButton\"></a>\n </ng-container>\n <ng-container *ngIf=\"!navData.brand\">\n <ng-content select=\"[slot=brand]\"></ng-content>\n </ng-container>\n </div>\n <div class=\"section left-nav\">\n <ng-container *ngIf=\"navData.left\">\n <ng-container *ngIf=\"navData && navData.left && navData.left.navType == 'input'\">\n <input type=\"text\" (keyup) = \"onEnterSearchQuery($event)\" class=\"input\" [placeholder]=\"navData.left.data.placeholder\" />\n <a class=\"input-button\" *ngIf=\"navData.left.data.btn\" [innerHtml]=\"navData.left.data.name\"></a>\n </ng-container>\n <ng-container *ngIf=\"navData && navData.left && navData.left.navType == 'links'\">\n <ng-container *ngFor=\"let ndata of navData.left.data\">\n <!-- dropdown -->\n <ng-container *ngIf=\"ndata.type && ndata.type == 'dropdown'\">\n <div class=\"dropdown\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\" class=\"trigger-dropdown\"></a>\n <div class=\"drop-menu\">\n <a *ngFor=\"let droplink of ndata.links\" [innerHtml]=\"droplink.name\"></a>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ndata.type\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\"></a>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!navData.left\">\n <ng-content select=\"[slot=left-nav]\"></ng-content>\n </ng-container>\n </div>\n <div class=\"section right-nav\">\n <ng-container *ngIf=\"navData.right\">\n <ng-container *ngIf=\"navData && navData.right && navData.right.navType == 'links'\">\n <ng-container *ngFor=\"let ndata of navData.right.data\">\n <!-- dropdown -->\n <ng-container *ngIf=\"ndata.type && ndata.type == 'dropdown'\">\n <div class=\"dropdown\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\" class=\"trigger-dropdown\"></a>\n <div class=\"drop-menu\">\n <a *ngFor=\"let droplink of ndata.links\" [innerHtml]=\"droplink.name\"></a>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!ndata.type\">\n <a [innerHtml]=\"ndata.name\" [routerLink]=\"ndata.link\"></a>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!navData.right\">\n <ng-content select=\"[slot=right-nav]\"></ng-content>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [""] }] }], ctorParameters: function () { return []; }, propDecorators: { searchedText: [{ type: Output }], spaceAround: [{ type: Input }], theme: [{ type: Input }], onSmallMenuButton: [{ type: Input }], isFixed: [{ type: Input }], partitionType: [{ type: Input }], navData: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsZ3JhbW1pL3NyYy9saWIvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsZ3JhbW1pL3NyYy9saWIvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0UsTUFBTSxPQUFPLGVBQWU7SUFhMUI7UUFaVSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUFVLFNBQVMsQ0FBQztRQUN6QixzQkFBaUIsR0FBVSxHQUFHLENBQUM7UUFDL0IsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixrQkFBYSxHQUFpQixLQUFLLENBQUM7UUFDcEMsWUFBTyxHQUFPLEVBQUUsQ0FBQztRQUUxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztJQUVELENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLElBQUksUUFBUSxDQUFDO1NBQ3JCO1FBRUQsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUU7WUFDL0IsT0FBTyxJQUFJLGVBQWUsQ0FBQztTQUM1QjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUU7WUFDdEMsT0FBTyxJQUFJLGVBQWUsQ0FBQztTQUM1QjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUU7WUFDdEMsT0FBTyxJQUFJLGVBQWUsQ0FBQztTQUM1QjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVO1FBQzNCLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7NEdBeERVLGVBQWU7Z0dBQWYsZUFBZSxvUUNSNUIsa2pHQStEQTsyRkR2RGEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxXQUFXOzBFQUtYLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdlBhcnRpdGlvbiwgVGhlbWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21nLW5hdmJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXZiYXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5hdmJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBzZWFyY2hlZFRleHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHNwYWNlQXJvdW5kID0gdHJ1ZTtcbiAgQElucHV0KCkgdGhlbWU6IFRoZW1lID0gXCJwcmltYXJ5XCI7XG4gIEBJbnB1dCgpIG9uU21hbGxNZW51QnV0dG9uOnN0cmluZyA9IFwiPVwiO1xuICBASW5wdXQoKSBpc0ZpeGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhcnRpdGlvblR5cGU6IE5hdlBhcnRpdGlvbiA9IFwiMjoxXCI7XG4gIEBJbnB1dCgpIG5hdkRhdGE6YW55ID0ge307XG5cbiAgb25TbWFsbEFjdGl2ZSA9IGZhbHNlO1xuXG4gIHNlYXJjaFF1ZXJ5ID0gXCJcIjtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgb25TbWFsbENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLm9uU21hbGxBY3RpdmUgPyAnYWN0aXZlJyA6ICcnO1xuICB9XG5cbiAgdG9nZ2xlTmF2KCkge1xuICAgIHRoaXMub25TbWFsbEFjdGl2ZSA9ICF0aGlzLm9uU21hbGxBY3RpdmU7XG4gIH1cblxuICBtYWluTmF2Q2xhc3NlcygpIHtcbiAgICBsZXQgY2xhc3NlcyA9IHRoaXMub25TbWFsbENsYXNzKCk7XG5cbiAgICBpZiAodGhpcy5pc0ZpeGVkKSB7XG4gICAgICBjbGFzc2VzICs9IGAgZml4ZWRgO1xuICAgIH1cblxuICAgIGNsYXNzZXMgKz0gdGhpcy5zcGFjZUFyb3VuZCA/IFwiIHNwYWNlLWFyb3VuZFwiIDogXCJcIjtcblxuICAgIGlmICh0aGlzLnBhcnRpdGlvblR5cGUgPT0gXCIyOjFcIikge1xuICAgICAgY2xhc3NlcyArPSBgIHBvc2l0aW9uLTItMWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhcnRpdGlvblR5cGUgPT0gXCIxOjJcIikge1xuICAgICAgY2xhc3NlcyArPSBgIHBvc2l0aW9uLTEtMmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhcnRpdGlvblR5cGUgPT0gXCIxOjFcIikge1xuICAgICAgY2xhc3NlcyArPSBgIHBvc2l0aW9uLTEtMWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBvbkVudGVyU2VhcmNoUXVlcnkoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT0gXCJFbnRlclwiKSB7XG4gICAgICB0aGlzLnNlbmRTZWFyY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hRdWVyeSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzZW5kU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoZWRUZXh0LmVtaXQodGhpcy5zZWFyY2hRdWVyeSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdmJhci13cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJuYXZiYXIge3t0aGVtZX19XCIgW25nQ2xhc3NdPVwibWFpbk5hdkNsYXNzZXMoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIGJyYW5kXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2RGF0YSAmJiBuYXZEYXRhLmJyYW5kXCI+XG4gICAgICAgIDxhIFtpbm5lckh0bWxdPVwibmF2RGF0YS5icmFuZC5uYW1lXCIgW3JvdXRlckxpbmtdPVwibmF2RGF0YS5icmFuZC5saW5rXCI+PC9hPlxuICAgICAgICA8YSAoY2xpY2spPVwidG9nZ2xlTmF2KClcIiBjbGFzcz1cInNtYWxsLW9ubHktb3Blbi1uYXZcIiBbaW5uZXJIdG1sXT1cIm9uU21hbGxNZW51QnV0dG9uXCI+PC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdkRhdGEuYnJhbmRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9YnJhbmRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gbGVmdC1uYXZcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXZEYXRhLmxlZnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdkRhdGEgJiYgbmF2RGF0YS5sZWZ0ICYmIG5hdkRhdGEubGVmdC5uYXZUeXBlID09ICdpbnB1dCdcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoa2V5dXApID0gXCJvbkVudGVyU2VhcmNoUXVlcnkoJGV2ZW50KVwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwibmF2RGF0YS5sZWZ0LmRhdGEucGxhY2Vob2xkZXJcIiAvPlxuICAgICAgICAgIDxhIGNsYXNzPVwiaW5wdXQtYnV0dG9uXCIgKm5nSWY9XCJuYXZEYXRhLmxlZnQuZGF0YS5idG5cIiBbaW5uZXJIdG1sXT1cIm5hdkRhdGEubGVmdC5kYXRhLm5hbWVcIj48L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2RGF0YSAmJiBuYXZEYXRhLmxlZnQgJiYgbmF2RGF0YS5sZWZ0Lm5hdlR5cGUgPT0gJ2xpbmtzJ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5kYXRhIG9mIG5hdkRhdGEubGVmdC5kYXRhXCI+XG4gICAgICAgICAgICA8IS0tIGRyb3Bkb3duIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5kYXRhLnR5cGUgJiYgbmRhdGEudHlwZSA9PSAnZHJvcGRvd24nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxuICAgICAgICAgICAgICAgIDxhIFtpbm5lckh0bWxdPVwibmRhdGEubmFtZVwiIFtyb3V0ZXJMaW5rXT1cIm5kYXRhLmxpbmtcIiBjbGFzcz1cInRyaWdnZXItZHJvcGRvd25cIj48L2E+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtbWVudVwiPlxuICAgICAgICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IGRyb3BsaW5rIG9mIG5kYXRhLmxpbmtzXCIgW2lubmVySHRtbF09XCJkcm9wbGluay5uYW1lXCI+PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuZGF0YS50eXBlXCI+XG4gICAgICAgICAgICAgIDxhIFtpbm5lckh0bWxdPVwibmRhdGEubmFtZVwiIFtyb3V0ZXJMaW5rXT1cIm5kYXRhLmxpbmtcIj48L2E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2RGF0YS5sZWZ0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWxlZnQtbmF2XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHJpZ2h0LW5hdlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdkRhdGEucmlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdkRhdGEgJiYgbmF2RGF0YS5yaWdodCAmJiBuYXZEYXRhLnJpZ2h0Lm5hdlR5cGUgPT0gJ2xpbmtzJ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5kYXRhIG9mIG5hdkRhdGEucmlnaHQuZGF0YVwiPlxuICAgICAgICAgICAgPCEtLSBkcm9wZG93biAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuZGF0YS50eXBlICYmIG5kYXRhLnR5cGUgPT0gJ2Ryb3Bkb3duJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICA8YSBbaW5uZXJIdG1sXT1cIm5kYXRhLm5hbWVcIiBbcm91dGVyTGlua109XCJuZGF0YS5saW5rXCIgY2xhc3M9XCJ0cmlnZ2VyLWRyb3Bkb3duXCI+PC9hPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCBkcm9wbGluayBvZiBuZGF0YS5saW5rc1wiIFtpbm5lckh0bWxdPVwiZHJvcGxpbmsubmFtZVwiPjwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmRhdGEudHlwZVwiPlxuICAgICAgICAgICAgICA8YSBbaW5uZXJIdG1sXT1cIm5kYXRhLm5hbWVcIiBbcm91dGVyTGlua109XCJuZGF0YS5saW5rXCI+PC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdkRhdGEucmlnaHRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9cmlnaHQtbmF2XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19