UNPKG

@spartacus/storefront

Version:

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

80 lines 14.4 kB
import { Component, HostListener, } from '@angular/core'; import { GlobalMessageType, } from '@spartacus/core'; import { combineLatest, Subscription } from 'rxjs'; import { startWith } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; import * as i2 from "../../../layout/launch-dialog/services/launch-dialog.service"; import * as i3 from "../../../layout/a11y/keyboard-focus/focus.directive"; /** * @deprecated since 4.2 - use order lib instead */ export class ReplenishmentOrderCancellationDialogComponent { constructor(userReplenishmentOrderService, globalMessageService, launchDialogService, el) { this.userReplenishmentOrderService = userReplenishmentOrderService; this.globalMessageService = globalMessageService; this.launchDialogService = launchDialogService; this.el = el; this.subscription = new Subscription(); this.focusConfig = { trap: true, block: true, autofocus: 'button', focusOnEscape: true, }; } handleClick(event) { // Close on click outside the dialog window if (event.target.tagName === this.el.nativeElement.tagName) { this.close('Cross click'); } } ngOnInit() { this.subscription.add(combineLatest([ this.userReplenishmentOrderService .getReplenishmentOrderDetails() .pipe(startWith(null)), this.launchDialogService.data$, ]).subscribe(([replenishmentOrder, code]) => { this.replenishmentOrderCode = code || replenishmentOrder.replenishmentOrderCode; })); this.subscription.add(this.userReplenishmentOrderService .getCancelReplenishmentOrderSuccess() .subscribe((value) => this.onSuccess(value))); } onSuccess(value) { if (value) { this.launchDialogService.closeDialog('Successffully cancelled replenishment'); this.globalMessageService.add({ key: 'orderDetails.cancelReplenishment.cancelSuccess', params: { replenishmentOrderCode: this.replenishmentOrderCode, }, }, GlobalMessageType.MSG_TYPE_CONFIRMATION); } this.userReplenishmentOrderService.clearCancelReplenishmentOrderProcessState(); } close(reason) { this.launchDialogService.closeDialog(reason); } cancelReplenishment() { this.userReplenishmentOrderService.cancelReplenishmentOrder(this.replenishmentOrderCode); } ngOnDestroy() { this.subscription.unsubscribe(); } } ReplenishmentOrderCancellationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ReplenishmentOrderCancellationDialogComponent, deps: [{ token: i1.UserReplenishmentOrderService }, { token: i1.GlobalMessageService }, { token: i2.LaunchDialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); ReplenishmentOrderCancellationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: ReplenishmentOrderCancellationDialogComponent, selector: "cx-replenishment-order-cancellation-dialog", host: { listeners: { "click": "handleClick($event)" } }, ngImport: i0, template: "<div\n [cxFocus]=\"focusConfig\"\n (esc)=\"close('Escape clicked')\"\n class=\"cx-cancel-replenishment-dialog-foreground\"\n>\n <div class=\"cx-cancel-replenishment-dialog-content\">\n <div class=\"cx-cancel-replenishment-dialog-header\">\n <h3>\n {{ 'orderDetails.cancelReplenishment.title' | cxTranslate }}\n </h3>\n </div>\n <div class=\"cx-cancel-replenishment-dialog-description\">\n {{ 'orderDetails.cancelReplenishment.description' | cxTranslate }}\n </div>\n\n <div class=\"cx-cancel-replenishment-dialog-body\">\n <div class=\"cx-cancel-replenishment-btns row\">\n <div class=\"col-md-6\">\n <button\n class=\"btn btn-block btn-action\"\n (click)=\"close('Close Replenishment Dialog')\"\n >\n {{ 'orderDetails.cancelReplenishment.reject' | cxTranslate }}\n </button>\n </div>\n <div class=\"col-md-6\">\n <button\n class=\"btn btn-block btn-primary\"\n (click)=\"cancelReplenishment()\"\n >\n {{ 'orderDetails.cancelReplenishment.accept' | cxTranslate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n", directives: [{ type: i3.FocusDirective, selector: "[cxFocus]", inputs: ["cxFocus"] }], pipes: { "cxTranslate": i1.TranslatePipe } }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ReplenishmentOrderCancellationDialogComponent, decorators: [{ type: Component, args: [{ selector: 'cx-replenishment-order-cancellation-dialog', templateUrl: './replenishment-order-cancellation-dialog.component.html', }] }], ctorParameters: function () { return [{ type: i1.UserReplenishmentOrderService }, { type: i1.GlobalMessageService }, { type: i2.LaunchDialogService }, { type: i0.ElementRef }]; }, propDecorators: { handleClick: [{ type: HostListener, args: ['click', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGVuaXNobWVudC1vcmRlci1jYW5jZWxsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvc2hhcmVkL2NvbXBvbmVudHMvcmVwbGVuaXNobWVudC1vcmRlci1jYW5jZWxsYXRpb24tZGlhbG9nL3JlcGxlbmlzaG1lbnQtb3JkZXItY2FuY2VsbGF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL3NoYXJlZC9jb21wb25lbnRzL3JlcGxlbmlzaG1lbnQtb3JkZXItY2FuY2VsbGF0aW9uLWRpYWxvZy9yZXBsZW5pc2htZW50LW9yZGVyLWNhbmNlbGxhdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEdBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFJM0M7O0dBRUc7QUFLSCxNQUFNLE9BQU8sNkNBQTZDO0lBc0J4RCxZQUNZLDZCQUE0RCxFQUM1RCxvQkFBMEMsRUFDMUMsbUJBQXdDLEVBQ3hDLEVBQWM7UUFIZCxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQStCO1FBQzVELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBdkJsQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUMsZ0JBQVcsR0FBZ0I7WUFDekIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxRQUFRO1lBQ25CLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7SUFlQyxDQUFDO0lBWkosV0FBVyxDQUFDLEtBQWM7UUFDeEIsMkNBQTJDO1FBQzNDLElBQUssS0FBSyxDQUFDLE1BQWMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBU0QsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsNkJBQTZCO2lCQUMvQiw0QkFBNEIsRUFBRTtpQkFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSztTQUMvQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxzQkFBc0I7Z0JBQ3pCLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyw2QkFBNkI7YUFDL0Isa0NBQWtDLEVBQUU7YUFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUNsQyx1Q0FBdUMsQ0FDeEMsQ0FBQztZQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQzNCO2dCQUNFLEdBQUcsRUFBRSxnREFBZ0Q7Z0JBQ3JELE1BQU0sRUFBRTtvQkFDTixzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO2lCQUNwRDthQUNGLEVBQ0QsaUJBQWlCLENBQUMscUJBQXFCLENBQ3hDLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyx5Q0FBeUMsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBYztRQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHdCQUF3QixDQUN6RCxJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7MElBaEZVLDZDQUE2Qzs4SEFBN0MsNkNBQTZDLDJJQ3hCMUQsMHNDQXFDQTsyRkRiYSw2Q0FBNkM7a0JBSnpELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRDQUE0QztvQkFDdEQsV0FBVyxFQUFFLDBEQUEwRDtpQkFDeEU7a05BZ0JDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR2xvYmFsTWVzc2FnZVNlcnZpY2UsXG4gIEdsb2JhbE1lc3NhZ2VUeXBlLFxuICBVc2VyUmVwbGVuaXNobWVudE9yZGVyU2VydmljZSxcbn0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9jdXNDb25maWcgfSBmcm9tICcuLi8uLi8uLi9sYXlvdXQvYTExeS9rZXlib2FyZC1mb2N1cy9rZXlib2FyZC1mb2N1cy5tb2RlbCc7XG5pbXBvcnQgeyBMYXVuY2hEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbGF5b3V0L2xhdW5jaC1kaWFsb2cvc2VydmljZXMvbGF1bmNoLWRpYWxvZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBzaW5jZSA0LjIgLSB1c2Ugb3JkZXIgbGliIGluc3RlYWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3gtcmVwbGVuaXNobWVudC1vcmRlci1jYW5jZWxsYXRpb24tZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGxlbmlzaG1lbnQtb3JkZXItY2FuY2VsbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlcGxlbmlzaG1lbnRPcmRlckNhbmNlbGxhdGlvbkRpYWxvZ0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHJlcGxlbmlzaG1lbnRPcmRlckNvZGU6IHN0cmluZztcblxuICBmb2N1c0NvbmZpZzogRm9jdXNDb25maWcgPSB7XG4gICAgdHJhcDogdHJ1ZSxcbiAgICBibG9jazogdHJ1ZSxcbiAgICBhdXRvZm9jdXM6ICdidXR0b24nLFxuICAgIGZvY3VzT25Fc2NhcGU6IHRydWUsXG4gIH07XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBoYW5kbGVDbGljayhldmVudDogVUlFdmVudCk6IHZvaWQge1xuICAgIC8vIENsb3NlIG9uIGNsaWNrIG91dHNpZGUgdGhlIGRpYWxvZyB3aW5kb3dcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBhbnkpLnRhZ05hbWUgPT09IHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lKSB7XG4gICAgICB0aGlzLmNsb3NlKCdDcm9zcyBjbGljaycpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB1c2VyUmVwbGVuaXNobWVudE9yZGVyU2VydmljZTogVXNlclJlcGxlbmlzaG1lbnRPcmRlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGdsb2JhbE1lc3NhZ2VTZXJ2aWNlOiBHbG9iYWxNZXNzYWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbGF1bmNoRGlhbG9nU2VydmljZTogTGF1bmNoRGlhbG9nU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnVzZXJSZXBsZW5pc2htZW50T3JkZXJTZXJ2aWNlXG4gICAgICAgICAgLmdldFJlcGxlbmlzaG1lbnRPcmRlckRldGFpbHMoKVxuICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgICAgIHRoaXMubGF1bmNoRGlhbG9nU2VydmljZS5kYXRhJCxcbiAgICAgIF0pLnN1YnNjcmliZSgoW3JlcGxlbmlzaG1lbnRPcmRlciwgY29kZV0pID0+IHtcbiAgICAgICAgdGhpcy5yZXBsZW5pc2htZW50T3JkZXJDb2RlID1cbiAgICAgICAgICBjb2RlIHx8IHJlcGxlbmlzaG1lbnRPcmRlci5yZXBsZW5pc2htZW50T3JkZXJDb2RlO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy51c2VyUmVwbGVuaXNobWVudE9yZGVyU2VydmljZVxuICAgICAgICAuZ2V0Q2FuY2VsUmVwbGVuaXNobWVudE9yZGVyU3VjY2VzcygpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLm9uU3VjY2Vzcyh2YWx1ZSkpXG4gICAgKTtcbiAgfVxuXG4gIG9uU3VjY2Vzcyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5sYXVuY2hEaWFsb2dTZXJ2aWNlLmNsb3NlRGlhbG9nKFxuICAgICAgICAnU3VjY2Vzc2ZmdWxseSBjYW5jZWxsZWQgcmVwbGVuaXNobWVudCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZ2xvYmFsTWVzc2FnZVNlcnZpY2UuYWRkKFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnb3JkZXJEZXRhaWxzLmNhbmNlbFJlcGxlbmlzaG1lbnQuY2FuY2VsU3VjY2VzcycsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICByZXBsZW5pc2htZW50T3JkZXJDb2RlOiB0aGlzLnJlcGxlbmlzaG1lbnRPcmRlckNvZGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgR2xvYmFsTWVzc2FnZVR5cGUuTVNHX1RZUEVfQ09ORklSTUFUSU9OXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnVzZXJSZXBsZW5pc2htZW50T3JkZXJTZXJ2aWNlLmNsZWFyQ2FuY2VsUmVwbGVuaXNobWVudE9yZGVyUHJvY2Vzc1N0YXRlKCk7XG4gIH1cblxuICBjbG9zZShyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubGF1bmNoRGlhbG9nU2VydmljZS5jbG9zZURpYWxvZyhyZWFzb24pO1xuICB9XG5cbiAgY2FuY2VsUmVwbGVuaXNobWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJSZXBsZW5pc2htZW50T3JkZXJTZXJ2aWNlLmNhbmNlbFJlcGxlbmlzaG1lbnRPcmRlcihcbiAgICAgIHRoaXMucmVwbGVuaXNobWVudE9yZGVyQ29kZVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtjeEZvY3VzXT1cImZvY3VzQ29uZmlnXCJcbiAgKGVzYyk9XCJjbG9zZSgnRXNjYXBlIGNsaWNrZWQnKVwiXG4gIGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWZvcmVncm91bmRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWhlYWRlclwiPlxuICAgICAgPGgzPlxuICAgICAgICB7eyAnb3JkZXJEZXRhaWxzLmNhbmNlbFJlcGxlbmlzaG1lbnQudGl0bGUnIHwgY3hUcmFuc2xhdGUgfX1cbiAgICAgIDwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN4LWNhbmNlbC1yZXBsZW5pc2htZW50LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAge3sgJ29yZGVyRGV0YWlscy5jYW5jZWxSZXBsZW5pc2htZW50LmRlc2NyaXB0aW9uJyB8IGN4VHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjeC1jYW5jZWwtcmVwbGVuaXNobWVudC1idG5zIHJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tYmxvY2sgYnRuLWFjdGlvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJ0Nsb3NlIFJlcGxlbmlzaG1lbnQgRGlhbG9nJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdvcmRlckRldGFpbHMuY2FuY2VsUmVwbGVuaXNobWVudC5yZWplY3QnIHwgY3hUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1ibG9jayBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsUmVwbGVuaXNobWVudCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnb3JkZXJEZXRhaWxzLmNhbmNlbFJlcGxlbmlzaG1lbnQuYWNjZXB0JyB8IGN4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=