UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

79 lines 17.6 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { ICON_TYPE } from '../../../cms-components/misc/icon/icon.model'; import * as i0 from "@angular/core"; import * as i1 from "../truncate-text-popover/truncate-text-popover.component"; import * as i2 from "../../../cms-components/misc/icon/icon.component"; import * as i3 from "@angular/common"; import * as i4 from "@spartacus/core"; export class CardComponent { constructor() { this.iconTypes = ICON_TYPE; this.deleteCard = new EventEmitter(); this.setDefaultCard = new EventEmitter(); this.sendCard = new EventEmitter(); this.editCard = new EventEmitter(); this.cancelCard = new EventEmitter(); this.border = false; this.editMode = false; this.isDefault = false; this.fitToContainer = false; this.truncateText = false; this.charactersLimit = 100; } // ACTIONS setEditMode() { this.editMode = true; } cancelEdit() { this.editMode = false; this.cancelCard.emit(5); } delete() { this.deleteCard.emit(1); } setDefault() { this.isDefault = true; this.setDefaultCard.emit(2); } send() { this.sendCard.emit(3); } edit() { this.editCard.emit(4); } ngOnInit() { } } CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: CardComponent, selector: "cx-card", inputs: { border: "border", editMode: "editMode", isDefault: "isDefault", content: "content", fitToContainer: "fitToContainer", truncateText: "truncateText", charactersLimit: "charactersLimit" }, outputs: { deleteCard: "deleteCard", setDefaultCard: "setDefaultCard", sendCard: "sendCard", editCard: "editCard", cancelCard: "cancelCard" }, ngImport: i0, template: "<div\n *ngIf=\"content\"\n class=\"cx-card\"\n [class.cx-card-border]=\"border\"\n [class.cx-card-fit-to-container]=\"fitToContainer\"\n>\n <!-- Card Header -->\n <div *ngIf=\"content.header && !editMode\" class=\"card-header\">\n {{ content.header }}\n </div>\n <!-- Card Body -->\n <div class=\"card-body cx-card-body\" [class.cx-card-delete]=\"editMode\">\n <!-- Edit message -->\n <div *ngIf=\"editMode\" class=\"cx-card-delete-msg\">\n {{ content.deleteMsg }}\n </div>\n <!-- Card title -->\n <h3 *ngIf=\"content.title\" class=\"cx-card-title\">\n {{ content.title }}\n </h3>\n <!-- Card Content -->\n <div class=\"cx-card-container\">\n <!-- Card Label -->\n <div class=\"cx-card-label-container\">\n <div *ngIf=\"content.textBold\" class=\"cx-card-label-bold\">\n {{ content.textBold }}\n </div>\n <div *ngFor=\"let line of content.text\">\n <div *ngIf=\"!truncateText; else truncate\" class=\"cx-card-label\">\n {{ line }}\n </div>\n\n <ng-template #truncate>\n <cx-truncate-text-popover\n [charactersLimit]=\"charactersLimit\"\n [content]=\"line\"\n ></cx-truncate-text-popover>\n </ng-template>\n </div>\n <div class=\"cx-card-paragraph\" *ngFor=\"let item of content.paragraphs\">\n <div class=\"cx-card-paragraph-title\">{{ item.title }}</div>\n <div *ngFor=\"let text of item.text\">\n <div class=\"cx-card-paragraph-text\">\n {{ text }}\n </div>\n </div>\n </div>\n </div>\n <!-- Image -->\n <div *ngIf=\"content.img\" class=\"cx-card-img-container\">\n <cx-icon [type]=\"content.img\"></cx-icon>\n </div>\n </div>\n <!-- Edit Mode Actions -->\n <div *ngIf=\"editMode\" class=\"row cx-card-body-delete\">\n <div class=\"col-md-6\">\n <button class=\"btn btn-block btn-secondary\" (click)=\"cancelEdit()\">\n {{ 'common.cancel' | cxTranslate }}\n </button>\n </div>\n <div class=\"col-md-6\">\n <button class=\"btn btn-block btn-primary\" (click)=\"delete()\">\n {{ 'common.delete' | cxTranslate }}\n </button>\n </div>\n </div>\n <!-- Actions -->\n <div *ngIf=\"content.actions && !editMode\" class=\"cx-card-actions\">\n <div *ngFor=\"let action of content.actions\">\n <div [ngSwitch]=\"action.event\">\n <a\n *ngSwitchCase=\"'delete'\"\n class=\"cx-card-link card-link btn-link cx-action-link\"\n (click)=\"delete()\"\n (keydown.enter)=\"delete()\"\n tabindex=\"0\"\n >{{ action.name }}</a\n >\n <a\n *ngSwitchCase=\"'default'\"\n class=\"cx-card-link card-link btn-link cx-action-link\"\n (click)=\"setDefault()\"\n (keydown.enter)=\"setDefault()\"\n tabindex=\"0\"\n >{{ action.name }}</a\n >\n <a\n *ngSwitchCase=\"'send'\"\n class=\"cx-card-link card-link btn-link cx-action-link\"\n (click)=\"send()\"\n (keydown.enter)=\"send()\"\n tabindex=\"0\"\n >{{ action.name }}</a\n >\n <a\n *ngSwitchCase=\"'edit'\"\n class=\"cx-card-link card-link btn-link cx-action-link\"\n (click)=\"edit()\"\n (keydown.enter)=\"edit()\"\n tabindex=\"0\"\n >{{ action.name }}</a\n >\n <a\n *ngSwitchDefault\n href=\"{{ action.link }}\"\n class=\"card-link btn-link cx-action-link\"\n tabindex=\"0\"\n >{{ action.name }}</a\n >\n </div>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i1.TruncateTextPopoverComponent, selector: "cx-truncate-text-popover", inputs: ["content", "charactersLimit"] }, { type: i2.IconComponent, selector: "cx-icon,[cxIcon]", inputs: ["cxIcon", "type"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "cxTranslate": i4.TranslatePipe } }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CardComponent, decorators: [{ type: Component, args: [{ selector: 'cx-card', templateUrl: './card.component.html', }] }], ctorParameters: function () { return []; }, propDecorators: { deleteCard: [{ type: Output }], setDefaultCard: [{ type: Output }], sendCard: [{ type: Output }], editCard: [{ type: Output }], cancelCard: [{ type: Output }], border: [{ type: Input }], editMode: [{ type: Input }], isDefault: [{ type: Input }], content: [{ type: Input }], fitToContainer: [{ type: Input }], truncateText: [{ type: Input }], charactersLimit: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL3NoYXJlZC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL3NoYXJlZC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7O0FBMkJ6RSxNQUFNLE9BQU8sYUFBYTtJQStEeEI7UUE5REEsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUd0QixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRCxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFcEQsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd0RCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBTWxCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLG9CQUFlLEdBQUcsR0FBRyxDQUFDO0lBOEJQLENBQUM7SUE1QmhCLFVBQVU7SUFFVixXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFJRCxRQUFRLEtBQUksQ0FBQzs7MEdBakVGLGFBQWE7OEZBQWIsYUFBYSxrWUM1QjFCLCt5SEFrSEE7MkZEdEZhLGFBQWE7a0JBSnpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFdBQVcsRUFBRSx1QkFBdUI7aUJBQ3JDOzBFQUtDLFVBQVU7c0JBRFQsTUFBTTtnQkFHUCxjQUFjO3NCQURiLE1BQU07Z0JBR1AsUUFBUTtzQkFEUCxNQUFNO2dCQUdQLFFBQVE7c0JBRFAsTUFBTTtnQkFHUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNPTl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vY21zLWNvbXBvbmVudHMvbWlzYy9pY29uL2ljb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcmRBY3Rpb24ge1xuICBldmVudDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZExpbmtBY3Rpb24ge1xuICBsaW5rOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJkIHtcbiAgaGVhZGVyPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgdGV4dEJvbGQ/OiBzdHJpbmc7XG4gIHRleHQ/OiBBcnJheTxzdHJpbmc+O1xuICBwYXJhZ3JhcGhzPzogQXJyYXk8eyB0aXRsZT86IHN0cmluZzsgdGV4dD86IEFycmF5PHN0cmluZz4gfT47XG4gIGltZz86IHN0cmluZztcbiAgYWN0aW9ucz86IEFycmF5PENhcmRBY3Rpb24gfCBDYXJkTGlua0FjdGlvbj47XG4gIGRlbGV0ZU1zZz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3gtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGljb25UeXBlcyA9IElDT05fVFlQRTtcblxuICBAT3V0cHV0KClcbiAgZGVsZXRlQ2FyZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBzZXREZWZhdWx0Q2FyZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBzZW5kQ2FyZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBlZGl0Q2FyZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBjYW5jZWxDYXJkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKVxuICBib3JkZXIgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBlZGl0TW9kZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGlzRGVmYXVsdCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQ6IENhcmQ7XG5cbiAgQElucHV0KClcbiAgZml0VG9Db250YWluZXIgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB0cnVuY2F0ZVRleHQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjaGFyYWN0ZXJzTGltaXQgPSAxMDA7XG5cbiAgLy8gQUNUSU9OU1xuXG4gIHNldEVkaXRNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdE1vZGUgPSB0cnVlO1xuICB9XG5cbiAgY2FuY2VsRWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5jYW5jZWxDYXJkLmVtaXQoNSk7XG4gIH1cblxuICBkZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVDYXJkLmVtaXQoMSk7XG4gIH1cblxuICBzZXREZWZhdWx0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZWZhdWx0ID0gdHJ1ZTtcbiAgICB0aGlzLnNldERlZmF1bHRDYXJkLmVtaXQoMik7XG4gIH1cblxuICBzZW5kKCk6IHZvaWQge1xuICAgIHRoaXMuc2VuZENhcmQuZW1pdCgzKTtcbiAgfVxuXG4gIGVkaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0Q2FyZC5lbWl0KDQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJjb250ZW50XCJcbiAgY2xhc3M9XCJjeC1jYXJkXCJcbiAgW2NsYXNzLmN4LWNhcmQtYm9yZGVyXT1cImJvcmRlclwiXG4gIFtjbGFzcy5jeC1jYXJkLWZpdC10by1jb250YWluZXJdPVwiZml0VG9Db250YWluZXJcIlxuPlxuICA8IS0tIENhcmQgSGVhZGVyIC0tPlxuICA8ZGl2ICpuZ0lmPVwiY29udGVudC5oZWFkZXIgJiYgIWVkaXRNb2RlXCIgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgIHt7IGNvbnRlbnQuaGVhZGVyIH19XG4gIDwvZGl2PlxuICA8IS0tIENhcmQgQm9keSAtLT5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBjeC1jYXJkLWJvZHlcIiBbY2xhc3MuY3gtY2FyZC1kZWxldGVdPVwiZWRpdE1vZGVcIj5cbiAgICA8IS0tIEVkaXQgbWVzc2FnZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZWRpdE1vZGVcIiBjbGFzcz1cImN4LWNhcmQtZGVsZXRlLW1zZ1wiPlxuICAgICAge3sgY29udGVudC5kZWxldGVNc2cgfX1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENhcmQgdGl0bGUgLS0+XG4gICAgPGgzICpuZ0lmPVwiY29udGVudC50aXRsZVwiIGNsYXNzPVwiY3gtY2FyZC10aXRsZVwiPlxuICAgICAge3sgY29udGVudC50aXRsZSB9fVxuICAgIDwvaDM+XG4gICAgPCEtLSBDYXJkIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImN4LWNhcmQtY29udGFpbmVyXCI+XG4gICAgICA8IS0tIENhcmQgTGFiZWwgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3gtY2FyZC1sYWJlbC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQudGV4dEJvbGRcIiBjbGFzcz1cImN4LWNhcmQtbGFiZWwtYm9sZFwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQudGV4dEJvbGQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxpbmUgb2YgY29udGVudC50ZXh0XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiF0cnVuY2F0ZVRleHQ7IGVsc2UgdHJ1bmNhdGVcIiBjbGFzcz1cImN4LWNhcmQtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IGxpbmUgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdHJ1bmNhdGU+XG4gICAgICAgICAgICA8Y3gtdHJ1bmNhdGUtdGV4dC1wb3BvdmVyXG4gICAgICAgICAgICAgIFtjaGFyYWN0ZXJzTGltaXRdPVwiY2hhcmFjdGVyc0xpbWl0XCJcbiAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibGluZVwiXG4gICAgICAgICAgICA+PC9jeC10cnVuY2F0ZS10ZXh0LXBvcG92ZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjeC1jYXJkLXBhcmFncmFwaFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRlbnQucGFyYWdyYXBoc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjeC1jYXJkLXBhcmFncmFwaC10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0ZXh0IG9mIGl0ZW0udGV4dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN4LWNhcmQtcGFyYWdyYXBoLXRleHRcIj5cbiAgICAgICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEltYWdlIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQuaW1nXCIgY2xhc3M9XCJjeC1jYXJkLWltZy1jb250YWluZXJcIj5cbiAgICAgICAgPGN4LWljb24gW3R5cGVdPVwiY29udGVudC5pbWdcIj48L2N4LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEVkaXQgTW9kZSBBY3Rpb25zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJlZGl0TW9kZVwiIGNsYXNzPVwicm93IGN4LWNhcmQtYm9keS1kZWxldGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1ibG9jayBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoKVwiPlxuICAgICAgICAgIHt7ICdjb21tb24uY2FuY2VsJyB8IGN4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tYmxvY2sgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZGVsZXRlKClcIj5cbiAgICAgICAgICB7eyAnY29tbW9uLmRlbGV0ZScgfCBjeFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29udGVudC5hY3Rpb25zICYmICFlZGl0TW9kZVwiIGNsYXNzPVwiY3gtY2FyZC1hY3Rpb25zXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29udGVudC5hY3Rpb25zXCI+XG4gICAgICAgIDxkaXYgW25nU3dpdGNoXT1cImFjdGlvbi5ldmVudFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RlbGV0ZSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJjeC1jYXJkLWxpbmsgY2FyZC1saW5rIGJ0bi1saW5rIGN4LWFjdGlvbi1saW5rXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJkZWxldGUoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPnt7IGFjdGlvbi5uYW1lIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3gtY2FyZC1saW5rIGNhcmQtbGluayBidG4tbGluayBjeC1hY3Rpb24tbGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNldERlZmF1bHQoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPnt7IGFjdGlvbi5uYW1lIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3NlbmQnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3gtY2FyZC1saW5rIGNhcmQtbGluayBidG4tbGluayBjeC1hY3Rpb24tbGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VuZCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbmQoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPnt7IGFjdGlvbi5uYW1lIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2VkaXQnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3gtY2FyZC1saW5rIGNhcmQtbGluayBidG4tbGluayBjeC1hY3Rpb24tbGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImVkaXQoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPnt7IGFjdGlvbi5uYW1lIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgICAgICBocmVmPVwie3sgYWN0aW9uLmxpbmsgfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWxpbmsgYnRuLWxpbmsgY3gtYWN0aW9uLWxpbmtcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgID57eyBhY3Rpb24ubmFtZSB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==