@yoyoboot/l-52abp-ng-form-generator
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
54 lines • 21.6 kB
JavaScript
import { Component, Input } from '@angular/core';
import { ControlContainer, NgForm } from '@angular/forms';
import * as i0 from "@angular/core";
import * as i1 from "ng-zorro-antd/form";
import * as i2 from "../r-widget-form-item/r-widget-form-item.component";
import * as i3 from "@angular/common";
import * as i4 from "ng-zorro-antd/grid";
export class RWidgetFormRenderComponent {
/** 页面表单 */
constructor() {
/** disabled */
this.disabled = false;
/** 是否显示按钮 */
this.showButton = true;
}
/** 是否显示边框 */
// @Input() bordered: boolean = false;
getLabelWidth(item) {
if (typeof item.labelWidth !== 'number') {
item.labelWidth = 100;
}
return `${item.labelWidth}px`;
}
}
RWidgetFormRenderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RWidgetFormRenderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
RWidgetFormRenderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: RWidgetFormRenderComponent, selector: "[r-widget-form-render],r-widget-form-render", inputs: { parentComponent: "parentComponent", component: "component", disabled: "disabled", showButton: "showButton" }, 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: parentComponent.bordered }\">\n <div class=\"widget-form-list\" style=\"width: 100%; text-align: left\">\n <ng-container *ngFor=\"let component of parentComponent.children; let i = index\">\n <div\n nz-col\n [nzMd]=\"component.span || 12\"\n [nzXs]=\"24\"\n [nzOffset]=\"component.offset || 0\"\n class=\"widget-form-list-item\"\n [attr.data-id]=\"component.id\"\n [attr.id]=\"'widget-' + component.id\"\n style=\"display: inline-block; width: 100%; float: left\"\n >\n <div>\n <div r-widget-form-render [parentComponent]=\"parentComponent\" [component]=\"component\"> </div>\n </div>\n </div>\n </ng-container>\n </div>\n </form>\n</ng-template> -->\n\n<!-- group -->\n<ng-template #groupRender let-subComponent let-parentComponent=\"parentComponent\" let-index=\"index\">\n <!-- \u5217\u8868 -->\n <nz-form-item class=\"widget-form-item r-d-groups\" [ngClass]=\"{ required: subComponent.required, bordered: parentComponent.bordered }\">\n <nz-form-label *ngIf=\"!parentComponent.bordered\" [hidden]=\"subComponent.hiddenLabel\" [nzRequired]=\"subComponent.required\" nzSpan=\"24\">\n <div>{{ subComponent.label }}</div>\n </nz-form-label>\n <nz-form-control nzSpan=\"24\" *ngIf=\"subComponent.children.length\">\n <!-- \u6E32\u67D3\u5B50\u9879 -->\n <ng-container *ngFor=\"let childrenComponent of subComponent.children; let i = index\">\n <div\n nz-col\n [nzMd]=\"childrenComponent.span || 12\"\n [nzXs]=\"24\"\n [nzOffset]=\"childrenComponent.offset || 0\"\n class=\"widget-form-list-item\"\n [attr.data-id]=\"childrenComponent.id\"\n [attr.id]=\"'widget-' + childrenComponent.id\"\n style=\"display: inline-block; width: 100%; float: left\"\n >\n <div r-widget-form-render [parentComponent]=\"subComponent\" [component]=\"childrenComponent\"> </div>\n </div>\n </ng-container>\n </nz-form-control>\n <div class=\"line-top\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-right\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-bottom\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-left\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n </nz-form-item>\n</ng-template>\n\n<!-- title -->\n<ng-template #titleRender let-subComponent let-parentComponent=\"parentComponent\" let-index=\"index\">\n <nz-form-item\n class=\"widget-form-item r-d-title\"\n [ngClass]=\"{ required: subComponent.required, bordered: parentComponent.bordered, parentGroup: parentComponent.widget === 'group' }\"\n >\n <nz-form-control>\n <!-- \u6E32\u67D3title\u63A7\u4EF6 -->\n <div r-widget-form-item [item]=\"subComponent\"></div>\n </nz-form-control>\n <div class=\"line-top\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-right\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-bottom\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-left\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n </nz-form-item>\n</ng-template>\n\n<!-- \u9ED8\u8BA4 -->\n<ng-template #defaultRender let-subComponent let-parentComponent=\"parentComponent\" let-index=\"index\">\n <nz-form-item\n class=\"widget-form-item\"\n [ngClass]=\"{\n required: subComponent.required,\n bordered: parentComponent.bordered,\n parentGroup: parentComponent.widget === 'group'\n }\"\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 <r-widget-form-item [item]=\"subComponent\"></r-widget-form-item>\n </nz-form-control>\n <div class=\"line-top\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-right\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-bottom\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n <div class=\"line-left\" [ngStyle]=\"{ display: parentComponent.widget === 'group' ? 'none' : 'block' }\"></div>\n </nz-form-item>\n</ng-template>\n", components: [{ 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: RWidgetFormRenderComponent, selector: "[r-widget-form-render],r-widget-form-render", inputs: ["parentComponent", "component", "disabled", "showButton"] }, { type: i2.RWidgetFormItemComponent, selector: "[r-widget-form-item],r-widget-form-item", inputs: ["item"] }], directives: [{ type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.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: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], viewProviders: [
{
provide: ControlContainer,
useExisting: NgForm
}
] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RWidgetFormRenderComponent, decorators: [{
type: Component,
args: [{
selector: '[r-widget-form-render],r-widget-form-render',
templateUrl: './r-widget-form-render.component.html',
styles: [],
viewProviders: [
{
provide: ControlContainer,
useExisting: NgForm
}
]
}]
}], ctorParameters: function () { return []; }, propDecorators: { parentComponent: [{
type: Input
}], component: [{
type: Input
}], disabled: [{
type: Input
}], showButton: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoici13aWRnZXQtZm9ybS1yZW5kZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy1mb3JtLWdlbmVyYXRvci9zcmMvZm9ybS1yZW5kZXIvY29tbW9uLWNvbXBvbmVudC9yLXdpZGdldC1mb3JtLXJlbmRlci9yLXdpZGdldC1mb3JtLXJlbmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sLTUyYWJwLW5nLWZvcm0tZ2VuZXJhdG9yL3NyYy9mb3JtLXJlbmRlci9jb21tb24tY29tcG9uZW50L3Itd2lkZ2V0LWZvcm0tcmVuZGVyL3Itd2lkZ2V0LWZvcm0tcmVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQThDLEtBQUssRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFlMUQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxXQUFXO0lBQ1g7UUFRQSxlQUFlO1FBQ04sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQyxhQUFhO1FBQ0osZUFBVSxHQUFZLElBQUksQ0FBQztJQVpyQixDQUFDO0lBY2hCLGFBQWE7SUFDYixzQ0FBc0M7SUFFdEMsYUFBYSxDQUFDLElBQW1CO1FBQy9CLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztTQUN2QjtRQUVELE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUM7SUFDaEMsQ0FBQzs7d0hBekJVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDJNQ2hCdkMscStMQXFIQSxvaEJEckdhLDBCQUEwQixpeENBUHRCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFdBQVcsRUFBRSxNQUFNO1NBQ3BCO0tBQ0Y7NEZBRVUsMEJBQTBCO2tCQVh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2Q0FBNkM7b0JBQ3ZELFdBQVcsRUFBRSx1Q0FBdUM7b0JBQ3BELE1BQU0sRUFBRSxFQUFFO29CQUNWLGFBQWEsRUFBRTt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixXQUFXLEVBQUUsTUFBTTt5QkFDcEI7cUJBQ0Y7aUJBQ0Y7MEVBTVUsZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBJbnB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJXaWRnZXRGb3JtUmVuZGVyQmFzZSB9IGZyb20gJy4uL3Itd2lkZ2V0LWZvcm0tcmVuZGVyLWJhc2UnO1xuaW1wb3J0IHsgSUNvbXBvbmVudERlZiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3Itd2lkZ2V0LWZvcm0tcmVuZGVyXSxyLXdpZGdldC1mb3JtLXJlbmRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yLXdpZGdldC1mb3JtLXJlbmRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRXhpc3Rpbmc6IE5nRm9ybVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSV2lkZ2V0Rm9ybVJlbmRlckNvbXBvbmVudCB7XG4gIC8qKiDpobXpnaLooajljZUgKi9cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKiDniLbnuqfnu4Tku7YgKi9cbiAgQElucHV0KCkgcGFyZW50Q29tcG9uZW50OiBJQ29tcG9uZW50RGVmO1xuXG4gIC8qKiDopoHmuLLmn5PnmoTnu4Tku7YgKi9cbiAgQElucHV0KCkgY29tcG9uZW50OiBJQ29tcG9uZW50RGVmO1xuXG4gIC8qKiBkaXNhYmxlZCAqL1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiDmmK/lkKbmmL7npLrmjInpkq4gKi9cbiAgQElucHV0KCkgc2hvd0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqIOaYr+WQpuaYvuekuui+ueahhiAqL1xuICAvLyBASW5wdXQoKSBib3JkZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldExhYmVsV2lkdGgoaXRlbTogSUNvbXBvbmVudERlZik6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLmxhYmVsV2lkdGggIT09ICdudW1iZXInKSB7XG4gICAgICBpdGVtLmxhYmVsV2lkdGggPSAxMDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2l0ZW0ubGFiZWxXaWR0aH1weGA7XG4gIH1cbn1cbiIsIjwhLS0g5qC55o2u57G75Z6L6L+b6KGM5riy5p+TIC0tPlxuPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29tcG9uZW50LndpZGdldFwiPlxuICA8IS0tIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYXlvdXQtZm9ybSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybVJlbmRlcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbXBvbmVudCwgcGFyZW50Q29tcG9uZW50OiBwYXJlbnRDb21wb25lbnQgfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+IC0tPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZ3JvdXAnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwUmVuZGVyOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29tcG9uZW50LCBwYXJlbnRDb21wb25lbnQ6IHBhcmVudENvbXBvbmVudCB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGl0bGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlUmVuZGVyOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29tcG9uZW50LCBwYXJlbnRDb21wb25lbnQ6IHBhcmVudENvbXBvbmVudCB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlZmF1bHRSZW5kZXI7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb21wb25lbnQsIHBhcmVudENvbXBvbmVudDogcGFyZW50Q29tcG9uZW50IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSDooajljZUgLS0+XG48IS0tIDxuZy10ZW1wbGF0ZSAjZm9ybVJlbmRlciBsZXQtc3ViQ29tcG9uZW50IGxldC1wYXJlbnRDb21wb25lbnQ9XCJwYXJlbnRDb21wb25lbnRcIj5cbiAgPGZvcm0gI3dpZGdldEZvcm1SZWY9XCJuZ0Zvcm1cIiBuei1yb3cgbnotZm9ybSBzdHlsZT1cImhlaWdodDogMTAwJVwiIFtuZ0NsYXNzXT1cInsgZm9ybUJvcmRlcmVkOiBwYXJlbnRDb21wb25lbnQuYm9yZGVyZWQgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtZm9ybS1saXN0XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogbGVmdFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29tcG9uZW50IG9mIHBhcmVudENvbXBvbmVudC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgbnotY29sXG4gICAgICAgICAgW256TWRdPVwiY29tcG9uZW50LnNwYW4gfHwgMTJcIlxuICAgICAgICAgIFtuelhzXT1cIjI0XCJcbiAgICAgICAgICBbbnpPZmZzZXRdPVwiY29tcG9uZW50Lm9mZnNldCB8fCAwXCJcbiAgICAgICAgICBjbGFzcz1cIndpZGdldC1mb3JtLWxpc3QtaXRlbVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJjb21wb25lbnQuaWRcIlxuICAgICAgICAgIFthdHRyLmlkXT1cIid3aWRnZXQtJyArIGNvbXBvbmVudC5pZFwiXG4gICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxMDAlOyBmbG9hdDogbGVmdFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiByLXdpZGdldC1mb3JtLXJlbmRlciBbcGFyZW50Q29tcG9uZW50XT1cInBhcmVudENvbXBvbmVudFwiIFtjb21wb25lbnRdPVwiY29tcG9uZW50XCI+IDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPiAtLT5cblxuPCEtLSBncm91cCAtLT5cbjxuZy10ZW1wbGF0ZSAjZ3JvdXBSZW5kZXIgbGV0LXN1YkNvbXBvbmVudCBsZXQtcGFyZW50Q29tcG9uZW50PVwicGFyZW50Q29tcG9uZW50XCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPCEtLSDliJfooaggLS0+XG4gIDxuei1mb3JtLWl0ZW0gY2xhc3M9XCJ3aWRnZXQtZm9ybS1pdGVtIHItZC1ncm91cHNcIiBbbmdDbGFzc109XCJ7IHJlcXVpcmVkOiBzdWJDb21wb25lbnQucmVxdWlyZWQsIGJvcmRlcmVkOiBwYXJlbnRDb21wb25lbnQuYm9yZGVyZWQgfVwiPlxuICAgIDxuei1mb3JtLWxhYmVsICpuZ0lmPVwiIXBhcmVudENvbXBvbmVudC5ib3JkZXJlZFwiIFtoaWRkZW5dPVwic3ViQ29tcG9uZW50LmhpZGRlbkxhYmVsXCIgW256UmVxdWlyZWRdPVwic3ViQ29tcG9uZW50LnJlcXVpcmVkXCIgbnpTcGFuPVwiMjRcIj5cbiAgICAgIDxkaXY+e3sgc3ViQ29tcG9uZW50LmxhYmVsIH19PC9kaXY+XG4gICAgPC9uei1mb3JtLWxhYmVsPlxuICAgIDxuei1mb3JtLWNvbnRyb2wgbnpTcGFuPVwiMjRcIiAqbmdJZj1cInN1YkNvbXBvbmVudC5jaGlsZHJlbi5sZW5ndGhcIj5cbiAgICAgIDwhLS0g5riy5p+T5a2Q6aG5IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGRyZW5Db21wb25lbnQgb2Ygc3ViQ29tcG9uZW50LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBuei1jb2xcbiAgICAgICAgICBbbnpNZF09XCJjaGlsZHJlbkNvbXBvbmVudC5zcGFuIHx8IDEyXCJcbiAgICAgICAgICBbbnpYc109XCIyNFwiXG4gICAgICAgICAgW256T2Zmc2V0XT1cImNoaWxkcmVuQ29tcG9uZW50Lm9mZnNldCB8fCAwXCJcbiAgICAgICAgICBjbGFzcz1cIndpZGdldC1mb3JtLWxpc3QtaXRlbVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJjaGlsZHJlbkNvbXBvbmVudC5pZFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiJ3dpZGdldC0nICsgY2hpbGRyZW5Db21wb25lbnQuaWRcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTAwJTsgZmxvYXQ6IGxlZnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiByLXdpZGdldC1mb3JtLXJlbmRlciBbcGFyZW50Q29tcG9uZW50XT1cInN1YkNvbXBvbmVudFwiIFtjb21wb25lbnRdPVwiY2hpbGRyZW5Db21wb25lbnRcIj4gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uei1mb3JtLWNvbnRyb2w+XG4gICAgPGRpdiBjbGFzcz1cImxpbmUtdG9wXCIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBwYXJlbnRDb21wb25lbnQud2lkZ2V0ID09PSAnZ3JvdXAnID8gJ25vbmUnIDogJ2Jsb2NrJyB9XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpbmUtcmlnaHRcIiBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6IHBhcmVudENvbXBvbmVudC53aWRnZXQgPT09ICdncm91cCcgPyAnbm9uZScgOiAnYmxvY2snIH1cIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGluZS1ib3R0b21cIiBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6IHBhcmVudENvbXBvbmVudC53aWRnZXQgPT09ICdncm91cCcgPyAnbm9uZScgOiAnYmxvY2snIH1cIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGluZS1sZWZ0XCIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBwYXJlbnRDb21wb25lbnQud2lkZ2V0ID09PSAnZ3JvdXAnID8gJ25vbmUnIDogJ2Jsb2NrJyB9XCI+PC9kaXY+XG4gIDwvbnotZm9ybS1pdGVtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSB0aXRsZSAtLT5cbjxuZy10ZW1wbGF0ZSAjdGl0bGVSZW5kZXIgbGV0LXN1YkNvbXBvbmVudCBsZXQtcGFyZW50Q29tcG9uZW50PVwicGFyZW50Q29tcG9uZW50XCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPG56LWZvcm0taXRlbVxuICAgIGNsYXNzPVwid2lkZ2V0LWZvcm0taXRlbSByLWQtdGl0bGVcIlxuICAgIFtuZ0NsYXNzXT1cInsgcmVxdWlyZWQ6IHN1YkNvbXBvbmVudC5yZXF1aXJlZCwgYm9yZGVyZWQ6IHBhcmVudENvbXBvbmVudC5ib3JkZXJlZCwgcGFyZW50R3JvdXA6IHBhcmVudENvbXBvbmVudC53aWRnZXQgPT09ICdncm91cCcgfVwiXG4gID5cbiAgICA8bnotZm9ybS1jb250cm9sPlxuICAgICAgPCEtLSDmuLLmn5N0aXRsZeaOp+S7tiAtLT5cbiAgICAgIDxkaXYgci13aWRnZXQtZm9ybS1pdGVtIFtpdGVtXT1cInN1YkNvbXBvbmVudFwiPjwvZGl2PlxuICAgIDwvbnotZm9ybS1jb250cm9sPlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lLXRvcFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogcGFyZW50Q29tcG9uZW50LndpZGdldCA9PT0gJ2dyb3VwJyA/ICdub25lJyA6ICdibG9jaycgfVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lLXJpZ2h0XCIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBwYXJlbnRDb21wb25lbnQud2lkZ2V0ID09PSAnZ3JvdXAnID8gJ25vbmUnIDogJ2Jsb2NrJyB9XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpbmUtYm90dG9tXCIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBwYXJlbnRDb21wb25lbnQud2lkZ2V0ID09PSAnZ3JvdXAnID8gJ25vbmUnIDogJ2Jsb2NrJyB9XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpbmUtbGVmdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogcGFyZW50Q29tcG9uZW50LndpZGdldCA9PT0gJ2dyb3VwJyA/ICdub25lJyA6ICdibG9jaycgfVwiPjwvZGl2PlxuICA8L256LWZvcm0taXRlbT5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0g6buY6K6kIC0tPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UmVuZGVyIGxldC1zdWJDb21wb25lbnQgbGV0LXBhcmVudENvbXBvbmVudD1cInBhcmVudENvbXBvbmVudFwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxuei1mb3JtLWl0ZW1cbiAgICBjbGFzcz1cIndpZGdldC1mb3JtLWl0ZW1cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIHJlcXVpcmVkOiBzdWJDb21wb25lbnQucmVxdWlyZWQsXG4gICAgICBib3JkZXJlZDogcGFyZW50Q29tcG9uZW50LmJvcmRlcmVkLFxuICAgICAgcGFyZW50R3JvdXA6IHBhcmVudENvbXBvbmVudC53aWRnZXQgPT09ICdncm91cCdcbiAgICB9XCJcbiAgPlxuICAgIDwhLS0g5pi+56S66L655qGG5pe277yM6ZqQ6JePbGFiZWzvvIwgcGFyZW50Q29tcG9uZW50LmJvcmRlcmVkIC0tPlxuICAgIDwhLS0g5qCH6aKYIC0tPlxuICAgIDxuei1mb3JtLWxhYmVsXG4gICAgICAqbmdJZj1cIiFwYXJlbnRDb21wb25lbnQuYm9yZGVyZWRcIlxuICAgICAgW2hpZGRlbl09XCJzdWJDb21wb25lbnQuaGlkZGVuTGFiZWxcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cImdldExhYmVsV2lkdGgoc3ViQ29tcG9uZW50KVwiXG4gICAgICBbbnpSZXF1aXJlZF09XCJzdWJDb21wb25lbnQucmVxdWlyZWRcIlxuICAgID5cbiAgICAgIDxkaXY+e3sgc3ViQ29tcG9uZW50LmxhYmVsIH19PC9kaXY+XG4gICAgPC9uei1mb3JtLWxhYmVsPlxuICAgIDxuei1mb3JtLWNvbnRyb2w+XG4gICAgICA8ci13aWRnZXQtZm9ybS1pdGVtIFtpdGVtXT1cInN1YkNvbXBvbmVudFwiPjwvci13aWRnZXQtZm9ybS1pdGVtPlxuICAgIDwvbnotZm9ybS1jb250cm9sPlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lLXRvcFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogcGFyZW50Q29tcG9uZW50LndpZGdldCA9PT0gJ2dyb3VwJyA/ICdub25lJyA6ICdibG9jaycgfVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lLXJpZ2h0XCIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBwYXJlbnRDb21wb25lbnQud2lkZ2V0ID09PSAnZ3JvdXAnID8gJ25vbmUnIDogJ2Jsb2NrJyB9XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpbmUtYm90dG9tXCIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBwYXJlbnRDb21wb25lbnQud2lkZ2V0ID09PSAnZ3JvdXAnID8gJ25vbmUnIDogJ2Jsb2NrJyB9XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpbmUtbGVmdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogcGFyZW50Q29tcG9uZW50LndpZGdldCA9PT0gJ2dyb3VwJyA/ICdub25lJyA6ICdibG9jaycgfVwiPjwvZGl2PlxuICA8L256LWZvcm0taXRlbT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=