UNPKG

@yoyoboot/l-52abp-ng-form-generator

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.

30 lines 29.2 kB
import { Component } from '@angular/core'; import { WidgetFormRenderBase } from '../widget-form-render-base'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/form"; import * as i2 from "ng-zorro-antd/button"; import * as i3 from "../d-widget-form-item/d-widget-form-item.component"; import * as i4 from "@angular/common"; import * as i5 from "@angular/forms"; import * as i6 from "ng-zorro-antd/grid"; import * as i7 from "../../../ngx-drag-drop/dnd-dropzone.directive"; import * as i8 from "../../../ngx-drag-drop/dnd-draggable.directive"; import * as i9 from "ng-zorro-antd/core/wave"; import * as i10 from "ng-zorro-antd/core/transition-patch"; export class DWidgetFormRenderComponent extends WidgetFormRenderBase { constructor(injector) { super(injector); } } DWidgetFormRenderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DWidgetFormRenderComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); DWidgetFormRenderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: DWidgetFormRenderComponent, selector: "[d-widget-form-render]", usesInheritance: true, ngImport: i0, template: "<!-- \u6839\u636E\u7C7B\u578B\u8FDB\u884C\u6E32\u67D3 -->\n<ng-container [ngSwitch]=\"component.widget\">\n <ng-container *ngSwitchCase=\"'layout-form'\">\n <ng-container *ngTemplateOutlet=\"formRender; context: { $implicit: component, parentComponent: parentComponent }\"> </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'group'\">\n <ng-container *ngTemplateOutlet=\"groupRender; context: { $implicit: component, parentComponent: parentComponent }\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'title'\">\n <ng-container *ngTemplateOutlet=\"titleRender; context: { $implicit: component, parentComponent: parentComponent }\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"defaultRender; context: { $implicit: component, parentComponent: parentComponent }\"></ng-container>\n </ng-container>\n</ng-container>\n\n<!-- \u8868\u5355 -->\n<ng-template #formRender let-subComponent let-parentComponent=\"parentComponent\">\n <form #widgetFormRef=\"ngForm\" nz-row nz-form style=\"height: 100%\" [ngClass]=\"{ formBordered: subComponent.bordered }\">\n <div\n dndDropZone\n [dndDisableIf]=\"disableDragDrop\"\n [dndAllowExternal]=\"true\"\n (dndDrop)=\"onDngDrop($event, subComponent)\"\n [ngStyle]=\"{ 'min-height: 300px;': subComponent.children.length === 0 }\"\n class=\"widget-form-list\"\n style=\"width: 100%; text-align: left\"\n >\n <div dndPlaceholderRef class=\"widget-form-item-placeholder\"></div>\n\n <ng-container *ngFor=\"let childComponent of subComponent.children; let i = index\">\n <div\n [dndDraggable]=\"childComponent\"\n [dndDisableIf]=\"disableDragDrop\"\n dndEffectAllowed=\"move\"\n (dndMoved)=\"onDragged('move', subComponent, childComponent)\"\n nz-col\n [nzMd]=\"childComponent.span || 12\"\n [nzXs]=\"24\"\n [nzOffset]=\"childComponent.offset || 0\"\n class=\"widget-form-list-item\"\n [attr.data-id]=\"childComponent.id\"\n [attr.id]=\"'widget-' + childComponent.id\"\n style=\"display: inline-block; width: 100%; float: left\"\n >\n <div>\n <div\n d-widget-form-render\n [disableDragDrop]=\"disableDragDrop\"\n [parentComponent]=\"subComponent\"\n [component]=\"childComponent\"\n [widgetIndex]=\"i\"\n [selectComponent]=\"selectComponent\"\n (selectComponentChange)=\"handleSelectComponent($event)\"\n (cloneComponent)=\"handleComponentClone(i)\"\n (deleteComponent)=\"handleComponentDelete(i)\"\n (clearComponent)=\"handleComponentClear(i)\"\n >\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </form>\n</ng-template>\n<!-- group -->\n<ng-template #groupRender let-subComponent let-parentComponent=\"parentComponent\">\n <!-- \u5217\u8868 -->\n <nz-form-item\n class=\"widget-form-item\"\n [ngClass]=\"{ active: selectComponent === subComponent, required: subComponent.required }\"\n (click)=\"callSelectWidgetChange(subComponent, $event)\"\n >\n <nz-form-label *ngIf=\"!subComponent.bordered\" [hidden]=\"subComponent.hiddenLabel\" [nzRequired]=\"subComponent.required\" nzSpan=\"24\">\n <div>{{ subComponent.label }}</div>\n </nz-form-label>\n <nz-form-control nzSpan=\"24\">\n <!-- \u6E32\u67D3\u666E\u901A\u63A7\u4EF6 -->\n <div\n dndDropZone\n [dndDisableIf]=\"disableDragDrop\"\n [dndAllowExternal]=\"true\"\n (dndDrop)=\"onDngDrop($event, subComponent)\"\n [ngStyle]=\"{ 'min-height: 300px;': subComponent.children.length === 0 }\"\n class=\"d-groups widget-form-container\"\n style=\"width: 100%; text-align: left\"\n >\n <!-- palceholder -->\n <div dndPlaceholderRef class=\"widget-form-item-placeholder\"></div>\n\n <!-- \u6E32\u67D3\u5B50\u9879 -->\n <ng-container *ngFor=\"let childComponent of subComponent.children; let i = index\">\n <div\n [dndDraggable]=\"childComponent\"\n [dndDisableIf]=\"disableDragDrop\"\n dndEffectAllowed=\"move\"\n (dndMoved)=\"onDragged('move', subComponent, childComponent)\"\n nz-col\n [nzMd]=\"childComponent.span || 12\"\n [nzXs]=\"24\"\n [nzOffset]=\"childComponent.offset || 0\"\n class=\"widget-form-list-item\"\n [attr.data-id]=\"childComponent.id\"\n [attr.id]=\"'widget-' + childComponent.id\"\n style=\"display: inline-block; width: 100%; float: left\"\n >\n <div>\n <div\n d-widget-form-render\n [disableDragDrop]=\"disableDragDrop\"\n [parentComponent]=\"subComponent\"\n [component]=\"childComponent\"\n [widgetIndex]=\"i\"\n [selectComponent]=\"selectComponent\"\n (selectComponentChange)=\"handleSelectComponent($event)\"\n (cloneComponent)=\"handleComponentClone(i)\"\n (deleteComponent)=\"handleComponentDelete(i)\"\n (clearComponent)=\"handleComponentClear(i)\"\n >\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <!-- \u63A7\u4EF6\u906E\u7F69 -->\n <div class=\"widget-mask\"></div>\n </nz-form-control>\n <!-- \u529F\u80FD\u6309\u94AE -->\n <ng-container *ngIf=\"selectComponent === subComponent && !selectComponent.editLabel && !disableDragDrop\">\n <button\n nz-button\n class=\"widget-action-clone\"\n title=\"\u590D\u5236\"\n nzType=\"primary\"\n nzShape=\"circle\"\n (click)=\"callCloneComponent(subComponent)\"\n nzSize=\"small\"\n >c\n </button>\n <button\n nz-button\n class=\"widget-action-delete\"\n title=\"\u5220\u9664\"\n nzDanger\n nzShape=\"circle\"\n nzSize=\"small\"\n (click)=\"callDeleteComponent(subComponent)\"\n >d\n </button>\n </ng-container>\n </nz-form-item>\n</ng-template>\n\n<!-- title -->\n<ng-template #titleRender let-subComponent let-parentComponent=\"parentComponent\">\n <nz-form-item\n class=\"widget-form-item\"\n [ngClass]=\"{ active: selectComponent === subComponent, required: subComponent.required }\"\n (click)=\"callSelectWidgetChange(subComponent, $event)\"\n >\n <nz-form-control>\n <!-- \u6E32\u67D3\u666E\u901A\u63A7\u4EF6 -->\n <div d-widget-form-item [item]=\"subComponent\"></div>\n <!-- \u63A7\u4EF6\u906E\u7F69 -->\n <div class=\"widget-mask\"></div>\n </nz-form-control>\n <!-- \u529F\u80FD\u6309\u94AE -->\n <ng-container *ngIf=\"selectComponent === subComponent && !selectComponent.editLabel && !disableDragDrop\">\n <button\n nz-button\n class=\"widget-action-clone\"\n title=\"\u590D\u5236\"\n nzType=\"primary\"\n nzShape=\"circle\"\n (click)=\"callCloneComponent(subComponent)\"\n nzSize=\"small\"\n >c\n </button>\n <button\n nz-button\n class=\"widget-action-delete\"\n title=\"\u5220\u9664\"\n nzDanger\n nzShape=\"circle\"\n nzSize=\"small\"\n (click)=\"callDeleteComponent(subComponent)\"\n >d\n </button>\n </ng-container>\n </nz-form-item>\n</ng-template>\n\n<!-- \u9ED8\u8BA4 -->\n<ng-template #defaultRender let-subComponent let-parentComponent=\"parentComponent\">\n <nz-form-item\n class=\"widget-form-item\"\n [ngClass]=\"{\n active: selectComponent === subComponent,\n required: subComponent.required,\n bordered: parentComponent.bordered\n }\"\n (click)=\"callSelectWidgetChange(subComponent, $event)\"\n >\n <!-- \u663E\u793A\u8FB9\u6846\u65F6\uFF0C\u9690\u85CFlabel\uFF0C parentComponent.bordered -->\n <!-- \u6807\u9898 -->\n <nz-form-label\n *ngIf=\"!parentComponent.bordered\"\n [hidden]=\"subComponent.hiddenLabel\"\n [style.width]=\"getLabelWidth(subComponent)\"\n [nzRequired]=\"subComponent.required\"\n >\n <div>{{ subComponent.label }}</div>\n </nz-form-label>\n <nz-form-control>\n <!-- \u6E32\u67D3\u666E\u901A\u63A7\u4EF6 -->\n <div d-widget-form-item [item]=\"subComponent\"></div>\n <!-- \u63A7\u4EF6\u906E\u7F69 -->\n <div class=\"widget-mask\"></div>\n </nz-form-control>\n <!-- \u529F\u80FD\u6309\u94AE -->\n <ng-container *ngIf=\"selectComponent === subComponent && !selectComponent.editLabel && !disableDragDrop\">\n <button\n nz-button\n class=\"widget-action-clone\"\n title=\"\u590D\u5236\"\n nzType=\"primary\"\n nzShape=\"circle\"\n (click)=\"callCloneComponent(subComponent)\"\n nzSize=\"small\"\n >c\n </button>\n <button\n nz-button\n class=\"widget-action-delete\"\n title=\"\u5220\u9664\"\n nzDanger\n nzShape=\"circle\"\n nzSize=\"small\"\n (click)=\"callDeleteComponent(subComponent)\"\n >d\n </button>\n </ng-container>\n </nz-form-item>\n</ng-template>\n", styles: ["nz-form-label{text-align:left}\n"], components: [{ type: DWidgetFormRenderComponent, selector: "[d-widget-form-render]" }, { type: i1.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { type: i1.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzRequired", "nzNoColon", "nzTooltipIcon", "nzFor", "nzTooltipTitle"], exportAs: ["nzFormLabel"] }, { type: i1.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus", "nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra"], exportAs: ["nzFormControl"] }, { type: i2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { type: i3.DWidgetFormItemComponent, selector: "[d-widget-form-item]", inputs: ["item"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { type: i1.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon"], exportAs: ["nzForm"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.DndDropzoneDirective, selector: "[dndDropZone]", inputs: ["dndDropzone", "dndEffectAllowed", "dndAllowExternal", "dndHorizontal", "dndDragoverClass", "dndDropzoneDisabledClass", "dndDisableIf", "dndDisableDropIf"], outputs: ["dndDragover", "dndDrop"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i7.DndPlaceholderRefDirective, selector: "[dndPlaceholderRef]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }, { type: i8.DndDraggableDirective, selector: "[dndDraggable]", inputs: ["dndDraggable", "dndEffectAllowed", "dndType", "dndDraggingClass", "dndDraggingSourceClass", "dndDraggableDisabledClass", "dndDragImageOffsetFunction", "dndDisableIf", "dndDisableDragIf"], outputs: ["dndStart", "dndDrag", "dndEnd", "dndMoved", "dndCopied", "dndLinked", "dndCanceled"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { type: i10.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DWidgetFormRenderComponent, decorators: [{ type: Component, args: [{ // eslint-disable-next-line @angular-eslint/component-selector selector: '[d-widget-form-render]', templateUrl: './d-widget-form-render.component.html', styleUrls: ['./d-widget-form-render.component.less'] }] }], ctorParameters: function () { return [{ type: i0.Injector }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZC13aWRnZXQtZm9ybS1yZW5kZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy1mb3JtLWdlbmVyYXRvci9zcmMvZm9ybS1kZXNpZ25lci9jb21tb24tY29tcG9uZW50L2Qtd2lkZ2V0LWZvcm0tcmVuZGVyL2Qtd2lkZ2V0LWZvcm0tcmVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2wtNTJhYnAtbmctZm9ybS1nZW5lcmF0b3Ivc3JjL2Zvcm0tZGVzaWduZXIvY29tbW9uLWNvbXBvbmVudC9kLXdpZGdldC1mb3JtLXJlbmRlci9kLXdpZGdldC1mb3JtLXJlbmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUEyRSxNQUFNLGVBQWUsQ0FBQztBQUluSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUWxFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxvQkFBb0I7SUFDbEUsWUFBWSxRQUFrQjtRQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQzs7d0hBSFUsMEJBQTBCOzRHQUExQiwwQkFBMEIscUZDWnZDLHV0U0FvUEEscUVEeE9hLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFLENBQUMsdUNBQXVDLENBQUM7aUJBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVlcENvcHkgfSBmcm9tICdAZGVsb24vdXRpbCc7XG5pbXBvcnQgeyBEbmREcm9wRXZlbnQsIERyb3BFZmZlY3QgfSBmcm9tICcuLi8uLi8uLi9uZ3gtZHJhZy1kcm9wJztcbmltcG9ydCB7IElDb21wb25lbnREZWYgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBXaWRnZXRGb3JtUmVuZGVyQmFzZSB9IGZyb20gJy4uL3dpZGdldC1mb3JtLXJlbmRlci1iYXNlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW2Qtd2lkZ2V0LWZvcm0tcmVuZGVyXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kLXdpZGdldC1mb3JtLXJlbmRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Qtd2lkZ2V0LWZvcm0tcmVuZGVyLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgRFdpZGdldEZvcm1SZW5kZXJDb21wb25lbnQgZXh0ZW5kcyBXaWRnZXRGb3JtUmVuZGVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxufVxuIiwiPCEtLSDmoLnmja7nsbvlnovov5vooYzmuLLmn5MgLS0+XG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb21wb25lbnQud2lkZ2V0XCI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYXlvdXQtZm9ybSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybVJlbmRlcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbXBvbmVudCwgcGFyZW50Q29tcG9uZW50OiBwYXJlbnRDb21wb25lbnQgfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncm91cCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBSZW5kZXI7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb21wb25lbnQsIHBhcmVudENvbXBvbmVudDogcGFyZW50Q29tcG9uZW50IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0aXRsZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGl0bGVSZW5kZXI7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb21wb25lbnQsIHBhcmVudENvbXBvbmVudDogcGFyZW50Q29tcG9uZW50IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVmYXVsdFJlbmRlcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbXBvbmVudCwgcGFyZW50Q29tcG9uZW50OiBwYXJlbnRDb21wb25lbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIOihqOWNlSAtLT5cbjxuZy10ZW1wbGF0ZSAjZm9ybVJlbmRlciBsZXQtc3ViQ29tcG9uZW50IGxldC1wYXJlbnRDb21wb25lbnQ9XCJwYXJlbnRDb21wb25lbnRcIj5cbiAgPGZvcm0gI3dpZGdldEZvcm1SZWY9XCJuZ0Zvcm1cIiBuei1yb3cgbnotZm9ybSBzdHlsZT1cImhlaWdodDogMTAwJVwiIFtuZ0NsYXNzXT1cInsgZm9ybUJvcmRlcmVkOiBzdWJDb21wb25lbnQuYm9yZGVyZWQgfVwiPlxuICAgIDxkaXZcbiAgICAgIGRuZERyb3Bab25lXG4gICAgICBbZG5kRGlzYWJsZUlmXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgICBbZG5kQWxsb3dFeHRlcm5hbF09XCJ0cnVlXCJcbiAgICAgIChkbmREcm9wKT1cIm9uRG5nRHJvcCgkZXZlbnQsIHN1YkNvbXBvbmVudClcIlxuICAgICAgW25nU3R5bGVdPVwieyAnbWluLWhlaWdodDogMzAwcHg7Jzogc3ViQ29tcG9uZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCB9XCJcbiAgICAgIGNsYXNzPVwid2lkZ2V0LWZvcm0tbGlzdFwiXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBsZWZ0XCJcbiAgICA+XG4gICAgICA8ZGl2IGRuZFBsYWNlaG9sZGVyUmVmIGNsYXNzPVwid2lkZ2V0LWZvcm0taXRlbS1wbGFjZWhvbGRlclwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZENvbXBvbmVudCBvZiBzdWJDb21wb25lbnQuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtkbmREcmFnZ2FibGVdPVwiY2hpbGRDb21wb25lbnRcIlxuICAgICAgICAgIFtkbmREaXNhYmxlSWZdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICAgICAgICBkbmRFZmZlY3RBbGxvd2VkPVwibW92ZVwiXG4gICAgICAgICAgKGRuZE1vdmVkKT1cIm9uRHJhZ2dlZCgnbW92ZScsIHN1YkNvbXBvbmVudCwgY2hpbGRDb21wb25lbnQpXCJcbiAgICAgICAgICBuei1jb2xcbiAgICAgICAgICBbbnpNZF09XCJjaGlsZENvbXBvbmVudC5zcGFuIHx8IDEyXCJcbiAgICAgICAgICBbbnpYc109XCIyNFwiXG4gICAgICAgICAgW256T2Zmc2V0XT1cImNoaWxkQ29tcG9uZW50Lm9mZnNldCB8fCAwXCJcbiAgICAgICAgICBjbGFzcz1cIndpZGdldC1mb3JtLWxpc3QtaXRlbVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJjaGlsZENvbXBvbmVudC5pZFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiJ3dpZGdldC0nICsgY2hpbGRDb21wb25lbnQuaWRcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTAwJTsgZmxvYXQ6IGxlZnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZC13aWRnZXQtZm9ybS1yZW5kZXJcbiAgICAgICAgICAgICAgW2Rpc2FibGVEcmFnRHJvcF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgICAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInN1YkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiY2hpbGRDb21wb25lbnRcIlxuICAgICAgICAgICAgICBbd2lkZ2V0SW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb21wb25lbnRdPVwic2VsZWN0Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgKHNlbGVjdENvbXBvbmVudENoYW5nZSk9XCJoYW5kbGVTZWxlY3RDb21wb25lbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjbG9uZUNvbXBvbmVudCk9XCJoYW5kbGVDb21wb25lbnRDbG9uZShpKVwiXG4gICAgICAgICAgICAgIChkZWxldGVDb21wb25lbnQpPVwiaGFuZGxlQ29tcG9uZW50RGVsZXRlKGkpXCJcbiAgICAgICAgICAgICAgKGNsZWFyQ29tcG9uZW50KT1cImhhbmRsZUNvbXBvbmVudENsZWFyKGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBncm91cCAtLT5cbjxuZy10ZW1wbGF0ZSAjZ3JvdXBSZW5kZXIgbGV0LXN1YkNvbXBvbmVudCBsZXQtcGFyZW50Q29tcG9uZW50PVwicGFyZW50Q29tcG9uZW50XCI+XG4gIDwhLS0g5YiX6KGoIC0tPlxuICA8bnotZm9ybS1pdGVtXG4gICAgY2xhc3M9XCJ3aWRnZXQtZm9ybS1pdGVtXCJcbiAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogc2VsZWN0Q29tcG9uZW50ID09PSBzdWJDb21wb25lbnQsIHJlcXVpcmVkOiBzdWJDb21wb25lbnQucmVxdWlyZWQgfVwiXG4gICAgKGNsaWNrKT1cImNhbGxTZWxlY3RXaWRnZXRDaGFuZ2Uoc3ViQ29tcG9uZW50LCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuei1mb3JtLWxhYmVsICpuZ0lmPVwiIXN1YkNvbXBvbmVudC5ib3JkZXJlZFwiIFtoaWRkZW5dPVwic3ViQ29tcG9uZW50LmhpZGRlbkxhYmVsXCIgW256UmVxdWlyZWRdPVwic3ViQ29tcG9uZW50LnJlcXVpcmVkXCIgbnpTcGFuPVwiMjRcIj5cbiAgICAgIDxkaXY+e3sgc3ViQ29tcG9uZW50LmxhYmVsIH19PC9kaXY+XG4gICAgPC9uei1mb3JtLWxhYmVsPlxuICAgIDxuei1mb3JtLWNvbnRyb2wgbnpTcGFuPVwiMjRcIj5cbiAgICAgIDwhLS0g5riy5p+T5pmu6YCa5o6n5Lu2IC0tPlxuICAgICAgPGRpdlxuICAgICAgICBkbmREcm9wWm9uZVxuICAgICAgICBbZG5kRGlzYWJsZUlmXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgICAgIFtkbmRBbGxvd0V4dGVybmFsXT1cInRydWVcIlxuICAgICAgICAoZG5kRHJvcCk9XCJvbkRuZ0Ryb3AoJGV2ZW50LCBzdWJDb21wb25lbnQpXCJcbiAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLWhlaWdodDogMzAwcHg7Jzogc3ViQ29tcG9uZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCB9XCJcbiAgICAgICAgY2xhc3M9XCJkLWdyb3VwcyB3aWRnZXQtZm9ybS1jb250YWluZXJcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBsZWZ0XCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBwYWxjZWhvbGRlciAtLT5cbiAgICAgICAgPGRpdiBkbmRQbGFjZWhvbGRlclJlZiBjbGFzcz1cIndpZGdldC1mb3JtLWl0ZW0tcGxhY2Vob2xkZXJcIj48L2Rpdj5cblxuICAgICAgICA8IS0tIOa4suafk+WtkOmhuSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGRDb21wb25lbnQgb2Ygc3ViQ29tcG9uZW50LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2RuZERyYWdnYWJsZV09XCJjaGlsZENvbXBvbmVudFwiXG4gICAgICAgICAgICBbZG5kRGlzYWJsZUlmXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgICAgICAgICBkbmRFZmZlY3RBbGxvd2VkPVwibW92ZVwiXG4gICAgICAgICAgICAoZG5kTW92ZWQpPVwib25EcmFnZ2VkKCdtb3ZlJywgc3ViQ29tcG9uZW50LCBjaGlsZENvbXBvbmVudClcIlxuICAgICAgICAgICAgbnotY29sXG4gICAgICAgICAgICBbbnpNZF09XCJjaGlsZENvbXBvbmVudC5zcGFuIHx8IDEyXCJcbiAgICAgICAgICAgIFtuelhzXT1cIjI0XCJcbiAgICAgICAgICAgIFtuek9mZnNldF09XCJjaGlsZENvbXBvbmVudC5vZmZzZXQgfHwgMFwiXG4gICAgICAgICAgICBjbGFzcz1cIndpZGdldC1mb3JtLWxpc3QtaXRlbVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cImNoaWxkQ29tcG9uZW50LmlkXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIid3aWRnZXQtJyArIGNoaWxkQ29tcG9uZW50LmlkXCJcbiAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTAwJTsgZmxvYXQ6IGxlZnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBkLXdpZGdldC1mb3JtLXJlbmRlclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlRHJhZ0Ryb3BdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICAgICAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInN1YkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJjaGlsZENvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW3dpZGdldEluZGV4XT1cImlcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RDb21wb25lbnRdPVwic2VsZWN0Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0Q29tcG9uZW50Q2hhbmdlKT1cImhhbmRsZVNlbGVjdENvbXBvbmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xvbmVDb21wb25lbnQpPVwiaGFuZGxlQ29tcG9uZW50Q2xvbmUoaSlcIlxuICAgICAgICAgICAgICAgIChkZWxldGVDb21wb25lbnQpPVwiaGFuZGxlQ29tcG9uZW50RGVsZXRlKGkpXCJcbiAgICAgICAgICAgICAgICAoY2xlYXJDb21wb25lbnQpPVwiaGFuZGxlQ29tcG9uZW50Q2xlYXIoaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIOaOp+S7tumBrue9qSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtbWFza1wiPjwvZGl2PlxuICAgIDwvbnotZm9ybS1jb250cm9sPlxuICAgIDwhLS0g5Yqf6IO95oyJ6ZKuIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RDb21wb25lbnQgPT09IHN1YkNvbXBvbmVudCAmJiAhc2VsZWN0Q29tcG9uZW50LmVkaXRMYWJlbCAmJiAhZGlzYWJsZURyYWdEcm9wXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG56LWJ1dHRvblxuICAgICAgICBjbGFzcz1cIndpZGdldC1hY3Rpb24tY2xvbmVcIlxuICAgICAgICB0aXRsZT1cIuWkjeWItlwiXG4gICAgICAgIG56VHlwZT1cInByaW1hcnlcIlxuICAgICAgICBuelNoYXBlPVwiY2lyY2xlXCJcbiAgICAgICAgKGNsaWNrKT1cImNhbGxDbG9uZUNvbXBvbmVudChzdWJDb21wb25lbnQpXCJcbiAgICAgICAgbnpTaXplPVwic21hbGxcIlxuICAgICAgICA+Y1xuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG56LWJ1dHRvblxuICAgICAgICBjbGFzcz1cIndpZGdldC1hY3Rpb24tZGVsZXRlXCJcbiAgICAgICAgdGl0bGU9XCLliKDpmaRcIlxuICAgICAgICBuekRhbmdlclxuICAgICAgICBuelNoYXBlPVwiY2lyY2xlXCJcbiAgICAgICAgbnpTaXplPVwic21hbGxcIlxuICAgICAgICAoY2xpY2spPVwiY2FsbERlbGV0ZUNvbXBvbmVudChzdWJDb21wb25lbnQpXCJcbiAgICAgICAgPmRcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L256LWZvcm0taXRlbT5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gdGl0bGUgLS0+XG48bmctdGVtcGxhdGUgI3RpdGxlUmVuZGVyIGxldC1zdWJDb21wb25lbnQgbGV0LXBhcmVudENvbXBvbmVudD1cInBhcmVudENvbXBvbmVudFwiPlxuICA8bnotZm9ybS1pdGVtXG4gICAgY2xhc3M9XCJ3aWRnZXQtZm9ybS1pdGVtXCJcbiAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogc2VsZWN0Q29tcG9uZW50ID09PSBzdWJDb21wb25lbnQsIHJlcXVpcmVkOiBzdWJDb21wb25lbnQucmVxdWlyZWQgfVwiXG4gICAgKGNsaWNrKT1cImNhbGxTZWxlY3RXaWRnZXRDaGFuZ2Uoc3ViQ29tcG9uZW50LCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuei1mb3JtLWNvbnRyb2w+XG4gICAgICA8IS0tIOa4suafk+aZrumAmuaOp+S7tiAtLT5cbiAgICAgIDxkaXYgZC13aWRnZXQtZm9ybS1pdGVtIFtpdGVtXT1cInN1YkNvbXBvbmVudFwiPjwvZGl2PlxuICAgICAgPCEtLSDmjqfku7bpga7nvakgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LW1hc2tcIj48L2Rpdj5cbiAgICA8L256LWZvcm0tY29udHJvbD5cbiAgICA8IS0tIOWKn+iDveaMiemSriAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0Q29tcG9uZW50ID09PSBzdWJDb21wb25lbnQgJiYgIXNlbGVjdENvbXBvbmVudC5lZGl0TGFiZWwgJiYgIWRpc2FibGVEcmFnRHJvcFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBuei1idXR0b25cbiAgICAgICAgY2xhc3M9XCJ3aWRnZXQtYWN0aW9uLWNsb25lXCJcbiAgICAgICAgdGl0bGU9XCLlpI3liLZcIlxuICAgICAgICBuelR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgbnpTaGFwZT1cImNpcmNsZVwiXG4gICAgICAgIChjbGljayk9XCJjYWxsQ2xvbmVDb21wb25lbnQoc3ViQ29tcG9uZW50KVwiXG4gICAgICAgIG56U2l6ZT1cInNtYWxsXCJcbiAgICAgICAgPmNcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBuei1idXR0b25cbiAgICAgICAgY2xhc3M9XCJ3aWRnZXQtYWN0aW9uLWRlbGV0ZVwiXG4gICAgICAgIHRpdGxlPVwi5Yig6ZmkXCJcbiAgICAgICAgbnpEYW5nZXJcbiAgICAgICAgbnpTaGFwZT1cImNpcmNsZVwiXG4gICAgICAgIG56U2l6ZT1cInNtYWxsXCJcbiAgICAgICAgKGNsaWNrKT1cImNhbGxEZWxldGVDb21wb25lbnQoc3ViQ29tcG9uZW50KVwiXG4gICAgICAgID5kXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uei1mb3JtLWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIOm7mOiupCAtLT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJlbmRlciBsZXQtc3ViQ29tcG9uZW50IGxldC1wYXJlbnRDb21wb25lbnQ9XCJwYXJlbnRDb21wb25lbnRcIj5cbiAgPG56LWZvcm0taXRlbVxuICAgIGNsYXNzPVwid2lkZ2V0LWZvcm0taXRlbVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgYWN0aXZlOiBzZWxlY3RDb21wb25lbnQgPT09IHN1YkNvbXBvbmVudCxcbiAgICAgIHJlcXVpcmVkOiBzdWJDb21wb25lbnQucmVxdWlyZWQsXG4gICAgICBib3JkZXJlZDogcGFyZW50Q29tcG9uZW50LmJvcmRlcmVkXG4gICAgfVwiXG4gICAgKGNsaWNrKT1cImNhbGxTZWxlY3RXaWRnZXRDaGFuZ2Uoc3ViQ29tcG9uZW50LCAkZXZlbnQpXCJcbiAgPlxuICAgIDwhLS0g5pi+56S66L655qGG5pe277yM6ZqQ6JePbGFiZWzvvIwgcGFyZW50Q29tcG9uZW50LmJvcmRlcmVkIC0tPlxuICAgIDwhLS0g5qCH6aKYIC0tPlxuICAgIDxuei1mb3JtLWxhYmVsXG4gICAgICAqbmdJZj1cIiFwYXJlbnRDb21wb25lbnQuYm9yZGVyZWRcIlxuICAgICAgW2hpZGRlbl09XCJzdWJDb21wb25lbnQuaGlkZGVuTGFiZWxcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cImdldExhYmVsV2lkdGgoc3ViQ29tcG9uZW50KVwiXG4gICAgICBbbnpSZXF1aXJlZF09XCJzdWJDb21wb25lbnQucmVxdWlyZWRcIlxuICAgID5cbiAgICAgIDxkaXY+e3sgc3ViQ29tcG9uZW50LmxhYmVsIH19PC9kaXY+XG4gICAgPC9uei1mb3JtLWxhYmVsPlxuICAgIDxuei1mb3JtLWNvbnRyb2w+XG4gICAgICA8IS0tIOa4suafk+aZrumAmuaOp+S7tiAtLT5cbiAgICAgIDxkaXYgZC13aWRnZXQtZm9ybS1pdGVtIFtpdGVtXT1cInN1YkNvbXBvbmVudFwiPjwvZGl2PlxuICAgICAgPCEtLSDmjqfku7bpga7nvakgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LW1hc2tcIj48L2Rpdj5cbiAgICA8L256LWZvcm0tY29udHJvbD5cbiAgICA8IS0tIOWKn+iDveaMiemSriAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0Q29tcG9uZW50ID09PSBzdWJDb21wb25lbnQgJiYgIXNlbGVjdENvbXBvbmVudC5lZGl0TGFiZWwgJiYgIWRpc2FibGVEcmFnRHJvcFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBuei1idXR0b25cbiAgICAgICAgY2xhc3M9XCJ3aWRnZXQtYWN0aW9uLWNsb25lXCJcbiAgICAgICAgdGl0bGU9XCLlpI3liLZcIlxuICAgICAgICBuelR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgbnpTaGFwZT1cImNpcmNsZVwiXG4gICAgICAgIChjbGljayk9XCJjYWxsQ2xvbmVDb21wb25lbnQoc3ViQ29tcG9uZW50KVwiXG4gICAgICAgIG56U2l6ZT1cInNtYWxsXCJcbiAgICAgICAgPmNcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBuei1idXR0b25cbiAgICAgICAgY2xhc3M9XCJ3aWRnZXQtYWN0aW9uLWRlbGV0ZVwiXG4gICAgICAgIHRpdGxlPVwi5Yig6ZmkXCJcbiAgICAgICAgbnpEYW5nZXJcbiAgICAgICAgbnpTaGFwZT1cImNpcmNsZVwiXG4gICAgICAgIG56U2l6ZT1cInNtYWxsXCJcbiAgICAgICAgKGNsaWNrKT1cImNhbGxEZWxldGVDb21wb25lbnQoc3ViQ29tcG9uZW50KVwiXG4gICAgICAgID5kXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uei1mb3JtLWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19