keevo-components 2.0.68 → 2.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -136,11 +136,11 @@ export class KvPageFormComponent {
136
136
  }
137
137
  }
138
138
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPageFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvPageFormComponent, selector: "kv-page-form", inputs: { formGroup: "formGroup", TituloForm: "TituloForm", SubTituloForm: "SubTituloForm", isSaveLoading: "isSaveLoading", popup: "popup", locationUseComponent: "locationUseComponent", iconBtnCancel: "iconBtnCancel", showBtnCancel: "showBtnCancel", txtBtnCancel: "txtBtnCancel", actionsCancelToogle: "actionsCancelToogle", iconBtnCancelToogle: "iconBtnCancelToogle", showBtnCancelToogle: "showBtnCancelToogle", txtBtnCancelToogle: "txtBtnCancelToogle", iconBtnSave: "iconBtnSave", showBtnSave: "showBtnSave", txtBtnSave: "txtBtnSave", disableBtnSave: "disableBtnSave", actionsSaveToogle: "actionsSaveToogle", iconBtnSaveToogle: "iconBtnSaveToogle", showBtnSaveToogle: "showBtnSaveToogle", txtBtnSaveToogle: "txtBtnSaveToogle", iconBtnSecundary: "iconBtnSecundary", showBtnSecundary: "showBtnSecundary", txtBtnSecundary: "txtBtnSecundary", colorBtnSecundary: "colorBtnSecundary", actionsToogle: "actionsToogle", iconBtnToogle: "iconBtnToogle", showBtnToogle: "showBtnToogle", txtBtnToogle: "txtBtnToogle", classBtnToogle: "classBtnToogle", disableBtnSair: "disableBtnSair", showMessageCamposObrigatorios: "showMessageCamposObrigatorios" }, outputs: { onSave: "onSave", onCancel: "onCancel", onClickSecundary: "onClickSecundary" }, viewQueries: [{ propertyName: "pageContainer", first: true, predicate: ["pageContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{padding-bottom:40px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i3.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvPageFormComponent, selector: "kv-page-form", inputs: { formGroup: "formGroup", TituloForm: "TituloForm", SubTituloForm: "SubTituloForm", isSaveLoading: "isSaveLoading", popup: "popup", locationUseComponent: "locationUseComponent", iconBtnCancel: "iconBtnCancel", showBtnCancel: "showBtnCancel", txtBtnCancel: "txtBtnCancel", actionsCancelToogle: "actionsCancelToogle", iconBtnCancelToogle: "iconBtnCancelToogle", showBtnCancelToogle: "showBtnCancelToogle", txtBtnCancelToogle: "txtBtnCancelToogle", iconBtnSave: "iconBtnSave", showBtnSave: "showBtnSave", txtBtnSave: "txtBtnSave", disableBtnSave: "disableBtnSave", actionsSaveToogle: "actionsSaveToogle", iconBtnSaveToogle: "iconBtnSaveToogle", showBtnSaveToogle: "showBtnSaveToogle", txtBtnSaveToogle: "txtBtnSaveToogle", iconBtnSecundary: "iconBtnSecundary", showBtnSecundary: "showBtnSecundary", txtBtnSecundary: "txtBtnSecundary", colorBtnSecundary: "colorBtnSecundary", actionsToogle: "actionsToogle", iconBtnToogle: "iconBtnToogle", showBtnToogle: "showBtnToogle", txtBtnToogle: "txtBtnToogle", classBtnToogle: "classBtnToogle", disableBtnSair: "disableBtnSair", showMessageCamposObrigatorios: "showMessageCamposObrigatorios" }, outputs: { onSave: "onSave", onCancel: "onCancel", onClickSecundary: "onClickSecundary" }, viewQueries: [{ propertyName: "pageContainer", first: true, predicate: ["pageContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0 h-full\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{height:100%!important;padding-bottom:40px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i3.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
140
140
  }
141
141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPageFormComponent, decorators: [{
142
142
  type: Component,
143
- args: [{ selector: 'kv-page-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{padding-bottom:40px}\n"] }]
143
+ args: [{ selector: 'kv-page-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0 h-full\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{height:100%!important;padding-bottom:40px}\n"] }]
144
144
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { formGroup: [{
145
145
  type: Input
146
146
  }], TituloForm: [{
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
212
212
  }], onClickSecundary: [{
213
213
  type: Output
214
214
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtcGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXBhZ2UtZm9ybS9rdi1wYWdlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtcGFnZS1mb3JtL2t2LXBhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBVXhELE1BQU0sT0FBTyxtQkFBbUI7SUEyRjlCLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBMUZuQzs7V0FFRztRQUNNLGNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxlQUFVLEdBQXVCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUF1QixFQUFFLENBQUM7UUFFdkMsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2Qix5QkFBb0IsR0FBc0IsUUFBUSxDQUFDO1FBQzVELGlDQUFpQztRQUVqQzs7V0FFRztRQUNNLGtCQUFhLEdBQVcsT0FBTyxDQUFDO1FBQ2hDLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQVcsVUFBVSxDQUFDO1FBTWxDLHdCQUFtQixHQUFXLE9BQU8sQ0FBQztRQUN0Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsdUJBQWtCLEdBQVcsVUFBVSxDQUFDO1FBRWpEOztX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RyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFLRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBlZmZlY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9hY3Rpb24taXRlbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXBhZ2UtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXBhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtcGFnZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdlBhZ2VGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKipcclxuICAgKiBDb25maWd1cmHDp8O1ZXMgZG8gZm9ybXVsw6FyaW9cclxuICAgKi9cclxuICBASW5wdXQoKSBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBJbnB1dCgpIFRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIEBJbnB1dCgpIFN1YlRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzU2F2ZUxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHBvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9jYXRpb25Vc2VDb21wb25lbnQ6ICdwYWdlJyB8ICdkaWFsb2cnID0gJ2RpYWxvZyc7XHJcbiAgLy8gQElucHV0KCkgZXhwYW5kTWVudSE6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvdMOjbyBjYW5jZWxhclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGljb25CdG5DYW5jZWw6IHN0cmluZyA9ICdjbG9zZSc7XHJcbiAgQElucHV0KCkgc2hvd0J0bkNhbmNlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdHh0QnRuQ2FuY2VsOiBzdHJpbmcgPSAnQ2FuY2VsYXInO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZGUgY2FuY2VsYXIgY29tIG9ww6fDtWVzXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aW9uc0NhbmNlbFRvb2dsZSE6IEFjdGlvbkl0ZW1bXTtcclxuICBASW5wdXQoKSBpY29uQnRuQ2FuY2VsVG9vZ2xlOiBzdHJpbmcgPSAnY2xvc2UnO1xyXG4gIEBJbnB1dCgpIHNob3dCdG5DYW5jZWxUb29nbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0eHRCdG5DYW5jZWxUb29nbGU6IHN0cmluZyA9ICdDYW5jZWxhcic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvdMOjbyBzYWx2YXJcclxuICAgKi9cclxuICBASW5wdXQoKSBpY29uQnRuU2F2ZTogc3RyaW5nID0gJ3NhdmUnO1xyXG4gIEBJbnB1dCgpIHNob3dCdG5TYXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0eHRCdG5TYXZlOiBzdHJpbmcgPSAnU2FsdmFyJztcclxuICBASW5wdXQoKSBkaXNhYmxlQnRuU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZGUgc2FsdmFyIGNvbSBvcMOnw7Vlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFjdGlvbnNTYXZlVG9vZ2xlITogQWN0aW9uSXRlbVtdO1xyXG4gIEBJbnB1dCgpIGljb25CdG5TYXZlVG9vZ2xlOiBzdHJpbmcgPSAncGkgcGktY2hldnJvbi1kb3duJztcclxuICBASW5wdXQoKSBzaG93QnRuU2F2ZVRvb2dsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR4dEJ0blNhdmVUb29nbGU6IHN0cmluZyA9ICdBw6fDtWVzJztcclxuXHJcbiAgLyoqXHJcbiAgICogQm90w6NvIGdlbsOpcmljbyAnU2VjdW5kYXJ5J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGljb25CdG5TZWN1bmRhcnkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0J0blNlY3VuZGFyeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR4dEJ0blNlY3VuZGFyeSE6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgRXNzYSBuw6NvIMOpIG1haXMgdXRpbGl6YWRvLCBmYXZvciB1dGlsaXphciBhIHByb3ByaWVkYWRlIHNldmVyaXR5QnRuU2VjdW5kYXJ5XHJcbiAgICovXHJcbiAgQElucHV0KCkgY29sb3JCdG5TZWN1bmRhcnk6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZ2Vuw6lyaWNvIGNvbSBvcMOnw7Vlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFjdGlvbnNUb29nbGUhOiBBY3Rpb25JdGVtW107XHJcbiAgQElucHV0KCkgaWNvbkJ0blRvb2dsZTogc3RyaW5nID0gJ3BpIHBpLWNoZXZyb24tZG93bic7XHJcbiAgQElucHV0KCkgc2hvd0J0blRvb2dsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR4dEJ0blRvb2dsZTogc3RyaW5nID0gJ0HDp8O1ZXMnO1xyXG4gIEBJbnB1dCgpIGNsYXNzQnRuVG9vZ2xlOiBzdHJpbmcgPSAnYmctZ2x1ZS01MDAnO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZmVjaGFyXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZUJ0blNhaXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBzaG93TWVzc2FnZUNhbXBvc09icmlnYXRvcmlvczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhciBkYWRvc1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvblNhdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBDYW5jZWxhclxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEHDp8OjbyBkbyBib3TDo28gU2VjdW5kYXJ5XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tTZWN1bmRhcnk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgcGFnZUNvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigncGFnZUNvbnRhaW5lcicpO1xyXG5cclxuICBwYWdlQ29udGVudEhlaWdodCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xyXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRXaWR0aEJhcigpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VDb250YWluZXIoKSlcclxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5wYWdlQ29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWRkU3ViVGl0bGUoKTtcclxuICAgIC8vIHRoaXMuc2V0UGFnZUZvcm1Db250YWluZXJBdHRyaWJ1dGVzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGljaW9uYSBzdWItdMOtdHVsbyDDoCB0ZWxhXHJcbiAgICovXHJcbiAgYWRkU3ViVGl0bGUoKSB7XHJcbiAgICBpZiAodGhpcy5TdWJUaXR1bG9Gb3JtKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICcucC1kaWFsb2cgLnAtZGlhbG9nLWhlYWRlcidcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhlYWRlckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBzdWJ0aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgc3VidGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5TdWJUaXR1bG9Gb3JtO1xyXG4gICAgICAgIHN1YnRpdGxlRWxlbWVudC5zdHlsZS5mb250U2l6ZSA9ICcwLjc1cmVtJztcclxuICAgICAgICBzdWJ0aXRsZUVsZW1lbnQuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgc3VidGl0bGVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAnMnB4JztcclxuXHJcbiAgICAgICAgaGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZChzdWJ0aXRsZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwYXJhIG8gbcOpdG9kbyBkZSBjYW5jZWxhbWVudG8gZGEgdGVsYVxyXG4gICAqIEBwYXJhbSBldmVudCBldmVudG9cclxuICAgKi9cclxuICBjYW5jZWwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGFyYSBvIG3DqXRvZG8gZGUgc2FsdmFyIGRhIHRlbGFcclxuICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRvXHJcbiAgICovXHJcbiAgc2F2ZShldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMub25TYXZlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uU2VjdW5kYXJ5KGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkNsaWNrU2VjdW5kYXJ5LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWp1c3RhIG8gdGFtYW5obyBkYSB0ZWxhIGNvbnNpZGVyYW5kbyBvIG1lbnUgbGF0ZXJhbFxyXG4gICAqL1xyXG4gIC8vIHNldFBhZ2VGb3JtQ29udGFpbmVyQXR0cmlidXRlcygpIHtcclxuICAvLyAgIGlmICh0aGlzLmxvY2F0aW9uVXNlQ29tcG9uZW50ID09ICdwYWdlJykge1xyXG4gIC8vICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWZvcm0tY29udGFpbmVyJyk7XHJcblxyXG4gIC8vICAgICBpZiAoZm9ybSkge1xyXG4gIC8vICAgICAgIHZhciB3aWR0aEZ1bGwgPSBmb3JtLmNsaWVudFdpZHRoO1xyXG4gIC8vICAgICAgIHZhciB3aWR0aEFkanVzdGVkO1xyXG5cclxuICAvLyAgICAgICB3aWR0aEFkanVzdGVkID0gd2lkdGhGdWxsIC0gMzMyO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgc2V0V2lkdGhCYXIoKSB7XHJcbiAgICBsZXQgZGl2Q2FyZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWZvcm0tY29udGVudCcpO1xyXG5cclxuICAgIGxldCBkaXZCYXJyYUFjb2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcnJhLWFjb2VzJyk7XHJcblxyXG4gICAgaWYgKGRpdkNhcmQgJiYgZGl2QmFycmFBY29lcykge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLnBvcHVwKSB7XHJcbiAgICAgICAgZGl2QmFycmFBY29lcy5zdHlsZS5ib3R0b20gPSAnMC41cmVtJztcclxuICAgICAgICBkaXZCYXJyYUFjb2VzLnN0eWxlLm1hcmdpbiA9ICcwIDFyZW0gMCAwJztcclxuICAgICAgICBkaXZCYXJyYUFjb2VzLnN0eWxlLndpZHRoID0gZGl2Q2FyZC5jbGllbnRXaWR0aCArICdweCc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucGFnZUNvbnRlbnRIZWlnaHQuc2V0KGRpdkJhcnJhQWNvZXMuY2xpZW50SGVpZ2h0ICogMC45KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcclxuICBjbGFzcz1cImdyaWQtbm9ndXR0ZXIgbS0wXCJcclxuICBpZD1cInBhZ2UtZm9ybS1jb250YWluZXJcIlxyXG4gICNwYWdlQ29udGFpbmVyXHJcbiAgW3N0eWxlLnBhZGRpbmctYm90dG9tLnB4XT1cInBhZ2VDb250ZW50SGVpZ2h0KClcIlxyXG4+XHJcbiAgPCEtLSBSZW5kZXJpemHDp8OjbyBkbyBmb3JtIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wXCIgaWQ9XCJwYWdlLWZvcm0tY29udGVudFwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIERpdmlkZXIgLS0+XHJcbiAgPCEtLSA8cC1kaXZpZGVyIGNsYXNzPVwiY29sLTEyXCI+PC9wLWRpdmlkZXI+IC0tPlxyXG5cclxuICA8IS0tIEJhcnJhIGRlIGHDp8O1ZXMgLS0+XHJcblxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBtZDpmbGV4LXJvdyBtZDpqdXN0aWZ5LWNvbnRlbnQtZW5kIG1kOmFsaWduLWl0ZW1zLWNlbnRlciBjb2wtMTIgZ2FwLTIgYmFycmEtYWNvZXMgYm9yZGVyLXJvdW5kLWJvdHRvbS1tZFwiXHJcbiAgICBpZD1cImJhcnJhLWFjb2VzXCJcclxuICA+XHJcbiAgICBAaWYoc2hvd01lc3NhZ2VDYW1wb3NPYnJpZ2F0b3Jpb3MpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwidy1mdWxsIHRleHQtc21cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj4qPC9zcGFuPiBDYW1wb3Mgb2JyaWdhdMOzcmlvczwvc3BhblxyXG4gICAgPlxyXG4gICAgfVxyXG4gICAgPGt2LWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dCdG5DYW5jZWxcIlxyXG4gICAgICBbbGFiZWxdPVwidHh0QnRuQ2FuY2VsXCJcclxuICAgICAgW2ljb25dPVwiaWNvbkJ0bkNhbmNlbFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmVMb2FkaW5nXCJcclxuICAgICAgKG9uQ2xpY2spPVwiY2FuY2VsKCRldmVudClcIlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBtZDp3LWF1dG9cIlxyXG4gICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgID5cclxuICAgIDwva3YtYnV0dG9uPlxyXG5cclxuICAgIDxrdi1idXR0b25cclxuICAgICAgKm5nSWY9XCJhY3Rpb25zQ2FuY2VsVG9vZ2xlICYmIHNob3dCdG5DYW5jZWxUb29nbGVcIlxyXG4gICAgICBbbGFiZWxdPVwidHh0QnRuQ2FuY2VsVG9vZ2xlXCJcclxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy1hdXRvXCJcclxuICAgICAgW3NldmVyaXR5XT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNTYXZlTG9hZGluZ1wiXHJcbiAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgW2l0ZW1zXT1cImFjdGlvbnNDYW5jZWxUb29nbGVcIlxyXG4gICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcclxuICAgIC8+XHJcblxyXG4gICAgPGt2LWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dCdG5TZWN1bmRhcnlcIlxyXG4gICAgICBbbGFiZWxdPVwidHh0QnRuU2VjdW5kYXJ5XCJcclxuICAgICAgW2ljb25dPVwiaWNvbkJ0blNlY3VuZGFyeVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmVMb2FkaW5nXCJcclxuICAgICAgc2V2ZXJpdHk9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgIChvbkNsaWNrKT1cImFjdGlvblNlY3VuZGFyeSgkZXZlbnQpXCJcclxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy1hdXRvXCJcclxuICAgIC8+XHJcblxyXG4gICAgPGt2LWJ1dHRvblxyXG4gICAgICAqbmdJZj1cImFjdGlvbnNUb29nbGUgJiYgc2hvd0J0blRvb2dsZVwiXHJcbiAgICAgIFtsYWJlbF09XCJ0eHRCdG5Ub29nbGVcIlxyXG4gICAgICBbaWNvbl09XCJpY29uQnRuVG9vZ2xlXCJcclxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy1hdXRvXCJcclxuICAgICAgc2V2ZXJpdHk9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmVMb2FkaW5nXCJcclxuICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICBbaXRlbXNdPVwiYWN0aW9uc1Rvb2dsZVwiXHJcbiAgICAvPlxyXG5cclxuICAgIDxrdi1idXR0b25cclxuICAgICAgKm5nSWY9XCJzaG93QnRuU2F2ZVwiXHJcbiAgICAgIFtsYWJlbF09XCJ0eHRCdG5TYXZlXCJcclxuICAgICAgW2ljb25dPVwiaWNvbkJ0blNhdmVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUJ0blNhdmVcIlxyXG4gICAgICBbbG9hZGluZ109XCJpc1NhdmVMb2FkaW5nXCJcclxuICAgICAgKG9uQ2xpY2spPVwic2F2ZSgkZXZlbnQpXCJcclxuICAgICAgc2V2ZXJpdHk9XCJwcmltYXJ5XCJcclxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy1hdXRvXCJcclxuICAgIC8+XHJcblxyXG4gICAgPGt2LWJ1dHRvblxyXG4gICAgICAqbmdJZj1cImFjdGlvbnNTYXZlVG9vZ2xlICYmIHNob3dCdG5TYXZlVG9vZ2xlXCJcclxuICAgICAgW2xhYmVsXT1cInR4dEJ0blNhdmVUb29nbGVcIlxyXG4gICAgICBbaWNvbl09XCJpY29uQnRuU2F2ZVRvb2dsZVwiXHJcbiAgICAgIFtsb2FkaW5nXT1cImlzU2F2ZUxvYWRpbmdcIlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBtZDp3LWF1dG9cIlxyXG4gICAgICBbc2V2ZXJpdHldPVwiJ3ByaW1hcnknXCJcclxuICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICBbaXRlbXNdPVwiYWN0aW9uc1NhdmVUb29nbGVcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtcGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXBhZ2UtZm9ybS9rdi1wYWdlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtcGFnZS1mb3JtL2t2LXBhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBVXhELE1BQU0sT0FBTyxtQkFBbUI7SUEyRjlCLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBMUZuQzs7V0FFRztRQUNNLGNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxlQUFVLEdBQXVCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUF1QixFQUFFLENBQUM7UUFFdkMsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2Qix5QkFBb0IsR0FBc0IsUUFBUSxDQUFDO1FBQzVELGlDQUFpQztRQUVqQzs7V0FFRztRQUNNLGtCQUFhLEdBQVcsT0FBTyxDQUFDO1FBQ2hDLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQVcsVUFBVSxDQUFDO1FBTWxDLHdCQUFtQixHQUFXLE9BQU8sQ0FBQztRQUN0Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsdUJBQWtCLEdBQVcsVUFBVSxDQUFDO1FBRWpEOztX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RyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFLRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBlZmZlY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9hY3Rpb24taXRlbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXBhZ2UtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXBhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtcGFnZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdlBhZ2VGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKipcclxuICAgKiBDb25maWd1cmHDp8O1ZXMgZG8gZm9ybXVsw6FyaW9cclxuICAgKi9cclxuICBASW5wdXQoKSBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBJbnB1dCgpIFRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIEBJbnB1dCgpIFN1YlRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzU2F2ZUxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHBvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9jYXRpb25Vc2VDb21wb25lbnQ6ICdwYWdlJyB8ICdkaWFsb2cnID0gJ2RpYWxvZyc7XHJcbiAgLy8gQElucHV0KCkgZXhwYW5kTWVudSE6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvdMOjbyBjYW5jZWxhclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGljb25CdG5DYW5jZWw6IHN0cmluZyA9ICdjbG9zZSc7XHJcbiAgQElucHV0KCkgc2hvd0J0bkNhbmNlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdHh0QnRuQ2FuY2VsOiBzdHJpbmcgPSAnQ2FuY2VsYXInO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZGUgY2FuY2VsYXIgY29tIG9ww6fDtWVzXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aW9uc0NhbmNlbFRvb2dsZSE6IEFjdGlvbkl0ZW1bXTtcclxuICBASW5wdXQoKSBpY29uQnRuQ2FuY2VsVG9vZ2xlOiBzdHJpbmcgPSAnY2xvc2UnO1xyXG4gIEBJbnB1dCgpIHNob3dCdG5DYW5jZWxUb29nbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0eHRCdG5DYW5jZWxUb29nbGU6IHN0cmluZyA9ICdDYW5jZWxhcic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvdMOjbyBzYWx2YXJcclxuICAgKi9cclxuICBASW5wdXQoKSBpY29uQnRuU2F2ZTogc3RyaW5nID0gJ3NhdmUnO1xyXG4gIEBJbnB1dCgpIHNob3dCdG5TYXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0eHRCdG5TYXZlOiBzdHJpbmcgPSAnU2FsdmFyJztcclxuICBASW5wdXQoKSBkaXNhYmxlQnRuU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZGUgc2FsdmFyIGNvbSBvcMOnw7Vlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFjdGlvbnNTYXZlVG9vZ2xlITogQWN0aW9uSXRlbVtdO1xyXG4gIEBJbnB1dCgpIGljb25CdG5TYXZlVG9vZ2xlOiBzdHJpbmcgPSAncGkgcGktY2hldnJvbi1kb3duJztcclxuICBASW5wdXQoKSBzaG93QnRuU2F2ZVRvb2dsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR4dEJ0blNhdmVUb29nbGU6IHN0cmluZyA9ICdBw6fDtWVzJztcclxuXHJcbiAgLyoqXHJcbiAgICogQm90w6NvIGdlbsOpcmljbyAnU2VjdW5kYXJ5J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGljb25CdG5TZWN1bmRhcnkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0J0blNlY3VuZGFyeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR4dEJ0blNlY3VuZGFyeSE6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgRXNzYSBuw6NvIMOpIG1haXMgdXRpbGl6YWRvLCBmYXZvciB1dGlsaXphciBhIHByb3ByaWVkYWRlIHNldmVyaXR5QnRuU2VjdW5kYXJ5XHJcbiAgICovXHJcbiAgQElucHV0KCkgY29sb3JCdG5TZWN1bmRhcnk6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZ2Vuw6lyaWNvIGNvbSBvcMOnw7Vlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFjdGlvbnNUb29nbGUhOiBBY3Rpb25JdGVtW107XHJcbiAgQElucHV0KCkgaWNvbkJ0blRvb2dsZTogc3RyaW5nID0gJ3BpIHBpLWNoZXZyb24tZG93bic7XHJcbiAgQElucHV0KCkgc2hvd0J0blRvb2dsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR4dEJ0blRvb2dsZTogc3RyaW5nID0gJ0HDp8O1ZXMnO1xyXG4gIEBJbnB1dCgpIGNsYXNzQnRuVG9vZ2xlOiBzdHJpbmcgPSAnYmctZ2x1ZS01MDAnO1xyXG5cclxuICAvKipcclxuICAgKiBCb3TDo28gZmVjaGFyXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZUJ0blNhaXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBzaG93TWVzc2FnZUNhbXBvc09icmlnYXRvcmlvczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhciBkYWRvc1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvblNhdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBDYW5jZWxhclxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEHDp8OjbyBkbyBib3TDo28gU2VjdW5kYXJ5XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tTZWN1bmRhcnk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgcGFnZUNvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigncGFnZUNvbnRhaW5lcicpO1xyXG5cclxuICBwYWdlQ29udGVudEhlaWdodCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xyXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRXaWR0aEJhcigpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VDb250YWluZXIoKSlcclxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5wYWdlQ29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWRkU3ViVGl0bGUoKTtcclxuICAgIC8vIHRoaXMuc2V0UGFnZUZvcm1Db250YWluZXJBdHRyaWJ1dGVzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGljaW9uYSBzdWItdMOtdHVsbyDDoCB0ZWxhXHJcbiAgICovXHJcbiAgYWRkU3ViVGl0bGUoKSB7XHJcbiAgICBpZiAodGhpcy5TdWJUaXR1bG9Gb3JtKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICcucC1kaWFsb2cgLnAtZGlhbG9nLWhlYWRlcidcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhlYWRlckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBzdWJ0aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgc3VidGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5TdWJUaXR1bG9Gb3JtO1xyXG4gICAgICAgIHN1YnRpdGxlRWxlbWVudC5zdHlsZS5mb250U2l6ZSA9ICcwLjc1cmVtJztcclxuICAgICAgICBzdWJ0aXRsZUVsZW1lbnQuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgc3VidGl0bGVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAnMnB4JztcclxuXHJcbiAgICAgICAgaGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZChzdWJ0aXRsZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwYXJhIG8gbcOpdG9kbyBkZSBjYW5jZWxhbWVudG8gZGEgdGVsYVxyXG4gICAqIEBwYXJhbSBldmVudCBldmVudG9cclxuICAgKi9cclxuICBjYW5jZWwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGFyYSBvIG3DqXRvZG8gZGUgc2FsdmFyIGRhIHRlbGFcclxuICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRvXHJcbiAgICovXHJcbiAgc2F2ZShldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMub25TYXZlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uU2VjdW5kYXJ5KGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkNsaWNrU2VjdW5kYXJ5LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWp1c3RhIG8gdGFtYW5obyBkYSB0ZWxhIGNvbnNpZGVyYW5kbyBvIG1lbnUgbGF0ZXJhbFxyXG4gICAqL1xyXG4gIC8vIHNldFBhZ2VGb3JtQ29udGFpbmVyQXR0cmlidXRlcygpIHtcclxuICAvLyAgIGlmICh0aGlzLmxvY2F0aW9uVXNlQ29tcG9uZW50ID09ICdwYWdlJykge1xyXG4gIC8vICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWZvcm0tY29udGFpbmVyJyk7XHJcblxyXG4gIC8vICAgICBpZiAoZm9ybSkge1xyXG4gIC8vICAgICAgIHZhciB3aWR0aEZ1bGwgPSBmb3JtLmNsaWVudFdpZHRoO1xyXG4gIC8vICAgICAgIHZhciB3aWR0aEFkanVzdGVkO1xyXG5cclxuICAvLyAgICAgICB3aWR0aEFkanVzdGVkID0gd2lkdGhGdWxsIC0gMzMyO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgc2V0V2lkdGhCYXIoKSB7XHJcbiAgICBsZXQgZGl2Q2FyZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWZvcm0tY29udGVudCcpO1xyXG5cclxuICAgIGxldCBkaXZCYXJyYUFjb2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcnJhLWFjb2VzJyk7XHJcblxyXG4gICAgaWYgKGRpdkNhcmQgJiYgZGl2QmFycmFBY29lcykge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLnBvcHVwKSB7XHJcbiAgICAgICAgZGl2QmFycmFBY29lcy5zdHlsZS5ib3R0b20gPSAnMC41cmVtJztcclxuICAgICAgICBkaXZCYXJyYUFjb2VzLnN0eWxlLm1hcmdpbiA9ICcwIDFyZW0gMCAwJztcclxuICAgICAgICBkaXZCYXJyYUFjb2VzLnN0eWxlLndpZHRoID0gZGl2Q2FyZC5jbGllbnRXaWR0aCArICdweCc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucGFnZUNvbnRlbnRIZWlnaHQuc2V0KGRpdkJhcnJhQWNvZXMuY2xpZW50SGVpZ2h0ICogMC45KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcclxuICBjbGFzcz1cImdyaWQtbm9ndXR0ZXIgbS0wXCJcclxuICBpZD1cInBhZ2UtZm9ybS1jb250YWluZXJcIlxyXG4gICNwYWdlQ29udGFpbmVyXHJcbiAgW3N0eWxlLnBhZGRpbmctYm90dG9tLnB4XT1cInBhZ2VDb250ZW50SGVpZ2h0KClcIlxyXG4+XHJcbiAgPCEtLSBSZW5kZXJpemHDp8OjbyBkbyBmb3JtIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC0wIGgtZnVsbFwiIGlkPVwicGFnZS1mb3JtLWNvbnRlbnRcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEaXZpZGVyIC0tPlxyXG4gIDwhLS0gPHAtZGl2aWRlciBjbGFzcz1cImNvbC0xMlwiPjwvcC1kaXZpZGVyPiAtLT5cclxuXHJcbiAgPCEtLSBCYXJyYSBkZSBhw6fDtWVzIC0tPlxyXG5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gbWQ6ZmxleC1yb3cgbWQ6anVzdGlmeS1jb250ZW50LWVuZCBtZDphbGlnbi1pdGVtcy1jZW50ZXIgY29sLTEyIGdhcC0yIGJhcnJhLWFjb2VzIGJvcmRlci1yb3VuZC1ib3R0b20tbWRcIlxyXG4gICAgaWQ9XCJiYXJyYS1hY29lc1wiXHJcbiAgPlxyXG4gICAgQGlmKHNob3dNZXNzYWdlQ2FtcG9zT2JyaWdhdG9yaW9zKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cInctZnVsbCB0ZXh0LXNtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+Kjwvc3Bhbj4gQ2FtcG9zIG9icmlnYXTDs3Jpb3M8L3NwYW5cclxuICAgID5cclxuICAgIH1cclxuICAgIDxrdi1idXR0b25cclxuICAgICAgKm5nSWY9XCJzaG93QnRuQ2FuY2VsXCJcclxuICAgICAgW2xhYmVsXT1cInR4dEJ0bkNhbmNlbFwiXHJcbiAgICAgIFtpY29uXT1cImljb25CdG5DYW5jZWxcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNTYXZlTG9hZGluZ1wiXHJcbiAgICAgIChvbkNsaWNrKT1cImNhbmNlbCgkZXZlbnQpXCJcclxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy1hdXRvXCJcclxuICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICA+XHJcbiAgICA8L2t2LWJ1dHRvbj5cclxuXHJcbiAgICA8a3YtYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiYWN0aW9uc0NhbmNlbFRvb2dsZSAmJiBzaG93QnRuQ2FuY2VsVG9vZ2xlXCJcclxuICAgICAgW2xhYmVsXT1cInR4dEJ0bkNhbmNlbFRvb2dsZVwiXHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIG1kOnctYXV0b1wiXHJcbiAgICAgIFtzZXZlcml0eV09XCInc2Vjb25kYXJ5J1wiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzU2F2ZUxvYWRpbmdcIlxyXG4gICAgICBbcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgIFtpdGVtc109XCJhY3Rpb25zQ2FuY2VsVG9vZ2xlXCJcclxuICAgICAgaWNvblBvc2l0aW9uPVwibGVmdFwiXHJcbiAgICAvPlxyXG5cclxuICAgIDxrdi1idXR0b25cclxuICAgICAgKm5nSWY9XCJzaG93QnRuU2VjdW5kYXJ5XCJcclxuICAgICAgW2xhYmVsXT1cInR4dEJ0blNlY3VuZGFyeVwiXHJcbiAgICAgIFtpY29uXT1cImljb25CdG5TZWN1bmRhcnlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNTYXZlTG9hZGluZ1wiXHJcbiAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAob25DbGljayk9XCJhY3Rpb25TZWN1bmRhcnkoJGV2ZW50KVwiXHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIG1kOnctYXV0b1wiXHJcbiAgICAvPlxyXG5cclxuICAgIDxrdi1idXR0b25cclxuICAgICAgKm5nSWY9XCJhY3Rpb25zVG9vZ2xlICYmIHNob3dCdG5Ub29nbGVcIlxyXG4gICAgICBbbGFiZWxdPVwidHh0QnRuVG9vZ2xlXCJcclxuICAgICAgW2ljb25dPVwiaWNvbkJ0blRvb2dsZVwiXHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIG1kOnctYXV0b1wiXHJcbiAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNTYXZlTG9hZGluZ1wiXHJcbiAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgW2l0ZW1zXT1cImFjdGlvbnNUb29nbGVcIlxyXG4gICAgLz5cclxuXHJcbiAgICA8a3YtYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwic2hvd0J0blNhdmVcIlxyXG4gICAgICBbbGFiZWxdPVwidHh0QnRuU2F2ZVwiXHJcbiAgICAgIFtpY29uXT1cImljb25CdG5TYXZlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVCdG5TYXZlXCJcclxuICAgICAgW2xvYWRpbmddPVwiaXNTYXZlTG9hZGluZ1wiXHJcbiAgICAgIChvbkNsaWNrKT1cInNhdmUoJGV2ZW50KVwiXHJcbiAgICAgIHNldmVyaXR5PVwicHJpbWFyeVwiXHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIG1kOnctYXV0b1wiXHJcbiAgICAvPlxyXG5cclxuICAgIDxrdi1idXR0b25cclxuICAgICAgKm5nSWY9XCJhY3Rpb25zU2F2ZVRvb2dsZSAmJiBzaG93QnRuU2F2ZVRvb2dsZVwiXHJcbiAgICAgIFtsYWJlbF09XCJ0eHRCdG5TYXZlVG9vZ2xlXCJcclxuICAgICAgW2ljb25dPVwiaWNvbkJ0blNhdmVUb29nbGVcIlxyXG4gICAgICBbbG9hZGluZ109XCJpc1NhdmVMb2FkaW5nXCJcclxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy1hdXRvXCJcclxuICAgICAgW3NldmVyaXR5XT1cIidwcmltYXJ5J1wiXHJcbiAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgW2l0ZW1zXT1cImFjdGlvbnNTYXZlVG9vZ2xlXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -6966,11 +6966,11 @@ class KvPageFormComponent {
6966
6966
  }
6967
6967
  }
6968
6968
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPageFormComponent, deps: [{ token: i2$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
6969
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvPageFormComponent, selector: "kv-page-form", inputs: { formGroup: "formGroup", TituloForm: "TituloForm", SubTituloForm: "SubTituloForm", isSaveLoading: "isSaveLoading", popup: "popup", locationUseComponent: "locationUseComponent", iconBtnCancel: "iconBtnCancel", showBtnCancel: "showBtnCancel", txtBtnCancel: "txtBtnCancel", actionsCancelToogle: "actionsCancelToogle", iconBtnCancelToogle: "iconBtnCancelToogle", showBtnCancelToogle: "showBtnCancelToogle", txtBtnCancelToogle: "txtBtnCancelToogle", iconBtnSave: "iconBtnSave", showBtnSave: "showBtnSave", txtBtnSave: "txtBtnSave", disableBtnSave: "disableBtnSave", actionsSaveToogle: "actionsSaveToogle", iconBtnSaveToogle: "iconBtnSaveToogle", showBtnSaveToogle: "showBtnSaveToogle", txtBtnSaveToogle: "txtBtnSaveToogle", iconBtnSecundary: "iconBtnSecundary", showBtnSecundary: "showBtnSecundary", txtBtnSecundary: "txtBtnSecundary", colorBtnSecundary: "colorBtnSecundary", actionsToogle: "actionsToogle", iconBtnToogle: "iconBtnToogle", showBtnToogle: "showBtnToogle", txtBtnToogle: "txtBtnToogle", classBtnToogle: "classBtnToogle", disableBtnSair: "disableBtnSair", showMessageCamposObrigatorios: "showMessageCamposObrigatorios" }, outputs: { onSave: "onSave", onCancel: "onCancel", onClickSecundary: "onClickSecundary" }, viewQueries: [{ propertyName: "pageContainer", first: true, predicate: ["pageContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{padding-bottom:40px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6969
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvPageFormComponent, selector: "kv-page-form", inputs: { formGroup: "formGroup", TituloForm: "TituloForm", SubTituloForm: "SubTituloForm", isSaveLoading: "isSaveLoading", popup: "popup", locationUseComponent: "locationUseComponent", iconBtnCancel: "iconBtnCancel", showBtnCancel: "showBtnCancel", txtBtnCancel: "txtBtnCancel", actionsCancelToogle: "actionsCancelToogle", iconBtnCancelToogle: "iconBtnCancelToogle", showBtnCancelToogle: "showBtnCancelToogle", txtBtnCancelToogle: "txtBtnCancelToogle", iconBtnSave: "iconBtnSave", showBtnSave: "showBtnSave", txtBtnSave: "txtBtnSave", disableBtnSave: "disableBtnSave", actionsSaveToogle: "actionsSaveToogle", iconBtnSaveToogle: "iconBtnSaveToogle", showBtnSaveToogle: "showBtnSaveToogle", txtBtnSaveToogle: "txtBtnSaveToogle", iconBtnSecundary: "iconBtnSecundary", showBtnSecundary: "showBtnSecundary", txtBtnSecundary: "txtBtnSecundary", colorBtnSecundary: "colorBtnSecundary", actionsToogle: "actionsToogle", iconBtnToogle: "iconBtnToogle", showBtnToogle: "showBtnToogle", txtBtnToogle: "txtBtnToogle", classBtnToogle: "classBtnToogle", disableBtnSair: "disableBtnSair", showMessageCamposObrigatorios: "showMessageCamposObrigatorios" }, outputs: { onSave: "onSave", onCancel: "onCancel", onClickSecundary: "onClickSecundary" }, viewQueries: [{ propertyName: "pageContainer", first: true, predicate: ["pageContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0 h-full\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{height:100%!important;padding-bottom:40px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6970
6970
  }
6971
6971
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvPageFormComponent, decorators: [{
6972
6972
  type: Component,
6973
- args: [{ selector: 'kv-page-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{padding-bottom:40px}\n"] }]
6973
+ args: [{ selector: 'kv-page-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n [formGroup]=\"formGroup\"\r\n class=\"grid-nogutter m-0\"\r\n id=\"page-form-container\"\r\n #pageContainer\r\n [style.padding-bottom.px]=\"pageContentHeight()\"\r\n>\r\n <!-- Renderiza\u00E7\u00E3o do form -->\r\n <div class=\"col-12 p-0 h-full\" id=\"page-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <!-- <p-divider class=\"col-12\"></p-divider> -->\r\n\r\n <!-- Barra de a\u00E7\u00F5es -->\r\n\r\n <div\r\n class=\"flex flex-column md:flex-row md:justify-content-end md:align-items-center col-12 gap-2 barra-acoes border-round-bottom-md\"\r\n id=\"barra-acoes\"\r\n >\r\n @if(showMessageCamposObrigatorios) {\r\n <span class=\"w-full text-sm\">\r\n <span class=\"font-bold\">*</span> Campos obrigat\u00F3rios</span\r\n >\r\n }\r\n <kv-button\r\n *ngIf=\"showBtnCancel\"\r\n [label]=\"txtBtnCancel\"\r\n [icon]=\"iconBtnCancel\"\r\n [disabled]=\"isSaveLoading\"\r\n (onClick)=\"cancel($event)\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n >\r\n </kv-button>\r\n\r\n <kv-button\r\n *ngIf=\"actionsCancelToogle && showBtnCancelToogle\"\r\n [label]=\"txtBtnCancelToogle\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'secondary'\"\r\n type=\"text\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsCancelToogle\"\r\n iconPosition=\"left\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSecundary\"\r\n [label]=\"txtBtnSecundary\"\r\n [icon]=\"iconBtnSecundary\"\r\n [disabled]=\"isSaveLoading\"\r\n severity=\"tertiary\"\r\n (onClick)=\"actionSecundary($event)\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsToogle && showBtnToogle\"\r\n [label]=\"txtBtnToogle\"\r\n [icon]=\"iconBtnToogle\"\r\n class=\"w-full md:w-auto\"\r\n severity=\"tertiary\"\r\n [disabled]=\"isSaveLoading\"\r\n [popup]=\"true\"\r\n [items]=\"actionsToogle\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"showBtnSave\"\r\n [label]=\"txtBtnSave\"\r\n [icon]=\"iconBtnSave\"\r\n [disabled]=\"disableBtnSave\"\r\n [loading]=\"isSaveLoading\"\r\n (onClick)=\"save($event)\"\r\n severity=\"primary\"\r\n class=\"w-full md:w-auto\"\r\n />\r\n\r\n <kv-button\r\n *ngIf=\"actionsSaveToogle && showBtnSaveToogle\"\r\n [label]=\"txtBtnSaveToogle\"\r\n [icon]=\"iconBtnSaveToogle\"\r\n [loading]=\"isSaveLoading\"\r\n class=\"w-full md:w-auto\"\r\n [severity]=\"'primary'\"\r\n [popup]=\"true\"\r\n [items]=\"actionsSaveToogle\"\r\n />\r\n </div>\r\n</div>\r\n", styles: ["*{padding-bottom:0rem;padding-top:0rem}.barra-acoes{position:fixed;bottom:0;right:0;background-color:#fff;padding:10px}#page-form-container{height:100%!important;padding-bottom:40px}\n"] }]
6974
6974
  }], ctorParameters: () => [{ type: i2$2.FormBuilder }], propDecorators: { formGroup: [{
6975
6975
  type: Input
6976
6976
  }], TituloForm: [{