@xmagic/nz-formly
Version:
基于ng-zorro-antd UI 扩展的ngx-formly组件库
155 lines • 15.3 kB
JavaScript
import { ChangeDetectionStrategy, Component, Optional, ViewChild } from '@angular/core';
import { FieldWrapper } from '@ngx-formly/core';
import { resolveTplName } from '@xmagic/nz-formly/common';
import * as i0 from "@angular/core";
import * as i1 from "@xmagic/nz-formly/common";
import * as i2 from "@angular/common";
import * as i3 from "@xmagic/nzx-antd/modal";
import * as i4 from "ng-zorro-antd/modal";
import * as i5 from "@ngx-formly/core";
export class ModalWrapperComponent extends FieldWrapper {
fieldTemplates;
instance;
defaultOptions = {
props: {
nzOkType: 'primary',
nzCloseOnNavigation: true,
nzMaskClosable: false,
nzKeyboard: false,
nzClosable: true,
nzMask: true,
nzIconType: 'question-circle',
nzAutofocus: 'auto',
nzWidth: 520,
nzVisible: false,
nzCloseIcon: 'close',
nzOnCancel: (v, field, instance) => (field.props.nzVisible = false),
nzOnOk: (v, field, instance) => (field.props.nzVisible = false)
}
};
constructor(fieldTemplates) {
super();
this.fieldTemplates = fieldTemplates;
}
ngOnInit() {
this.props.instance = this.instance;
this.props.init?.(this.instance, this);
}
get nzTitle() {
return resolveTplName(this.props, this.fieldTemplates, 'nzTitle');
}
get nzFooter() {
return resolveTplName(this.props, this.fieldTemplates, 'nzFooter');
}
get nzCloseIcon() {
return resolveTplName(this.props, this.fieldTemplates, 'nzCloseIcon');
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i1.FormlyBoxTemplates, optional: true }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalWrapperComponent, selector: "nz-formly-modal-wrapper", viewQueries: [{ propertyName: "instance", first: true, predicate: ["nzModal"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
<nz-modal
*ngIf="props.nzVisible"
nzxModalDrag
[]="true"
[]="props.label || nzTitle"
[]="field"
[]="props.nzAutofocus"
[]="props.nzBodyStyle"
[]="props.nzCancelDisabled"
[]="props.nzCancelLoading"
[]="props.nzCancelText"
[]="props.nzCentered"
[]="props.nzClassName"
[]="props.nzClosable"
[]="nzCloseIcon"
[]="props.nzCloseOnNavigation"
[]="props.nzComponentParams"
[]="nzFooter"
[]="props.nzIconType"
[]="props.nzKeyboard"
[]="props.nzMask"
[]="props.nzMaskClosable"
[]="props.nzMaskStyle"
[]="props.nzModalType"
[]="props.nzNoAnimation"
[]="props.nzOkDanger"
[]="props.nzOkDisabled"
[]="props.nzOkLoading"
[]="props.nzOkText"
[]="props.nzOkType"
[]="props.nzStyle"
[]="props.nzWidth"
[]="props.nzWrapClassName"
[]="props.nzZIndex"
(nzAfterClose)="props.onAfterClose && props.onAfterClose($event, field, instance)"
(nzAfterOpen)="props.nzAfterOpen && props.nzAfterOpen(field, instance)"
(nzOnCancel)="props.nzOnCancel?.($event, field, instance)"
(nzOnOk)="props.nzOnOk?.($event, field, instance)"
(nzVisibleChange)="props.nzVisibleChange?.($event, field, instance)"
>
<ng-container *nzModalContent>
<ng-container
</ng-container>
</nz-modal>
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NzxModalDragDirective, selector: "nz-modal[nzxModalDrag]" }, { kind: "component", type: i4.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i4.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "directive", type: i5.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalWrapperComponent, decorators: [{
type: Component,
args: [{
selector: 'nz-formly-modal-wrapper',
template: `
<nz-modal
*ngIf="props.nzVisible"
nzxModalDrag
[]="true"
[]="props.label || nzTitle"
[]="field"
[]="props.nzAutofocus"
[]="props.nzBodyStyle"
[]="props.nzCancelDisabled"
[]="props.nzCancelLoading"
[]="props.nzCancelText"
[]="props.nzCentered"
[]="props.nzClassName"
[]="props.nzClosable"
[]="nzCloseIcon"
[]="props.nzCloseOnNavigation"
[]="props.nzComponentParams"
[]="nzFooter"
[]="props.nzIconType"
[]="props.nzKeyboard"
[]="props.nzMask"
[]="props.nzMaskClosable"
[]="props.nzMaskStyle"
[]="props.nzModalType"
[]="props.nzNoAnimation"
[]="props.nzOkDanger"
[]="props.nzOkDisabled"
[]="props.nzOkLoading"
[]="props.nzOkText"
[]="props.nzOkType"
[]="props.nzStyle"
[]="props.nzWidth"
[]="props.nzWrapClassName"
[]="props.nzZIndex"
(nzAfterClose)="props.onAfterClose && props.onAfterClose($event, field, instance)"
(nzAfterOpen)="props.nzAfterOpen && props.nzAfterOpen(field, instance)"
(nzOnCancel)="props.nzOnCancel?.($event, field, instance)"
(nzOnOk)="props.nzOnOk?.($event, field, instance)"
(nzVisibleChange)="props.nzVisibleChange?.($event, field, instance)"
>
<ng-container *nzModalContent>
<ng-container
</ng-container>
</nz-modal>
`,
changeDetection: ChangeDetectionStrategy.OnPush
}]
}], ctorParameters: () => [{ type: i1.FormlyBoxTemplates, decorators: [{
type: Optional
}] }], propDecorators: { instance: [{
type: ViewChild,
args: ['nzModal', { static: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBc0IsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFzRDlFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBb0J0QjtJQW5CUyxRQUFRLENBQW9CO0lBQzNELGNBQWMsR0FBRztRQUN4QixLQUFLLEVBQUU7WUFDTCxRQUFRLEVBQUUsU0FBUztZQUNuQixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxJQUFJO1lBQ1osVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixXQUFXLEVBQUUsTUFBTTtZQUNuQixPQUFPLEVBQUUsR0FBRztZQUNaLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLFVBQVUsRUFBRSxDQUFDLENBQVksRUFBRSxLQUF3QixFQUFFLFFBQTBCLEVBQUUsRUFBRSxDQUNqRixDQUFDLEtBQUssQ0FBQyxLQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNsQyxNQUFNLEVBQUUsQ0FBQyxDQUFZLEVBQUUsS0FBd0IsRUFBRSxRQUEwQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNqSDtLQUNGLENBQUM7SUFDRixZQUErQixjQUFrQztRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQURxQixtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7SUFFakUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxDQUFDO3dHQXZDVSxxQkFBcUI7NEZBQXJCLHFCQUFxQix5TUFqRHRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOENUOzs0RkFHVSxxQkFBcUI7a0JBbkRqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQXFCYyxRQUFRO3lDQW5CbUIsUUFBUTtzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkV3JhcHBlciB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBOek1vZGFsQ29tcG9uZW50IH0gZnJvbSAnbmctem9ycm8tYW50ZC9tb2RhbCc7XHJcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZS9saWIvbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybWx5Qm94VGVtcGxhdGVzLCByZXNvbHZlVHBsTmFtZSB9IGZyb20gJ0B4bWFnaWMvbnotZm9ybWx5L2NvbW1vbic7XHJcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ256LWZvcm1seS1tb2RhbC13cmFwcGVyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG56LW1vZGFsXHJcbiAgICAgICpuZ0lmPVwicHJvcHMubnpWaXNpYmxlXCJcclxuICAgICAgI256TW9kYWxcclxuICAgICAgbnp4TW9kYWxEcmFnXHJcbiAgICAgIFtuelZpc2libGVdPVwidHJ1ZVwiXHJcbiAgICAgIFtuelRpdGxlXT1cInByb3BzLmxhYmVsIHx8IG56VGl0bGVcIlxyXG4gICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXHJcbiAgICAgIFtuekF1dG9mb2N1c109XCJwcm9wcy5uekF1dG9mb2N1c1wiXHJcbiAgICAgIFtuekJvZHlTdHlsZV09XCJwcm9wcy5uekJvZHlTdHlsZVwiXHJcbiAgICAgIFtuekNhbmNlbERpc2FibGVkXT1cInByb3BzLm56Q2FuY2VsRGlzYWJsZWRcIlxyXG4gICAgICBbbnpDYW5jZWxMb2FkaW5nXT1cInByb3BzLm56Q2FuY2VsTG9hZGluZ1wiXHJcbiAgICAgIFtuekNhbmNlbFRleHRdPVwicHJvcHMubnpDYW5jZWxUZXh0XCJcclxuICAgICAgW256Q2VudGVyZWRdPVwicHJvcHMubnpDZW50ZXJlZFwiXHJcbiAgICAgIFtuekNsYXNzTmFtZV09XCJwcm9wcy5uekNsYXNzTmFtZVwiXHJcbiAgICAgIFtuekNsb3NhYmxlXT1cInByb3BzLm56Q2xvc2FibGVcIlxyXG4gICAgICBbbnpDbG9zZUljb25dPVwibnpDbG9zZUljb25cIlxyXG4gICAgICBbbnpDbG9zZU9uTmF2aWdhdGlvbl09XCJwcm9wcy5uekNsb3NlT25OYXZpZ2F0aW9uXCJcclxuICAgICAgW256Q29tcG9uZW50UGFyYW1zXT1cInByb3BzLm56Q29tcG9uZW50UGFyYW1zXCJcclxuICAgICAgW256Rm9vdGVyXT1cIm56Rm9vdGVyXCJcclxuICAgICAgW256SWNvblR5cGVdPVwicHJvcHMubnpJY29uVHlwZVwiXHJcbiAgICAgIFtuektleWJvYXJkXT1cInByb3BzLm56S2V5Ym9hcmRcIlxyXG4gICAgICBbbnpNYXNrXT1cInByb3BzLm56TWFza1wiXHJcbiAgICAgIFtuek1hc2tDbG9zYWJsZV09XCJwcm9wcy5uek1hc2tDbG9zYWJsZVwiXHJcbiAgICAgIFtuek1hc2tTdHlsZV09XCJwcm9wcy5uek1hc2tTdHlsZVwiXHJcbiAgICAgIFtuek1vZGFsVHlwZV09XCJwcm9wcy5uek1vZGFsVHlwZVwiXHJcbiAgICAgIFtuek5vQW5pbWF0aW9uXT1cInByb3BzLm56Tm9BbmltYXRpb25cIlxyXG4gICAgICBbbnpPa0Rhbmdlcl09XCJwcm9wcy5uek9rRGFuZ2VyXCJcclxuICAgICAgW256T2tEaXNhYmxlZF09XCJwcm9wcy5uek9rRGlzYWJsZWRcIlxyXG4gICAgICBbbnpPa0xvYWRpbmddPVwicHJvcHMubnpPa0xvYWRpbmdcIlxyXG4gICAgICBbbnpPa1RleHRdPVwicHJvcHMubnpPa1RleHRcIlxyXG4gICAgICBbbnpPa1R5cGVdPVwicHJvcHMubnpPa1R5cGVcIlxyXG4gICAgICBbbnpTdHlsZV09XCJwcm9wcy5uelN0eWxlXCJcclxuICAgICAgW256V2lkdGhdPVwicHJvcHMubnpXaWR0aFwiXHJcbiAgICAgIFtueldyYXBDbGFzc05hbWVdPVwicHJvcHMubnpXcmFwQ2xhc3NOYW1lXCJcclxuICAgICAgW256WkluZGV4XT1cInByb3BzLm56WkluZGV4XCJcclxuICAgICAgKG56QWZ0ZXJDbG9zZSk9XCJwcm9wcy5vbkFmdGVyQ2xvc2UgJiYgcHJvcHMub25BZnRlckNsb3NlKCRldmVudCwgZmllbGQsIGluc3RhbmNlKVwiXHJcbiAgICAgIChuekFmdGVyT3Blbik9XCJwcm9wcy5uekFmdGVyT3BlbiAmJiBwcm9wcy5uekFmdGVyT3BlbihmaWVsZCwgaW5zdGFuY2UpXCJcclxuICAgICAgKG56T25DYW5jZWwpPVwicHJvcHMubnpPbkNhbmNlbD8uKCRldmVudCwgZmllbGQsIGluc3RhbmNlKVwiXHJcbiAgICAgIChuek9uT2spPVwicHJvcHMubnpPbk9rPy4oJGV2ZW50LCBmaWVsZCwgaW5zdGFuY2UpXCJcclxuICAgICAgKG56VmlzaWJsZUNoYW5nZSk9XCJwcm9wcy5uelZpc2libGVDaGFuZ2U/LigkZXZlbnQsIGZpZWxkLCBpbnN0YW5jZSlcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuek1vZGFsQ29udGVudD5cclxuICAgICAgICA8bmctY29udGFpbmVyICNmaWVsZENvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L256LW1vZGFsPlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudCBleHRlbmRzIEZpZWxkV3JhcHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbnpNb2RhbCcsIHsgc3RhdGljOiB0cnVlIH0pIGluc3RhbmNlITogTnpNb2RhbENvbXBvbmVudDtcclxuICBvdmVycmlkZSBkZWZhdWx0T3B0aW9ucyA9IHtcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIG56T2tUeXBlOiAncHJpbWFyeScsXHJcbiAgICAgIG56Q2xvc2VPbk5hdmlnYXRpb246IHRydWUsXHJcbiAgICAgIG56TWFza0Nsb3NhYmxlOiBmYWxzZSxcclxuICAgICAgbnpLZXlib2FyZDogZmFsc2UsXHJcbiAgICAgIG56Q2xvc2FibGU6IHRydWUsXHJcbiAgICAgIG56TWFzazogdHJ1ZSxcclxuICAgICAgbnpJY29uVHlwZTogJ3F1ZXN0aW9uLWNpcmNsZScsXHJcbiAgICAgIG56QXV0b2ZvY3VzOiAnYXV0bycsXHJcbiAgICAgIG56V2lkdGg6IDUyMCxcclxuICAgICAgbnpWaXNpYmxlOiBmYWxzZSxcclxuICAgICAgbnpDbG9zZUljb246ICdjbG9zZScsXHJcbiAgICAgIG56T25DYW5jZWw6ICh2OiBOelNhZmVBbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgaW5zdGFuY2U6IE56TW9kYWxDb21wb25lbnQpID0+XHJcbiAgICAgICAgKGZpZWxkLnByb3BzIS5uelZpc2libGUgPSBmYWxzZSksXHJcbiAgICAgIG56T25PazogKHY6IE56U2FmZUFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBpbnN0YW5jZTogTnpNb2RhbENvbXBvbmVudCkgPT4gKGZpZWxkLnByb3BzIS5uelZpc2libGUgPSBmYWxzZSlcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBmaWVsZFRlbXBsYXRlczogRm9ybWx5Qm94VGVtcGxhdGVzKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BzLmluc3RhbmNlID0gdGhpcy5pbnN0YW5jZTtcclxuICAgIHRoaXMucHJvcHMuaW5pdD8uKHRoaXMuaW5zdGFuY2UsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG56VGl0bGUoKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUodGhpcy5wcm9wcywgdGhpcy5maWVsZFRlbXBsYXRlcywgJ256VGl0bGUnKTtcclxuICB9XHJcblxyXG4gIGdldCBuekZvb3RlcigpIHtcclxuICAgIHJldHVybiByZXNvbHZlVHBsTmFtZSh0aGlzLnByb3BzLCB0aGlzLmZpZWxkVGVtcGxhdGVzLCAnbnpGb290ZXInKTtcclxuICB9XHJcblxyXG4gIGdldCBuekNsb3NlSWNvbigpIHtcclxuICAgIHJldHVybiByZXNvbHZlVHBsTmFtZSh0aGlzLnByb3BzLCB0aGlzLmZpZWxkVGVtcGxhdGVzLCAnbnpDbG9zZUljb24nKTtcclxuICB9XHJcbn1cclxuIl19