@grumptech/ngx-formly-editor 1.0.0
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.
- package/LICENSE +167 -0
- package/README.md +23 -0
- package/fesm2022/grumptech-ngx-formly-editor.mjs +1714 -0
- package/fesm2022/grumptech-ngx-formly-editor.mjs.map +1 -0
- package/package.json +46 -0
- package/types/grumptech-ngx-formly-editor.d.ts +152 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grumptech-ngx-formly-editor.mjs","sources":["../../../projects/ngx-formly-editor/services/test-value-manager.ts","../../../projects/ngx-formly-editor/services/undo-manager.ts","../../../projects/ngx-formly-editor/services/field-config-builder.ts","../../../projects/ngx-formly-editor/default-properties.ts","../../../projects/ngx-formly-editor/default-properties-by-type.ts","../../../projects/ngx-formly-editor/defaults.ts","../../../projects/ngx-formly-editor/constants.ts","../../../projects/ngx-formly-editor/services/editor-config-reader.ts","../../../projects/ngx-formly-editor/services/field-types-reader.ts","../../../projects/ngx-formly-editor/services/selection-manager.ts","../../../projects/ngx-formly-editor/services/data-manager.ts","../../../projects/ngx-formly-editor/services/field-marker.ts","../../../projects/ngx-formly-editor/services/data-validator.ts","../../../projects/ngx-formly-editor/services/initial-value-factory.ts","../../../projects/ngx-formly-editor/components/result/result-form.component.ts","../../../projects/ngx-formly-editor/components/result/result-form.component.html","../../../projects/ngx-formly-editor/components/result/result-structure.component.ts","../../../projects/ngx-formly-editor/components/result/result-structure.component.html","../../../projects/ngx-formly-editor/components/result/result-test.component.ts","../../../projects/ngx-formly-editor/components/result/result-test.component.html","../../../projects/ngx-formly-editor/components/result/result.component.ts","../../../projects/ngx-formly-editor/components/result/result.component.html","../../../projects/ngx-formly-editor/services/editor-fields-reader.ts","../../../projects/ngx-formly-editor/components/field-editor/field-editor-edit.component.ts","../../../projects/ngx-formly-editor/components/field-editor/field-editor-code.component.ts","../../../projects/ngx-formly-editor/components/field-editor/field-editor-add.component.ts","../../../projects/ngx-formly-editor/components/field-editor/field-editor.component.ts","../../../projects/ngx-formly-editor/components/field-editor/field-editor.component.html","../../../projects/ngx-formly-editor/components/test-value/test-value.component.ts","../../../projects/ngx-formly-editor/components/test-value/test-value.component.html","../../../projects/ngx-formly-editor/models.ts","../../../projects/ngx-formly-editor/components/editor/editor.component.ts","../../../projects/ngx-formly-editor/components/editor/editor.component.html","../../../projects/ngx-formly-editor/services/json-exporter.ts","../../../projects/ngx-formly-editor/config.ts","../../../projects/ngx-formly-editor/grumptech-ngx-formly-editor.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\n\n@Injectable()\nexport class TestValueManager implements OnDestroy {\n private changeSubject = new BehaviorSubject<any>(null);\n\n readonly onChange = this.changeSubject.asObservable();\n\n ngOnDestroy(): void {\n this.changeSubject.complete();\n }\n\n set(value: any): void {\n this.changeSubject.next(value);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class UndoManager<T> implements OnDestroy {\n private states: string[] = [];\n private currentState = 0;\n private change = new Subject<T>();\n\n readonly onChange = this.change.asObservable();\n\n ngOnDestroy() {\n this.change.complete();\n }\n\n push(state: T): void {\n if (this.currentState < this.states.length - 1) {\n this.states.splice(this.currentState + 1);\n }\n this.states.push(JSON.stringify(state));\n this.currentState = this.states.length - 1;\n }\n\n clear() {\n this.states.splice(0, this.states.length - 1);\n this.currentState = 0;\n }\n\n undo(): void {\n if (this.currentState > 0) {\n this.currentState--;\n this.change.next(JSON.parse(this.states[this.currentState]));\n }\n }\n\n redo(): void {\n if (this.currentState < this.states.length - 1) {\n this.currentState++;\n this.change.next(JSON.parse(this.states[this.currentState]));\n }\n }\n}\n","import { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport class FieldConfigBuilder {\n private fields: FormlyFieldConfig[] = [];\n private parentByField = new Map<FormlyFieldConfig, FormlyFieldConfig>();\n\n build(): FormlyFieldConfig[] {\n return this.fields;\n }\n\n set(fields: FormlyFieldConfig[]): FieldConfigBuilder {\n this.fields = fields;\n this.fields.forEach((i) => this.addToMapsRecursive(i));\n return this;\n }\n\n add(\n field: FormlyFieldConfig,\n idx: number,\n parent?: FormlyFieldConfig,\n ): FieldConfigBuilder {\n let list = this.fields;\n if (parent) {\n parent.fieldGroup = parent.fieldGroup || [];\n list = parent.fieldGroup;\n }\n list.splice(idx, 0, field);\n this.addToMapsRecursive(field, parent);\n return this;\n }\n\n addToFieldArray(\n field: FormlyFieldConfig,\n parent: FormlyFieldConfig,\n first = true,\n ): FieldConfigBuilder {\n if (typeof parent.fieldArray === 'object') {\n field = {\n type: 'formly-group',\n fieldGroup: first\n ? [field, parent.fieldArray]\n : [parent.fieldArray, field],\n };\n this.removeFromMapsRecursive(parent.fieldArray);\n }\n parent.fieldArray = field;\n this.addToMapsRecursive(field, parent);\n return this;\n }\n\n insertAfter(\n field: FormlyFieldConfig,\n referenceField: FormlyFieldConfig,\n ): FieldConfigBuilder {\n const parent = this.parentByField.get(referenceField);\n if (parent?.fieldArray === referenceField) {\n return this.addToFieldArray(field, parent, false);\n }\n const index = this.getIndex(\n referenceField,\n parent?.fieldGroup || this.fields,\n );\n return this.add(field, index + 1, parent);\n }\n\n update(\n field: FormlyFieldConfig,\n newField: FormlyFieldConfig,\n ): FieldConfigBuilder {\n const parent = this.parentByField.get(field);\n if (parent && parent.fieldArray === field) {\n parent.fieldArray = newField;\n } else {\n const list = parent ? parent.fieldGroup || [] : this.fields;\n const idx = this.getIndex(field, list);\n list.splice(idx, 1, newField);\n }\n this.removeFromMapsRecursive(field);\n this.addToMapsRecursive(newField);\n return this;\n }\n\n remove(field: FormlyFieldConfig): FieldConfigBuilder {\n const parent = this.parentByField.get(field);\n if (parent && parent.fieldArray === field) {\n delete parent.fieldArray;\n } else {\n const list = parent ? parent.fieldGroup || [] : this.fields;\n const idx = this.getIndex(field, list);\n list.splice(idx, 1);\n }\n this.removeFromMapsRecursive(field);\n return this;\n }\n\n private getIndex(\n field: FormlyFieldConfig,\n list: FormlyFieldConfig[],\n ): number {\n const idx = list.indexOf(field);\n if (idx === -1) {\n throw new Error(\n `Formly builder: field not found: ${JSON.stringify(field)}`,\n );\n }\n return idx;\n }\n\n private addToMapsRecursive(\n field: FormlyFieldConfig,\n parent?: FormlyFieldConfig,\n ): void {\n if (parent) {\n this.parentByField.set(field, parent);\n }\n if (typeof field.fieldArray === 'object') {\n this.addToMapsRecursive(field.fieldArray, field);\n }\n field.fieldGroup?.forEach((i) => this.addToMapsRecursive(i, field));\n }\n\n private removeFromMapsRecursive(field: FormlyFieldConfig): void {\n this.parentByField.delete(field);\n if (typeof field.fieldArray === 'object') {\n this.removeFromMapsRecursive(field.fieldArray);\n }\n field.fieldGroup?.forEach((i) => this.removeFromMapsRecursive(i));\n }\n}\n","export const defaultProperties = {\n key: {\n key: 'key',\n type: 'formly-editor-input',\n props: { label: 'key' },\n },\n id: {\n key: 'id',\n type: 'formly-editor-input',\n props: { label: 'id' },\n },\n name: {\n key: 'name',\n type: 'formly-editor-input',\n props: { label: 'name' },\n },\n type: {\n key: 'type',\n type: 'formly-editor-select',\n props: { label: 'type' },\n },\n className: {\n key: 'className',\n type: 'formly-editor-input',\n props: { label: 'className' },\n },\n template: {\n key: 'template',\n type: 'formly-editor-textarea',\n props: { label: 'template' },\n },\n defaultValue: {\n key: 'defaultValue',\n type: 'formly-editor-input',\n props: { label: 'defaultValue' },\n },\n hide: {\n key: 'hide',\n type: 'formly-editor-checkbox',\n props: { label: 'hide' },\n },\n focus: {\n key: 'focus',\n type: 'formly-editor-checkbox',\n props: { label: 'focus' },\n },\n fieldGroupClassName: {\n key: 'fieldGroupClassName',\n type: 'formly-editor-input',\n props: { label: 'fieldGroupClassName' },\n },\n 'props.type': {\n key: 'props.type',\n type: 'formly-editor-input',\n props: { label: 'type' },\n },\n 'props.label': {\n key: 'props.label',\n type: 'formly-editor-input',\n props: { label: 'label' },\n },\n 'props.placeholder': {\n key: 'props.placeholder',\n type: 'formly-editor-input',\n props: { label: 'placeholder' },\n },\n 'props.disabled': {\n key: 'props.disabled',\n type: 'formly-editor-checkbox',\n props: { label: 'disabled' },\n },\n 'props.options': {\n key: 'props.options',\n type: 'formly-editor-array-dialog',\n props: {\n label: 'options',\n dialogTitle: 'Options',\n field: {\n fieldGroup: [\n {\n key: 'label',\n type: 'formly-editor-input',\n props: { label: 'Label' },\n },\n {\n key: 'value',\n type: 'formly-editor-input',\n props: { label: 'Value' },\n },\n ],\n },\n },\n },\n 'props.rows': {\n key: 'props.rows',\n type: 'formly-editor-input-number',\n props: { label: 'rows' },\n },\n 'props.cols': {\n key: 'props.cols',\n type: 'formly-editor-input-number',\n props: { label: 'cols' },\n },\n 'props.description': {\n key: 'props.description',\n type: 'formly-editor-input',\n props: { label: 'description' },\n },\n 'props.hidden': {\n key: 'props.hidden',\n type: 'formly-editor-checkbox',\n props: { label: 'hidden' },\n },\n 'props.max': {\n key: 'props.max',\n type: 'formly-editor-input-number',\n props: { label: 'max' },\n },\n 'props.min': {\n key: 'props.min',\n type: 'formly-editor-input-number',\n props: { label: 'min' },\n },\n 'props.minLength': {\n key: 'props.minLength',\n type: 'formly-editor-input-number',\n props: { label: 'minLength' },\n },\n 'props.maxLength': {\n key: 'props.maxLength',\n type: 'formly-editor-input-number',\n props: { label: 'maxLength' },\n },\n 'props.pattern': {\n key: 'props.pattern',\n type: 'formly-editor-input',\n props: { label: 'pattern' },\n },\n 'props.required': {\n key: 'props.required',\n type: 'formly-editor-checkbox',\n props: { label: 'required' },\n },\n 'props.tabindex': {\n key: 'props.tabindex',\n type: 'formly-editor-input-number',\n props: { label: 'tabindex' },\n },\n 'props.readonly': {\n key: 'props.readonly',\n type: 'formly-editor-checkbox',\n props: { label: 'readonly' },\n },\n 'props.step': {\n key: 'props.step',\n type: 'formly-editor-input-number',\n props: { label: 'step' },\n },\n spacing: {},\n 'props.url': {\n key: 'props.url',\n type: 'formly-editor-input',\n props: { label: 'url' },\n },\n 'props.method': {\n key: 'props.method',\n type: 'formly-editor-input',\n props: { label: 'method' },\n },\n 'props.valueKey': {\n key: 'props.valueKey',\n type: 'formly-editor-input',\n props: { label: 'value key' },\n },\n 'props.labelKey': {\n key: 'props.labelKey',\n type: 'formly-editor-input',\n props: { label: 'label key' },\n },\n 'props.inputGroups': {\n key: 'props.inputGroups',\n type: 'formly-editor-select',\n props: {\n label: 'input groups',\n multiple: true,\n options: [\n { label: 'path', value: 'path' },\n { label: 'query', value: 'query' },\n { label: 'body', value: 'body' },\n { label: 'result', value: 'result' },\n ],\n },\n },\n 'props.responseType': {\n key: 'props.responseType',\n type: 'formly-editor-select',\n props: {\n label: 'response type',\n options: [\n { label: 'none', value: undefined },\n { label: 'arraybuffer', value: 'arraybuffer' },\n { label: 'blob', value: 'blob' },\n { label: 'json', value: 'json' },\n { label: 'text', value: 'text' },\n ],\n },\n },\n 'props.addButtonLabel': {\n key: 'props.addButtonLabel',\n type: 'formly-editor-input',\n props: { label: 'add button label' },\n },\n 'props.emptyArrayMessage': {\n key: 'props.emptyArrayMessage',\n type: 'formly-editor-input',\n props: { label: 'empty array message' },\n },\n 'props.navigationDisabled': {\n key: 'props.navigationDisabled',\n type: 'formly-editor-checkbox',\n props: { label: 'disable navigation' },\n },\n 'props.action': {\n key: 'props.action',\n type: 'formly-editor-select',\n props: {\n label: 'action',\n options: [\n { label: 'send-and-clear', value: 'send-and-clear' },\n { label: 'send-and-close', value: 'send-and-close' },\n { label: 'send-and-navigate', value: 'send-and-navigate' },\n { label: 'send-and-show-message', value: 'send-and-show-message' },\n ],\n },\n },\n 'props.autoRun': {\n key: 'props.autoRun',\n type: 'formly-editor-checkbox',\n props: { label: 'run automatically' },\n },\n 'props.form': {\n key: 'props.form',\n type: 'formly-editor-input',\n props: { label: 'form' },\n },\n 'props.menu': {\n key: 'props.menu',\n type: 'formly-editor-menu-dialog',\n props: { label: 'menu' },\n },\n 'props.pages': {\n key: 'props.pages',\n type: 'formly-editor-array-dialog',\n props: {\n label: 'pages',\n dialogTitle: 'Pages',\n width: 800,\n field: {\n fieldGroup: [\n {\n key: 'url',\n type: 'formly-editor-input',\n props: { label: 'url' },\n },\n {\n key: 'breadcrumbParts',\n type: 'formly-editor-array-dialog',\n props: {\n label: 'breadcrumb parts',\n dialogTitle: 'Breadcrumb parts',\n width: 750,\n field: {\n fieldGroup: [\n {\n key: 'label',\n type: 'formly-editor-input',\n props: { label: 'label' },\n },\n {\n key: 'url',\n type: 'formly-editor-input',\n props: { label: 'url' },\n },\n ],\n },\n },\n },\n ],\n },\n },\n },\n};\n","const defaultProperties = [\n 'key',\n 'type',\n 'props.required',\n 'props.label',\n 'props.placeholder',\n 'props.description',\n 'hide',\n 'props.disabled',\n 'props.readonly',\n];\nconst propertiesWithOptions = [\n 'key',\n 'type',\n 'props.required',\n 'props.label',\n 'props.placeholder',\n 'props.description',\n 'hide',\n 'props.disabled',\n 'props.readonly',\n 'props.options',\n];\nconst propertiesArrayType = [\n 'key',\n 'type',\n 'props.required',\n 'props.label',\n 'hide',\n 'props.disabled',\n 'props.readonly',\n 'props.emptyArrayMessage',\n 'props.addButtonLabel',\n];\nconst propertiesActionType = [\n 'key',\n 'type',\n 'props.inputGroups',\n 'props.label',\n 'props.url',\n 'props.method',\n 'props.responseType',\n 'props.action',\n 'hide',\n 'props.disabled',\n];\n\nexport const defaultPropertiesByType = {\n action: propertiesActionType,\n app: ['spacing', 'type', 'props.menu', 'props.pages'],\n 'app-breadcrumb': ['key', 'type'],\n 'app-navigation': ['key', 'type'],\n array: propertiesArrayType,\n boolean: defaultProperties,\n checkbox: defaultProperties,\n datepicker: defaultProperties,\n datetimepicker: defaultProperties,\n 'dialog-button': ['key', 'type', 'props.label', 'props.form', 'hide'],\n enum: propertiesWithOptions,\n 'error-message': defaultProperties,\n 'formly-template': ['spacing', 'template'],\n grid: propertiesArrayType,\n input: defaultProperties,\n integer: defaultProperties,\n link: ['key', 'type', 'props.label', 'props.url', 'hide'],\n 'load-action': propertiesActionType\n .map((i) => (i === 'props.action' ? 'spacing' : i))\n .concat(['props.autoRun']),\n 'formly-group': ['key', 'type', 'hide', 'props.disabled'],\n message: defaultProperties,\n 'message-container': ['spacing', 'type'],\n number: defaultProperties,\n multicheckbox: propertiesWithOptions,\n object: [\n 'key',\n 'type',\n 'props.required',\n 'props.label',\n 'hide',\n 'props.disabled',\n 'props.readonly',\n ],\n page: ['props.navigationDisabled', 'type'],\n 'save-action': propertiesActionType.map((i) =>\n i === 'props.action' ? 'spacing' : i,\n ),\n radio: propertiesWithOptions,\n select: propertiesWithOptions,\n string: defaultProperties,\n textarea: defaultProperties.slice().concat(['props.rows']),\n 'url-select': [\n 'key',\n 'type',\n 'props.required',\n 'props.label',\n 'props.placeholder',\n 'props.description',\n 'hide',\n 'props.disabled',\n 'props.readonly',\n 'props.url',\n 'props.valueKey',\n 'props.labelKey',\n ],\n};\n","import { FormlyFieldConfig } from '@ngx-formly/core';\nimport { EditorConfig } from './config';\nimport { defaultProperties } from './default-properties';\nimport { defaultPropertiesByType } from './default-properties-by-type';\n\nexport const defaultEditorConfig: EditorConfig = {\n groupTypes: ['formly-group', 'object', 'app', 'page', 'message-container'],\n properties: defaultProperties,\n propertiesByType: defaultPropertiesByType,\n formRenderConfig: {\n editFormFieldConverter: (field: FormlyFieldConfig) => {\n field.hide && delete field.hide;\n field.expressions && delete field.expressions;\n },\n testFormFieldConverter: () => {},\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { EditorConfig } from './config';\n\nexport const FORMLY_EDITOR_CONFIG = new InjectionToken<EditorConfig>(\n 'formlyEditorConfig',\n);\n","import { Injectable, inject } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormRenderConfig } from '../config';\nimport { defaultEditorConfig } from '../defaults';\nimport { FORMLY_EDITOR_CONFIG } from '../constants';\n\n@Injectable()\nexport class EditorConfigReader {\n public readonly groupTypes: string[];\n public readonly properties: { [key: string]: FormlyFieldConfig };\n public readonly propertiesByType: { [key: string]: string[] };\n public readonly formRenderConfig: FormRenderConfig;\n\n constructor() {\n const config = inject(FORMLY_EDITOR_CONFIG);\n const defaults = defaultEditorConfig;\n this.groupTypes = config.groupTypes ?? defaults.groupTypes ?? [];\n this.properties = Object.assign({}, defaults.properties, config.properties);\n this.propertiesByType = Object.assign(\n {},\n defaults.propertiesByType,\n config.propertiesByType,\n );\n this.formRenderConfig = Object.assign(\n {},\n defaults.formRenderConfig,\n config.formRenderConfig,\n );\n }\n}\n","import {\n FieldArrayType,\n FormlyConfig,\n FormlyFieldConfig,\n} from '@ngx-formly/core';\nimport { Injectable, inject } from '@angular/core';\nimport { EditorConfigReader } from './editor-config-reader';\n\n@Injectable()\nexport class FieldTypesReader {\n private formlyConfig = inject(FormlyConfig);\n private groupTypes = inject(EditorConfigReader).groupTypes;\n private initialized = false;\n private fieldTypes: readonly string[] = [];\n private fieldTypesSet = new Set<string>();\n private fieldArrayTypesSet = new Set<string>();\n private fieldGroupTypesSet = new Set<string>();\n\n private initialize() {\n if (this.initialized) {\n return;\n }\n const fieldTypes = this.formlyConfig.types;\n this.fieldTypes = Object.freeze(\n Object.keys(fieldTypes)\n .filter((i) => !i.startsWith('formly-editor-'))\n .sort((x, y) => x.localeCompare(y)),\n );\n this.fieldTypesSet = new Set(this.fieldTypes);\n this.fieldGroupTypesSet = new Set(this.groupTypes);\n this.fieldArrayTypesSet = new Set(\n this.fieldTypes.filter(\n (i) => fieldTypes[i].component?.prototype instanceof FieldArrayType,\n ),\n );\n this.initialized = true;\n }\n\n get(): readonly string[] {\n this.initialize();\n return this.fieldTypes;\n }\n\n getType(field: FormlyFieldConfig): string {\n this.initialize();\n if (typeof field.type === 'string') {\n return field.type;\n }\n return field.template ? 'formly-template' : 'formly-group';\n }\n\n getStandardTypes(): readonly string[] {\n this.initialize();\n return this.fieldTypes.filter(\n (i) =>\n i !== 'formly-template' &&\n !this.fieldGroupTypesSet.has(i) &&\n !this.fieldArrayTypesSet.has(i),\n );\n }\n\n getGroupTypes(): readonly string[] {\n this.initialize();\n return this.fieldTypes.filter((i) => this.fieldGroupTypesSet.has(i));\n }\n\n getArrayTypes(): readonly string[] {\n this.initialize();\n return this.fieldTypes.filter((i) => this.fieldArrayTypesSet.has(i));\n }\n\n hasExistingType(field: FormlyFieldConfig): boolean {\n this.initialize();\n return (\n !('type' in field) ||\n (typeof field.type === 'string' && this.fieldTypesSet.has(field.type))\n );\n }\n\n isFieldGroup(field: FormlyFieldConfig): boolean {\n this.initialize();\n return this.fieldGroupTypesSet.has(this.getType(field));\n }\n\n isFieldArray(field: FormlyFieldConfig): boolean {\n this.initialize();\n return (\n typeof field.type === 'string' && this.fieldArrayTypesSet.has(field.type)\n );\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\n\n@Injectable()\nexport class SelectionManager<T> implements OnDestroy {\n private selection = new Set<T>();\n private selectSubject = new BehaviorSubject<T | null>(null);\n\n readonly onSelect = this.selectSubject.asObservable();\n\n ngOnDestroy(): void {\n this.selectSubject.complete();\n }\n\n has(key: T): boolean {\n return this.selection.has(key);\n }\n\n get(): T[] {\n return [...this.selection.keys()];\n }\n\n getLast(): T | null {\n return this.selectSubject.value;\n }\n\n set(selection: T[]): void {\n this.selection = new Set<T>(selection);\n const last = this.selectSubject.value;\n this.next(last && !this.selection.has(last) ? null : last);\n }\n\n replace(oldKey: T, newKey: T) {\n if (this.selection.has(oldKey)) {\n this.selection.delete(oldKey);\n this.selection.add(newKey);\n this.next(newKey);\n }\n }\n\n clear(): void {\n if (this.selection.size !== 0) {\n this.selection.clear();\n }\n this.next(null);\n }\n\n select(key: T | null, ctrlKey: boolean, shiftKey: boolean): void {\n if (key === null) {\n return this.clear();\n }\n if (ctrlKey || shiftKey) {\n return this.toggle(key);\n }\n if (this.selection.has(key) && this.selection.size === 1) {\n return this.next(key);\n }\n this.selection.clear();\n this.selection.add(key);\n this.next(key);\n }\n\n private toggle(key: T): void {\n if (this.selection.has(key)) {\n this.selection.delete(key);\n this.next(null);\n } else {\n this.selection.add(key);\n this.next(key);\n }\n }\n\n private next(key: T | null) {\n this.selectSubject.next(key);\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { UndoManager } from './undo-manager';\nimport { FieldConfigBuilder } from './field-config-builder';\nimport { FieldTypesReader } from './field-types-reader';\nimport { SelectionManager } from './selection-manager';\n\n@Injectable()\nexport class DataManager implements OnDestroy {\n readonly onChange: Observable<FormlyFieldConfig[]>;\n\n private selection = inject(SelectionManager<FormlyFieldConfig>);\n private undoManager = inject(UndoManager<FormlyFieldConfig[]>);\n private formlyFieldTypes = inject(FieldTypesReader);\n private fields: FormlyFieldConfig[] = [];\n private change = new BehaviorSubject<FormlyFieldConfig[]>([]);\n\n constructor() {\n this.onChange = this.change.asObservable();\n this.undoManager.onChange.subscribe((state) => {\n this.selection.clear();\n this.fields.splice(0);\n this.fields.push(...state);\n this.change.next(this.fields);\n });\n }\n\n ngOnDestroy(): void {\n this.change.complete();\n }\n\n setFields(fields: FormlyFieldConfig[]): void {\n this.undoManager.clear();\n this.selection.clear();\n this.fields = fields;\n this.update();\n }\n\n getFields(): FormlyFieldConfig[] {\n return this.fields;\n }\n\n addFields(fields: FormlyFieldConfig[]): void {\n if (fields.length === 0) {\n return;\n }\n const selectedField = this.selection.getLast();\n const configBuilder = new FieldConfigBuilder().set(this.fields);\n if (!selectedField) {\n fields.forEach((i) => configBuilder.add(i, this.fields.length));\n } else if (this.formlyFieldTypes.isFieldGroup(selectedField)) {\n fields.forEach((i, idx) =>\n configBuilder.add(i, idx, selectedField ?? undefined),\n );\n } else if (!this.formlyFieldTypes.isFieldArray(selectedField)) {\n fields\n .reverse()\n .forEach((i) => configBuilder.insertAfter(i, selectedField));\n } else if (typeof selectedField.fieldArray === 'object') {\n configBuilder.update(selectedField.fieldArray, {\n type: 'formly-group',\n fieldGroup: [...fields, selectedField.fieldArray],\n });\n } else {\n configBuilder.addToFieldArray(\n fields.length > 1\n ? { type: 'formly-group', fieldGroup: fields }\n : fields[0],\n selectedField,\n );\n }\n this.update();\n }\n\n updateField(oldField: FormlyFieldConfig, newField: FormlyFieldConfig): void {\n const configBuilder = new FieldConfigBuilder().set(this.fields);\n configBuilder.update(oldField, newField);\n this.selection.replace(oldField, newField);\n this.update();\n }\n\n moveField(\n field: FormlyFieldConfig,\n targetIndex: number,\n target?: FormlyFieldConfig,\n ): void {\n const configBuilder = new FieldConfigBuilder().set(this.fields);\n configBuilder.remove(field);\n if (!target || !this.formlyFieldTypes.isFieldArray(target)) {\n configBuilder.add(field, targetIndex, target);\n } else {\n configBuilder.addToFieldArray(field, target, !targetIndex);\n }\n this.update();\n }\n\n removeSelectedFields(): void {\n const fields = this.getSelectedFields();\n if (fields.length) {\n const configBuilder = new FieldConfigBuilder().set(this.fields);\n fields.forEach((i) => configBuilder.remove(i));\n this.selection.clear();\n this.update();\n }\n }\n\n getSelectedFields(): FormlyFieldConfig[] {\n return this.getSelectedFieldsRecursive(this.fields);\n }\n\n private getSelectedFieldsRecursive(\n fields: FormlyFieldConfig[],\n ): FormlyFieldConfig[] {\n return fields.flatMap((i) => {\n if (this.selection.has(i)) {\n return i;\n }\n const children = (\n typeof i.fieldArray === 'object' ? [i.fieldArray] : []\n ).concat(i.fieldGroup || []);\n return this.getSelectedFieldsRecursive(children);\n });\n }\n\n private update(): void {\n this.undoManager.push(this.fields);\n this.change.next(this.fields);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FieldMarker {\n private readonly FORMLY_DESIGNER_CLASS_PREFIX =\n 'formly-designer-class-prefix_';\n\n markField(field: FormlyFieldConfig, id: string): void {\n field.className =\n (field.className ? `${field.className} ` : '') +\n `${this.FORMLY_DESIGNER_CLASS_PREFIX}${id}`;\n }\n\n getIdFromElement(element: Element): string | null {\n for (let i = 0, l = element.classList.length; i < l; i++) {\n const cssClass = element.classList[i];\n if (cssClass.startsWith(this.FORMLY_DESIGNER_CLASS_PREFIX)) {\n return cssClass.replace(this.FORMLY_DESIGNER_CLASS_PREFIX, '');\n }\n }\n return null;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { toFlatArray } from '@grumptech/formly-converters';\nimport { FieldTypesReader } from './field-types-reader';\n\n@Injectable()\nexport class DataValidator {\n private fieldTypesReader = inject(FieldTypesReader);\n\n validate(fields: FormlyFieldConfig[]): Map<FormlyFieldConfig, string> {\n const result = new Map<FormlyFieldConfig, string>();\n if (fields.length > 1) {\n this.validateField({ fieldGroup: fields }, result);\n }\n toFlatArray(fields).forEach((i, idx) => {\n if (\n idx !== 0 ||\n fields.length > 1 ||\n !this.fieldTypesReader.isFieldArray(i)\n ) {\n this.validateField(i, result);\n }\n });\n return result;\n }\n\n private validateField(\n field: FormlyFieldConfig,\n messages: Map<FormlyFieldConfig, string>,\n ): void {\n if (!this.fieldTypesReader.hasExistingType(field)) {\n messages.set(field, `Unknown field type '${field.type}'`);\n }\n if (field.fieldGroup?.length) {\n field.fieldGroup\n ?.filter((i) => !i.key && this.fieldTypesReader.isFieldArray(i))\n ?.forEach((i) =>\n messages.set(i, 'Field array in a group should have a key'),\n );\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { FieldTypesReader } from './field-types-reader';\n\n@Injectable()\nexport class InitialValueFactory {\n private fieldTypesReader = inject(FieldTypesReader);\n\n create(fields: FormlyFieldConfig[], defaultArraySize: 0 | 1 = 0): any {\n const result = this.createRecursive(fields, defaultArraySize);\n return defaultArraySize ? result : Array.isArray(result) ? [] : {};\n }\n\n private createRecursive(\n fields: FormlyFieldConfig[],\n defaultArraySize: 0 | 1,\n ): any {\n const result: any = {};\n let arrayResult: any = null;\n fields.forEach((i) => {\n const value = this.createRecursiveForField(i, defaultArraySize);\n if (i.key) {\n result[`${i.key}`] = value;\n } else if (typeof value === 'object') {\n Array.isArray(value)\n ? (arrayResult = value)\n : Object.assign(result, value);\n }\n });\n return Object.keys(result).length ? result : arrayResult;\n }\n\n private createRecursiveForField(\n field: FormlyFieldConfig,\n defaultArraySize: 0 | 1,\n ) {\n if (this.fieldTypesReader.isFieldGroup(field) && field.fieldGroup) {\n return this.createRecursive(field.fieldGroup, defaultArraySize);\n }\n if (this.fieldTypesReader.isFieldArray(field)) {\n if (defaultArraySize === 0) {\n return [];\n }\n const fieldGroup =\n typeof field.fieldArray === 'object'\n ? field.fieldArray.fieldGroup\n : null;\n return fieldGroup\n ? [this.createRecursive(fieldGroup, defaultArraySize)]\n : [null];\n }\n return null;\n }\n}\n","import {\n Component,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n inject,\n signal,\n OnInit,\n DestroyRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { debounceTime, fromEvent } from 'rxjs';\nimport { FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\nimport { toFlatArray } from '@grumptech/formly-converters';\nimport { DataManager } from '../../services/data-manager';\nimport { FieldMarker } from '../../services/field-marker';\nimport { SelectionManager } from '../../services/selection-manager';\nimport { DataValidator } from '../../services/data-validator';\nimport { InitialValueFactory } from '../../services/initial-value-factory';\nimport { EditorConfigReader } from '../../services/editor-config-reader';\n\ninterface Rect {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\ninterface OverlayField {\n rect: Rect;\n field: FormlyFieldConfig;\n}\n\n@Component({\n selector: 'formly-designer-result-form',\n templateUrl: './result-form.component.html',\n styleUrl: './result-form.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, FormlyForm],\n})\nexport class ResultFormComponent implements OnInit {\n protected overlayFields = signal<OverlayField[]>([]);\n protected form = new FormGroup({});\n protected formlyFields = signal<FormlyFieldConfig[]>([]);\n protected model = signal<any>(undefined);\n\n private elementRef = inject(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private dataManager = inject(DataManager);\n private selection = inject(SelectionManager<FormlyFieldConfig>);\n private marker = inject(FieldMarker);\n private dataValidator = inject(DataValidator);\n private initialValueFactory = inject(InitialValueFactory);\n private formRenderConfig = inject(EditorConfigReader).formRenderConfig;\n private changeDectorRef = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n fromEvent(window, 'resize')\n .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(200))\n .subscribe(() => this.render(this.dataManager.getFields()));\n this.dataManager.onChange.subscribe((fields) => this.render(fields));\n this.selection.onSelect.subscribe(() =>\n this.changeDectorRef.detectChanges(),\n );\n }\n\n protected isSelected(field: FormlyFieldConfig): boolean {\n return this.selection.has(field);\n }\n\n protected handleClick(field: FormlyFieldConfig, event: MouseEvent): void {\n this.selection.select(field, event.ctrlKey, event.shiftKey);\n }\n\n protected overlayFieldTrackBy(\n _index: number,\n item: OverlayField,\n ): FormlyFieldConfig {\n return item.field;\n }\n\n private render(fields: FormlyFieldConfig[]) {\n const fieldByIdx = new Map(\n toFlatArray(fields).map((i, idx) => [`${idx}`, i]),\n );\n const formlyFields = structuredClone(fields);\n const validationMessages = this.dataValidator.validate(formlyFields);\n toFlatArray(formlyFields).forEach((i, idx) => {\n this.formRenderConfig.editFormFieldConverter(i);\n this.marker.markField(i, `${idx}`);\n const validationMessage = validationMessages.get(i);\n if (validationMessage) {\n this.markInvalidField(i, validationMessage);\n }\n });\n this.clearForm(this.initialValueFactory.create(formlyFields, 1));\n this.formlyFields.set(formlyFields);\n this.changeDetectorRef.detectChanges();\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n this.overlayFields.set(\n Object.values(\n (this.elementRef.nativeElement as Element).getElementsByTagName(\n 'formly-field',\n ),\n )\n .map((i) => ({\n rect: this.calculateRect(i, rect),\n field: fieldByIdx.get(\n this.marker.getIdFromElement(i) as string,\n ) as FormlyFieldConfig,\n }))\n .filter((i) => i.field),\n );\n }\n private markInvalidField(field: FormlyFieldConfig, message: string): void {\n field.type = 'formly-template';\n field.template = message;\n if (field.fieldArray) {\n delete field.fieldArray;\n }\n if (field.fieldGroup) {\n delete field.fieldGroup;\n }\n }\n private clearForm(value: any): void {\n Object.keys(this.form.controls).forEach((i) => this.form.removeControl(i));\n this.form.reset(value);\n this.model.set(value);\n }\n private calculateRect(element: Element, container: DOMRect): Rect {\n const result: Rect = {\n left: Number.MAX_VALUE,\n top: Number.MAX_VALUE,\n right: 0,\n bottom: 0,\n };\n [element]\n .concat(Object.values(element.querySelectorAll('*')))\n .forEach((i) => {\n const rect = i.getBoundingClientRect();\n if (rect.width && rect.height) {\n result.left = Math.min(rect.left, result.left);\n result.top = Math.min(rect.top, result.top);\n result.right = Math.max(rect.right, result.right);\n result.bottom = Math.max(rect.bottom, result.bottom);\n }\n });\n return {\n left: Math.max(result.left - container.left, 0),\n top: Math.max(result.top - container.top, 0),\n right: Math.min(container.right - result.right, container.width),\n bottom: Math.min(container.bottom - result.bottom, container.height),\n };\n }\n}\n","<form [formGroup]=\"form\">\n <formly-form\n [fields]=\"formlyFields()\"\n [form]=\"form\"\n [model]=\"model()\"\n inert=\"true\"\n />\n</form>\n<div class=\"overlay\">\n @for (field of overlayFields(); track overlayFieldTrackBy($index, field)) {\n <div\n [class]=\"'overlay_field' + (isSelected(field.field) ? '--selected' : '')\"\n [style.left]=\"field.rect.left + 'px'\"\n [style.top]=\"field.rect.top + 'px'\"\n [style.right]=\"field.rect.right + 'px'\"\n [style.bottom]=\"field.rect.bottom + 'px'\"\n (click)=\"handleClick(field.field, $event)\"\n ></div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n} from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { map, Observable } from 'rxjs';\nimport {\n MatxDragDropTree,\n DragDropNode,\n DroppedEvent,\n} from '@grumptech/ngx-matx/drag-drop-tree';\nimport { DataManager } from '../../services/data-manager';\nimport { FieldTypesReader } from '../../services/field-types-reader';\nimport { SelectionManager } from '../../services/selection-manager';\nimport { DataValidator } from '../../services/data-validator';\n\n@Component({\n selector: 'formly-designer-result-structure',\n templateUrl: './result-structure.component.html',\n styleUrl: './result-structure.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, MatxDragDropTree, MatIcon],\n})\nexport class ResultStructureComponent implements OnInit {\n nodes!: Observable<DragDropNode<FormlyFieldConfig>[]>;\n fieldTypes: readonly string[] = [];\n\n private formlyFieldTypes = inject(FieldTypesReader);\n private dataManager = inject(DataManager);\n private dataValidator = inject(DataValidator);\n private selection = inject(SelectionManager<FormlyFieldConfig>);\n private validationMessages?: Map<FormlyFieldConfig, string>;\n private changeDectorRef = inject(ChangeDetectorRef);\n\n ngOnInit() {\n this.fieldTypes = this.formlyFieldTypes.get();\n this.nodes = this.dataManager.onChange.pipe(\n map((fields: FormlyFieldConfig[]) => {\n this.validationMessages = this.dataValidator.validate(fields);\n return this.toDragDropNodes(fields);\n }),\n );\n this.selection.onSelect.subscribe(() =>\n this.changeDectorRef.detectChanges(),\n );\n }\n\n protected handleDropped(event: DroppedEvent<FormlyFieldConfig>) {\n this.dataManager.moveField(\n event.currentArray[event.currentIndex].data,\n event.targetIndex,\n event.targetParent?.data,\n );\n }\n\n protected handleClick(field: FormlyFieldConfig, event: MouseEvent) {\n this.selection.select(field, event.ctrlKey, event.shiftKey);\n }\n\n protected isSelected(field: FormlyFieldConfig): boolean {\n return this.selection.has(field);\n }\n\n protected getFieldType(field: FormlyFieldConfig): string {\n return this.formlyFieldTypes.getType(field);\n }\n\n protected treeTrackBy(\n _index: number,\n item: DragDropNode<FormlyFieldConfig>,\n ): FormlyFieldConfig {\n return item.data;\n }\n\n protected getWarning(field: FormlyFieldConfig): string | undefined {\n return this.validationMessages?.get(field);\n }\n\n private toDragDropNodes(\n fields: FormlyFieldConfig[],\n ): DragDropNode<FormlyFieldConfig>[] {\n return fields.map((i) => {\n if (this.formlyFieldTypes.isFieldGroup(i)) {\n return {\n data: i,\n childNodes: this.toDragDropNodes(i.fieldGroup || []),\n };\n }\n if (this.formlyFieldTypes.isFieldArray(i)) {\n return {\n data: i,\n childNodes:\n typeof i.fieldArray === 'object'\n ? this.toDragDropNodes([i.fieldArray])\n : [],\n };\n }\n return { data: i };\n });\n }\n}\n","<matx-drag-drop-tree\n [nodes]=\"(nodes | async) ?? []\"\n [trackBy]=\"treeTrackBy\"\n (dropped)=\"handleDropped($event)\"\n class=\"tree\"\n>\n <ng-template #headerTemplate let-data=\"data\">\n <div\n (click)=\"handleClick(data, $event)\"\n [class]=\"'tree-node-header' + (isSelected(data) ? '--selected' : '')\"\n >\n <strong title=\"type\">[{{ getFieldType(data) }}]</strong>\n <span title=\"key\"> {{ data?.key }} </span>\n <em title=\"label\">{{ data?.props?.label }}</em>\n @if (getWarning(data)) {\n <span class=\"icon-container\">\n \n <mat-icon [title]=\"getWarning(data)\" color=\"warn\">warning</mat-icon>\n </span>\n }\n </div>\n </ng-template>\n</matx-drag-drop-tree>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { UntypedFormGroup } from '@angular/forms';\nimport {\n FormlyFieldConfig,\n FormlyForm,\n FormlyFormOptions,\n} from '@ngx-formly/core';\nimport { MatButton } from '@angular/material/button';\nimport { toFlatArray } from '@grumptech/formly-converters';\nimport { InitialValueFactory } from '../../services/initial-value-factory';\nimport { DataManager } from '../../services/data-manager';\nimport { TestValueManager } from '../../services/test-value-manager';\nimport { EditorConfigReader } from '../../services/editor-config-reader';\n\n@Component({\n selector: 'formly-designer-result-test',\n templateUrl: './result-test.component.html',\n styleUrl: './result-test.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButton, FormlyForm],\n})\nexport class ResultTestComponent implements AfterViewInit {\n form = new UntypedFormGroup({});\n formlyOptions: FormlyFormOptions = {};\n formlyFields: FormlyFieldConfig[] = [];\n model: any;\n\n private dataManager = inject(DataManager);\n private initialValueFactory = inject(InitialValueFactory);\n private testValueManager = inject(TestValueManager);\n private formRenderConfig = inject(EditorConfigReader).formRenderConfig;\n private destroyRef = inject(DestroyRef);\n private fields: FormlyFieldConfig[] = [];\n\n constructor() {\n this.fields = this.dataManager.getFields();\n this.reset();\n }\n\n ngAfterViewInit() {\n this.testValueManager.set(this.model);\n this.form.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.testValueManager.set(this.model));\n }\n\n reset(): void {\n const value = this.initialValueFactory.create(this.fields);\n this.model = value;\n this.form.reset(value);\n const formlyFields = structuredClone(this.fields);\n toFlatArray(formlyFields).forEach((i) =>\n this.formRenderConfig.testFormFieldConverter(i),\n );\n this.formlyFields = formlyFields;\n this.testValueManager.set(this.model);\n }\n\n validate(): void {\n this.form.markAsDirty();\n this.form.markAllAsTouched();\n }\n}\n","<formly-form\n [form]=\"form\"\n [fields]=\"formlyFields\"\n [options]=\"formlyOptions\"\n [model]=\"model\"\n/>\n<div class=\"button-container\">\n <button mat-stroked-button (click)=\"reset()\">Clear</button>\n <button mat-stroked-button (click)=\"validate()\">Validate</button>\n</div>\n","import { DataManager } from '../../services/data-manager';\nimport {\n Component,\n AfterContentInit,\n model,\n ChangeDetectionStrategy,\n signal,\n inject,\n} from '@angular/core';\nimport { jsonParse, jsonStringify } from '@grumptech/formly-converters';\nimport { MatxPanel, MatxPanelHeaderButton } from '@grumptech/ngx-matx/panel';\nimport { CodeEditor } from '@grumptech/ngx-basic-ui/code-editor';\nimport { FormEditorMode } from '../../modes';\nimport { ResultFormComponent } from './result-form.component';\nimport { ResultStructureComponent } from './result-structure.component';\nimport { ResultTestComponent } from './result-test.component';\n\n@Component({\n selector: 'formly-designer-result',\n templateUrl: './result.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ResultFormComponent,\n ResultStructureComponent,\n ResultTestComponent,\n MatxPanel,\n MatxPanelHeaderButton,\n CodeEditor,\n ],\n})\nexport class ResultComponent implements AfterContentInit {\n readonly mode = model<FormEditorMode>('select');\n protected data = signal('');\n protected readonly formatter = (data: string) => {\n const result = jsonParse(data);\n return result.success ? jsonStringify(result.result) : data;\n };\n\n private dataManager = inject(DataManager);\n\n ngAfterContentInit() {\n this.dataManager.onChange.subscribe((fields) =>\n this.data.set(JSON.stringify(fields)),\n );\n }\n\n protected setMode(mode: FormEditorMode): void {\n this.mode.set(mode);\n }\n}\n","<matx-panel headerTitle=\"Form\">\n <matx-panel-header-button\n icon=\"highlight_alt\"\n tooltip=\"Select fields\"\n (click)=\"setMode('select')\"\n [selected]=\"mode() === 'select'\"\n />\n <matx-panel-header-button\n icon=\"density_small\"\n tooltip=\"Structure\"\n (click)=\"setMode('structure')\"\n [selected]=\"mode() === 'structure'\"\n />\n <matx-panel-header-button\n icon=\"code\"\n tooltip=\"View code\"\n (click)=\"setMode('code')\"\n [selected]=\"mode() === 'code'\"\n />\n <matx-panel-header-button\n icon=\"play_arrow\"\n tooltip=\"Test form\"\n (click)=\"setMode('test')\"\n [selected]=\"mode() === 'test'\"\n />\n @switch (mode()) {\n @case (\"structure\") {\n <formly-designer-result-structure />\n }\n @case (\"code\") {\n <b-code-editor\n [disabled]=\"true\"\n [data]=\"data()\"\n [formatter]=\"formatter\"\n />\n }\n @case (\"select\") {\n <formly-designer-result-form />\n }\n @case (\"test\") {\n <formly-designer-result-test />\n }\n }\n</matx-panel>\n","import { Injectable, inject } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { FieldTypesReader } from './field-types-reader';\nimport { EditorConfigReader } from './editor-config-reader';\n\n@Injectable()\nexport class EditorFieldsReader {\n private fieldTypesReader = inject(FieldTypesReader);\n private fieldsByKey: { [key: string]: FormlyFieldConfig };\n private keysByType: { [key: string]: string[] };\n\n constructor() {\n const config = inject(EditorConfigReader);\n this.fieldsByKey = config.properties;\n this.keysByType = config.propertiesByType;\n }\n\n getFields(type: string): FormlyFieldConfig[] {\n const result: FormlyFieldConfig[] = [];\n if (!this.keysByType[type]) {\n console.warn(`Editor config reader: No fields for type ${type} found`);\n }\n (this.keysByType[type] ?? []).forEach((i) => {\n if (!this.fieldsByKey[i]) {\n console.warn(\n `Editor config reader: Field with key ${i} for type ${type} not found`,\n );\n return;\n }\n const field = structuredClone(this.fieldsByKey[i]);\n if (field.key === 'type' && !field.props?.options) {\n field.props ??= {};\n field.props.options = this.getOptions(type);\n }\n if (field.key === 'props.menu' && !field.props?.options) {\n field.props ??= {};\n }\n result.push(field);\n });\n return [{ type: 'formly-editor-group', fieldGroup: result }];\n }\n\n private getOptions(type: string): { value: string; label: string }[] {\n if (this.fieldTypesReader.isFieldArray({ type: type })) {\n return this.fieldTypesReader\n .getArrayTypes()\n .map((i) => ({ value: i, label: i }));\n }\n if (this.fieldTypesReader.isFieldGroup({ type: type })) {\n return this.fieldTypesReader\n .getGroupTypes()\n .map((i) => ({ value: i, label: i }));\n }\n return this.fieldTypesReader\n .getStandardTypes()\n .map((i) => ({ value: i, label: i }));\n }\n}\n","import {\n Component,\n OnInit,\n ChangeDetectionStrategy,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { debounceTime } from 'rxjs';\nimport { FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\nimport { cleanInput } from '@grumptech/formly-converters';\nimport { MatxFullWidthFormFields } from '@grumptech/ngx-matx/full-width-form-fields';\nimport { DataManager } from '../../services/data-manager';\nimport { FieldTypesReader } from '../../services/field-types-reader';\nimport { EditorFieldsReader } from '../../services/editor-fields-reader';\nimport { SelectionManager } from '../../services/selection-manager';\n\n@Component({\n selector: 'formly-designer-field-editor-edit',\n template: `\n <form [formGroup]=\"form\">\n <matx-full-width-form-fields>\n <formly-form [fields]=\"fields()\" [form]=\"form\" [model]=\"formField()\" />\n </matx-full-width-form-fields>\n </form>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, FormlyForm, MatxFullWidthFormFields],\n})\nexport class FormlyFieldEditorEdit implements OnInit {\n protected form = new UntypedFormGroup({});\n protected fields = signal<FormlyFieldConfig[]>([]);\n protected formField = signal<FormlyFieldConfig | null>(null);\n\n private editorFieldsReader = inject(EditorFieldsReader);\n private fieldTypesReader = inject(FieldTypesReader);\n private selectionManager = inject(SelectionManager<FormlyFieldConfig>);\n private dataManager = inject(DataManager);\n private destroyRef = inject(DestroyRef);\n private field!: FormlyFieldConfig;\n\n ngOnInit(): void {\n this.form.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(200))\n .subscribe(() => this.save());\n this.selectionManager.onSelect\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((field) => {\n if (this.field !== field && field !== null) {\n this.save();\n this.field = field;\n this.updateForm(field);\n this.setValue(field);\n }\n });\n }\n\n save() {\n if (this.form.pristine) {\n return;\n }\n const formField = this.formField();\n if (this.field && formField) {\n this.form.markAsPristine();\n const currentField = this.field;\n this.field = structuredClone(formField);\n cleanInput(this.field);\n this.dataManager.updateField(currentField, this.field);\n if (currentField.type !== this.field.type) {\n this.updateForm(this.field);\n }\n }\n }\n\n private setValue(field: FormlyFieldConfig): void {\n field = structuredClone(field);\n field.props ??= {};\n this.formField.set(field);\n }\n\n private updateForm(field: FormlyFieldConfig): void {\n Object.keys(this.form.controls).forEach((i) => this.form.removeControl(i));\n this.fields.set(\n this.editorFieldsReader.getFields(this.fieldTypesReader.getType(field)),\n );\n }\n}\n","import {\n Component,\n OnInit,\n model,\n viewChild,\n ChangeDetectionStrategy,\n inject,\n DestroyRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport JSON5 from 'json5';\nimport { CodeEditor } from '@grumptech/ngx-basic-ui/code-editor';\nimport {\n cleanInput,\n jsonParse,\n jsonParseFieldsAndValidate,\n jsonStringify,\n} from '@grumptech/formly-converters';\nimport { SelectionManager } from '../../services/selection-manager';\nimport { DataManager } from '../../services/data-manager';\nimport { FieldTypesReader } from '../../services/field-types-reader';\n\n@Component({\n selector: 'formly-designer-field-editor-code',\n template: `<b-code-editor\n [data]=\"data()\"\n [formatter]=\"formatter\"\n [validator]=\"validator\"\n (validChange)=\"save()\"\n />`,\n styles: [\n `\n :host {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow: hidden;\n }\n b-code-editor {\n flex: 1;\n overflow: hidden;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CodeEditor],\n})\nexport class FormlyFieldEditorCode implements OnInit {\n protected readonly data = model('');\n protected readonly formatter = (data: string) => {\n const result = jsonParse(data);\n return result.success ? jsonStringify(result.result) : data;\n };\n protected readonly validator = (data: string) => this.validate(data);\n\n private dataManager = inject(DataManager);\n private fieldTypes = inject(FieldTypesReader);\n private selection = inject(SelectionManager<FormlyFieldConfig>);\n private destroyRef = inject(DestroyRef);\n private readonly jsonEditorChild = viewChild.required(CodeEditor);\n private field!: FormlyFieldConfig;\n\n ngOnInit(): void {\n this.selection.onSelect\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((field) => {\n if (this.field !== field && field !== null) {\n this.save();\n this.field = field;\n if (field.fieldArray || field.fieldGroup) {\n field = { ...field };\n delete field.fieldGroup;\n delete field.fieldArray;\n }\n this.data.set(JSON.stringify(field));\n }\n });\n }\n\n save() {\n const data = this.jsonEditorChild().getData();\n if (!data || !this.validator(data).valid) {\n return;\n }\n const currentField = this.field;\n this.field = JSON5.parse(data);\n this.field.fieldGroup = currentField.fieldGroup;\n this.field.fieldArray = currentField.fieldArray;\n cleanInput(this.field);\n this.dataManager.updateField(currentField, this.field);\n }\n\n private validate(data: string): { valid: boolean; message: string } {\n const result = jsonParseFieldsAndValidate(data);\n if (\n !result.success ||\n !(result.result[0].fieldArray || result.result[0].fieldGroup)\n ) {\n return { valid: result.success, message: result.message };\n }\n const field = result.result[0];\n if (field.fieldArray && !this.fieldTypes.isFieldArray(field)) {\n return {\n valid: false,\n message: `Can not add /fieldArray to field type '${this.fieldTypes.getType(\n field,\n )}'.`,\n };\n }\n if (field.fieldGroup && !this.fieldTypes.isFieldGroup(field)) {\n return {\n valid: false,\n message: `Can not add /fieldGroup to field type '${this.fieldTypes.getType(\n field,\n )}'.`,\n };\n }\n return {\n valid: false,\n message: \"Add fields to /fieldArray or /fieldGroup with 'Add field'.\",\n };\n }\n}\n","import {\n Component,\n OnInit,\n output,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n} from '@angular/forms';\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent,\n} from '@angular/material/autocomplete';\nimport { MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { map, startWith, Observable } from 'rxjs';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { DataManager } from '../../services/data-manager';\nimport { FieldTypesReader } from '../../services/field-types-reader';\nimport { EditorConfigReader } from '../../services/editor-config-reader';\n\n@Component({\n selector: 'formly-designer-field-editor-add',\n template: `\n <mat-form-field floatLabel=\"always\">\n <mat-label>type</mat-label>\n <input\n matInput\n [matAutocomplete]=\"autocomplete\"\n [formControl]=\"formControl\"\n (keydown.enter)=\"commit()\"\n />\n <mat-autocomplete\n autoActiveFirstOption\n #autocomplete=\"matAutocomplete\"\n (optionSelected)=\"handleSelect($event)\"\n >\n @for (option of filteredTypes | async; track option) {\n <mat-option [value]=\"option\" (click)=\"handleClick()\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n <mat-error>Select value from list</mat-error>\n </mat-form-field>\n <button mat-stroked-button color=\"primary\" (click)=\"commit()\">\n <mat-icon>add</mat-icon>\n Add field\n </button>\n `,\n host: {\n '(focusout)': 'handleFocusout()',\n },\n styles: [\n `\n mat-form-field {\n margin-right: 20px;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n ReactiveFormsModule,\n MatButton,\n MatIcon,\n MatInput,\n MatAutocompleteModule,\n MatFormFieldModule,\n ],\n})\nexport class FormlyFieldEditorAdd implements OnInit {\n protected types: string[] = [];\n readonly optionSelected = output<string>();\n formControl!: FormControl;\n filteredTypes!: Observable<string[]>;\n\n private fieldTypesReader = inject(FieldTypesReader);\n private editorConfigReader = inject(EditorConfigReader);\n private dataManager = inject(DataManager);\n private commitHandled = false;\n\n ngOnInit(): void {\n this.types = this.fieldTypesReader\n .get()\n .filter((i) => this.editorConfigReader.propertiesByType[i])\n .sort((x, y) => x.localeCompare(y));\n this.formControl = new FormControl('', this.inListValidator(this.types));\n this.filteredTypes = this.formControl.valueChanges.pipe(\n startWith(''),\n map((value) => {\n value = value.toLowerCase();\n return this.types.filter((option) =>\n option.toLowerCase().includes(value),\n );\n }),\n );\n }\n\n protected handleFocusout() {\n this.formControl.markAsUntouched();\n }\n\n protected handleClick() {\n this.commitHandled = false;\n }\n\n protected handleSelect(event: MatAutocompleteSelectedEvent): void {\n event.option.deselect();\n this.select(event.option.value);\n this.commitHandled = true;\n }\n\n protected commit() {\n if (this.commitHandled) {\n this.commitHandled = false;\n return;\n }\n const value = (this.formControl.value ?? '').toLowerCase();\n const selection = this.types.filter((i) => i.toLowerCase() === value);\n if (selection.length) {\n this.select(selection[0]);\n } else {\n this.formControl.markAsTouched();\n }\n }\n\n private select(value: string) {\n const field: FormlyFieldConfig = { type: value };\n this.dataManager.addFields([field]);\n this.formControl.reset('');\n }\n\n private inListValidator(items: string[]): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value?.toLowerCase();\n const valid = items.some((i) => i.toLowerCase() === value);\n return valid ? null : { notInList: true };\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n signal,\n viewChild,\n inject,\n} from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { MatxPanel, MatxPanelHeaderButton } from '@grumptech/ngx-matx/panel';\nimport { SelectionManager } from '../../services/selection-manager';\nimport { FormlyFieldEditorEdit } from './field-editor-edit.component';\nimport { FormlyFieldEditorCode } from './field-editor-code.component';\nimport { FormlyFieldEditorAdd } from './field-editor-add.component';\n\n@Component({\n selector: 'formly-designer-field-editor',\n templateUrl: './field-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormlyFieldEditorEdit,\n FormlyFieldEditorCode,\n FormlyFieldEditorAdd,\n MatxPanel,\n MatxPanelHeaderButton,\n ],\n})\nexport class FormlyFieldEditor implements OnInit {\n protected mode = signal<'add' | 'edit' | 'code'>('add');\n\n private selection = inject(SelectionManager<FormlyFieldConfig>);\n private snackBar = inject(MatSnackBar);\n private field: FormlyFieldConfig | null = null;\n private readonly editChild = viewChild.required(FormlyFieldEditorEdit);\n private readonly codeChild = viewChild.required(FormlyFieldEditorCode);\n\n ngOnInit(): void {\n this.selection.onSelect.subscribe((field) => {\n this.field = field;\n if (field === null) {\n this.mode.set('add');\n } else if (this.mode() === 'add') {\n this.mode.set('edit');\n }\n });\n }\n\n save() {\n this.mode() === 'edit' && this.editChild().save();\n this.mode() === 'code' && this.codeChild().save();\n }\n\n protected setMode(mode: 'add' | 'edit' | 'code'): void {\n if (this.field === null && (mode === 'edit' || mode === 'code')) {\n this.snackBar.open('Select a field to edit', 'X');\n return;\n }\n if (mode === 'edit' || mode === 'code') {\n this.save();\n }\n this.mode.set(mode);\n }\n}\n","<matx-panel headerTitle=\"Field\">\n <matx-panel-header-button\n icon=\"add\"\n tooltip=\"Add field\"\n (click)=\"setMode('add')\"\n [selected]=\"mode() === 'add'\"\n />\n <matx-panel-header-button\n icon=\"edit\"\n tooltip=\"Edit field\"\n (click)=\"setMode('edit')\"\n [selected]=\"mode() === 'edit'\"\n />\n <matx-panel-header-button\n icon=\"code\"\n tooltip=\"Code\"\n (click)=\"setMode('code')\"\n [selected]=\"mode() === 'code'\"\n />\n @if (mode() === \"add\") {\n <formly-designer-field-editor-add />\n }\n @if (mode() === \"edit\") {\n <formly-designer-field-editor-edit />\n }\n @if (mode() === \"code\") {\n <formly-designer-field-editor-code />\n }\n</matx-panel>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { map, Observable } from 'rxjs';\nimport { CodeEditor } from '@grumptech/ngx-basic-ui/code-editor';\nimport { jsonParse, jsonStringify } from '@grumptech/formly-converters';\nimport { MatxPanel } from '@grumptech/ngx-matx/panel';\nimport { TestValueManager } from '../../services/test-value-manager';\n\n@Component({\n selector: 'formly-designer-test-value',\n templateUrl: './test-value.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, MatxPanel, CodeEditor],\n})\nexport class TestValueComponent {\n protected data: Observable<string>;\n protected readonly formatter = (data: string) => {\n const result = jsonParse(data);\n return result.success ? jsonStringify(result.result) : data;\n };\n\n constructor() {\n this.data = inject(TestValueManager).onChange.pipe(\n map((value) => JSON.stringify(value ?? {})),\n );\n }\n}\n","<matx-panel headerTitle=\"Value\">\n <b-code-editor\n [disabled]=\"true\"\n [data]=\"(data | async) ?? ''\"\n [formatter]=\"formatter\"\n />\n</matx-panel>\n","export class EditCommand {\n constructor(\n public commandType: EditCommandType,\n public data?: string,\n ) {}\n}\n\nexport enum EditCommandType {\n EditUndo,\n EditRedo,\n EditCut,\n EditCopy,\n EditPaste,\n EditDelete,\n EditSelectAll,\n}\n","import { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { Observable, skip } from 'rxjs';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n viewChild,\n inject,\n DestroyRef,\n output,\n} from '@angular/core';\nimport {\n jsonParseFieldsAndValidate,\n jsonStringify,\n toFlatArray,\n} from '@grumptech/formly-converters';\nimport { TestValueManager } from '../../services/test-value-manager';\nimport { DataManager } from '../../services/data-manager';\nimport { UndoManager } from '../../services/undo-manager';\nimport { SelectionManager } from '../../services/selection-manager';\nimport { ResultComponent } from '../result/result.component';\nimport { FormlyFieldEditor } from '../field-editor/field-editor.component';\nimport { TestValueComponent } from '../test-value/test-value.component';\nimport { EditCommand, EditCommandType } from '../../models';\nimport { FormEditorMode } from '../../modes';\n\n@Component({\n selector: 'formly-editor',\n templateUrl: './editor.component.html',\n styleUrl: './editor.component.scss',\n providers: [SelectionManager, DataManager, TestValueManager, UndoManager],\n host: {\n '[class.hidden]': 'hidden()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormlyFieldEditor, ResultComponent, TestValueComponent],\n})\nexport class FormlyEditor implements OnInit {\n readonly hidden = input(false);\n readonly fields = input<FormlyFieldConfig[]>([]);\n readonly onCommand = input<Observable<EditCommand>>();\n readonly dataChange = output();\n\n protected readonly fieldEditor = viewChild.required(FormlyFieldEditor);\n protected mode: FormEditorMode = 'select';\n\n private snackBar = inject(MatSnackBar);\n private dataManager = inject(DataManager);\n private undoManager = inject(UndoManager<FormlyFieldConfig[]>);\n private selection = inject(SelectionManager<FormlyFieldConfig>);\n private destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n this.onCommand()\n ?.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((i) => this.handleCommand(i));\n this.dataManager.setFields(this.fields());\n this.dataManager.onChange\n .pipe(skip(1))\n .subscribe(() => this.dataChange.emit());\n }\n\n handleModeChange(mode: FormEditorMode): void {\n this.mode = mode;\n }\n\n private handleCommand(command: EditCommand): void {\n if (this.hidden()) {\n return;\n }\n this.fieldEditor().save();\n switch (command.commandType) {\n case EditCommandType.EditUndo:\n this.undoManager.undo();\n break;\n case EditCommandType.EditRedo:\n this.undoManager.redo();\n break;\n case EditCommandType.EditCut:\n navigator.clipboard.writeText(this.getSelectedFieldsJson());\n this.dataManager.removeSelectedFields();\n break;\n case EditCommandType.EditCopy:\n navigator.clipboard.writeText(this.getSelectedFieldsJson());\n break;\n case EditCommandType.EditPaste:\n const convertedData = jsonParseFieldsAndValidate(command.data ?? '');\n if (convertedData.success) {\n this.dataManager.addFields(convertedData.result);\n } else {\n console.warn(convertedData.message, { data: command.data });\n this.snackBar.open('Clipboard contains invalid data', 'X');\n }\n break;\n case EditCommandType.EditDelete:\n this.dataManager.removeSelectedFields();\n break;\n case EditCommandType.EditSelectAll:\n this.selection.set(toFlatArray(this.dataManager.getFields()));\n break;\n }\n }\n\n private getSelectedFieldsJson(): string {\n return jsonStringify(this.dataManager.getSelectedFields());\n }\n}\n","@if (!hidden()) {\n <div class=\"result\">\n <formly-designer-result\n [mode]=\"mode\"\n (modeChange)=\"handleModeChange($event)\"\n />\n </div>\n <div [class]=\"mode === 'test' ? 'editor--hidden' : 'editor'\">\n <formly-designer-field-editor />\n </div>\n @if (mode === \"test\") {\n <div class=\"test-value\">\n <formly-designer-test-value />\n </div>\n }\n}\n","import { Injectable } from '@angular/core';\nimport { jsonStringify } from '@grumptech/formly-converters';\nimport { IExporter } from '@grumptech/ngx-matx/editor-app';\n\n@Injectable({ providedIn: 'root' })\nexport class JsonExporter<T> implements IExporter<T> {\n get name() {\n return 'Json';\n }\n get extension() {\n return '.json';\n }\n\n export(data: T): string {\n return jsonStringify(data);\n }\n}\n","import { FormlyFieldConfig } from '@ngx-formly/core';\nimport { FieldTypesReader } from './services/field-types-reader';\nimport { DataValidator } from './services/data-validator';\nimport { InitialValueFactory } from './services/initial-value-factory';\nimport { EditorFieldsReader } from './services/editor-fields-reader';\nimport { EditorConfigReader } from './services/editor-config-reader';\nimport { FORMLY_EDITOR_CONFIG } from './constants';\n\nexport interface EditorConfig {\n groupTypes?: string[];\n formRenderConfig?: FormRenderConfig;\n properties?: { [key: string]: FormlyFieldConfig };\n propertiesByType?: { [key: string]: string[] };\n}\n\nexport interface FormRenderConfig {\n editFormFieldConverter: (field: FormlyFieldConfig) => void;\n testFormFieldConverter: (field: FormlyFieldConfig) => void;\n}\n\nexport function provideFormlyEditor(config: EditorConfig) {\n return [\n {\n provide: FORMLY_EDITOR_CONFIG,\n useValue: config,\n },\n EditorConfigReader,\n EditorFieldsReader,\n FieldTypesReader,\n DataValidator,\n InitialValueFactory,\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultProperties"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;MAIa,gBAAgB,CAAA;AACnB,IAAA,aAAa,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AAE7C,IAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;IAErD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;AAEA,IAAA,GAAG,CAAC,KAAU,EAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;wGAXW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAhB,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCCY,WAAW,CAAA;IACd,MAAM,GAAa,EAAE;IACrB,YAAY,GAAG,CAAC;AAChB,IAAA,MAAM,GAAG,IAAI,OAAO,EAAK;AAExB,IAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;IAE9C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IACxB;AAEA,IAAA,IAAI,CAAC,KAAQ,EAAA;AACX,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAC3C;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;IAC5C;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;IACvB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9D;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9D;IACF;wGApCW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAX,WAAW,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;MCDY,kBAAkB,CAAA;IACrB,MAAM,GAAwB,EAAE;AAChC,IAAA,aAAa,GAAG,IAAI,GAAG,EAAwC;IAEvE,KAAK,GAAA;QACH,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,GAAG,CAAC,MAA2B,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,GAAG,CACD,KAAwB,EACxB,GAAW,EACX,MAA0B,EAAA;AAE1B,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;QACtB,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAA,IAAI,GAAG,MAAM,CAAC,UAAU;QAC1B;QACA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC;AACtC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,eAAe,CACb,KAAwB,EACxB,MAAyB,EACzB,KAAK,GAAG,IAAI,EAAA;AAEZ,QAAA,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AACzC,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,UAAU,EAAE;AACV,sBAAE,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU;AAC3B,sBAAE,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;aAC/B;AACD,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC;QACjD;AACA,QAAA,MAAM,CAAC,UAAU,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC;AACtC,QAAA,OAAO,IAAI;IACb;IAEA,WAAW,CACT,KAAwB,EACxB,cAAiC,EAAA;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;AACrD,QAAA,IAAI,MAAM,EAAE,UAAU,KAAK,cAAc,EAAE;YACzC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;QACnD;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CACzB,cAAc,EACd,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,MAAM,CAClC;AACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC;IAC3C;IAEA,MAAM,CACJ,KAAwB,EACxB,QAA2B,EAAA;QAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE;AACzC,YAAA,MAAM,CAAC,UAAU,GAAG,QAAQ;QAC9B;aAAO;AACL,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC;QAC/B;AACA,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,CAAC,KAAwB,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE;YACzC,OAAO,MAAM,CAAC,UAAU;QAC1B;aAAO;AACL,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,QAAA,OAAO,IAAI;IACb;IAEQ,QAAQ,CACd,KAAwB,EACxB,IAAyB,EAAA;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,iCAAA,EAAoC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAC5D;QACH;AACA,QAAA,OAAO,GAAG;IACZ;IAEQ,kBAAkB,CACxB,KAAwB,EACxB,MAA0B,EAAA;QAE1B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;QACvC;AACA,QAAA,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE;YACxC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;QAClD;AACA,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE;AAEQ,IAAA,uBAAuB,CAAC,KAAwB,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE;AACxC,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC;QAChD;AACA,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACnE;AACD;;AChIM,MAAMA,mBAAiB,GAAG;AAC/B,IAAA,GAAG,EAAE;AACH,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACxB,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACvB,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,MAAM;AACX,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,MAAM;AACX,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC7B,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,cAAc;AACnB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;AACjC,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,MAAM;AACX,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,GAAG,EAAE,qBAAqB;AAC1B,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxC,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,GAAG,EAAE,aAAa;AAClB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,GAAG,EAAE,mBAAmB;AACxB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;AAChC,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC7B,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,EAAE;AACV,oBAAA;AACE,wBAAA,GAAG,EAAE,OAAO;AACZ,wBAAA,IAAI,EAAE,qBAAqB;AAC3B,wBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,qBAAA;AACD,oBAAA;AACE,wBAAA,GAAG,EAAE,OAAO;AACZ,wBAAA,IAAI,EAAE,qBAAqB;AAC3B,wBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,GAAG,EAAE,mBAAmB;AACxB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;AAChC,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,GAAG,EAAE,cAAc;AACnB,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3B,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACxB,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACxB,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,GAAG,EAAE,iBAAiB;AACtB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9B,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,GAAG,EAAE,iBAAiB;AACtB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9B,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AAC5B,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC7B,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC7B,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC7B,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,WAAW,EAAE;AACX,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACxB,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,GAAG,EAAE,cAAc;AACnB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3B,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9B,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9B,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,GAAG,EAAE,mBAAmB;AACxB,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAChC,gBAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AAClC,gBAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAChC,gBAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACrC,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,GAAG,EAAE,oBAAoB;AACzB,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AACnC,gBAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,gBAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAChC,gBAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAChC,gBAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AACjC,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,sBAAsB,EAAE;AACtB,QAAA,GAAG,EAAE,sBAAsB;AAC3B,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACrC,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,GAAG,EAAE,yBAAyB;AAC9B,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxC,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,GAAG,EAAE,0BAA0B;AAC/B,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACvC,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,GAAG,EAAE,cAAc;AACnB,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACpD,gBAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACpD,gBAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC1D,gBAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACnE,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACtC,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,IAAI,EAAE,2BAA2B;AACjC,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,GAAG,EAAE,aAAa;AAClB,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,EAAE;AACV,oBAAA;AACE,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,IAAI,EAAE,qBAAqB;AAC3B,wBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACxB,qBAAA;AACD,oBAAA;AACE,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,KAAK,EAAE;AACL,4BAAA,KAAK,EAAE,kBAAkB;AACzB,4BAAA,WAAW,EAAE,kBAAkB;AAC/B,4BAAA,KAAK,EAAE,GAAG;AACV,4BAAA,KAAK,EAAE;AACL,gCAAA,UAAU,EAAE;AACV,oCAAA;AACE,wCAAA,GAAG,EAAE,OAAO;AACZ,wCAAA,IAAI,EAAE,qBAAqB;AAC3B,wCAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,qCAAA;AACD,oCAAA;AACE,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,IAAI,EAAE,qBAAqB;AAC3B,wCAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACxB,qCAAA;AACF,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF;;ACnSD,MAAM,iBAAiB,GAAG;IACxB,KAAK;IACL,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,MAAM;IACN,gBAAgB;IAChB,gBAAgB;CACjB;AACD,MAAM,qBAAqB,GAAG;IAC5B,KAAK;IACL,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,MAAM;IACN,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;CAChB;AACD,MAAM,mBAAmB,GAAG;IAC1B,KAAK;IACL,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,MAAM;IACN,gBAAgB;IAChB,gBAAgB;IAChB,yBAAyB;IACzB,sBAAsB;CACvB;AACD,MAAM,oBAAoB,GAAG;IAC3B,KAAK;IACL,MAAM;IACN,mBAAmB;IACnB,aAAa;IACb,WAAW;IACX,cAAc;IACd,oBAAoB;IACpB,cAAc;IACd,MAAM;IACN,gBAAgB;CACjB;AAEM,MAAM,uBAAuB,GAAG;AACrC,IAAA,MAAM,EAAE,oBAAoB;IAC5B,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC;AACrD,IAAA,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACjC,IAAA,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACjC,IAAA,KAAK,EAAE,mBAAmB;AAC1B,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,cAAc,EAAE,iBAAiB;IACjC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC;AACrE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,iBAAiB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AAC1C,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC;AACzD,IAAA,aAAa,EAAE;AACZ,SAAA,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,cAAc,GAAG,SAAS,GAAG,CAAC,CAAC;AACjD,SAAA,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAC5B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC;AACzD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;AACxC,IAAA,MAAM,EAAE,iBAAiB;AACzB,IAAA,aAAa,EAAE,qBAAqB;AACpC,IAAA,MAAM,EAAE;QACN,KAAK;QACL,MAAM;QACN,gBAAgB;QAChB,aAAa;QACb,MAAM;QACN,gBAAgB;QAChB,gBAAgB;AACjB,KAAA;AACD,IAAA,IAAI,EAAE,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,aAAa,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,KACxC,CAAC,KAAK,cAAc,GAAG,SAAS,GAAG,CAAC,CACrC;AACD,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAA,YAAY,EAAE;QACZ,KAAK;QACL,MAAM;QACN,gBAAgB;QAChB,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,MAAM;QACN,gBAAgB;QAChB,gBAAgB;QAChB,WAAW;QACX,gBAAgB;QAChB,gBAAgB;AACjB,KAAA;CACF;;ACnGM,MAAM,mBAAmB,GAAiB;IAC/C,UAAU,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,CAAC;AAC1E,IAAA,UAAU,EAAEA,mBAAiB;AAC7B,IAAA,gBAAgB,EAAE,uBAAuB;AACzC,IAAA,gBAAgB,EAAE;AAChB,QAAA,sBAAsB,EAAE,CAAC,KAAwB,KAAI;AACnD,YAAA,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI;AAC/B,YAAA,KAAK,CAAC,WAAW,IAAI,OAAO,KAAK,CAAC,WAAW;QAC/C,CAAC;AACD,QAAA,sBAAsB,EAAE,MAAK,EAAE,CAAC;AACjC,KAAA;CACF;;ACbM,MAAM,oBAAoB,GAAG,IAAI,cAAc,CACpD,oBAAoB,CACrB;;MCEY,kBAAkB,CAAA;AACb,IAAA,UAAU;AACV,IAAA,UAAU;AACV,IAAA,gBAAgB;AAChB,IAAA,gBAAgB;AAEhC,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAC3C,MAAM,QAAQ,GAAG,mBAAmB;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE;AAChE,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;AAC3E,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACnC,EAAE,EACF,QAAQ,CAAC,gBAAgB,EACzB,MAAM,CAAC,gBAAgB,CACxB;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACnC,EAAE,EACF,QAAQ,CAAC,gBAAgB,EACzB,MAAM,CAAC,gBAAgB,CACxB;IACH;wGArBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAlB,kBAAkB,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCGY,gBAAgB,CAAA;AACnB,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,UAAU;IAClD,WAAW,GAAG,KAAK;IACnB,UAAU,GAAsB,EAAE;AAClC,IAAA,aAAa,GAAG,IAAI,GAAG,EAAU;AACjC,IAAA,kBAAkB,GAAG,IAAI,GAAG,EAAU;AACtC,IAAA,kBAAkB,GAAG,IAAI,GAAG,EAAU;IAEtC,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAC7B,MAAM,CAAC,IAAI,CAAC,UAAU;AACnB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAC7C,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACtC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAClD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,CAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,YAAY,cAAc,CACpE,CACF;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;IAEA,GAAG,GAAA;QACD,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,OAAO,CAAC,KAAwB,EAAA;QAC9B,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YAClC,OAAO,KAAK,CAAC,IAAI;QACnB;QACA,OAAO,KAAK,CAAC,QAAQ,GAAG,iBAAiB,GAAG,cAAc;IAC5D;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3B,CAAC,CAAC,KACA,CAAC,KAAK,iBAAiB;AACvB,YAAA,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAClC;IACH;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE;AAEA,IAAA,eAAe,CAAC,KAAwB,EAAA;QACtC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,QACE,EAAE,MAAM,IAAI,KAAK,CAAC;AAClB,aAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE1E;AAEA,IAAA,YAAY,CAAC,KAAwB,EAAA;QACnC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD;AAEA,IAAA,YAAY,CAAC,KAAwB,EAAA;QACnC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,QACE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;IAE7E;wGAhFW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAhB,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCJY,gBAAgB,CAAA;AACnB,IAAA,SAAS,GAAG,IAAI,GAAG,EAAK;AACxB,IAAA,aAAa,GAAG,IAAI,eAAe,CAAW,IAAI,CAAC;AAElD,IAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;IAErD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;AAEA,IAAA,GAAG,CAAC,GAAM,EAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC;IAEA,GAAG,GAAA;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACnC;IAEA,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK;IACjC;AAEA,IAAA,GAAG,CAAC,SAAc,EAAA;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAI,SAAS,CAAC;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;QACrC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5D;IAEA,OAAO,CAAC,MAAS,EAAE,MAAS,EAAA;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACnB;IACF;IAEA,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB;AAEA,IAAA,MAAM,CAAC,GAAa,EAAE,OAAgB,EAAE,QAAiB,EAAA;AACvD,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE;QACrB;AACA,QAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACzB;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvB;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAChB;AAEQ,IAAA,MAAM,CAAC,GAAM,EAAA;QACnB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAChB;IACF;AAEQ,IAAA,IAAI,CAAC,GAAa,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B;wGAtEW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAhB,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCMY,WAAW,CAAA;AACb,IAAA,QAAQ;AAET,IAAA,SAAS,GAAG,MAAM,EAAC,gBAAmC,EAAC;AACvD,IAAA,WAAW,GAAG,MAAM,EAAC,WAAgC,EAAC;AACtD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC3C,MAAM,GAAwB,EAAE;AAChC,IAAA,MAAM,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC;AAE7D,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/B,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IACxB;AAEA,IAAA,SAAS,CAAC,MAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,SAAS,CAAC,MAA2B,EAAA;AACnC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC9C,QAAA,MAAM,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE;aAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;YAC5D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,IAAI,SAAS,CAAC,CACtD;QACH;aAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;YAC7D;AACG,iBAAA,OAAO;AACP,iBAAA,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAChE;AAAO,aAAA,IAAI,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvD,YAAA,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE;AAC7C,gBAAA,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC;AAClD,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,aAAa,CAAC,eAAe,CAC3B,MAAM,CAAC,MAAM,GAAG;kBACZ,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM;kBAC1C,MAAM,CAAC,CAAC,CAAC,EACb,aAAa,CACd;QACH;QACA,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,WAAW,CAAC,QAA2B,EAAE,QAA2B,EAAA;AAClE,QAAA,MAAM,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,QAAA,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;IACf;AAEA,IAAA,SAAS,CACP,KAAwB,EACxB,WAAmB,EACnB,MAA0B,EAAA;AAE1B,QAAA,MAAM,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,QAAA,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC1D,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC;QAC/C;aAAO;YACL,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC;QAC5D;QACA,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,oBAAoB,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,MAAM,EAAE;QACf;IACF;IAEA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD;AAEQ,IAAA,0BAA0B,CAChC,MAA2B,EAAA;AAE3B,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzB,gBAAA,OAAO,CAAC;YACV;AACA,YAAA,MAAM,QAAQ,GAAG,CACf,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EACtD,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;AAC5B,YAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AAClD,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,GAAA;QACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;wGAvHW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAX,WAAW,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;MCJY,WAAW,CAAA;IACL,4BAA4B,GAC3C,+BAA+B;IAEjC,SAAS,CAAC,KAAwB,EAAE,EAAU,EAAA;AAC5C,QAAA,KAAK,CAAC,SAAS;AACb,YAAA,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,KAAK,CAAC,SAAS,CAAA,CAAA,CAAG,GAAG,EAAE;AAC7C,gBAAA,CAAA,EAAG,IAAI,CAAC,4BAA4B,CAAA,EAAG,EAAE,EAAE;IAC/C;AAEA,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE;gBAC1D,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,CAAC;YAChE;QACF;AACA,QAAA,OAAO,IAAI;IACb;wGAlBW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA;;4FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCGrB,aAAa,CAAA;AAChB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,IAAA,QAAQ,CAAC,MAA2B,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B;AACnD,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC;QACpD;QACA,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;YACrC,IACE,GAAG,KAAK,CAAC;gBACT,MAAM,CAAC,MAAM,GAAG,CAAC;gBACjB,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,EACtC;AACA,gBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;IAEQ,aAAa,CACnB,KAAwB,EACxB,QAAwC,EAAA;QAExC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YACjD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA,oBAAA,EAAuB,KAAK,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;QAC3D;AACA,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE;AAC5B,YAAA,KAAK,CAAC;kBACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/D,kBAAE,OAAO,CAAC,CAAC,CAAC,KACV,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAC5D;QACL;IACF;wGAlCW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAb,aAAa,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;MCAY,mBAAmB,CAAA;AACtB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,IAAA,MAAM,CAAC,MAA2B,EAAE,gBAAA,GAA0B,CAAC,EAAA;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAC7D,OAAO,gBAAgB,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;IACpE;IAEQ,eAAe,CACrB,MAA2B,EAC3B,gBAAuB,EAAA;QAEvB,MAAM,MAAM,GAAQ,EAAE;QACtB,IAAI,WAAW,GAAQ,IAAI;AAC3B,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,gBAAgB,CAAC;AAC/D,YAAA,IAAI,CAAC,CAAC,GAAG,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA,CAAE,CAAC,GAAG,KAAK;YAC5B;AAAO,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,gBAAA,KAAK,CAAC,OAAO,CAAC,KAAK;AACjB,uBAAG,WAAW,GAAG,KAAK;sBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YAClC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,WAAW;IAC1D;IAEQ,uBAAuB,CAC7B,KAAwB,EACxB,gBAAuB,EAAA;AAEvB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE;YACjE,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACjE;QACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAI,gBAAgB,KAAK,CAAC,EAAE;AAC1B,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,MAAM,UAAU,GACd,OAAO,KAAK,CAAC,UAAU,KAAK;AAC1B,kBAAE,KAAK,CAAC,UAAU,CAAC;kBACjB,IAAI;AACV,YAAA,OAAO;kBACH,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC;AACrD,kBAAE,CAAC,IAAI,CAAC;QACZ;AACA,QAAA,OAAO,IAAI;IACb;wGA/CW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAnB,mBAAmB,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCqCY,mBAAmB,CAAA;AACpB,IAAA,aAAa,GAAG,MAAM,CAAiB,EAAE,oFAAC;AAC1C,IAAA,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;AACxB,IAAA,YAAY,GAAG,MAAM,CAAsB,EAAE,mFAAC;AAC9C,IAAA,KAAK,GAAG,MAAM,CAAM,SAAS,4EAAC;AAEhC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,SAAS,GAAG,MAAM,EAAC,gBAAmC,EAAC;AACvD,IAAA,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB;AAC9D,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,QAAQ,GAAA;AACN,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;AAC3D,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAChC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CACrC;IACH;AAEU,IAAA,UAAU,CAAC,KAAwB,EAAA;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAClC;IAEU,WAAW,CAAC,KAAwB,EAAE,KAAiB,EAAA;AAC/D,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7D;IAEU,mBAAmB,CAC3B,MAAc,EACd,IAAkB,EAAA;QAElB,OAAO,IAAI,CAAC,KAAK;IACnB;AAEQ,IAAA,MAAM,CAAC,MAA2B,EAAA;AACxC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAA,EAAG,GAAG,CAAA,CAAE,EAAE,CAAC,CAAC,CAAC,CACnD;AACD,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;QAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;QACpE,WAAW,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;AAC3C,YAAA,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;YAClC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,iBAAiB,EAAE;AACrB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,iBAAiB,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAEtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,MAAM,CAAC,MAAM,CACV,IAAI,CAAC,UAAU,CAAC,aAAyB,CAAC,oBAAoB,CAC7D,cAAc,CACf;AAEA,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM;YACX,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;AACjC,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CACnB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAW,CACrB;AACvB,SAAA,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAC1B;IACH;IACQ,gBAAgB,CAAC,KAAwB,EAAE,OAAe,EAAA;AAChE,QAAA,KAAK,CAAC,IAAI,GAAG,iBAAiB;AAC9B,QAAA,KAAK,CAAC,QAAQ,GAAG,OAAO;AACxB,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,OAAO,KAAK,CAAC,UAAU;QACzB;AACA,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,OAAO,KAAK,CAAC,UAAU;QACzB;IACF;AACQ,IAAA,SAAS,CAAC,KAAU,EAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;IACQ,aAAa,CAAC,OAAgB,EAAE,SAAkB,EAAA;AACxD,QAAA,MAAM,MAAM,GAAS;YACnB,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,GAAG,EAAE,MAAM,CAAC,SAAS;AACrB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;SACV;AACD,QAAA,CAAC,OAAO;AACL,aAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACnD,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;AACb,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE;YACtC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;AAC9C,gBAAA,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;AAC3C,gBAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACjD,gBAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACtD;AACF,QAAA,CAAC,CAAC;QACJ,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;AAChE,YAAA,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;SACrE;IACH;wGAnHW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzChC,onBAoBA,EAAA,MAAA,EAAA,CAAA,oOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDmBY,mBAAmB,icAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE9B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,6BAA6B,EAAA,eAAA,EAGtB,uBAAuB,CAAC,MAAM,WACtC,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,onBAAA,EAAA,MAAA,EAAA,CAAA,oOAAA,CAAA,EAAA;;;MEX/B,wBAAwB,CAAA;AACnC,IAAA,KAAK;IACL,UAAU,GAAsB,EAAE;AAE1B,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,SAAS,GAAG,MAAM,EAAC,gBAAmC,EAAC;AACvD,IAAA,kBAAkB;AAClB,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEnD,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,MAA2B,KAAI;YAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7D,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACrC,CAAC,CAAC,CACH;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAChC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CACrC;IACH;AAEU,IAAA,aAAa,CAAC,KAAsC,EAAA;QAC5D,IAAI,CAAC,WAAW,CAAC,SAAS,CACxB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,EAC3C,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAAE,IAAI,CACzB;IACH;IAEU,WAAW,CAAC,KAAwB,EAAE,KAAiB,EAAA;AAC/D,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7D;AAEU,IAAA,UAAU,CAAC,KAAwB,EAAA;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAClC;AAEU,IAAA,YAAY,CAAC,KAAwB,EAAA;QAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C;IAEU,WAAW,CACnB,MAAc,EACd,IAAqC,EAAA;QAErC,OAAO,IAAI,CAAC,IAAI;IAClB;AAEU,IAAA,UAAU,CAAC,KAAwB,EAAA;QAC3C,OAAO,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,KAAK,CAAC;IAC5C;AAEQ,IAAA,eAAe,CACrB,MAA2B,EAAA;AAE3B,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBACzC,OAAO;AACL,oBAAA,IAAI,EAAE,CAAC;oBACP,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;iBACrD;YACH;YACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBACzC,OAAO;AACL,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,UAAU,EACR,OAAO,CAAC,CAAC,UAAU,KAAK;0BACpB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC,0BAAE,EAAE;iBACT;YACH;AACA,YAAA,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;wGA5EW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,4FC5BrC,owBAuBA,EAAA,MAAA,EAAA,CAAA,6jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGuB,gBAAgB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,sIAApC,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAER,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,owBAAA,EAAA,MAAA,EAAA,CAAA,6jBAAA,CAAA,EAAA;;;MEEpC,mBAAmB,CAAA;AAC9B,IAAA,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC;IAC/B,aAAa,GAAsB,EAAE;IACrC,YAAY,GAAwB,EAAE;AACtC,IAAA,KAAK;AAEG,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB;AAC9D,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAwB,EAAE;AAExC,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC1C,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACtB,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACjD,WAAW,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAClC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAChD;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;QAChC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;IAC9B;wGAxCW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BhC,0SAUA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDgBY,SAAS,yUAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEpB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,6BAA6B,EAAA,eAAA,EAGtB,uBAAuB,CAAC,MAAM,WACtC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,0SAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA;;;MEIrB,eAAe,CAAA;AACjB,IAAA,IAAI,GAAG,KAAK,CAAiB,QAAQ,2EAAC;AACrC,IAAA,IAAI,GAAG,MAAM,CAAC,EAAE,2EAAC;AACR,IAAA,SAAS,GAAG,CAAC,IAAY,KAAI;AAC9C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,QAAA,OAAO,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;AAC7D,IAAA,CAAC;AAEO,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEzC,kBAAkB,GAAA;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KACzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CACtC;IACH;AAEU,IAAA,OAAO,CAAC,IAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACrB;wGAlBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B5B,ilCA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBI,mBAAmB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,mBAAmB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,qBAAqB,0HACrB,UAAU,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,eAAA,EAEjB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,mBAAmB;wBACnB,wBAAwB;wBACxB,mBAAmB;wBACnB,SAAS;wBACT,qBAAqB;wBACrB,UAAU;AACX,qBAAA,EAAA,QAAA,EAAA,ilCAAA,EAAA;;;MEtBU,kBAAkB,CAAA;AACrB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,WAAW;AACX,IAAA,UAAU;AAElB,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB;IAC3C;AAEA,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,MAAM,MAAM,GAAwB,EAAE;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,IAAI,CAAA,MAAA,CAAQ,CAAC;QACxE;AACA,QAAA,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;YAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;gBACxB,OAAO,CAAC,IAAI,CACV,CAAA,qCAAA,EAAwC,CAAC,CAAA,UAAA,EAAa,IAAI,CAAA,UAAA,CAAY,CACvE;gBACD;YACF;YACA,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;AACjD,gBAAA,KAAK,CAAC,KAAK,KAAK,EAAE;gBAClB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C;AACA,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;AACvD,gBAAA,KAAK,CAAC,KAAK,KAAK,EAAE;YACpB;AACA,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACpB,QAAA,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9D;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YACtD,OAAO,IAAI,CAAC;AACT,iBAAA,aAAa;AACb,iBAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YACtD,OAAO,IAAI,CAAC;AACT,iBAAA,aAAa;AACb,iBAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC;QACA,OAAO,IAAI,CAAC;AACT,aAAA,gBAAgB;AAChB,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC;wGAlDW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAlB,kBAAkB,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MC0BY,qBAAqB,CAAA;AACtB,IAAA,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC;AAC/B,IAAA,MAAM,GAAG,MAAM,CAAsB,EAAE,6EAAC;AACxC,IAAA,SAAS,GAAG,MAAM,CAA2B,IAAI,gFAAC;AAEpD,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,gBAAgB,GAAG,MAAM,EAAC,gBAAmC,EAAC;AAC9D,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,KAAK;IAEb,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;aAC3D,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC;AACnB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC1C,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtB;AACF,QAAA,CAAC,CAAC;IACN;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtB;QACF;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC;AACvC,YAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;YACtD,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B;QACF;IACF;AAEQ,IAAA,QAAQ,CAAC,KAAwB,EAAA;AACvC,QAAA,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAC9B,QAAA,KAAK,CAAC,KAAK,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAEQ,IAAA,UAAU,CAAC,KAAwB,EAAA;QACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACxE;IACH;wGAxDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVtB;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEvD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,UAAU,EAAE,uBAAuB,CAAC;AACpE,iBAAA;;;MCkBY,qBAAqB,CAAA;AACb,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE,2EAAC;AAChB,IAAA,SAAS,GAAG,CAAC,IAAY,KAAI;AAC9C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,QAAA,OAAO,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;AAC7D,IAAA,CAAC;AACkB,IAAA,SAAS,GAAG,CAAC,IAAY,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE5D,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,IAAA,SAAS,GAAG,MAAM,EAAC,gBAAmC,EAAC;AACvD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACtB,IAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;AACzD,IAAA,KAAK;IAEb,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC1C,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;gBAClB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE;AACxC,oBAAA,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE;oBACpB,OAAO,KAAK,CAAC,UAAU;oBACvB,OAAO,KAAK,CAAC,UAAU;gBACzB;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;IACN;IAEA,IAAI,GAAA;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE;AAC7C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YACxC;QACF;AACA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU;AAC/C,QAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;IACxD;AAEQ,IAAA,QAAQ,CAAC,IAAY,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC;QAC/C,IACE,CAAC,MAAM,CAAC,OAAO;YACf,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAC7D;AACA,YAAA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;QAC3D;QACA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5D,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,CAAA,uCAAA,EAA0C,IAAI,CAAC,UAAU,CAAC,OAAO,CACxE,KAAK,CACN,CAAA,EAAA,CAAI;aACN;QACH;AACA,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5D,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,CAAA,uCAAA,EAA0C,IAAI,CAAC,UAAU,CAAC,OAAO,CACxE,KAAK,CACN,CAAA,EAAA,CAAI;aACN;QACH;QACA,OAAO;AACL,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,4DAA4D;SACtE;IACH;wGA1EW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAYsB,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCtD,CAAA;;;;;AAKP,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAgBO,UAAU,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAET,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAzBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAAA,QAAA,EACnC,CAAA;;;;;AAKP,IAAA,CAAA,EAAA,eAAA,EAec,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,UAAU,CAAC,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA;oOAciC,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCmBrD,oBAAoB,CAAA;IACrB,KAAK,GAAa,EAAE;IACrB,cAAc,GAAG,MAAM,EAAU;AAC1C,IAAA,WAAW;AACX,IAAA,aAAa;AAEL,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,aAAa,GAAG,KAAK;IAE7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACf,aAAA,GAAG;AACH,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CACrD,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAC9B,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrC;QACH,CAAC,CAAC,CACH;IACH;IAEU,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;IACpC;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;AAEU,IAAA,YAAY,CAAC,KAAmC,EAAA;AACxD,QAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B;QACF;AACA,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AACrE,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;QAClC;IACF;AAEQ,IAAA,MAAM,CAAC,KAAa,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAsB,EAAE,IAAI,EAAE,KAAK,EAAE;QAChD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5B;AAEQ,IAAA,eAAe,CAAC,KAAe,EAAA;QACrC,OAAO,CAAC,OAAwB,KAA6B;YAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE;AAC1C,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AAC1D,YAAA,OAAO,KAAK,GAAG,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAC3C,QAAA,CAAC;IACH;wGApEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhDrB;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAcC,mBAAmB,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,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,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,EACP,QAAQ,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,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,kBAAkB,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,MAAA,EAAA,IAAA,EANlB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASA,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlDhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAAA,QAAA,EAClC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT,EAAA,IAAA,EACK;AACJ,wBAAA,YAAY,EAAE,kBAAkB;qBACjC,EAAA,eAAA,EAQgB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,SAAS;wBACT,mBAAmB;wBACnB,SAAS;wBACT,OAAO;wBACP,QAAQ;wBACR,qBAAqB;wBACrB,kBAAkB;AACnB,qBAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA;;;MCjDU,iBAAiB,CAAA;AAClB,IAAA,IAAI,GAAG,MAAM,CAA0B,KAAK,2EAAC;AAE/C,IAAA,SAAS,GAAG,MAAM,EAAC,gBAAmC,EAAC;AACvD,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9B,KAAK,GAA6B,IAAI;AAC7B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AACrD,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAEtE,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;AAAO,iBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE;AAChC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE;AACjD,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE;IACnD;AAEU,IAAA,OAAO,CAAC,IAA6B,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;YAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC;YACjD;QACF;QACA,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACtC,IAAI,CAAC,IAAI,EAAE;QACb;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACrB;wGAlCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMoB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,qBAAqB,gECnCvE,iuBA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRI,qBAAqB,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,kCAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,SAAS,8FACT,qBAAqB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGZ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,eAAA,EAEvB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,qBAAqB;wBACrB,qBAAqB;wBACrB,oBAAoB;wBACpB,SAAS;wBACT,qBAAqB;AACtB,qBAAA,EAAA,QAAA,EAAA,iuBAAA,EAAA;AAQ+C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qBAAqB,wFACrB,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MErB1D,kBAAkB,CAAA;AACnB,IAAA,IAAI;AACK,IAAA,SAAS,GAAG,CAAC,IAAY,KAAI;AAC9C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,QAAA,OAAO,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;AAC7D,IAAA,CAAC;AAED,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAC5C;IACH;wGAXW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,sFCd/B,0KAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKuB,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,uIAAhC,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAER,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,4BAA4B,EAAA,eAAA,EAErB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,0KAAA,EAAA;;;MEZhC,WAAW,CAAA;AAEb,IAAA,WAAA;AACA,IAAA,IAAA;IAFT,WAAA,CACS,WAA4B,EAC5B,IAAa,EAAA;QADb,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,IAAI,GAAJ,IAAI;IACV;AACJ;IAEW;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACT,IAAA,eAAA,CAAA,eAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,eAAA,CAAA,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa;AACf,CAAC,EARW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;MCiCd,YAAY,CAAA;AACd,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AACrB,IAAA,MAAM,GAAG,KAAK,CAAsB,EAAE,6EAAC;IACvC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA2B;IAC5C,UAAU,GAAG,MAAM,EAAE;AAEX,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,IAAI,GAAmB,QAAQ;AAEjC,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,WAAW,GAAG,MAAM,EAAC,WAAgC,EAAC;AACtD,IAAA,SAAS,GAAG,MAAM,EAAC,gBAAmC,EAAC;AACvD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS;cACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC;AACd,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC5C;AAEA,IAAA,gBAAgB,CAAC,IAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AAEQ,IAAA,aAAa,CAAC,OAAoB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AACzB,QAAA,QAAQ,OAAO,CAAC,WAAW;YACzB,KAAK,eAAe,CAAC,QAAQ;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBACvB;YACF,KAAK,eAAe,CAAC,QAAQ;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBACvB;YACF,KAAK,eAAe,CAAC,OAAO;gBAC1B,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC3D,gBAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE;gBACvC;YACF,KAAK,eAAe,CAAC,QAAQ;gBAC3B,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3D;YACF,KAAK,eAAe,CAAC,SAAS;gBAC5B,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;AACpE,gBAAA,IAAI,aAAa,CAAC,OAAO,EAAE;oBACzB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;gBAClD;qBAAO;AACL,oBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,CAAC;gBAC5D;gBACA;YACF,KAAK,eAAe,CAAC,UAAU;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE;gBACvC;YACF,KAAK,eAAe,CAAC,aAAa;AAChC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC7D;;IAEN;IAEQ,qBAAqB,GAAA;QAC3B,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IAC5D;wGApEW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,+hBAPZ,CAAC,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAarB,iBAAiB,gEC9CvE,gZAgBA,EAAA,MAAA,EAAA,CAAA,oQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDsBY,iBAAiB,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,8GAAE,kBAAkB,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAErD,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,SAAS;+BACE,eAAe,EAAA,SAAA,EAGd,CAAC,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC,EAAA,IAAA,EACnE;AACJ,wBAAA,gBAAgB,EAAE,UAAU;qBAC7B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,gZAAA,EAAA,MAAA,EAAA,CAAA,oQAAA,CAAA,EAAA;gbAQb,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzC1D,YAAY,CAAA;AACvB,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,MAAM;IACf;AACA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC;IAC5B;wGAVW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACgB5B,SAAU,mBAAmB,CAAC,MAAoB,EAAA;IACtD,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA;QACD,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,mBAAmB;KACpB;AACH;;AChCA;;AAEG;;;;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grumptech/ngx-formly-editor",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Part of the Formly Designer libraries. Provides the editor used by Formly Designer.",
|
|
5
|
+
"author": "GrumpTech",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/GrumpTech/formly-designer.git"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"Formly Designer",
|
|
13
|
+
"editor",
|
|
14
|
+
"customizable"
|
|
15
|
+
],
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/GrumpTech/formly-designer/issues"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/GrumpTech/formly-designer#readme",
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"@angular/core": ">=19.0.0",
|
|
22
|
+
"@angular/router": ">=19.0.0",
|
|
23
|
+
"@angular/material": ">=19.0.0",
|
|
24
|
+
"@ngx-formly/core": ">=7.0.0",
|
|
25
|
+
"@grumptech/formly-converters": "^1.0.0",
|
|
26
|
+
"@grumptech/ngx-matx": "^1.0.0",
|
|
27
|
+
"json5": "^2.2.3",
|
|
28
|
+
"rxjs": "^7.8.2"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"tslib": "^2.3.0"
|
|
32
|
+
},
|
|
33
|
+
"sideEffects": false,
|
|
34
|
+
"module": "fesm2022/grumptech-ngx-formly-editor.mjs",
|
|
35
|
+
"typings": "types/grumptech-ngx-formly-editor.d.ts",
|
|
36
|
+
"exports": {
|
|
37
|
+
"./package.json": {
|
|
38
|
+
"default": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
".": {
|
|
41
|
+
"types": "./types/grumptech-ngx-formly-editor.d.ts",
|
|
42
|
+
"default": "./fesm2022/grumptech-ngx-formly-editor.mjs"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"type": "module"
|
|
46
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import * as _ngx_formly_core from '@ngx-formly/core';
|
|
2
|
+
import { FormlyFieldConfig } from '@ngx-formly/core';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { OnInit } from '@angular/core';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
import { IExporter } from '@grumptech/ngx-matx/editor-app';
|
|
7
|
+
|
|
8
|
+
declare class FormlyFieldEditor implements OnInit {
|
|
9
|
+
protected mode: i0.WritableSignal<"code" | "add" | "edit">;
|
|
10
|
+
private selection;
|
|
11
|
+
private snackBar;
|
|
12
|
+
private field;
|
|
13
|
+
private readonly editChild;
|
|
14
|
+
private readonly codeChild;
|
|
15
|
+
ngOnInit(): void;
|
|
16
|
+
save(): void;
|
|
17
|
+
protected setMode(mode: 'add' | 'edit' | 'code'): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormlyFieldEditor, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormlyFieldEditor, "formly-designer-field-editor", never, {}, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare class EditCommand {
|
|
23
|
+
commandType: EditCommandType;
|
|
24
|
+
data?: string | undefined;
|
|
25
|
+
constructor(commandType: EditCommandType, data?: string | undefined);
|
|
26
|
+
}
|
|
27
|
+
declare enum EditCommandType {
|
|
28
|
+
EditUndo = 0,
|
|
29
|
+
EditRedo = 1,
|
|
30
|
+
EditCut = 2,
|
|
31
|
+
EditCopy = 3,
|
|
32
|
+
EditPaste = 4,
|
|
33
|
+
EditDelete = 5,
|
|
34
|
+
EditSelectAll = 6
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
type FormEditorMode = 'select' | 'structure' | 'code' | 'test';
|
|
38
|
+
|
|
39
|
+
declare class FormlyEditor implements OnInit {
|
|
40
|
+
readonly hidden: i0.InputSignal<boolean>;
|
|
41
|
+
readonly fields: i0.InputSignal<FormlyFieldConfig<_ngx_formly_core.FormlyFieldProps & {
|
|
42
|
+
[additionalProperties: string]: any;
|
|
43
|
+
}>[]>;
|
|
44
|
+
readonly onCommand: i0.InputSignal<Observable<EditCommand> | undefined>;
|
|
45
|
+
readonly dataChange: i0.OutputEmitterRef<void>;
|
|
46
|
+
protected readonly fieldEditor: i0.Signal<FormlyFieldEditor>;
|
|
47
|
+
protected mode: FormEditorMode;
|
|
48
|
+
private snackBar;
|
|
49
|
+
private dataManager;
|
|
50
|
+
private undoManager;
|
|
51
|
+
private selection;
|
|
52
|
+
private destroyRef;
|
|
53
|
+
ngOnInit(): void;
|
|
54
|
+
handleModeChange(mode: FormEditorMode): void;
|
|
55
|
+
private handleCommand;
|
|
56
|
+
private getSelectedFieldsJson;
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormlyEditor, never>;
|
|
58
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormlyEditor, "formly-editor", never, { "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "onCommand": { "alias": "onCommand"; "required": false; "isSignal": true; }; }, { "dataChange": "dataChange"; }, never, never, true, never>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare class JsonExporter<T> implements IExporter<T> {
|
|
62
|
+
get name(): string;
|
|
63
|
+
get extension(): string;
|
|
64
|
+
export(data: T): string;
|
|
65
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<JsonExporter<any>, never>;
|
|
66
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<JsonExporter<any>>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
declare class FieldTypesReader {
|
|
70
|
+
private formlyConfig;
|
|
71
|
+
private groupTypes;
|
|
72
|
+
private initialized;
|
|
73
|
+
private fieldTypes;
|
|
74
|
+
private fieldTypesSet;
|
|
75
|
+
private fieldArrayTypesSet;
|
|
76
|
+
private fieldGroupTypesSet;
|
|
77
|
+
private initialize;
|
|
78
|
+
get(): readonly string[];
|
|
79
|
+
getType(field: FormlyFieldConfig): string;
|
|
80
|
+
getStandardTypes(): readonly string[];
|
|
81
|
+
getGroupTypes(): readonly string[];
|
|
82
|
+
getArrayTypes(): readonly string[];
|
|
83
|
+
hasExistingType(field: FormlyFieldConfig): boolean;
|
|
84
|
+
isFieldGroup(field: FormlyFieldConfig): boolean;
|
|
85
|
+
isFieldArray(field: FormlyFieldConfig): boolean;
|
|
86
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FieldTypesReader, never>;
|
|
87
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FieldTypesReader>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare class DataValidator {
|
|
91
|
+
private fieldTypesReader;
|
|
92
|
+
validate(fields: FormlyFieldConfig[]): Map<FormlyFieldConfig, string>;
|
|
93
|
+
private validateField;
|
|
94
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DataValidator, never>;
|
|
95
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DataValidator>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
declare class InitialValueFactory {
|
|
99
|
+
private fieldTypesReader;
|
|
100
|
+
create(fields: FormlyFieldConfig[], defaultArraySize?: 0 | 1): any;
|
|
101
|
+
private createRecursive;
|
|
102
|
+
private createRecursiveForField;
|
|
103
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<InitialValueFactory, never>;
|
|
104
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<InitialValueFactory>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
declare class EditorFieldsReader {
|
|
108
|
+
private fieldTypesReader;
|
|
109
|
+
private fieldsByKey;
|
|
110
|
+
private keysByType;
|
|
111
|
+
constructor();
|
|
112
|
+
getFields(type: string): FormlyFieldConfig[];
|
|
113
|
+
private getOptions;
|
|
114
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EditorFieldsReader, never>;
|
|
115
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EditorFieldsReader>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
declare class EditorConfigReader {
|
|
119
|
+
readonly groupTypes: string[];
|
|
120
|
+
readonly properties: {
|
|
121
|
+
[key: string]: FormlyFieldConfig;
|
|
122
|
+
};
|
|
123
|
+
readonly propertiesByType: {
|
|
124
|
+
[key: string]: string[];
|
|
125
|
+
};
|
|
126
|
+
readonly formRenderConfig: FormRenderConfig;
|
|
127
|
+
constructor();
|
|
128
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EditorConfigReader, never>;
|
|
129
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EditorConfigReader>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
interface EditorConfig {
|
|
133
|
+
groupTypes?: string[];
|
|
134
|
+
formRenderConfig?: FormRenderConfig;
|
|
135
|
+
properties?: {
|
|
136
|
+
[key: string]: FormlyFieldConfig;
|
|
137
|
+
};
|
|
138
|
+
propertiesByType?: {
|
|
139
|
+
[key: string]: string[];
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
interface FormRenderConfig {
|
|
143
|
+
editFormFieldConverter: (field: FormlyFieldConfig) => void;
|
|
144
|
+
testFormFieldConverter: (field: FormlyFieldConfig) => void;
|
|
145
|
+
}
|
|
146
|
+
declare function provideFormlyEditor(config: EditorConfig): (typeof DataValidator | typeof FieldTypesReader | typeof InitialValueFactory | typeof EditorFieldsReader | typeof EditorConfigReader | {
|
|
147
|
+
provide: i0.InjectionToken<EditorConfig>;
|
|
148
|
+
useValue: EditorConfig;
|
|
149
|
+
})[];
|
|
150
|
+
|
|
151
|
+
export { EditCommand, EditCommandType, FormlyEditor, JsonExporter, provideFormlyEditor };
|
|
152
|
+
export type { EditorConfig, FormRenderConfig };
|