UNPKG

ngx-antd-form-builder

Version:

Simple Drag&Drop form builder using ng-zorro-antd

34 lines 18.1 kB
import { Component, Input } from "@angular/core"; import { ReactiveFormsModule } from "@angular/forms"; import { NzTabsModule } from "ng-zorro-antd/tabs"; import { NzCardModule } from "ng-zorro-antd/card"; import { NzCollapseModule } from "ng-zorro-antd/collapse"; import { CommonModule } from "@angular/common"; import { NzGridModule } from "ng-zorro-antd/grid"; import { DesignFormItemComponent } from "../design-form-item/design-form-item.component"; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "ng-zorro-antd/tabs"; import * as i3 from "ng-zorro-antd/card"; import * as i4 from "ng-zorro-antd/collapse"; import * as i5 from "@angular/common"; import * as i6 from "ng-zorro-antd/grid"; export class BuildBlocksComponent { constructor() { } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: BuildBlocksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: BuildBlocksComponent, isStandalone: true, selector: "app-build-blocks", inputs: { formConfig: "formConfig", record: "record", form: "form" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"record.type\" [formGroup]=\"form\">\r\n <div nz-row class=\"grid-row\" *ngSwitchCase=\"'grid'\" [nzGutter]=\"record.options.gutter\">\r\n <div class=\"grid-col\" *ngFor=\"let colItem of record.columns; index as i\" nz-col [nzSpan]=\"colItem.span || 0\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </div>\r\n </div>\r\n <nz-tabset class=\"grid-row\" *ngSwitchCase=\"'tabs'\"\r\n [nzTabBarGutter]=\"record.options.tabBarGutter\"\r\n [nzType]=\"record.options.type\"\r\n [nzSize]=\"record.options.size\"\r\n [nzTabPosition]=\"record.options.tabPosition\"\r\n [nzAnimated]=\"record.options.animated\"\r\n >\r\n <nz-tab *ngFor=\"let colItem of record.columns; index as i\" \r\n [nzTitle]=\"colItem.label\">\r\n <div [ngStyle]=\"{'max-height': record.options.contentMaxHeight, 'overflow-y': 'auto' }\" \r\n *ngIf=\"record.options.contentMaxHeight != null && record.options.contentMaxHeight != -1\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </div>\r\n <ng-container *ngIf=\"record.options.contentMaxHeight == null || record.options.contentMaxHeight == -1\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </ng-container>\r\n </nz-tab>\r\n </nz-tabset>\r\n <nz-collapse *ngSwitchCase=\"'collapse'\"\r\n class=\"grid-row\" [nzAccordion]=\"record.options.accordion\" [nzBordered]=\"record.options.bordered\"\r\n [nzGhost]=\"record.options.ghost\" [nzExpandIconPosition]=\"record.options.expandIconPosition\">\r\n <nz-collapse-panel [nzActive]=\"true\" *ngFor=\"let colItem of record.columns; index as i\" [nzHeader]=\"colItem.label\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </nz-collapse-panel>\r\n </nz-collapse>\r\n <nz-card *ngSwitchCase=\"'card'\" class=\"grid-row\"\r\n [nzTitle]=\"nzCardTitle\" \r\n >\r\n <app-build-blocks *ngFor=\"let subItem of record.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </nz-card>\r\n <ng-template #nzCardTitle>\r\n <div style=\"padding-right: 12px; white-space: normal;\">{{record.label}}</div>\r\n </ng-template>\r\n <app-design-form-item *ngSwitchDefault\r\n [formConfig]=\"formConfig\"\r\n [record]=\"record\"\r\n [form]=\"form\"\r\n >\r\n </app-design-form-item>\r\n</ng-container>", styles: [""], dependencies: [{ kind: "component", type: BuildBlocksComponent, selector: "app-build-blocks", inputs: ["formConfig", "record", "form"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NzTabsModule }, { kind: "component", type: i2.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i2.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "ngmodule", type: NzCardModule }, { kind: "component", type: i3.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzBorderless", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }, { kind: "ngmodule", type: NzCollapseModule }, { kind: "component", type: i4.NzCollapsePanelComponent, selector: "nz-collapse-panel", inputs: ["nzActive", "nzDisabled", "nzShowArrow", "nzExtra", "nzHeader", "nzExpandedIcon"], outputs: ["nzActiveChange"], exportAs: ["nzCollapsePanel"] }, { kind: "component", type: i4.NzCollapseComponent, selector: "nz-collapse", inputs: ["nzAccordion", "nzBordered", "nzGhost", "nzExpandIconPosition"], exportAs: ["nzCollapse"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i6.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i6.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: DesignFormItemComponent, selector: "app-design-form-item", inputs: ["record", "formConfig", "form"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: BuildBlocksComponent, decorators: [{ type: Component, args: [{ standalone: true, selector: 'app-build-blocks', imports: [ ReactiveFormsModule, NzTabsModule, NzCardModule, NzCollapseModule, CommonModule, NzGridModule, DesignFormItemComponent, ], template: "<ng-container [ngSwitch]=\"record.type\" [formGroup]=\"form\">\r\n <div nz-row class=\"grid-row\" *ngSwitchCase=\"'grid'\" [nzGutter]=\"record.options.gutter\">\r\n <div class=\"grid-col\" *ngFor=\"let colItem of record.columns; index as i\" nz-col [nzSpan]=\"colItem.span || 0\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </div>\r\n </div>\r\n <nz-tabset class=\"grid-row\" *ngSwitchCase=\"'tabs'\"\r\n [nzTabBarGutter]=\"record.options.tabBarGutter\"\r\n [nzType]=\"record.options.type\"\r\n [nzSize]=\"record.options.size\"\r\n [nzTabPosition]=\"record.options.tabPosition\"\r\n [nzAnimated]=\"record.options.animated\"\r\n >\r\n <nz-tab *ngFor=\"let colItem of record.columns; index as i\" \r\n [nzTitle]=\"colItem.label\">\r\n <div [ngStyle]=\"{'max-height': record.options.contentMaxHeight, 'overflow-y': 'auto' }\" \r\n *ngIf=\"record.options.contentMaxHeight != null && record.options.contentMaxHeight != -1\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </div>\r\n <ng-container *ngIf=\"record.options.contentMaxHeight == null || record.options.contentMaxHeight == -1\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </ng-container>\r\n </nz-tab>\r\n </nz-tabset>\r\n <nz-collapse *ngSwitchCase=\"'collapse'\"\r\n class=\"grid-row\" [nzAccordion]=\"record.options.accordion\" [nzBordered]=\"record.options.bordered\"\r\n [nzGhost]=\"record.options.ghost\" [nzExpandIconPosition]=\"record.options.expandIconPosition\">\r\n <nz-collapse-panel [nzActive]=\"true\" *ngFor=\"let colItem of record.columns; index as i\" [nzHeader]=\"colItem.label\">\r\n <app-build-blocks *ngFor=\"let subItem of colItem.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </nz-collapse-panel>\r\n </nz-collapse>\r\n <nz-card *ngSwitchCase=\"'card'\" class=\"grid-row\"\r\n [nzTitle]=\"nzCardTitle\" \r\n >\r\n <app-build-blocks *ngFor=\"let subItem of record.list\" \r\n [record]=\"subItem\"\r\n [formConfig]=\"formConfig\"\r\n [form]=\"form\"\r\n >\r\n </app-build-blocks>\r\n </nz-card>\r\n <ng-template #nzCardTitle>\r\n <div style=\"padding-right: 12px; white-space: normal;\">{{record.label}}</div>\r\n </ng-template>\r\n <app-design-form-item *ngSwitchDefault\r\n [formConfig]=\"formConfig\"\r\n [record]=\"record\"\r\n [form]=\"form\"\r\n >\r\n </app-design-form-item>\r\n</ng-container>" }] }], ctorParameters: () => [], propDecorators: { formConfig: [{ type: Input }], record: [{ type: Input }], form: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hbnRkLWZvcm0tYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvYnVpbGQtYmxvY2tzL2J1aWxkLWJsb2Nrcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYW50ZC1mb3JtLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL2J1aWxkLWJsb2Nrcy9idWlsZC1ibG9ja3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7OztBQVl6RixNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLGdCQUNHLENBQUM7K0dBTE8sb0JBQW9CO21HQUFwQixvQkFBb0Isa0pDbkJqQywyOEZBc0VlLDBERG5ERixvQkFBb0Isc0dBSjdCLG1CQUFtQiwyVUFBRSxZQUFZLDByQkFBQyxZQUFZLCtRQUFDLGdCQUFnQixpY0FBQyxZQUFZLGdtQkFBQyxZQUFZLHNiQUN6Rix1QkFBdUI7OzRGQUdkLG9CQUFvQjtrQkFWaEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLFdBR25CO3dCQUNQLG1CQUFtQixFQUFFLFlBQVksRUFBQyxZQUFZLEVBQUMsZ0JBQWdCLEVBQUMsWUFBWSxFQUFDLFlBQVk7d0JBQ3pGLHVCQUF1QjtxQkFDeEI7d0RBR1EsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIE9wdGlvbmFsLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE56VGFic01vZHVsZSB9IGZyb20gXCJuZy16b3Jyby1hbnRkL3RhYnNcIjtcclxuaW1wb3J0IHsgTnpDYXJkTW9kdWxlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY2FyZFwiO1xyXG5pbXBvcnQgeyBOekNvbGxhcHNlTW9kdWxlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29sbGFwc2VcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBOekdyaWRNb2R1bGUgfSBmcm9tIFwibmctem9ycm8tYW50ZC9ncmlkXCI7XHJcbmltcG9ydCB7IERlc2lnbkZvcm1JdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Rlc2lnbi1mb3JtLWl0ZW0vZGVzaWduLWZvcm0taXRlbS5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdhcHAtYnVpbGQtYmxvY2tzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnVpbGQtYmxvY2tzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9idWlsZC1ibG9ja3MuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOelRhYnNNb2R1bGUsTnpDYXJkTW9kdWxlLE56Q29sbGFwc2VNb2R1bGUsQ29tbW9uTW9kdWxlLE56R3JpZE1vZHVsZSxcclxuICAgIERlc2lnbkZvcm1JdGVtQ29tcG9uZW50LFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1aWxkQmxvY2tzQ29tcG9uZW50ICB7XHJcbiAgQElucHV0KCkgZm9ybUNvbmZpZzogYW55O1xyXG4gIEBJbnB1dCgpIHJlY29yZDogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkge31cclxufSIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInJlY29yZC50eXBlXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgPGRpdiBuei1yb3cgY2xhc3M9XCJncmlkLXJvd1wiICpuZ1N3aXRjaENhc2U9XCInZ3JpZCdcIiBbbnpHdXR0ZXJdPVwicmVjb3JkLm9wdGlvbnMuZ3V0dGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2xcIiAqbmdGb3I9XCJsZXQgY29sSXRlbSBvZiByZWNvcmQuY29sdW1uczsgaW5kZXggYXMgaVwiIG56LWNvbCBbbnpTcGFuXT1cImNvbEl0ZW0uc3BhbiB8fCAwXCI+XHJcbiAgICAgICAgPGFwcC1idWlsZC1ibG9ja3MgKm5nRm9yPVwibGV0IHN1Ykl0ZW0gb2YgY29sSXRlbS5saXN0XCIgXHJcbiAgICAgICAgICBbcmVjb3JkXT1cInN1Ykl0ZW1cIlxyXG4gICAgICAgICAgW2Zvcm1Db25maWddPVwiZm9ybUNvbmZpZ1wiXHJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2FwcC1idWlsZC1ibG9ja3M+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bnotdGFic2V0IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RhYnMnXCJcclxuICAgIFtuelRhYkJhckd1dHRlcl09XCJyZWNvcmQub3B0aW9ucy50YWJCYXJHdXR0ZXJcIlxyXG4gICAgW256VHlwZV09XCJyZWNvcmQub3B0aW9ucy50eXBlXCJcclxuICAgIFtuelNpemVdPVwicmVjb3JkLm9wdGlvbnMuc2l6ZVwiXHJcbiAgICBbbnpUYWJQb3NpdGlvbl09XCJyZWNvcmQub3B0aW9ucy50YWJQb3NpdGlvblwiXHJcbiAgICBbbnpBbmltYXRlZF09XCJyZWNvcmQub3B0aW9ucy5hbmltYXRlZFwiXHJcbiAgICA+XHJcbiAgICA8bnotdGFiICAqbmdGb3I9XCJsZXQgY29sSXRlbSBvZiByZWNvcmQuY29sdW1uczsgaW5kZXggYXMgaVwiIFxyXG4gICAgW256VGl0bGVdPVwiY29sSXRlbS5sYWJlbFwiPlxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6IHJlY29yZC5vcHRpb25zLmNvbnRlbnRNYXhIZWlnaHQsICdvdmVyZmxvdy15JzogJ2F1dG8nIH1cIiBcclxuICAgICAgKm5nSWY9XCJyZWNvcmQub3B0aW9ucy5jb250ZW50TWF4SGVpZ2h0ICE9IG51bGwgJiYgcmVjb3JkLm9wdGlvbnMuY29udGVudE1heEhlaWdodCAhPSAtMVwiPlxyXG4gICAgICAgIDxhcHAtYnVpbGQtYmxvY2tzICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIGNvbEl0ZW0ubGlzdFwiIFxyXG4gICAgICAgIFtyZWNvcmRdPVwic3ViSXRlbVwiXHJcbiAgICAgICAgW2Zvcm1Db25maWddPVwiZm9ybUNvbmZpZ1wiXHJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2FwcC1idWlsZC1ibG9ja3M+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVjb3JkLm9wdGlvbnMuY29udGVudE1heEhlaWdodCA9PSBudWxsIHx8IHJlY29yZC5vcHRpb25zLmNvbnRlbnRNYXhIZWlnaHQgPT0gLTFcIj5cclxuICAgICAgICA8YXBwLWJ1aWxkLWJsb2NrcyAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBjb2xJdGVtLmxpc3RcIiBcclxuICAgICAgICBbcmVjb3JkXT1cInN1Ykl0ZW1cIlxyXG4gICAgICAgIFtmb3JtQ29uZmlnXT1cImZvcm1Db25maWdcIlxyXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgID5cclxuICAgICAgPC9hcHAtYnVpbGQtYmxvY2tzPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbnotdGFiPlxyXG4gIDwvbnotdGFic2V0PlxyXG4gIDxuei1jb2xsYXBzZSAqbmdTd2l0Y2hDYXNlPVwiJ2NvbGxhcHNlJ1wiXHJcbiAgICBjbGFzcz1cImdyaWQtcm93XCIgW256QWNjb3JkaW9uXT1cInJlY29yZC5vcHRpb25zLmFjY29yZGlvblwiIFtuekJvcmRlcmVkXT1cInJlY29yZC5vcHRpb25zLmJvcmRlcmVkXCJcclxuICAgIFtuekdob3N0XT1cInJlY29yZC5vcHRpb25zLmdob3N0XCIgW256RXhwYW5kSWNvblBvc2l0aW9uXT1cInJlY29yZC5vcHRpb25zLmV4cGFuZEljb25Qb3NpdGlvblwiPlxyXG4gICAgPG56LWNvbGxhcHNlLXBhbmVsIFtuekFjdGl2ZV09XCJ0cnVlXCIgKm5nRm9yPVwibGV0IGNvbEl0ZW0gb2YgcmVjb3JkLmNvbHVtbnM7IGluZGV4IGFzIGlcIiBbbnpIZWFkZXJdPVwiY29sSXRlbS5sYWJlbFwiPlxyXG4gICAgICA8YXBwLWJ1aWxkLWJsb2NrcyAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBjb2xJdGVtLmxpc3RcIiBcclxuICAgICAgICBbcmVjb3JkXT1cInN1Ykl0ZW1cIlxyXG4gICAgICAgIFtmb3JtQ29uZmlnXT1cImZvcm1Db25maWdcIlxyXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgID5cclxuICAgICAgPC9hcHAtYnVpbGQtYmxvY2tzPlxyXG4gICAgPC9uei1jb2xsYXBzZS1wYW5lbD5cclxuICA8L256LWNvbGxhcHNlPlxyXG4gIDxuei1jYXJkICpuZ1N3aXRjaENhc2U9XCInY2FyZCdcIiBjbGFzcz1cImdyaWQtcm93XCJcclxuICBbbnpUaXRsZV09XCJuekNhcmRUaXRsZVwiIFxyXG4gID5cclxuICAgIDxhcHAtYnVpbGQtYmxvY2tzICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIHJlY29yZC5saXN0XCIgXHJcbiAgICBbcmVjb3JkXT1cInN1Ykl0ZW1cIlxyXG4gICAgW2Zvcm1Db25maWddPVwiZm9ybUNvbmZpZ1wiXHJcbiAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgID5cclxuICA8L2FwcC1idWlsZC1ibG9ja3M+XHJcbiAgPC9uei1jYXJkPlxyXG4gIDxuZy10ZW1wbGF0ZSAjbnpDYXJkVGl0bGU+XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1yaWdodDogMTJweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDtcIj57e3JlY29yZC5sYWJlbH19PC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8YXBwLWRlc2lnbi1mb3JtLWl0ZW0gKm5nU3dpdGNoRGVmYXVsdFxyXG4gICAgW2Zvcm1Db25maWddPVwiZm9ybUNvbmZpZ1wiXHJcbiAgICBbcmVjb3JkXT1cInJlY29yZFwiXHJcbiAgICBbZm9ybV09XCJmb3JtXCJcclxuICA+XHJcbiAgPC9hcHAtZGVzaWduLWZvcm0taXRlbT5cclxuPC9uZy1jb250YWluZXI+Il19