@asoftwareworld/form-builder-pro
Version:
ASW Form Builder Pro helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same b
1 lines • 25.6 kB
Source Map (JSON)
{"version":3,"file":"asoftwareworld-form-builder-pro-form-control-number.mjs","sources":["../../src/components/form-control/number/number.ts","../../src/components/form-control/number/number.html","../../src/components/form-control/number/number.module.ts","../../src/components/form-control/number/public_api.ts","../../src/components/form-control/number/asoftwareworld-form-builder-pro-form-control-number.ts"],"sourcesContent":["/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ControlOption, CSSFrameworkEnum } from '@asoftwareworld/form-builder-pro/api';\nimport { Constants, Icons } from '@asoftwareworld/form-builder-pro/common';\nimport { AswConfirmDialog } from '@asoftwareworld/form-builder-pro/form-control/confirm-dialog';\nimport { AswTextDialog } from '@asoftwareworld/form-builder-pro/form-control/shared';\nimport { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\nimport { NumberControl } from './number-control';\n\n@Component({\n selector: 'asw-number',\n templateUrl: './number.html'\n})\nexport class AswNumber implements AfterViewInit {\n decimals = 100;\n constants: any = Constants;\n objectUtils = ObjectUtils;\n icons = Icons;\n /**\n * Number control\n */\n @Input() control: NumberControl | null = null;\n @Input() formControls: any[] = [];\n @Input() CSSFramework: CSSFrameworkEnum = CSSFrameworkEnum.Material;\n @Input() isPreviewTemplate = false;\n @Input() propertyPersonalization: string[] = [];\n @Input() patterns: ControlOption[] = [];\n\n @Output() numberUpdateEvent = new EventEmitter<NumberControl>();\n @Output() numberDeleteEvent = new EventEmitter<NumberControl>();\n @Output() aswModelChange = new EventEmitter<NumberControl>();\n @Output() duplicateControl = new EventEmitter<NumberControl>();\n\n @ViewChild('numberInput') numberInput: any;\n @ViewChild('currencyInput') currencyInput: any;\n\n constructor(public dialog: MatDialog) {}\n\n ngAfterViewInit(): void {\n switch (this.control?.controlType) {\n case 'number': {\n this.numberInput.valueChanges.subscribe(() => {\n this.onChange(this.control ? this.control : (null as any));\n });\n break;\n }\n case 'currency': {\n this.currencyInput.valueChanges.subscribe(() => {\n this.onChange(this.control ? this.control : (null as any));\n });\n break;\n }\n }\n }\n\n deleteNumberDialog(control: NumberControl): void {\n const dialogRef = this.dialog.open(AswConfirmDialog, {\n width: '350px',\n data: { name: control.controlType, message: this.constants.messages.waringMessage }\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result !== undefined) {\n this.numberDeleteEvent.emit(control);\n }\n });\n }\n\n editNumberDialog(control: NumberControl): void {\n const dialogRef = this.dialog.open(AswTextDialog, {\n width: '80%',\n minWidth: '70vw',\n disableClose: true,\n data: { control, CSSFramework: this.CSSFramework, propertyPersonalization: this.propertyPersonalization, patterns: this.patterns }\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result !== undefined) {\n this.numberUpdateEvent.emit(result);\n }\n });\n }\n\n onChange(control: NumberControl): void {\n this.setParentCalculations(control, this.formControls);\n this.setChildCalculations(control, this.formControls);\n this.aswModelChange.emit(control);\n }\n\n private setParentCalculations(control: NumberControl, formControls: any[]): void {\n const calculationControls = formControls.filter((x) => x.controlType === 'calculation');\n calculationControls.forEach((calculation) => {\n const updateControls = calculation.operations.filter((x: any) => x.id === control.guid);\n updateControls.forEach((y: any) => {\n y.label = control.label;\n y.value = control.value;\n });\n calculation.value = this.objectUtils.calculateValue(calculation.operations);\n });\n }\n\n private setChildCalculations(control: NumberControl, formControls: any[]): void {\n const columnControls = formControls.filter((x) => x.controlType === 'columns');\n columnControls.forEach((columnControl) => {\n columnControl.columns.forEach((column: any) => {\n const calculationItems = column.components.filter((component: any) => component.controlType === 'calculation');\n if (calculationItems.length) {\n this.setParentCalculations(control, column.components);\n }\n const columnItems = column.components.filter((component: any) => component.controlType === 'columns');\n if (columnItems.length) {\n this.setChildCalculations(control, column.components);\n }\n });\n });\n }\n\n duplicateNumberControl(control: NumberControl): void {\n this.duplicateControl.emit(control);\n }\n}\n","<ng-container *ngIf=\"control as control\">\r\n <ng-container *ngIf=\"CSSFramework === 'material'; else bootstrap\">\r\n <ng-container [ngSwitch]=\"control.controlType\">\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <mat-form-field [appearance]=\"control.style\" class=\"asw-width-100 {{control.customClass}}\">\r\n <mat-label>{{control.label | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\" aswNumbersOnly\r\n [id]=\"control.id\"\r\n [placeholder]=\"control.label | aswTranslate\"\r\n pattern=\"{{control.pattern}}\"\r\n [(ngModel)]=\"control.value\"\r\n #numberInput=\"ngModel\"\r\n (ngModelChange)=\"onChange(control)\"\r\n [matTooltip]=\"control.tooltip | aswTranslate\"\r\n [maxlength]=\"control.maxlength\"\r\n [minlength]=\"control.minlength\"\r\n [required]=\"control.isRequired\"\r\n [disabled]=\"control.isDisabled ? true : false\">\r\n <mat-icon *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\"\r\n class=\"asw-error\" matSuffix>error\r\n </mat-icon>\r\n <mat-error *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\">\r\n <ng-container *ngIf=\"numberInput?.errors?.required\">\r\n {{control.label | aswTranslate}} {{'FormControl.IsRequired' | aswTranslate}}\r\n </ng-container>\r\n <ng-container *ngIf=\"numberInput?.errors?.minlength\">\r\n Sorry, {{control.label | aswTranslate}} must be at least {{control.minlength}} characters long.\r\n </ng-container>\r\n <ng-container *ngIf=\"numberInput?.errors?.pattern\">\r\n {{control.customErrorMsg}}\r\n </ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <mat-form-field [appearance]=\"control.style\" class=\"asw-width-100 {{control.customClass}}\">\r\n <mat-label>{{control.label | aswTranslate}}</mat-label>\r\n <span matTextPrefix>{{control.currencySymbol}} </span>\r\n <input matInput type=\"text\" aswNumbersOnly\r\n [id]=\"control.id\"\r\n pattern=\"{{control.pattern}}\"\r\n [placeholder]=\"control.label | aswTranslate\"\r\n [(ngModel)]=\"control.value\"\r\n #currencyInput=\"ngModel\"\r\n (ngModelChange)=\"onChange(control)\"\r\n [matTooltip]=\"control.tooltip | aswTranslate\"\r\n [maxlength]=\"control.maxlength\"\r\n [minlength]=\"control.minlength\"\r\n [required]=\"control.isRequired\"\r\n [disabled]=\"control.isDisabled ? true : false\">\r\n <mat-icon *ngIf=\"currencyInput.invalid && (currencyInput.dirty || currencyInput.touched)\"\r\n class=\"asw-error\" matSuffix>error\r\n </mat-icon>\r\n <mat-error *ngIf=\"currencyInput.invalid && (currencyInput.dirty || currencyInput.touched)\">\r\n <ng-container *ngIf=\"currencyInput?.errors?.required\">\r\n {{control.label | aswTranslate}} {{'FormControl.IsRequired' | aswTranslate}}\r\n </ng-container>\r\n <ng-container *ngIf=\"currencyInput?.errors?.minlength\">\r\n Sorry, {{control.label | aswTranslate}} must be at least {{control.minlength}} characters long.\r\n </ng-container>\r\n <ng-container *ngIf=\"currencyInput?.errors?.pattern\">\r\n {{control.customErrorMsg}}\r\n </ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #bootstrap>\r\n <ng-container [ngSwitch]=\"control.controlType\">\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"asw-mb-3\">\r\n <label for=\"{{control.id}}\" \r\n class=\"asw-input-label {{(numberInput.invalid && (numberInput.dirty || numberInput.touched)) ? 'asw-red-color' : ''}}\"\r\n [class.asw-invalid-label]=\"control.isRequired\">{{control.label | aswTranslate}}</label>\r\n <input type=\"text\" aswNumbersOnly\r\n [id]=\"control.id\"\r\n class=\"asw-input-control {{control.customClass}}\" \r\n [placeholder]=\"control.label | aswTranslate\"\r\n pattern=\"{{control.pattern}}\"\r\n [(ngModel)]=\"control.value\"\r\n #numberInput=\"ngModel\"\r\n (ngModelChange)=\"onChange(control)\"\r\n [matTooltip]=\"control.tooltip | aswTranslate\"\r\n [maxlength]=\"control.maxlength\"\r\n [minlength]=\"control.minlength\"\r\n [required]=\"control.isRequired\"\r\n [class.asw-is-invalid]=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\"\r\n [disabled]=\"control.isDisabled ? true : false\">\r\n <div *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\" class=\"invalid-feedback\">\r\n <ng-container *ngIf=\"numberInput?.errors?.required\">\r\n {{control.label | aswTranslate}} {{'FormControl.IsRequired' | aswTranslate}}\r\n </ng-container>\r\n <ng-container *ngIf=\"numberInput?.errors?.minlength\">\r\n Sorry, {{control.label | aswTranslate}} must be at least {{control.minlength}} characters long.\r\n </ng-container>\r\n <ng-container *ngIf=\"numberInput?.errors?.pattern\">\r\n {{control.customErrorMsg}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <div class=\"asw-mb-3\">\r\n <label for=\"{{control.id}}\" \r\n class=\"asw-input-label {{(currencyInput.invalid && (currencyInput.dirty || currencyInput.touched)) ? 'asw-red-color' : ''}}\"\r\n [class.asw-invalid-label]=\"control.isRequired\">{{control.label | aswTranslate}}</label>\r\n <div class=\"input-group\">\r\n <span class=\"input-group-text\" matTextPrefix>{{control.currencySymbol}} </span>\r\n <input type=\"text\" aswNumbersOnly\r\n [id]=\"control.id\"\r\n class=\"asw-input-control {{control.customClass}}\"\r\n pattern=\"{{control.pattern}}\"\r\n [placeholder]=\"control.label | aswTranslate\"\r\n [(ngModel)]=\"control.value\"\r\n #currencyInput=\"ngModel\"\r\n (ngModelChange)=\"onChange(control)\"\r\n [matTooltip]=\"control.tooltip | aswTranslate\"\r\n [maxlength]=\"control.maxlength\"\r\n [minlength]=\"control.minlength\"\r\n [class.asw-is-invalid]=\"currencyInput.invalid && (currencyInput.dirty || currencyInput.touched)\"\r\n [required]=\"control.isRequired\"\r\n [disabled]=\"control.isDisabled ? true : false\">\r\n <div *ngIf=\"currencyInput.invalid && (currencyInput.dirty || currencyInput.touched)\" class=\"invalid-feedback\">\r\n <ng-container *ngIf=\"currencyInput?.errors?.required\">\r\n {{control.label | aswTranslate}} {{'FormControl.IsRequired' | aswTranslate}}\r\n </ng-container>\r\n <ng-container *ngIf=\"currencyInput?.errors?.minlength\">\r\n Sorry, {{control.label | aswTranslate}} must be at least {{control.minlength}} characters long.\r\n </ng-container>\r\n <ng-container *ngIf=\"currencyInput?.errors?.pattern\">\r\n {{control.customErrorMsg}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template> \r\n <div class=\"asw-row\" *ngIf=\"isPreviewTemplate\">\r\n <div class=\"asw-col-md-12\" align=\"right\">\r\n <button mat-icon-button \r\n type=\"button\" \r\n matTooltip=\"{{'FormControl.Duplicate' | aswTranslate}}\" \r\n [matTooltipPosition]=\"'below'\" \r\n (click)=\"duplicateNumberControl(control)\">\r\n <div [innerHTML]=\"icons.contentCopy | aswSafeHtml\"></div>\r\n </button>\r\n <button mat-icon-button \r\n type=\"button\" \r\n matTooltip=\"{{'FormControl.Edit' | aswTranslate}}\" \r\n [matTooltipPosition]=\"'below'\" \r\n (click)=\"editNumberDialog(control)\">\r\n <div [innerHTML]=\"icons.edit | aswSafeHtml\"></div>\r\n </button>\r\n <button mat-icon-button \r\n type=\"button\" \r\n matTooltip=\"{{'FormControl.Delete' | aswTranslate}}\" \r\n [matTooltipPosition]=\"'below'\" \r\n (click)=\"deleteNumberDialog(control)\">\r\n <div [innerHTML]=\"icons.delete2 | aswSafeHtml\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ng-container>","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AswDirectiveModule, AswPipeModule, MaterialModule } from '@asoftwareworld/form-builder-pro/common';\nimport { AswTranslateModule } from '@asoftwareworld/form-builder-pro/core';\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder-pro/form-control/confirm-dialog';\nimport { AswSharedDialogModule } from '@asoftwareworld/form-builder-pro/form-control/shared';\n\nimport { AswNumber } from './number';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, AswConfirmDialogModule, AswDirectiveModule, AswSharedDialogModule, AswTranslateModule, AswPipeModule],\n declarations: [AswNumber],\n exports: [AswNumber]\n})\nexport class AswNumberModule {}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './number';\nexport * from './number-control';\nexport * from './number.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAMG;MAeU,SAAS,CAAA;AAuBC,IAAA,MAAA;IAtBnB,QAAQ,GAAG,GAAG;IACd,SAAS,GAAQ,SAAS;IAC1B,WAAW,GAAG,WAAW;IACzB,KAAK,GAAG,KAAK;AACb;;AAEG;IACM,OAAO,GAAyB,IAAI;IACpC,YAAY,GAAU,EAAE;AACxB,IAAA,YAAY,GAAqB,gBAAgB,CAAC,QAAQ;IAC1D,iBAAiB,GAAG,KAAK;IACzB,uBAAuB,GAAa,EAAE;IACtC,QAAQ,GAAoB,EAAE;AAE7B,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAiB;AACrD,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAiB;AACrD,IAAA,cAAc,GAAG,IAAI,YAAY,EAAiB;AAClD,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAiB;AAEpC,IAAA,WAAW;AACT,IAAA,aAAa;AAEzC,IAAA,WAAA,CAAmB,MAAiB,EAAA;QAAjB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAEzB,eAAe,GAAA;AACX,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE,WAAW;YAC7B,KAAK,QAAQ,EAAE;gBACX,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AACzC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAI,IAAY,CAAC;AAC9D,iBAAC,CAAC;gBACF;;YAEJ,KAAK,UAAU,EAAE;gBACb,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC3C,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAI,IAAY,CAAC;AAC9D,iBAAC,CAAC;gBACF;;;;AAKZ,IAAA,kBAAkB,CAAC,OAAsB,EAAA;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACjD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa;AACpF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACzC,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAE5C,SAAC,CAAC;;AAGN,IAAA,gBAAgB,CAAC,OAAsB,EAAA;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;AAC9C,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnI,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACzC,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;;AAE3C,SAAC,CAAC;;AAGN,IAAA,QAAQ,CAAC,OAAsB,EAAA;QAC3B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QACtD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG7B,qBAAqB,CAAC,OAAsB,EAAE,YAAmB,EAAA;AACrE,QAAA,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,aAAa,CAAC;AACvF,QAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;YACxC,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;AACvF,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AAC9B,gBAAA,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACvB,gBAAA,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,aAAC,CAAC;AACF,YAAA,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC;AAC/E,SAAC,CAAC;;IAGE,oBAAoB,CAAC,OAAsB,EAAE,YAAmB,EAAA;AACpE,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC;AAC9E,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;YACrC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,KAAI;AAC1C,gBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAc,KAAK,SAAS,CAAC,WAAW,KAAK,aAAa,CAAC;AAC9G,gBAAA,IAAI,gBAAgB,CAAC,MAAM,EAAE;oBACzB,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;;AAE1D,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAc,KAAK,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC;AACrG,gBAAA,IAAI,WAAW,CAAC,MAAM,EAAE;oBACpB,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;;AAE7D,aAAC,CAAC;AACN,SAAC,CAAC;;AAGN,IAAA,sBAAsB,CAAC,OAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;;uGAvG9B,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,knBCrBtB,okVAoKe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;2FD/IF,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,SAAS;+BACI,YAAY,EAAA,QAAA,EAAA,okVAAA,EAAA;8EAWb,OAAO,EAAA,CAAA;sBAAf;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,iBAAiB,EAAA,CAAA;sBAA1B;gBACS,iBAAiB,EAAA,CAAA;sBAA1B;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBAEyB,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBACI,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;;;AE1C9B;;;;;;AAMG;MAiBU,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAf,eAAe,EAAA,YAAA,EAAA,CAHT,SAAS,CADd,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAEpK,SAAS,CAAA,EAAA,CAAA;AAEV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAJd,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,CAAA,EAAA,CAAA;;2FAIrK,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,CAAC;oBAC/K,YAAY,EAAE,CAAC,SAAS,CAAC;oBACzB,OAAO,EAAE,CAAC,SAAS;AACtB,iBAAA;;;ACtBD;;;;;;AAMG;;ACNH;;AAEG;;;;"}