@apia/execution 4.0.15 → 4.0.16

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/programming/constants/Field.ts","../src/programming/constants/Form.ts","../src/programming/constants/IProperty.ts","../src/main/Notifications/index.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/util/array/arrayOrArray.ts","../src/main/Execution/FormsExecution/constants/fieldProps.ts","../src/main/Execution/FormsExecution/constants/formProps.ts","../src/main/Execution/FormsExecution/constants/props/booleanProps.ts","../src/util/dataTypes/parseBoolean.ts","../src/util/xml/parseXml.ts","../src/util/api/apiaApi.ts","../src/util/events/EventEmitter.ts","../src/util/events/StatefulEmitter.ts","../src/util/events/BouncingEmitter.ts","../src/util/labels/labels.ts","../src/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.ts","../src/programming/ActionController/ButtonsActions.ts","../src/programming/ActionController/index.ts","../src/programming/ApiaField.ts","../src/programming/fields/ButtonField.ts","../src/programming/fields/EditorField.ts","../src/programming/ApiaFieldWithAttribute.ts","../src/programming/fields/SelectField.ts","../src/programming/fields/InputField.ts","../src/programming/fields/TreeField.ts","../src/programming/fields/CheckField.ts","../src/programming/fields/RadioField.ts","../src/programming/fields/MultipleField.ts","../src/programming/fields/HiddenField.ts","../src/programming/fields/AreaField.ts","../src/programming/fields/ImageField.ts","../src/programming/fields/LinkField.ts","../src/programming/fields/TextField.ts","../src/programming/fields/CustomComponentField.ts","../src/programming/utils/createApiaField.ts","../src/main/Execution/FormsExecution/WithProperties.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/Field.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.ts","../src/programming/fields/GridField.ts","../src/programming/fields/CaptchaField.ts","../src/programming/fields/FileUploaderField.ts","../src/programming/fields/PasswordField.ts","../src/programming/ApiaForm.ts","../src/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/FormsExecution/FieldWithIndexedFields/FieldsGroup.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/FieldWithIndexedFields/index.ts","../src/main/Execution/FormsExecution/Form.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.ts","../src/main/Execution/FormsExecution/fields/Checkbox/index.ts","../src/main/Execution/FormsExecution/TranslatableField/Translation.ts","../src/main/Execution/FormsExecution/TranslatableField/util.ts","../src/main/Execution/FormsExecution/TranslatableField/index.ts","../src/main/Execution/FormsExecution/fields/Editor/index.ts","../src/main/Execution/Uploader/UploaderModalController.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/FormsExecution/fields/File/FileUploaderApi.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/main/Execution/FormsExecution/fields/Grid/util/getTableSelection.ts","../src/main/Execution/FormsExecution/fields/Grid/util/GridFooterHandler.ts","../src/main/Execution/FormsExecution/fields/Grid/index.ts","../src/main/Execution/FormsExecution/fields/GridPaginated/index.ts","../src/main/Execution/FormsExecution/fields/Hidden/index.ts","../src/main/Execution/FormsExecution/fields/Image/index.ts","../src/main/Execution/FormsExecution/fields/Input/index.ts","../src/main/Execution/FormsExecution/fields/Label/index.ts","../src/main/Execution/FormsExecution/fields/Link/index.ts","../src/main/Execution/FormsExecution/fields/ModalInput/index.ts","../src/main/Execution/FormsExecution/fields/Multiple/index.ts","../src/main/Execution/FormsExecution/fields/Password/index.ts","../src/main/Execution/FormsExecution/fields/Radio/index.ts","../src/main/Execution/FormsExecution/fields/Select/index.ts","../src/main/Execution/FormsExecution/fields/Textarea/index.ts","../src/main/Execution/FormsExecution/fields/Title/index.ts","../src/main/Execution/FormsExecution/fields/Tree/index.ts","../src/main/Execution/FormsExecution/fieldsMap.ts","../src/main/Execution/Process/index.ts","../src/main/Execution/Task.ts","../src/main/Execution/Entity/index.ts","../src/main/Execution/Observations/index.ts","../src/main/Execution/FlowModals/FlowModal.ts","../src/main/Execution/FlowModals/ShowPoolSelection.ts","../src/main/Execution/FlowModals/ShowPathSelection.ts","../src/main/Execution/FlowModals/ShowSignSelection.ts","../src/main/Execution/FlowModals/ShowConfirmMessage.ts","../src/main/Execution/FlowModals/ShowSign.ts","../src/main/Execution/FlowModals/confirmFlow.ts","../src/main/Execution/index.ts","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/Notifications/StatusNotification.ts"],"sourcesContent":["const Field = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n\r\n // Mensajes de error\r\n WRONG_ATT_TYPE_ERROR:\r\n 'Component does not support attributes of type <TOK>. Contact system administrator',\r\n\r\n // Keys almacenadas en los campos\r\n STORE_KEY_FIELD: 'field',\r\n STORE_KEY_FORM: 'form',\r\n\r\n PROPERTY_ARIA_DESCRIPTION: 'ariaDescription',\r\n PROPERTY_ARIA_LABEL: 'ariaLabel',\r\n PROPERTY_ALT: 'alt',\r\n PROPERTY_AUTO_COMPLETE: 'autoComplete',\r\n PROPERTY_AUTO_FOCUS: 'autoFocus',\r\n PROPERTY_INPUT_TYPE: 'inputType',\r\n PROPERTY_PLACE_HOLDER: 'placeHolder',\r\n PROPERTY_TITLE: 'title',\r\n} as const;\r\n\r\nexport default Field;\r\n","const Form = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default Form;\r\n","import Field from './Field';\r\nimport Form from './Form';\r\n\r\nexport const IProperty = {\r\n ...Field,\r\n ...Form,\r\n} as const;\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { Notification } from './Notification';\r\nimport { EventEmitter } from '../../util';\r\nimport type { CustomComponent } from '../Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { Field } from '../Execution/FormsExecution/Field';\r\n\r\nexport type FocusTarget = {\r\n element: Field | CustomComponent;\r\n};\r\n\r\nexport class Notifications {\r\n static #instance: Notifications | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new Notifications();\r\n\r\n return this.#instance!;\r\n }\r\n\r\n private emitter = new EventEmitter<{\r\n notification: Notification;\r\n }>();\r\n\r\n private constructor() {\r\n makeObservable<Notifications, 'notifications'>(this, {\r\n notifications: observable,\r\n add: action,\r\n remove: action,\r\n });\r\n }\r\n\r\n protected notifications: Notification[] = [];\r\n\r\n add(notification: Notification) {\r\n this.notifications.push(notification);\r\n this.emitter.emit('notification', notification);\r\n }\r\n\r\n getAll() {\r\n return this.notifications;\r\n }\r\n\r\n getById(id: string | number) {\r\n return this.notifications.find((c) => c.id === id);\r\n }\r\n\r\n remove(notification: string | number | Notification) {\r\n this.notifications = this.notifications.filter((c) => {\r\n if (typeof notification === 'string' || typeof notification === 'number')\r\n return c.id !== notification;\r\n return c !== notification;\r\n });\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n}\r\n","import { makeAutoObservable } from 'mobx';\r\n\r\nexport type NotificationIcon = string;\r\n\r\nexport type NotificationType = 'info' | 'error' | 'success' | 'warning';\r\n\r\nexport type NotificationDefinition = {\r\n icon?: NotificationIcon;\r\n id?: string | number;\r\n isOpen?: boolean;\r\n message: string;\r\n stackTrace?: string;\r\n title?: string;\r\n type?: NotificationType;\r\n};\r\n\r\nexport abstract class Notification<\r\n State extends NotificationDefinition = NotificationDefinition,\r\n> {\r\n protected state: State;\r\n\r\n constructor(public readonly props: State) {\r\n this.state = props;\r\n\r\n makeAutoObservable(this);\r\n }\r\n\r\n get icon() {\r\n return this.state.icon;\r\n }\r\n get id() {\r\n return this.state.id;\r\n }\r\n get isOpen() {\r\n return this.state.isOpen;\r\n }\r\n get message() {\r\n return this.state.message;\r\n }\r\n get stackTrace() {\r\n return this.state.stackTrace;\r\n }\r\n get title() {\r\n return this.state.title;\r\n }\r\n get type() {\r\n return this.state.type;\r\n }\r\n}\r\n","import { Notification } from './Notification';\r\n\r\nexport class MessageNotification extends Notification {\r\n close() {\r\n this.state.isOpen = false;\r\n }\r\n}\r\n","export function arrayOrArray<T>(e: T | T[] | undefined): T[] {\r\n if (Array.isArray(e)) return e as T[];\r\n if (e !== undefined) return [e] as T[];\r\n return [] as T[];\r\n}\r\n","const fieldProps = {\n // field types\n TYPE_INPUT: 'input',\n TYPE_SELECT: 'select',\n TYPE_RADIO: 'radio',\n TYPE_CHECK: 'check',\n TYPE_BUTTON: 'button',\n TYPE_AREA: 'area',\n TYPE_LABEL: 'label',\n TYPE_TITLE: 'title',\n TYPE_FILE: 'file',\n TYPE_MULTIPLE: 'multiple',\n TYPE_HIDDEN: 'hidden',\n TYPE_PASSWORD: 'password',\n TYPE_GRID: 'grid',\n TYPE_IMAGE: 'image',\n TYPE_HREF: 'href',\n TYPE_EDITOR: 'editor',\n TYPE_TREE: 'tree',\n TYPE_CAPTCHA: 'captcha',\n\n // field functions\n FUNC_CLICK: 'onclick',\n FUNC_CHANGE: 'onchange',\n FUNC_MODAL_RETURN: 'onmodalreturn',\n\n FUNC_ROW_ADD: 'onrowadd',\n FUNC_ROW_DELETE: 'onrowdelete',\n FUNC_ROW_SORT: 'onrowsort',\n FUNC_COL_SELECT: 'oncolselect',\n\n // Attribute w/ props json for fields\n FIELD_PROPERTIES: 'properties',\n\n // Field properties\n PROPERTY_NAME: 'name',\n PROPERTY_SIZE: 'size',\n PROPERTY_READONLY: 'readonly',\n PROPERTY_DISABLED: 'disabled',\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\n PROPERTY_FONT_COLOR: 'fontColor',\n PROPERTY_VALUE: 'value',\n PROPERTY_REQUIRED: 'required',\n PROPERTY_COLSPAN: 'colspan',\n PROPERTY_ROWSPAN: 'rowspan',\n PROPERTY_MODAL: 'modal',\n PROPERTY_ROWS: 'thisRows',\n PROPERTY_BOLD: 'bold',\n PROPERTY_UNDERLINED: 'underlined',\n PROPERTY_ALIGNMENT: 'alignment',\n PROPERTY_IMAGE: 'imageUrl',\n PROPERTY_COL_WIDTH: 'colWidth',\n PROPERTY_GRID_HEIGHT: 'gridHeight',\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\n PROPERTY_TRANSIENT: 'transient',\n PROPERTY_GRID_TITLE: 'gridTitle',\n PROPERTY_GRID_FORM: 'gridForm',\n PROPERTY_TOOLTIP: 'tooltip',\n PROPERTY_VALUE_COLOR: 'valueColor',\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\n PROPERTY_NO_DOWNLOAD: 'noDownload',\n PROPERTY_NO_ERASE: 'noErase',\n PROPERTY_NO_LOCK: 'noLock',\n PROPERTY_NO_HISTORY: 'noHistory',\n PROPERTY_NO_MODIFY: 'noModify',\n PROPERTY_ALLOW_EDITION: 'allowEdition',\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\n PROPERTY_URL: 'url',\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\n PROPERTY_PAGED_GRID: 'paged',\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\n PROPERTY_MAX_REG_GRID: 'maxRecords',\n PROPERTY_GRID_LABEL: 'gridColTitle',\n PROPERTY_GRID_QUERY: 'gridQuery',\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\n PROPERTY_DISPLAY_NONE: 'displayNone',\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\n PROPERTY_CHECKED: 'checked',\n PROPERTY_FILE_PREVIEW: 'filePreview',\n PROPERTY_NOT_PRINT: 'noPrint',\n // tree component\n PROPERTY_SELECT_PARENT: 'selParent',\n PROPERTY_HEIGHT: 'height',\n PROPERTY_MULTISELECT: 'multiselect',\n PROPERTY_SEL_PARENT: 'selParent',\n PROPERTY_PARENT_ICON: 'parentIcon',\n PROPERTY_LEAF_ICON: 'leafIcon',\n PROPERTY_CSS_CLASS: 'cssClass',\n PROPERTY_DOC_TYPE: 'docType',\n // file component\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\n} as const;\n\nexport default fieldProps;\n","const formProps = {\n FUNC_LOAD: 'onload',\n FUNC_RELOAD: 'onreload',\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\n PROPERTY_FORM_HIDDEN: 'frmHidden',\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\n PROPERTY_FORM_TAB: 'frmTab',\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\n PROPERTY_FORM_READONLY: 'readOnly',\n SIGNABLE_FORM: 'signableForm',\n MARKED_TO_SIGN: 'markedToSign',\n REQUIRED_SIGN: 'requiredSignableForm',\n LANGUAGES: 'langs',\n} as const;\n\nexport default formProps;\n","import fieldProps from '../fieldProps';\nimport formProps from '../formProps';\n\nconst FormBoolProps = [\n formProps.PROPERTY_FORM_INVISIBLE,\n formProps.PROPERTY_FORM_HIDDEN,\n formProps.PROPERTY_FORM_CLOSED,\n formProps.PROPERTY_FORM_TAB,\n formProps.PROPERTY_FORM_HIGHLIGHT,\n formProps.PROPERTY_FORM_DONT_FIRE,\n formProps.PROPERTY_FORM_READONLY,\n formProps.SIGNABLE_FORM,\n formProps.MARKED_TO_SIGN,\n formProps.REQUIRED_SIGN,\n];\n\nconst FieldBoolProps = [\n fieldProps.PROPERTY_ALLOW_EDITION,\n fieldProps.PROPERTY_CHECKED,\n fieldProps.PROPERTY_DISABLED,\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\n fieldProps.PROPERTY_FILE_PREVIEW,\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\n fieldProps.PROPERTY_HIDE_GRID_BTN,\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\n fieldProps.PROPERTY_INPUT_AS_TEXT,\n fieldProps.PROPERTY_MODAL_DISABLED,\n fieldProps.PROPERTY_MULTISELECT,\n fieldProps.PROPERTY_NO_DOWNLOAD,\n fieldProps.PROPERTY_NO_ERASE,\n fieldProps.PROPERTY_NO_LOCK,\n fieldProps.PROPERTY_NO_MODIFY,\n fieldProps.PROPERTY_NOT_PRINT,\n fieldProps.PROPERTY_PAGED_GRID,\n fieldProps.PROPERTY_READONLY,\n fieldProps.PROPERTY_REQUIRED,\n fieldProps.PROPERTY_SEL_PARENT,\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\n fieldProps.PROPERTY_TRANSIENT,\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\n];\n\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\nexport default BoolProps;\n","// get boolean value from string values\r\nexport const parseBoolean = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst childParsers: ((element: Element, next: () => void) => void | Element)[] =\r\n [\r\n (element, next) => {\r\n if (element.tagName === 'f') {\r\n if (\r\n BoolProps.includes(element.attributes.getNamedItem('i')?.value || '')\r\n ) {\r\n element.setAttribute(\r\n 'v',\r\n String(\r\n parseBoolean(element.attributes.getNamedItem('v')?.value || ''),\r\n ),\r\n );\r\n return element;\r\n }\r\n next();\r\n }\r\n },\r\n ];\r\n\r\nconst tagNameParsers: ((key: string, next: () => void) => void | string)[] = [\r\n (key, next) => {\r\n if (key === 'a') return 'form';\r\n if (key === 'b') return 'field';\r\n if (key === 'g') return 'possibleValues';\r\n if (key === 'h') return 'item';\r\n if (key === 'z') return 'focusTo';\r\n if (key === 'r') return 'reload';\r\n if (key === 'p') return 'proccess';\r\n if (key === 'd') return 'valueAttr';\r\n next();\r\n },\r\n (key, next) => {\r\n if (key === 't') return 'text';\r\n if (key === 'label') return 'LABEL';\r\n next();\r\n },\r\n];\r\n\r\nconst attributesParsers: ((\r\n key: string,\r\n value: any,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (String(value).toLowerCase() === 'true') return { key, value: true };\r\n if (String(value).toLowerCase() === 'false') return { key, value: false };\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (['scriptEvents', 'serverEvents'].includes(key)) {\r\n return { key, value: JSON.parse(value) };\r\n }\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (key === 'value' && typeof value === 'number' && Number.isNaN(value)) {\r\n return { key, value: '' };\r\n }\r\n if (key === 'valueType' && typeof value === 'string' && value === 'null') {\r\n return { key, value: '' };\r\n }\r\n if (\r\n (key === 'cols' ||\r\n key === 'rows' ||\r\n key === 'x' ||\r\n key === 'y' ||\r\n key === 'length') &&\r\n typeof value === 'string'\r\n ) {\r\n const n = Number.parseFloat(value);\r\n if (!Number.isNaN(n)) {\r\n return { key, value: n };\r\n }\r\n }\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (BoolProps.includes(key)) {\r\n return { key, value: parseBoolean(value) };\r\n }\r\n next();\r\n },\r\n (_key, value, next) => {\r\n if (value.match?.(/[&]/))\r\n new DOMParser().parseFromString(\r\n value.replaceAll('<', '&lt;'),\r\n 'text/html',\r\n ).body.textContent!;\r\n\r\n next();\r\n },\r\n];\r\n\r\nexport function parseXml<T>(xmlString: string): T {\r\n // Parse the XML string into a DOM Document\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(xmlString, 'application/xml');\r\n\r\n // Check for parsing errors\r\n if (xmlDoc.querySelector('parsererror')) {\r\n throw new Error('Error parsing XML');\r\n }\r\n\r\n function xmlElementToObject(element: Element): any {\r\n const obj: any = {};\r\n\r\n for (const elParser of childParsers) {\r\n let next = false;\r\n const el = elParser(element, () => {\r\n next = true;\r\n });\r\n if (!next && el) {\r\n element = el;\r\n break;\r\n }\r\n }\r\n\r\n // Add attributes to the object\r\n for (const originalAttr of element.attributes) {\r\n const attr = {\r\n name: originalAttr.name,\r\n value: originalAttr.value,\r\n };\r\n\r\n for (const parser of attributesParsers) {\r\n let next = false;\r\n const res = parser(attr.name, attr.value, () => {\r\n next = true;\r\n });\r\n if (!next) {\r\n attr.name = res!.key;\r\n attr.value = res!.value;\r\n break;\r\n }\r\n }\r\n\r\n if (obj[attr.name]) {\r\n if (Array.isArray(obj[attr.name])) {\r\n obj[attr.name].push(attr.value);\r\n } else {\r\n obj[attr.name] = [obj[attr.name], attr.value];\r\n }\r\n } else {\r\n obj[attr.name] = attr.value;\r\n }\r\n }\r\n\r\n // Recursively process child nodes\r\n for (const child of element.childNodes) {\r\n if (child instanceof Element) {\r\n const o = xmlElementToObject(child as Element);\r\n\r\n let tagName = child.tagName;\r\n for (const parser of tagNameParsers) {\r\n let next = false;\r\n const current = parser(tagName, () => {\r\n next = true;\r\n });\r\n if (!next && current) {\r\n tagName = current;\r\n break;\r\n }\r\n }\r\n\r\n if (obj[tagName]) {\r\n if (Array.isArray(obj[tagName])) {\r\n obj[tagName].push(o);\r\n } else {\r\n obj[tagName] = [obj[tagName], o];\r\n }\r\n } else {\r\n obj[tagName] = o;\r\n }\r\n } else if (child.nodeType === Node.TEXT_NODE) {\r\n const textContent = child.textContent?.trim();\r\n if (textContent) {\r\n if (obj.text) {\r\n if (Array.isArray(obj.text)) {\r\n obj.text.push(textContent);\r\n } else {\r\n obj.text = [obj.text, textContent];\r\n }\r\n } else {\r\n obj.text = textContent;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return replaceLabelHtmlValues(obj);\r\n }\r\n\r\n function replaceLabelHtmlValues(o: object) {\r\n for (const [key, value] of Object.entries(o)) {\r\n if (typeof value === 'object' && value) {\r\n (o as any)[key] = replaceLabelHtmlValues(value);\r\n } else if (typeof value === 'string' && value.match(/&/)) {\r\n (o as any)[key] = new DOMParser().parseFromString(\r\n value.replaceAll('<', '&lt;'),\r\n 'text/html',\r\n ).body.textContent!;\r\n }\r\n }\r\n return o;\r\n }\r\n\r\n // Convert the root XML element to a JavaScript object\r\n const rootElement = xmlDoc.documentElement;\r\n return xmlElementToObject(rootElement);\r\n}\r\n\r\n(window as any).x = parseXml;\r\n","import type { AxiosResponse } from 'axios';\r\nimport { Notifications } from '../../main/Notifications';\r\nimport { MessageNotification } from '../../main/Notifications/MessageNotification';\r\nimport { arrayOrArray } from '../array/arrayOrArray';\r\nimport {\r\n IApiaApiPostConfig,\r\n IApiaApiRequestConfig,\r\n TApiaApiAxiosResponse,\r\n TApiaApiResult,\r\n TApiaMessage,\r\n TApiaSystemMessageObj,\r\n} from './types';\r\nimport { NotificationType } from '../../main/Notifications/Notification';\r\nimport { parseXml } from '../xml/parseXml';\r\nimport type { IStringifyOptions } from 'qs';\r\nimport QueryString from 'qs';\r\n\r\ndeclare global {\r\n interface Window {\r\n [key: string]: string;\r\n }\r\n}\r\n\r\nfunction dispatchMessage(type: NotificationType, message: TApiaMessage) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: message.text,\r\n title: message.label,\r\n type,\r\n }),\r\n );\r\n}\r\n\r\nfunction getAxios() {\r\n return import('axios').then((r) => r.default);\r\n}\r\n\r\nconst handleWrongResponse = (error: Error) => {\r\n if (error instanceof InvalidSessionException) throw error;\r\n\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: errorMessage.replaceAll('AxiosError', 'Error'),\r\n }),\r\n );\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nexport function parseMessages(response: TApiaSystemMessageObj) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n arrayOrArray(exceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'error'),\r\n );\r\n arrayOrArray(sysMessages?.message).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'warning'),\r\n );\r\n arrayOrArray(sysExceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'error'),\r\n );\r\n}\r\n\r\nasync function handleResponse<LoadType extends Record<string, unknown>>(\r\n result: AxiosResponse<string> | void,\r\n): Promise<TApiaApiAxiosResponse<LoadType> | null> {\r\n try {\r\n if (!result || result.data === undefined) {\r\n //\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<LoadType>(result);\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(e instanceof Error ? e : new Error(e as string));\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class InvalidSessionException extends Error {}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n LoadType extends Record<string, unknown>,\r\n>(\r\n response: AxiosResponse<string>,\r\n) => {\r\n let parsedObj: TApiaSystemMessageObj<LoadType> | void | undefined = undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<LoadType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n try {\r\n parsedObj = parseXml<LoadType>(response.data);\r\n } catch (e) {\r\n handleWrongResponse(new Error(e as string));\r\n }\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n\r\n parseMessages({ exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n return { ...parsedObj, ...load, ...(rest as LoadType) };\r\n }\r\n return {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n ...(rest as LoadType),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nexport async function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiPostConfig<DataType>,\r\n): TApiaApiResult<LoadType> {\r\n const postData =\r\n behaveConfig?.postDataTreatment === 'stringify'\r\n ? QueryString.stringify(\r\n behaveConfig.postData,\r\n behaveConfig.stringifyOptions,\r\n )\r\n : behaveConfig?.postData;\r\n\r\n const response = await (await getAxios())\r\n .post<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(actualUrl, postData, behaveConfig?.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(new Error(e as string));\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nexport async function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiRequestConfig,\r\n): TApiaApiResult<LoadType> {\r\n const response = await (await getAxios())\r\n .get<T, AxiosResponse<string>, D>(actualUrl, behaveConfig?.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(e instanceof Error ? e : new Error(e as string));\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport type MakeApiaUrlProps = {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n};\r\n\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * window.URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(props?: MakeApiaUrlProps) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? window.URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = window.TAB_ID_REQUEST.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : window.TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = window;\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replaceAll('/', '');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n","import { Callback, Callbacks, Map, UnSubscriber } from './types';\n\nexport type { Callback, Map, UnSubscriber } from './types';\n\n/**\n * @public\n *\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\n *\n * @typeParam Events - An extension of `Map` where the key is the event name and the value is the type of data associated with that event.\n */\nexport class EventEmitter<Events extends Map> {\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\n on: {} as Callbacks<Events>,\n once: {} as Callbacks<Events>,\n };\n protected enabled = true;\n\n protected debugMode = false;\n debug(enable = true) {\n this.debugMode = enable;\n }\n\n /**\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\n *\n * @param event - The event name to emit.\n * @param data - The data associated with the event. Its type is dependent on the event name.\n */\n emit<K extends keyof Events>(event: K, data: Events[K]) {\n this.callbacks.on[event]?.forEach((current) => current(data));\n\n this.callbacks.once[event]?.forEach((current) => current(data));\n this.callbacks.once[event] = [];\n }\n\n /**\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\n */\n get isEnabled() {\n return this.enabled;\n }\n\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\n (c) => c !== cb,\n );\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\n (c) => c !== cb,\n );\n }\n\n /**\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\n *\n * @param event - The event name to listen to.\n * @param cb - The callback function to be invoked when the event is emitted.\n * @returns A function to unsubscribe the event listener.\n */\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\n this.callbacks.on[event].push(cb);\n\n return () => {\n this.callbacks.on[event] = this.callbacks.on[event].filter(\n (c) => c !== cb,\n );\n };\n }\n\n /**\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\n *\n * @param event - The event name to listen to for a single occurrence.\n * @param cb - The callback function to be invoked when the event is emitted.\n * @returns A function to unsubscribe the event listener.\n */\n once<K extends keyof Events>(\n event: K,\n cb: Callback<Events, K>,\n ): UnSubscriber {\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\n this.callbacks.once[event].push(cb);\n\n return () => {\n this.callbacks.once[event] = this.callbacks.once[event].filter(\n (c) => c !== cb,\n );\n };\n }\n}\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\nimport { SetStateAction } from './types';\n\ntype Setter<T> = (prevState: T) => T;\n\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\n return typeof data === 'function';\n}\n\n/**\n * @private\n */\ntype EmitterState<Events extends Map> = {\n [K in keyof Events]: Events[K];\n};\n\n/**\n * Extends EventEmitter to manage and emit events with state persistence.\n * This class allows emitting and listening to typed events while also keeping\n * a state that can be accessed synchronously for each event.\n *\n * @param initialState - If given will be passed to subscriptions\n *\n * @template Events - A mapping of event names to their associated data types.\n * @extends EventEmitter<Events>\n */\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\n protected state = {} as EmitterState<Events>;\n\n constructor(initialState?: Partial<Events>) {\n super();\n\n this.state = Object.assign({}, initialState) as Events;\n }\n\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\n this.state[event] = data;\n super.emit(event, data);\n }\n\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\n if (this.state[event]) cb(this.state[event]);\n\n return super.on(event, cb);\n }\n\n once<K extends keyof Events>(\n event: K,\n cb: Callback<Events, K>,\n ): UnSubscriber {\n if (this.state[event]) {\n cb(this.state[event]);\n\n /**\n * Given that the information has already been sent, the subscription is not necessary\n */\n return () => {};\n }\n\n return super.once(event, cb);\n }\n\n /**\n * Retrieves the stored state for a given event\n */\n getState<K extends keyof Events>(event: K): Events[K] {\n return this.state[event];\n }\n\n /**\n * Just an alias for emit, with the advantage that can be called with a callback as second parameter in which case behaves exactly as react's setState.\n */\n setState<K extends keyof Events>(\n event: K,\n data: SetStateAction<Events[K]>,\n ): void {\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\n\n this.emit(event, actualData);\n }\n}\n","import { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n","export function getLabel(\r\n label: string,\r\n replacers?: Partial<{\r\n text: Record<string, string>;\r\n tooltip: Record<string, string>;\r\n }>,\r\n) {\r\n const labelObject = (window as any).labels[label] as {\r\n text: string;\r\n tooltip: string;\r\n };\r\n\r\n if (replacers?.text) {\r\n Object.entries(replacers.text).forEach(([key, value]) => {\r\n labelObject.text = labelObject.text.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n if (replacers?.tooltip) {\r\n Object.entries(replacers.tooltip).forEach(([key, value]) => {\r\n labelObject.tooltip = labelObject.tooltip.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n\r\n return labelObject;\r\n}\r\n\r\nexport const labels = {\r\n errorConfirmationFailed: () => 'Error al confirmar',\r\n errorRegexNotValidated: () => 'La expresión regular no fue validada.',\r\n errorCouldNotSync: () => 'No se pudo sincronizar',\r\n errorFieldRequired: () => 'Este campo es requerido',\r\n errorLoadForms: () =>\r\n 'Error al inicializar los formularios, contacte al administrador.',\r\n errorOnEvent: (eventName: string, className: string) =>\r\n (window as any).SERVER_MODE\r\n ? 'Error al ejecutar la clase de negocios, contacte al administrador.'\r\n : `Error on event ${eventName}, className ${className}`,\r\n};\r\n","import { Tab } from '@apia/components';\r\n\r\nexport function getCurrentTabsString() {\r\n const tabsList = (window.tabsController as any)?.tabsList as Tab[];\r\n\r\n if (tabsList)\r\n return `${tabsList\r\n .map((c) => (c.state.isOpen ? c.id : -1))\r\n .filter((c) => !(typeof c === 'number'))\r\n .join(',')}~${document.scrollingElement?.scrollTop ?? 0}`;\r\n}\r\n","import { getCurrentTabsString } from '../../../../util/app/getCurrentTabsString';\r\n\r\nexport const actions = {\r\n forms: 'apia.execution.FormAction.run',\r\n formSubmit: `${window.CONTEXT}/apia.execution.FormAction.run?action=fireFieldEvent&currentTab=${getCurrentTabsString()}${window.TAB_ID_REQUEST}`,\r\n};\r\n","import fieldProps from './fieldProps';\nimport formProps from './formProps';\n\nconst IProperty = {\n ...fieldProps,\n ...formProps,\n} as const;\n\nexport default IProperty;\n","import IProperty from '../constants/IProperty';\r\nimport { arrayOrArray } from '../../../../util';\r\nimport { Notifications } from '../../../Notifications';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { Field } from '../Field';\r\nimport { Grid, Select } from '../fields';\r\nimport { parseMessages } from '../../../../util/api/apiaApi';\r\n\r\nasync function getExecution() {\r\n return (await import('../../index')).Execution;\r\n}\r\n\r\nexport const setAjaxFormResponse = async (\r\n response: TFieldAjaxEventResponsePayload,\r\n) => {\r\n const forms = arrayOrArray(response.form);\r\n for (let i = 0; i < forms.length; i += 1) {\r\n const formId = forms[i].i;\r\n const form = forms[i];\r\n const [frmParent, id] = formId.split('_');\r\n const apiaForm = (await getExecution()).instance.getFormById(\r\n id,\r\n frmParent as 'E',\r\n );\r\n\r\n arrayOrArray(form.cusCmp).forEach((c) => {\r\n apiaForm\r\n ?.getCustomComponentByFldId(Number.parseInt(String(c.id)))\r\n ?.processResult({ state: c.state });\r\n });\r\n\r\n /** Refresh the updated grids */\r\n const changedGrids = arrayOrArray(form.changedGrids.grdId);\r\n changedGrids.forEach(({ id }) => {\r\n (apiaForm?.getFieldById(id) as Grid)?.refresh();\r\n });\r\n\r\n if (!apiaForm) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: `Form with id ${formId} not found`,\r\n }),\r\n );\r\n\r\n continue;\r\n }\r\n\r\n // Iterate each field element in form element\r\n const ajaxFields = arrayOrArray(forms[i].field);\r\n for (let f = 0; f < ajaxFields.length; f += 1) {\r\n // got id of field to alter\r\n const apiField = apiaForm?.getFieldById(ajaxFields[f].i) as Field<any>;\r\n if (apiField) {\r\n // set VALUE to fldId\r\n if (ajaxFields[f].c !== undefined) {\r\n const { c } = ajaxFields[f];\r\n\r\n let value: any = undefined;\r\n if (typeof c === 'string') {\r\n value = c;\r\n } else {\r\n /**\r\n * Este procedimiento se usa para concatenar los distintos índices de textarea, editor, etc\r\n */\r\n const valuesArray = arrayOrArray(c?.valueAttr);\r\n value = valuesArray.reduce((reduced, current) => {\r\n return reduced + current.v;\r\n }, '');\r\n }\r\n\r\n /**\r\n * Si ponemos que apiField es instanceof FieldWithAttribute generamos una dependencia\r\n * circular que rompe la compilación !!!\r\n */\r\n if ((apiField as any).attribute) {\r\n (apiField as any).setValue(value);\r\n }\r\n }\r\n // set PROPERTIES to fldId\r\n if (ajaxFields[f].e !== undefined) {\r\n const ajaxProps = arrayOrArray(ajaxFields[f].e);\r\n for (let c = 0; c < ajaxProps.length; c += 1) {\r\n if (ajaxProps[c]?.f) {\r\n const prop = arrayOrArray(ajaxProps[c]?.f);\r\n for (let p = 0; p < prop.length; p += 1) {\r\n if (prop[p]?.i) {\r\n apiField.setProperty(prop[p]?.i, prop[p]?.v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // set field possible VALUES for select/multi and radio\r\n if (ajaxFields[f].possibleValues !== undefined) {\r\n const possibleValuesItems = arrayOrArray(\r\n ajaxFields[f].possibleValues,\r\n );\r\n const items = arrayOrArray(possibleValuesItems[0]?.item);\r\n if (items) {\r\n if (\r\n ['multiple', 'radio', 'select'].includes(\r\n apiField.definition.fieldType,\r\n )\r\n ) {\r\n (apiField as Select).setProperty(\r\n 'possibleValue',\r\n items.map((current) => ({\r\n value: current.v,\r\n text: current.text,\r\n })),\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n ['tree', 'file'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const possibleValues = arrayOrArray(\r\n ajaxFields[f]?.field?.possibleValue,\r\n );\r\n apiField.setProperty('possibleValue', possibleValues);\r\n\r\n const propertiesObj = eval(\r\n '(' + ajaxFields[f]?.field?.properties + ')',\r\n );\r\n\r\n Object.keys(propertiesObj).forEach((key) => {\r\n let value = propertiesObj[key];\r\n\r\n if (typeof value === 'string') {\r\n const lowerValue = value.toLowerCase();\r\n if (lowerValue === 't' || lowerValue === 'true') {\r\n value = true;\r\n } else if (lowerValue === 'f' || lowerValue === 'false') {\r\n value = false;\r\n }\r\n }\r\n\r\n apiField.setProperty(key, value);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Formulario invisible\r\n if (\r\n form.v === 't' &&\r\n String(apiaForm.properties[IProperty.PROPERTY_FORM_HIDDEN]) !== 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, true);\r\n } else if (\r\n form.v === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_HIDDEN)) === 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, false);\r\n }\r\n\r\n // Formulario cerrado\r\n if (\r\n form.c === 't' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) !== 'true'\r\n ) {\r\n apiaForm.closeForm();\r\n } else if (\r\n form.c === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) === 'true'\r\n ) {\r\n apiaForm.openForm();\r\n }\r\n }\r\n\r\n if (response.proccess?.p) {\r\n (await getExecution()).instance\r\n .getProcess()\r\n ?.setPriority(response.proccess.p);\r\n }\r\n\r\n if (response.data) {\r\n parseMessages(response.data);\r\n }\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { IButton } from '../types';\r\n\r\nexport class ButtonsAction {\r\n constructor(private button: IButton) {\r\n makeObservable<ButtonsAction, 'button'>(this, {\r\n button: observable,\r\n });\r\n }\r\n\r\n private update(props: Partial<IButton>) {\r\n if (this.button) {\r\n this.button = { ...this.button, ...props };\r\n }\r\n }\r\n\r\n get action() {\r\n return this;\r\n }\r\n\r\n get disabled() {\r\n return this.button.disabled;\r\n }\r\n\r\n get props() {\r\n const properties = {\r\n disabled: this.button.disabled,\r\n hidden: this.button.hidden,\r\n loading: this.button.isLoading,\r\n };\r\n return properties;\r\n }\r\n\r\n get label() {\r\n return this.button?.label;\r\n }\r\n\r\n get title() {\r\n return this.button?.title ?? '';\r\n }\r\n\r\n get variant() {\r\n return this.button?.variant ?? '';\r\n }\r\n\r\n set title(title: string) {\r\n this.update({ title });\r\n }\r\n\r\n set variant(variant: string) {\r\n this.update({ variant });\r\n }\r\n\r\n public disable() {\r\n this.update({ disabled: true });\r\n }\r\n\r\n public enable() {\r\n this.update({ disabled: false });\r\n }\r\n\r\n public hide() {\r\n this.update({ hidden: true });\r\n }\r\n\r\n public show() {\r\n this.update({ hidden: false });\r\n }\r\n}\r\n","import { ButtonsAction } from './ButtonsActions';\r\nimport { IButton, TActionButtons } from '../types';\r\n\r\nexport class ActionsController {\r\n static CONFIRM = 0;\r\n static NEXT = 1;\r\n static PREVIOUS = 2;\r\n static SIGN = 3;\r\n static SAVE = 4;\r\n static RELEASE = 5;\r\n static DELEGATE = 6;\r\n static SHARE = 7;\r\n static PRINT = 8;\r\n static VIEW_DOCS = 9;\r\n static CLOSE = 10;\r\n\r\n private static _instance: ActionsController;\r\n public static get instance(): ActionsController {\r\n if (!ActionsController._instance) {\r\n ActionsController._instance = new ActionsController();\r\n }\r\n return ActionsController._instance;\r\n }\r\n\r\n private buttons = new Map<TActionButtons, ButtonsAction>();\r\n\r\n public addButton(button: IButton) {\r\n if (this.buttons.has(button.id)) return;\r\n this.buttons.set(\r\n button.id,\r\n new ButtonsAction({\r\n ...{\r\n isLoading: false,\r\n disabled: false,\r\n hidden: false,\r\n },\r\n ...button,\r\n }),\r\n );\r\n }\r\n\r\n public getButton(id: TActionButtons) {\r\n if (this.buttons.has(id)) {\r\n return this.buttons.get(id);\r\n }\r\n throw Error('That button not exist');\r\n }\r\n}\r\n","import { Field } from '../main/Execution/FormsExecution/Field';\r\nimport { TApiaFieldCommonProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { IApiaField } from './types';\r\n\r\nexport default abstract class ApiaField implements IApiaField {\r\n #field: Field;\r\n\r\n constructor(field: Field) {\r\n this.#field = field;\r\n }\r\n\r\n get fldType() {\r\n return this.#field.definition.fieldType;\r\n }\r\n get index() {\r\n const idx = undefined;\r\n return idx ?? 0;\r\n }\r\n\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: TApiaFieldCommonProperties[K],\r\n ) {\r\n this.#field.setProperty(name, value);\r\n }\r\n getProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n ): TApiaFieldCommonProperties[K] {\r\n return this.#field.getProperty(name);\r\n }\r\n\r\n setFocus(): IApiaField | null {\r\n throw new Error('Method not implemented. ');\r\n }\r\n isInGrid(): boolean {\r\n return !!this.#field.properties.inGrid;\r\n }\r\n}\r\n","import { Button } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IButtonField extends IApiaField {\r\n fireClickEvent(): void;\r\n getValue(): string | null;\r\n}\r\n\r\nexport default class ButtonField extends ApiaField implements IButtonField {\r\n #field: Button;\r\n\r\n constructor(field: Button) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n fireClickEvent(): void {\r\n if (this.#field.definition.id) {\r\n this.#field.fireEvent('onClick');\r\n }\r\n }\r\n\r\n getValue(): string | null {\r\n if (this.#field.definition.id) {\r\n return this.#field.properties.value ?? '';\r\n }\r\n return null;\r\n }\r\n\r\n clearValue(): void {\r\n this.#field.properties.value = '';\r\n }\r\n}\r\n","import { Editor } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TEditorField = IApiaField;\r\n\r\nexport default class EditorField extends ApiaField implements TEditorField {\r\n constructor(field: Editor) {\r\n super(field);\r\n }\r\n}\r\n","import { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport ApiaField from './ApiaField';\r\n\r\nexport class ApiaFieldWithAttribute<T = string | boolean> extends ApiaField {\r\n #field: FieldWithAttribute;\r\n constructor(field: FieldWithAttribute) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue() {\r\n this.#field.setValue('');\r\n }\r\n\r\n getValue() {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: T) {\r\n this.#field.setValue(v);\r\n }\r\n\r\n getLabel(): string | null | void {\r\n return this.#field.attribute.title;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Select } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport type TOptionsAsArray = (string | number)[];\r\n\r\nexport default class SelectField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Select;\r\n constructor(field: Select) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n // get all select options either as array[] or object\r\n getOptions(asObject: boolean): TOptionsMap | TOptionsAsArray | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options.map((c) => c.value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // adds a option to the select field\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n text: showValue,\r\n });\r\n }\r\n }\r\n\r\n // overwrite all options in select field\r\n setOptions(optionsArray: PossibleValue[] | PossibleValue): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = optionsArray;\r\n }\r\n }\r\n\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n\r\n // get selected option either as array or object key/value\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n const arr = arrayOrArray(this.#field.properties.possibleValue);\r\n if (this.#field.definition.id) {\r\n if (asObject) {\r\n let obj = null;\r\n arr.forEach((c) => {\r\n if (c.selected) {\r\n obj = c;\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return arrayOrArray(arr.find((c) => c.selected));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedText(): string | null {\r\n if (this.#field.definition.id) {\r\n return (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.selected,\r\n )?.text ?? 'Not option selected'\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // // remove all select options\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n}\r\n","import { Input } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class InputField extends ApiaFieldWithAttribute {\r\n #field: Input;\r\n constructor(field: Input) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): number | string | boolean | null {\r\n return this.#field.getValue();\r\n }\r\n}\r\n","import { Tree } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class TreeField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Tree;\r\n constructor(field: Tree) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n setValue(v: string | number | (string | number)[]): void {\r\n this.#field.setValue(v);\r\n }\r\n}\r\n","import { ApiaUtil } from '@apia/components';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Checkbox } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport default class CheckField extends ApiaFieldWithAttribute {\r\n constructor(field: Checkbox) {\r\n super(field);\r\n }\r\n\r\n clearValue(): void {\r\n this.setValue(false);\r\n }\r\n\r\n setValue(value: string | boolean | number): void {\r\n // accepts 1/0 or true/false as values\r\n let val;\r\n const isBool = ApiaUtil.instance.parsers.parseBool(\r\n value as unknown as string,\r\n );\r\n if (isBool === true || isBool === false) {\r\n val = isBool;\r\n } else {\r\n throw new Error(\r\n 'Apia JSApi Error: The function setValue for a Checkbox field only accepts boolean or string type for value parameter.',\r\n );\r\n }\r\n super.setValue(val);\r\n }\r\n}\r\n","import { PossibleValue } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Radio } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class RadioField extends ApiaFieldWithAttribute {\r\n #field: Radio;\r\n constructor(field: Radio) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions(asObject: boolean): TOptionsMap | string[] | null {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n radioValues.forEach((c) => options.set(String(c.value), c));\r\n\r\n return options;\r\n }\r\n let optionsResult = [];\r\n optionsResult = radioValues.map((c) => String(c.value));\r\n return optionsResult;\r\n }\r\n return null;\r\n }\r\n\r\n clearOptions(): void | null {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = [];\r\n }\r\n }\r\n\r\n addOption(\r\n radioValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n const isValueIsRepeated = radioValues.some((c) => {\r\n return c.value === radioValue.toString();\r\n });\r\n\r\n if (allowRepeatedValue || !isValueIsRepeated) {\r\n radioValues.push({\r\n value: radioValue.toString(),\r\n text: showValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setOptions(options: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = options;\r\n }\r\n }\r\n\r\n removeOption(radioValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== radioValue,\r\n );\r\n }\r\n }\r\n\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue | null {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n const selected = radioValues.find((c) => c.selected);\r\n if (!selected) return null;\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n options.set(String(selected?.value), selected);\r\n return options;\r\n } else {\r\n return selected;\r\n }\r\n }\r\n\r\n getSelectedText(): string | undefined | null {\r\n if (this.#field.definition.id) {\r\n const possibleValue = arrayOrArray(this.#field.properties.possibleValue);\r\n if (possibleValue) {\r\n return possibleValue.find((c) => c.selected)?.text;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { TOptionsAsArray } from './SelectField';\r\nimport { Multiple } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class MultipleField extends ApiaFieldWithAttribute<string[]> {\r\n #field: Multiple;\r\n constructor(field: Multiple) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n text: showValue,\r\n });\r\n }\r\n }\r\n setValue(value: string[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.setValue(value);\r\n }\r\n }\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const selected = arrayOrArray(\r\n this.#field.properties.possibleValue,\r\n ).filter((c) => c.selected);\r\n\r\n if (selected) {\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n selected.forEach((c) => options.set(String(c.value), c));\r\n return options;\r\n }\r\n\r\n return selected;\r\n }\r\n }\r\n return null;\r\n }\r\n getOptions(asObject: boolean): TOptionsMap | TOptionsAsArray | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options.map((c) => c.value);\r\n }\r\n return null;\r\n }\r\n setOptions(optionsArray: PossibleValue[] | PossibleValue): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = optionsArray;\r\n }\r\n }\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n}\r\n","import { Hidden } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\n\r\nexport default class HiddenField extends ApiaField {\r\n constructor(field: Hidden) {\r\n super(field);\r\n }\r\n}\r\n","import { Textarea } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class AreaField extends ApiaFieldWithAttribute {\r\n constructor(field: Textarea) {\r\n super(field);\r\n }\r\n}\r\n","import { Image } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IImageField extends IApiaField {\r\n getValue(): null;\r\n setValue(): null;\r\n getLabel(): void;\r\n clearValue(): null;\r\n}\r\n\r\nexport default class ImageField extends ApiaField implements IImageField {\r\n #field: Image;\r\n constructor(field: Image) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n\r\n getValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Link } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ILinkField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class LinkField extends ApiaField implements ILinkField {\r\n #field: Link;\r\n constructor(field: Link) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n if (this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n }\r\n}\r\n","import { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ITextField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class TextField extends ApiaField implements ITextField {\r\n #field: Field;\r\n constructor(field: Field) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { IApiaField } from '../types';\r\n\r\nexport class CustomComponentField implements IApiaField {\r\n #field: CustomComponent;\r\n constructor(field: CustomComponent) {\r\n this.#field = field;\r\n }\r\n\r\n fireEvent(name: string) {\r\n this.#field.fireEvent(name);\r\n }\r\n getProperty(name: string): any {\r\n return this.#field.getProperty(name);\r\n }\r\n setFocus(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isInGrid(): boolean {\r\n return false;\r\n }\r\n getStringValue(attName: string) {\r\n return this.#field.getStringValue(attName);\r\n }\r\n getValue(attName: string, index = 0) {\r\n return this.#field.getValue(attName, index);\r\n }\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: any,\r\n ): void {\r\n this.#field.setProperty(name, value);\r\n }\r\n setStringValue(attName: string, value: string) {\r\n return this.#field.setStringValue(attName, value);\r\n }\r\n setValue(attName: string, value: any, index = 0) {\r\n return this.#field.setValue(attName, value, index);\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { Field as ExecutionField } from '../../main/Execution/FormsExecution/Field';\r\nimport {\r\n Button,\r\n Captcha,\r\n Checkbox,\r\n Editor,\r\n File,\r\n Grid,\r\n Hidden,\r\n Image,\r\n Input,\r\n Label,\r\n Link,\r\n Multiple,\r\n Password,\r\n Radio,\r\n Select,\r\n Textarea,\r\n Title,\r\n Tree,\r\n} from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport Field from '../constants/Field';\r\nimport {\r\n ButtonField,\r\n CaptchaField,\r\n CheckField,\r\n EditorField,\r\n FileUploaderField,\r\n HiddenField,\r\n ImageField,\r\n InputField,\r\n LinkField,\r\n MultipleField,\r\n PasswordField,\r\n RadioField,\r\n SelectField,\r\n TextAreaField,\r\n TextField,\r\n TreeField,\r\n} from '../fields';\r\nimport { CustomComponentField } from '../fields/CustomComponentField';\r\nimport GridField from '../fields/GridField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport const createNewField = (\r\n field: ExecutionField | FieldWithAttribute | CustomComponent,\r\n): IApiaField | null => {\r\n if (field instanceof CustomComponent) {\r\n return new CustomComponentField(field);\r\n } else {\r\n const { fieldType } = field.definition;\r\n let newField: IApiaField | null = null;\r\n\r\n switch (fieldType) {\r\n case Field.TYPE_INPUT:\r\n newField = new InputField(field as Input);\r\n break;\r\n case Field.TYPE_PASSWORD:\r\n newField = new PasswordField(field as Password);\r\n break;\r\n case Field.TYPE_SELECT:\r\n newField = new SelectField(field as Select);\r\n break;\r\n case Field.TYPE_RADIO:\r\n newField = new RadioField(field as Radio);\r\n break;\r\n case Field.TYPE_CHECK:\r\n newField = new CheckField(field as Checkbox);\r\n break;\r\n case Field.TYPE_BUTTON:\r\n newField = new ButtonField(field as Button);\r\n break;\r\n case Field.TYPE_MULTIPLE:\r\n newField = new MultipleField(field as Multiple);\r\n break;\r\n case Field.TYPE_HIDDEN:\r\n newField = new HiddenField(field as Hidden);\r\n break;\r\n case Field.TYPE_AREA:\r\n newField = new TextAreaField(field as Textarea);\r\n break;\r\n case Field.TYPE_GRID:\r\n newField = new GridField(field as Grid);\r\n break;\r\n case Field.TYPE_IMAGE:\r\n newField = new ImageField(field as Image);\r\n break;\r\n case Field.TYPE_HREF:\r\n newField = new LinkField(field as Link);\r\n break;\r\n case Field.TYPE_LABEL:\r\n newField = new TextField(field as Label);\r\n break;\r\n case Field.TYPE_TITLE:\r\n newField = new TextField(field as Title);\r\n break;\r\n case Field.TYPE_FILE:\r\n newField = new FileUploaderField(field as File);\r\n break;\r\n case Field.TYPE_CAPTCHA:\r\n newField = new CaptchaField(field as Captcha);\r\n break;\r\n case Field.TYPE_TREE:\r\n newField = new TreeField(field as Tree);\r\n break;\r\n case Field.TYPE_EDITOR:\r\n newField = new EditorField(field as Editor);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return newField;\r\n }\r\n};\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { SetStateAction } from '../../../util/events/types';\r\n\r\nexport class WithProperties<Props extends Record<string, any>> {\r\n properties: Props = {} as Props;\r\n\r\n constructor(initialState?: Props) {\r\n if (initialState) {\r\n this.properties = initialState;\r\n }\r\n makeObservable(this, { properties: observable, setProperty: action });\r\n }\r\n\r\n getProperty<K extends keyof Props>(propName: K): Props[K] {\r\n return this.properties[propName];\r\n }\r\n setProperty<K extends keyof Props>(\r\n propName: K,\r\n propValue: SetStateAction<Props[K]>,\r\n ) {\r\n const value =\r\n propValue instanceof Function\r\n ? propValue(this.properties[propName])\r\n : propValue;\r\n\r\n this.properties[propName] = value;\r\n }\r\n}\r\n","export const eventTypes = {\r\n EVENT_FLD_ONCHANGE: 1,\r\n EVENT_FLD_ONCLICK: 4,\r\n EVENT_FLD_POPULATE: 5,\r\n EVENT_FLD_ONMODALRETURN: 37,\r\n EVENT_FLD_ONMODALCHANGE: 36,\r\n\r\n // Grid Events\r\n EVENT_FLD_GRID_ADD: 60,\r\n EVENT_FLD_GRID_DEL: 61,\r\n EVENT_FLD_GRID_SORT: 62,\r\n EVENT_FLD_GRID_COLUMN_SELECT: 65,\r\n\r\n // Print Events\r\n EVENT_FRM_ONBEFORE_PRINT: 63,\r\n EVENT_FRM_ONAFTER_PRINT: 64,\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TFieldServerEvent,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { Form } from './Form';\r\nimport { WithProperties } from './WithProperties';\r\nimport { actions } from './constants/actions';\r\nimport { eventTypes } from './constants/eventTypes';\r\nimport { setAjaxFormResponse } from './events/setAjaxFormResponse';\r\nimport {\r\n FieldValidationState,\r\n FireEventParameters,\r\n TFieldAjaxEventResponsePayload,\r\n} from './types';\r\nimport { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaFunctions } from '../../../programming';\r\n\r\nexport type TFncParams = {\r\n type: 'V' | 'P' | 'E';\r\n value?: string;\r\n attId?: string | number;\r\n};\r\n\r\nlet af: ApiaFunctions | null = null;\r\nasync function getApiaFunctions() {\r\n if (!af) {\r\n await import('../../../programming/ApiaFunctions').then(\r\n ({ ApiaFunctions }) => (af = ApiaFunctions.instance),\r\n );\r\n }\r\n return af!;\r\n}\r\n\r\nexport abstract class Field<\r\n FieldProps extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n } = {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n },\r\n> extends WithProperties<FieldProps> {\r\n protected form: Form = {} as Form;\r\n\r\n definition: State['definition'];\r\n state: Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n } = {\r\n validation: { dirty: false, errorMessage: '', synchronizing: false },\r\n } as Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n };\r\n\r\n constructor({ properties, ...definition }: FieldDefinition) {\r\n super();\r\n\r\n this.properties = properties;\r\n this.definition = definition;\r\n\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions())\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n let idx: any;\r\n if (window.IS_EDIT_GRID_MODAL) {\r\n idx = window.MODAL_INDEX;\r\n } else {\r\n idx = this.definition?.index || 0;\r\n }\r\n return {\r\n ajaxUrl: actions.forms,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n action: 'fireFieldEvent',\r\n frmParent: this.form.definition.frmParent,\r\n frmId: this.form.definition.id,\r\n fldId: this.definition.id,\r\n index: idx,\r\n evtId,\r\n nuevo: true,\r\n preventAsXmlParameter: true,\r\n ...additionalParams,\r\n };\r\n }\r\n\r\n protected async fireScriptEvent(eventName: string): Promise<boolean> {\r\n const event = this.definition.scriptEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (event) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: Field<any, any, any> | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n this,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n return result;\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(eventName, event.evtName),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n protected async fireAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n const response = await post<TFieldAjaxEventResponsePayload>(\r\n await makeApiaUrl(\r\n this.getServerEventParams(event.evtId, {\r\n isAjax: true,\r\n }),\r\n ),\r\n {\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n if (response?.data?.success) {\r\n await setAjaxFormResponse(response.data);\r\n return true;\r\n }\r\n } catch (rejectedValue) {\r\n console.error(rejectedValue);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: String(rejectedValue),\r\n }),\r\n );\r\n }\r\n return false;\r\n }\r\n protected async fireNoAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const p = this.getServerEventParams(event.evtId, params);\r\n if ((window.config as any).execution.reloadOnNoAjaxEvents) {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n }\r\n protected async fireServerEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let event = this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n async fireEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let result = await this.fireScriptEvent(eventName);\r\n if (result) {\r\n result = await this.fireServerEvent(eventName, params);\r\n }\r\n\r\n /**\r\n * No es necesario mostrar errores ya que cada fireXXXEvent sabe hacerlo por sí mismo.\r\n */\r\n\r\n return result;\r\n }\r\n\r\n getForm() {\r\n return this.form;\r\n }\r\n\r\n protected hasEventsOfType(eventName: string) {\r\n return (\r\n this.definition.serverEvents?.find((c) => c.evtName === eventName) ||\r\n this.definition.scriptEvents?.find((c) => c.evtName === eventName)\r\n );\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n public async validate(): Promise<boolean | Field> {\r\n return true;\r\n }\r\n\r\n markAsRendered() {\r\n this.getForm().markFieldAsRendered(\r\n this.definition.id,\r\n this.definition.index,\r\n );\r\n }\r\n}\r\n","export type RetryConfiguration = {\r\n retries: number;\r\n timeout: number;\r\n};\r\n\r\nexport class TooMuchRetriesException extends Error {}\r\n\r\nfunction timeout(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n\r\n/**\r\n * Ejecuta el callback provisto y verifica el resultado contra el método checkSuccess. En caso de que checkSuccess devuelva false, reintenta en el timeout especificado, siempre que las restricciones de configuration.retries lo permita.\r\n *\r\n * En caso de fallar demasiadas veces, eleva una excepción de tipo TooMuchRetriesException\r\n *\r\n */\r\nexport async function asyncRetry<ReturnType>(\r\n cb: () => Promise<ReturnType>,\r\n checkSuccess: (value: ReturnType) => boolean,\r\n configuration: RetryConfiguration = {\r\n retries: 3,\r\n timeout: 300,\r\n },\r\n): Promise<ReturnType> {\r\n return new Promise<ReturnType>((resolve, reject) => {\r\n (async () => {\r\n const tryIt = async () => {\r\n const res = await cb();\r\n return checkSuccess(res) ? res : null;\r\n };\r\n\r\n for await (const _ of new Array(configuration.retries)) {\r\n const res = await tryIt();\r\n if (res) {\r\n resolve(res);\r\n return;\r\n }\r\n await timeout(configuration.timeout);\r\n }\r\n\r\n reject(new TooMuchRetriesException());\r\n })();\r\n });\r\n}\r\n","export type Comparator<T> = (a: T, b: T) => boolean;\n\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\n if (Object.is(a, b)) return true;\n\n if (!Object.is(a, b) && typeof a !== typeof b) {\n return false;\n }\n\n if (typeof a === 'object') {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (a && b) {\n for (const [key, value] of Object.entries(a)) {\n if (!Object.is(value, b[key])) {\n return false;\n }\n }\n for (const [key, value] of Object.entries(b)) {\n if (!Object.is(value, a[key])) {\n return false;\n }\n }\n return true;\n } else if ((a && !b) || (!a && b)) {\n return false;\n }\n }\n\n return a === b;\n};\n","import { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttributeState, SetValueOptions } from './types';\r\nimport { Field } from './Field';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { IApiaApiPostConfig } from '../../../util/api/types';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TooMuchRetriesException,\r\n asyncRetry,\r\n} from '../../../util/other/asyncRetry';\r\nimport {\r\n TApiaFieldValueType,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { actions } from './constants/actions';\r\nimport { shallowEqual } from '../../../util/comparators/shallowEqual';\r\nimport { TApiaFieldWithAttributeProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\n\r\nexport class Attribute {\r\n constructor(\r\n public readonly id: string,\r\n public readonly name: string,\r\n public readonly title: string,\r\n public readonly valueType: TApiaFieldValueType,\r\n ) {}\r\n}\r\n\r\nexport abstract class FieldWithAttribute<\r\n FieldProps extends\r\n TApiaFieldWithAttributeProperties = TApiaFieldWithAttributeProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n FieldWithAttributeState<FieldDefinition, FieldProps, ValueType>\r\n> {\r\n #lastOnChangeValue: ValueType | null = null;\r\n protected lastSynchronizationValue: ValueType | null = null;\r\n\r\n public readonly attribute: Attribute;\r\n\r\n constructor({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(definition as FieldDefinition);\r\n\r\n this.attribute = new Attribute(attId, attName, attLabel, valueType);\r\n\r\n const initialValue = this.getInitialValue({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition,\r\n });\r\n if (initialValue !== value) {\r\n this.synchronize(initialValue);\r\n }\r\n this.state.value = initialValue || ('' as ValueType);\r\n this.state.validation = {\r\n dirty: false,\r\n errorMessage: null,\r\n synchronizing: false,\r\n };\r\n\r\n makeObservable(this, {\r\n attribute: observable,\r\n });\r\n }\r\n\r\n async fireEvent(eventName: string): Promise<boolean> {\r\n if (this.getValidationState().dirty) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (eventName === 'onChange') {\r\n if (this.getValue() === this.#lastOnChangeValue) {\r\n return true;\r\n } else {\r\n const res = await super.fireEvent(eventName);\r\n if (res) {\r\n this.#lastOnChangeValue = this.getValue();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return super.fireEvent(eventName);\r\n }\r\n protected getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>): ValueType {\r\n return value;\r\n }\r\n public getValidationState() {\r\n return this.state.validation;\r\n }\r\n public getValue() {\r\n return this.state.value;\r\n }\r\n public setValue(newValue: ValueType, options?: SetValueOptions) {\r\n if (\r\n this.properties.readonly ||\r\n this.form.properties.readOnly ||\r\n this.form.properties.readonly ||\r\n shallowEqual(newValue, this.getValue())\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n return this.fireEvent('onChange');\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ValueType,\r\n ): IApiaApiPostConfig<any> {\r\n return {\r\n postData: {\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n };\r\n }\r\n protected getSynchronizeUrl(params?: Record<string, unknown>) {\r\n return makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'processFieldSubmit',\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attId: this.attribute.id,\r\n index: this.definition.index || 0,\r\n timestamp: Date.now(),\r\n isAjax: true,\r\n ...params,\r\n });\r\n }\r\n protected processSynchronizeError(e: unknown) {\r\n if (e instanceof TooMuchRetriesException) {\r\n this.state.validation.dirty = true;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n protected async synchronize(newValue: ValueType) {\r\n if (newValue === this.lastSynchronizationValue) return true;\r\n\r\n try {\r\n const postData = this.getSynchronizePostConfiguration(newValue);\r\n const result =\r\n (\r\n await asyncRetry(\r\n async () => {\r\n try {\r\n return await post<{ success: boolean }>(\r\n await this.getSynchronizeUrl(),\r\n postData,\r\n );\r\n } catch (e) {\r\n Notifications.instance.add(\r\n new MessageNotification({ message: String(e) }),\r\n );\r\n return null;\r\n }\r\n },\r\n (result) => !!result?.data?.success,\r\n { retries: 10, timeout: 500 },\r\n )\r\n )?.data?.success || false;\r\n\r\n if (result) {\r\n this.lastSynchronizationValue = newValue;\r\n this.state.validation.dirty = false;\r\n return true;\r\n }\r\n } catch (e) {\r\n this.processSynchronizeError(e);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid = !!this.getValue() || !this.properties.required;\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n return {\r\n ...super.getServerEventParams(evtId, additionalParams),\r\n attId: this.attribute.id,\r\n };\r\n }\r\n}\r\n","import ApiaField from '../ApiaField';\r\nimport { arrayOrArray, noNaN } from '@apia/util';\r\nimport { createNewField } from '../utils/createApiaField';\r\nimport { Grid } from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\n\r\nexport default class GridField extends ApiaField {\r\n #field: Grid;\r\n\r\n constructor(protected field: Grid) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n addRow() {\r\n this.#field.addRow();\r\n }\r\n\r\n clearGrid() {\r\n this.#field.clearGrid();\r\n }\r\n\r\n clearPage(pageNumber: number) {\r\n this.#field.clearPage(pageNumber);\r\n }\r\n\r\n clearRow(index: number) {\r\n const row = this.#field.getRow(index);\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n }\r\n\r\n deleteGrid() {\r\n this.#field.deleteGrid();\r\n }\r\n\r\n deletePage(pageNumber: number) {\r\n const props = this.#field.properties;\r\n if (props.paged) {\r\n this.#field.deletePage(pageNumber);\r\n }\r\n }\r\n\r\n deleteRow(index: number) {\r\n this.#field.deleteRow(index);\r\n }\r\n\r\n editRow(index: number) {\r\n return this.#field.getRow(index).map((c) => createNewField(c));\r\n }\r\n\r\n getAllColumns() {\r\n return this.#field\r\n .getAllColumns()\r\n .map((c) => c.map((f) => createNewField(f)));\r\n }\r\n\r\n getColumn(fieldName: string) {\r\n const fields = this.#field.getColumn(fieldName);\r\n if (fields) arrayOrArray(fields).map((c) => createNewField(c!));\r\n }\r\n\r\n getCurrentPage() {\r\n return this.#field.getCurrentPage();\r\n }\r\n\r\n getField(fieldName: string, fieldIndex = 0) {\r\n const fields = this.#field.getField(fieldName, fieldIndex);\r\n\r\n if (fields) return arrayOrArray(fields).map((c) => createNewField(c!));\r\n return null;\r\n }\r\n\r\n getPageCount() {\r\n return this.#field.definition.pages;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.definition.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field.getRow(index).map((c) => createNewField(c));\r\n }\r\n\r\n getSelectedIndexes(useAbsoluteIndex?: boolean) {\r\n return this.#field.controller\r\n .getSelection()\r\n .map(\r\n (c) => c + (useAbsoluteIndex ? noNaN(this.#field.getStartIndex()) : 0),\r\n );\r\n }\r\n\r\n getSelectedItems() {\r\n return this.getSelectedIndexes().map((index) => this.getRow(index));\r\n }\r\n\r\n get id() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n isPaged() {\r\n return this.#field.properties.paged;\r\n }\r\n\r\n get rowsCount() {\r\n return this.#field.getRowsIndices().length;\r\n }\r\n\r\n get selected_col_index() {\r\n //TODO\r\n return this.#field.controller;\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.#field.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n toggleDeleteButton(index: number, isShown?: boolean) {\r\n this.#field.toggleDeleteButton(index, isShown);\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n this.#field.toggleEditFormButton(rowIndex, isShown);\r\n }\r\n}\r\n","import { Captcha } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TCaptchaField = IApiaField;\r\n\r\nexport default class CaptchaField extends ApiaField implements TCaptchaField {\r\n constructor(field: Captcha) {\r\n super(field);\r\n }\r\n}\r\n","import { File } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { reaction } from 'mobx';\r\n\r\nexport default class FileUploaderField extends ApiaFieldWithAttribute {\r\n #field: File;\r\n constructor(field: File) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n onChange(cb: (newValue: unknown) => unknown) {\r\n reaction(\r\n () => {\r\n this.#field.getValue();\r\n },\r\n () => {\r\n cb(this.#field.getValue());\r\n },\r\n { fireImmediately: false },\r\n );\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id && this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Password } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\n\r\nexport default class PasswordField extends ApiaField {\r\n constructor(field: Password) {\r\n super(field);\r\n }\r\n}\r\n","import { DataGridField as GridField } from './fields';\r\nimport { IApiaField, IApiaForm } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from './ApiaFieldWithAttribute';\r\nimport { createNewField } from './utils/createApiaField';\r\nimport { Form } from '../main/Execution/FormsExecution/Form';\r\nimport { TApiaFormProperties } from '../main/InitialData/types/TApiaForm';\r\nimport { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\n\r\nexport default class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n\r\n constructor(form: Form) {\r\n this.#form = form;\r\n }\r\n\r\n getFormName(): string {\r\n return this.#form.definition.formName;\r\n }\r\n getFormTitle(): string {\r\n return this.#form.definition.formTitle;\r\n }\r\n openForm(): void {\r\n this.#form.setProperty('prpFrmClosed', false);\r\n }\r\n closeForm(): void {\r\n this.#form.setProperty('prpFrmClosed', true);\r\n }\r\n getProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n ): TApiaFormProperties[K] {\r\n return this.#form.getProperty(name);\r\n }\r\n setProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n value: TApiaFormProperties[K],\r\n ): void {\r\n this.#form.setProperty(name, value);\r\n }\r\n getCustomComponent(attName: string) {\r\n return this.#form.getCustomComponentByAttName(attName);\r\n }\r\n getField(fld: string | number, index?: number): IApiaField | undefined {\r\n const field = this.#form.getField(fld as string, index);\r\n\r\n if (field) {\r\n return createNewField(field as FieldWithAttribute)!;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldColumn(name: string): IApiaField[] {\r\n return arrayOrArray(this.#form.getFieldByName(name))\r\n .map((c) => createNewField(c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n getAllFields(): IApiaField[] {\r\n return this.#form\r\n .getAllFields()\r\n .map((c) => createNewField(c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n clearForm(clearReadonlyFields: boolean, deleteGridsRows: boolean): void {\r\n this.getAllFields().forEach((c) => {\r\n if (deleteGridsRows && c instanceof GridField) {\r\n c.clearGrid();\r\n }\r\n\r\n if (c instanceof ApiaFieldWithAttribute) {\r\n if (!c.getProperty('readonly') || clearReadonlyFields) {\r\n c.setValue('');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { parseXml } from '../../../util/xml/parseXml';\r\nimport { TApiaForm } from '../types/TApiaForm';\r\n\r\nfunction decodeBase64ToUtf8(base64String: string) {\r\n const binaryString = atob(base64String);\r\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\r\n return new TextDecoder('utf-8').decode(bytes);\r\n}\r\n\r\nasync function getFormXMLDataAsObj(\r\n formDiv: HTMLElement,\r\n): Promise<TApiaForm | null> {\r\n if (formDiv.dataset.xml) {\r\n const formData = (await parseXml(\r\n decodeBase64ToUtf8(formDiv.dataset.xml),\r\n )) as TApiaForm;\r\n return formData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function readFormsDefinition() {\r\n const elements = [...document.querySelectorAll('.formContainer')];\r\n const forms: TApiaForm[] = [];\r\n\r\n for await (const form of elements) {\r\n const def = await getFormXMLDataAsObj(form as HTMLElement);\r\n if (def) forms.push(def);\r\n }\r\n\r\n return forms;\r\n}\r\n","import { readFormsDefinition } from './bootstrap/readFormsDefinition';\r\n\r\nexport class InitialData {\r\n static #instance: InitialData | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new InitialData();\r\n\r\n return this.#instance!;\r\n }\r\n private constructor() {}\r\n\r\n getFormsDefinition() {\r\n return readFormsDefinition();\r\n }\r\n}\r\n","import fieldProps from '../fieldProps';\n\nconst NumProps: string[] = [\n fieldProps.PROPERTY_SIZE,\n fieldProps.PROPERTY_ROWS,\n fieldProps.PROPERTY_COLSPAN,\n fieldProps.PROPERTY_ROWSPAN,\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\n fieldProps.PROPERTY_GRID_HEIGHT,\n fieldProps.PROPERTY_MAX_REG_GRID,\n];\n\nexport default NumProps;\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst valueParsers: ((\r\n key: string,\r\n value: unknown,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n return next();\r\n } else if (typeof value === 'number') {\r\n return next();\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n return { key, value: parseBoolean(value as string) };\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n return { key, value: parseInt((value as string) || '', 10) };\r\n }\r\n next();\r\n },\r\n];\r\n\r\nexport function parseFakeJSON<T extends Record<string, unknown>>(str: string) {\r\n const res = new Function(`const form = ${str}; return form;`)() as T;\r\n\r\n const ret: T = {} as T;\r\n\r\n for (const [key, value] of Object.entries(res)) {\r\n for (const p of valueParsers) {\r\n let next = false;\r\n const t = p(key, value, () => {\r\n next = true;\r\n });\r\n if (!next && t) {\r\n (ret as any)[t.key] = t.value;\r\n } else {\r\n (ret as any)[key] = value;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n","import { arrayOrArray } from '../../../../util';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../../util/other/parseFakeJSON';\r\nimport { Field } from '../Field';\r\nimport { Form } from '../Form';\r\nimport { Execution } from '../..';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\nexport type GridEvents =\r\n | 'onRowAdd'\r\n | 'onRowDelete'\r\n | 'onRowSort'\r\n | 'onColSelect';\r\n\r\nexport type FieldState = {\r\n properties: any;\r\n value?: any;\r\n};\r\n\r\nexport class FieldsGroup {\r\n constructor(\r\n protected fields: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {}\r\n\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n\r\n getAllFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n getField(field: string) {\r\n return (\r\n this.getFieldById(field) ||\r\n this.getFieldByName(field) ||\r\n this.getFieldByAttributeName(field)\r\n );\r\n }\r\n getFieldByAttributeId(attId: string | number) {\r\n return this.fieldsByAttributeId.get(String(attId));\r\n }\r\n getFieldByAttributeName(attName: string) {\r\n return this.fieldsByAttributeName.get(attName);\r\n }\r\n getFieldById(id: string | number) {\r\n return this.fieldsById.get(String(id));\r\n }\r\n getFieldByName(name: string) {\r\n return this.fieldsByName.get(name);\r\n }\r\n async init(form: Form, index: number) {\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n Execution.instance.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor({ ...field, index });\r\n await newField.init(form);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties.name) {\r\n this.fieldsByName.set(\r\n newField.properties.name,\r\n newField as Field<any>,\r\n );\r\n }\r\n newField.properties.inGrid = true;\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","export function noNaN(number: unknown, defaultReturn = 0) {\r\n const returnNumber = Number(number);\r\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\r\n return returnNumber;\r\n}\r\n","import { TApiaFieldBaseDefinition } from '../../../InitialData/types/TApiaField';\r\nimport { FieldWithIndexedFieldsProps } from './types';\r\nimport { Field } from '../Field';\r\nimport { FieldState, FieldsGroup } from './FieldsGroup';\r\nimport { Form } from '../Form';\r\nimport { noNaN } from '../../../../util/number/noNaN';\r\nimport { action, makeObservable, observable } from 'mobx';\r\n\r\nexport abstract class FieldWithIndexedFields<\r\n FieldProps extends FieldWithIndexedFieldsProps = FieldWithIndexedFieldsProps,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends Record<string, unknown> = Record<string, unknown>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n {\r\n definition: Omit<FieldDefinition, 'properties'> &\r\n FieldWithIndexedFieldsProps;\r\n } & State\r\n> {\r\n protected managedAttIds = new Set<string | number>();\r\n protected managedAttNames = new Set<string>();\r\n protected managedFieldIds = new Set<string | number>();\r\n protected managedFieldsNames = new Set<string>();\r\n\r\n constructor(\r\n definition: FieldDefinition,\r\n protected fieldsDefinitions: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >[],\r\n protected fieldsStates: FieldState[][],\r\n ) {\r\n super(definition);\r\n\r\n fieldsDefinitions.forEach((current) => {\r\n this.managedFieldIds.add(current.id);\r\n if ((current as any).name) {\r\n this.managedFieldsNames.add((current as any).name);\r\n }\r\n if ((current as any).attName) {\r\n this.managedAttNames.add((current as any).attName);\r\n }\r\n if ((current as any).attId) {\r\n this.managedAttIds.add((current as any).attId);\r\n }\r\n });\r\n\r\n makeObservable(this as any, {\r\n fieldsGroups: observable,\r\n isMaximized: observable,\r\n addGroup: action,\r\n });\r\n }\r\n\r\n protected fieldsGroups: FieldsGroup[] = [];\r\n public isMaximized = false;\r\n protected getFieldsGroupByIndex(index: number) {\r\n const pageSize =\r\n this.properties.pageSize === Infinity || !this.properties.paged\r\n ? 0\r\n : this.properties.pageSize;\r\n\r\n const startIndex = noNaN(pageSize * (this.properties.currentPage - 1), 0);\r\n\r\n return this.fieldsGroups[Math.abs(index - startIndex)];\r\n }\r\n\r\n protected async addGroup(group: FieldsGroup) {\r\n // Check if pageSize is finite\r\n const pageSize = this.properties.pageSize;\r\n const offset = Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0; // When pageSize is Infinity, we treat it as a single page\r\n\r\n const index = this.fieldsGroups.length + offset;\r\n\r\n await group.init(this.form, index);\r\n\r\n this.fieldsGroups.push(group);\r\n this.properties.rowsCount =\r\n (Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0) + this.fieldsGroups.length;\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form): Promise<void> {\r\n if (!this.#hasInited) {\r\n this.#hasInited = true;\r\n await super.init(form);\r\n }\r\n\r\n const indices = new Array(this.fieldsStates[0]?.length || 0)\r\n .fill(1)\r\n .map((_, i) => i);\r\n const newRows: FieldsGroup[] = [];\r\n\r\n for await (const index of indices) {\r\n const group = new FieldsGroup(\r\n this.fieldsDefinitions.map((current, columnIndex) => {\r\n form.addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.fieldsStates[columnIndex][index],\r\n };\r\n }),\r\n );\r\n\r\n await group.init(form, index);\r\n newRows[index] = group;\r\n }\r\n\r\n this.fieldsGroups = newRows;\r\n }\r\n\r\n getAllColumns() {\r\n return [...Object.values(this.fieldsGroups)].map((c) => c.getAllFields());\r\n }\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n getField(field: string, index?: number) {\r\n if (this.managedFieldsNames.has(field) || this.managedAttNames.has(field)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getField(field);\r\n } else {\r\n return [...this.fieldsGroups.values()].map((current) =>\r\n current.getField(field),\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByAttributeId(attId);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByAttributeId(attId),\r\n );\r\n }\r\n }\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByAttributeName(\r\n attName,\r\n );\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByAttributeName(attName),\r\n );\r\n }\r\n }\r\n }\r\n getFieldById(id: string | number, index?: number) {\r\n if (this.managedFieldIds.has(id)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldById(id);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldById(id),\r\n );\r\n }\r\n }\r\n }\r\n getFieldByName(name: string, index?: number) {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByName(name);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByName(name),\r\n );\r\n }\r\n }\r\n }\r\n getRow(index: number) {\r\n return this.getFieldsGroupByIndex(index)?.getAllFields();\r\n }\r\n\r\n getStartIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n getRowsIndices(): number[] {\r\n const minIndex = this.getStartIndex();\r\n const maxIndex = minIndex + this.fieldsGroups.length;\r\n const size = maxIndex - minIndex;\r\n\r\n return new Array(size).fill(1).map((_, i) => i + minIndex);\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const fg of this.fieldsGroups) {\r\n for await (const field of fg.getAllFields()) {\r\n if (field instanceof Field) {\r\n const result = await field.validate();\r\n if (!result && isValid && !firstInvalid) {\r\n isValid = false;\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n}\r\n","import {\r\n TApiaForm,\r\n TApiaFormProperties,\r\n TFormEventName,\r\n} from '../../InitialData/types/TApiaForm';\r\nimport { Execution } from '..';\r\nimport { TSignaturesData } from './types';\r\nimport { Field } from './Field';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { arrayOrArray } from '../../../util/array/arrayOrArray';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { FieldWithIndexedFields } from './FieldWithIndexedFields';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\r\n\r\nexport class Form extends WithProperties<TApiaFormProperties> {\r\n fields: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n state = { isMarkedToSign: false };\r\n protected customComponents: Map<string, CustomComponent> = new Map();\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsGroups = new Map<string, FieldWithIndexedFields>();\r\n definition: TApiaForm = {} as TApiaForm;\r\n\r\n constructor(definition: TApiaForm) {\r\n const props = parseFakeJSON<TApiaFormProperties>(definition.properties);\r\n super(props);\r\n makeObservable<Form, 'state'>(this, {\r\n state: observable,\r\n });\r\n\r\n this.definition = definition;\r\n this.fields = arrayOrArray(definition.field).sort((a, b) => {\r\n if (a.y < b.y) return -1;\r\n if (a.y > b.y) return 1;\r\n\r\n if (a.x < b.x) return -1;\r\n if (a.x > b.x) return 1;\r\n\r\n return 0;\r\n });\r\n this.state.isMarkedToSign = this.definition.markedToSign;\r\n }\r\n\r\n closeForm() {\r\n this.properties.prpFrmClosed = true;\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getAllFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n getCustomComponents() {\r\n return [...this.customComponents.values()];\r\n }\r\n\r\n getField(field: string, index?: number) {\r\n const found =\r\n this.getFieldById(field) ||\r\n this.getFieldByName(field) ||\r\n this.getFieldByAttributeId(field) ||\r\n this.getFieldByAttributeName(field);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getField(field, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n const found = this.fieldsByAttributeId.get(String(attId));\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeId(attId, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n const found = this.fieldsByAttributeName.get(attName);\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeName(attName, index);\r\n return res;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(id: string | number, index?: number) {\r\n const found = this.fieldsById.get(String(id));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldById(id, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldByName(name: string): Field | Field[] | undefined;\r\n getFieldByName(name: string, index: number): Field | undefined;\r\n getFieldByName(name: string, index?: number) {\r\n const found = this.fieldsByName.get(String(name));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByName(name, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n async markFormToSign() {\r\n void post<{ success: boolean }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'markFormToSign',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n sign: !this.state.isMarkedToSign,\r\n react: true,\r\n }),\r\n ).then((res) => {\r\n if (res?.data && res.data.success) {\r\n this.state.isMarkedToSign = !this.state.isMarkedToSign;\r\n }\r\n });\r\n }\r\n\r\n async viewSigns(): Promise<TSignaturesData | undefined> {\r\n const res = await get<TSignaturesData>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'viewSigns',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n react: true,\r\n }),\r\n );\r\n if (res?.data) {\r\n return res.data;\r\n }\r\n }\r\n\r\n private cucCmpByAttId = new Map<number, CustomComponent>();\r\n private cucCmpByFldId = new Map<number, CustomComponent>();\r\n private cucCmpByAttName = new Map<string, CustomComponent>();\r\n\r\n getCustomComponentByFldId(fldId: number) {\r\n return this.cucCmpByFldId.get(fldId);\r\n }\r\n\r\n getCustomComponentByAttId(attId: number) {\r\n return this.cucCmpByAttId.get(attId);\r\n }\r\n\r\n getCustomComponentByAttName(attName: string) {\r\n return this.cucCmpByAttName.get(attName);\r\n }\r\n\r\n private mustRenderFields: string[] = [];\r\n\r\n public addFieldToRender(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields.push(fldId + '_' + fldIndex);\r\n }\r\n\r\n public markFieldAsRendered(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields = this.mustRenderFields.filter(\r\n (c) => c !== fldId + '_' + fldIndex,\r\n );\r\n if (this.mustRenderFields.length === 0) {\r\n Execution.instance.markFormAsRendered(\r\n this.definition.frmParent,\r\n this.definition.formName,\r\n );\r\n }\r\n }\r\n\r\n async init() {\r\n const cusFields = arrayOrArray(this.definition.customField);\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n this.mustRenderFields.push(field.id + '_' + (field.index ?? 0));\r\n }\r\n for await (const customComponent of cusFields) {\r\n this.mustRenderFields.push(customComponent.id + '_' + 0);\r\n }\r\n for await (const customComponent of cusFields) {\r\n const cc = new CustomComponent(customComponent);\r\n await cc.init(this);\r\n this.customComponents.set(customComponent.id, cc);\r\n arrayOrArray(customComponent.state.state.attribute).forEach((a) => {\r\n this.cucCmpByAttId.set(Number.parseInt(String(a.attId)), cc);\r\n this.cucCmpByAttName.set(a.attName, cc);\r\n this.cucCmpByFldId.set(Number.parseInt(String(customComponent.id)), cc);\r\n });\r\n }\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n Execution.instance.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor(field);\r\n await newField.init(this);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties?.name) {\r\n this.fieldsByName.set(\r\n String(newField.properties?.name),\r\n newField as Field<any>,\r\n );\r\n }\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n\r\n if (newField instanceof FieldWithIndexedFields) {\r\n this.fieldsGroups.set(String(newField.definition.id), newField);\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n async runEvent(eventType: TFormEventName) {\r\n switch (eventType) {\r\n case 'onLoad':\r\n break;\r\n }\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const field of this.getAllFields()) {\r\n if (field instanceof FieldWithIndexedFields) {\r\n const result = await field.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n isValid = false;\r\n } else {\r\n isValid = isValid && result === true;\r\n }\r\n } else if (field instanceof Field) {\r\n isValid = (await field.validate()) && isValid;\r\n if (!isValid && !firstInvalid) {\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n}\r\n","import { TApiaButtonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport type ButtonEvents = 'onClick';\r\n\r\nexport class Button extends Field<TApiaButtonProperties> {\r\n fireEvent(eventName: ButtonEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\nimport { TApiaCaptchaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { labels } from '../../../../../util/labels/labels';\r\n\r\nexport class Captcha extends Field<\r\n TApiaCaptchaProperties,\r\n TApiaFieldBaseDefinition<TApiaCaptchaProperties>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<TApiaCaptchaProperties>,\r\n 'properties'\r\n >;\r\n value: string;\r\n url: string;\r\n }\r\n> {\r\n private static emitter = new EventEmitter<{ confirm: null }>();\r\n public static reload() {\r\n this.emitter.emit('confirm', null);\r\n }\r\n\r\n private id: string = '';\r\n\r\n private static confirmParams: Record<string, string> = {};\r\n public static getConfirmParams() {\r\n return this.confirmParams;\r\n }\r\n\r\n constructor(definition: TApiaCaptchaProperties) {\r\n super(definition as TApiaFieldBaseDefinition<TApiaCaptchaProperties>);\r\n this.state.value = '';\r\n this.properties.name = '__captcha__';\r\n\r\n Captcha.emitter.on('confirm', () => {\r\n this.generateImgUrl();\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.id = this.getCaptchaId();\r\n this.generateImgUrl();\r\n }\r\n\r\n private getCaptchaId() {\r\n return `${window.TAB_ID}${this.form.definition.frmParent}_${this.form.definition.id}`;\r\n }\r\n public getUrl() {\r\n return this.state.url;\r\n }\r\n\r\n public generateImgUrl() {\r\n this.state.url = `${window.CONTEXT}/captchaImg?captchaName=${this.getId()}&t=${new Date().getTime()}`;\r\n }\r\n\r\n public generateVoiceUrl() {\r\n return `${window.CONTEXT}/captchaAudio?captchaName=${this.getId()}&t=${new Date().getTime()}&langCode=${window.LANG_CODE}`;\r\n }\r\n\r\n public getId() {\r\n return this.id;\r\n }\r\n\r\n public setValue(value: string) {\r\n this.state.value = value;\r\n this.state.validation.errorMessage = '';\r\n Captcha.confirmParams = { [this.id]: value };\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n this.id = this.getCaptchaId();\r\n if (this.state.value === '') {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n } else {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n }\r\n}\r\n","import { TApiaCheckboxProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype CheckboxEvents = 'onClick';\r\n\r\nexport class Checkbox extends FieldWithAttribute<\r\n TApiaCheckboxProperties,\r\n boolean\r\n> {\r\n fireEvent(eventName: CheckboxEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n protected getInitialValue({\r\n value,\r\n properties,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaCheckboxProperties>): boolean {\r\n return value === undefined || value === ''\r\n ? properties.checked || value\r\n : value;\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { TTranslationState } from './types';\r\nimport { post } from '../../../../util';\r\n\r\nexport class Translation {\r\n state: TTranslationState;\r\n\r\n constructor(state: Pick<TTranslationState, 'id' | 'label' | 'isTranslated'>) {\r\n this.state = {\r\n ...state,\r\n hasChanged: false,\r\n isTranslated: state.isTranslated,\r\n tempValue: '',\r\n };\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n cancelTranslation() {\r\n this.reset();\r\n }\r\n\r\n async readTranslations(url: string) {\r\n if (this.state.remoteValue === undefined) {\r\n const result = await post<{ values: { value: { text: string } } }>(url);\r\n\r\n const newValue = result?.data?.values?.value?.text;\r\n this.state.tempValue =\r\n newValue !== 'null' ? result?.data?.values?.value?.text ?? '' : '';\r\n this.state.remoteValue = this.state.tempValue;\r\n }\r\n }\r\n\r\n reset() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n }\r\n\r\n setTempValue(str: string) {\r\n this.state.tempValue = str;\r\n this.state.hasChanged = str !== this.state.remoteValue;\r\n }\r\n\r\n submitTranslation(value: string, url: string) {\r\n if (this.state.hasChanged) {\r\n post(url, {\r\n postData: { value },\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n postDataTreatment: 'stringify',\r\n });\r\n }\r\n\r\n this.state.isTranslated = this.value !== '';\r\n this.reset();\r\n }\r\n\r\n get langId() {\r\n return this.state.id;\r\n }\r\n\r\n get value() {\r\n return this.state.tempValue;\r\n }\r\n}\r\n","export function parseFakeJSON(fakeJSON: string) {\r\n return [...fakeJSON.matchAll(/(\\d+): '?([^']+)'?/g)].map(([, k, v]) => ({\r\n id: k,\r\n label: v,\r\n }));\r\n}\r\n","import { TApiaFieldWithAttributeBaseProps } from '../../../InitialData/types/TApiaField';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Form } from '../Form';\r\nimport { TApiaTranslatableFieldProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { Translation } from './Translation';\r\nimport { parseFakeJSON } from './util';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\ninterface InitialTradMap {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport abstract class TranslatableField<\r\n FieldProps extends\r\n TApiaTranslatableFieldProperties = TApiaTranslatableFieldProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends FieldWithAttribute<FieldProps, ValueType, FieldDefinition> {\r\n translations = new Map<string, Translation>();\r\n selectedLanguageId = this.getLanguages()[0]?.id;\r\n isTradLoading = false;\r\n definitionTradParsed: InitialTradMap = {};\r\n\r\n constructor(props: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(props);\r\n makeObservable(this, {\r\n translations: observable,\r\n selectedLanguageId: observable,\r\n isTradLoading: observable,\r\n });\r\n }\r\n\r\n private extractTrad() {\r\n const tradMap: InitialTradMap = {};\r\n const regex = /(\\d+)\\s*:\\s*(true|false)/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(this.definition.trad ?? '{}')) !== null) {\r\n const key = match[1];\r\n const value = match[2] === 'true';\r\n tradMap[key] = value;\r\n }\r\n\r\n this.definitionTradParsed = tradMap;\r\n }\r\n\r\n private getLanguages() {\r\n return arrayOrArray(parseFakeJSON(this.getForm().definition?.langs ?? ''));\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n if (this.getLanguages().length > 0) {\r\n this.extractTrad();\r\n this.getLanguages().forEach((lang) => {\r\n const isTranslated = this.definitionTradParsed[lang.id] ?? false;\r\n this.translations.set(\r\n lang.id,\r\n new Translation({\r\n id: lang.id,\r\n label: lang.label,\r\n isTranslated: isTranslated,\r\n }),\r\n );\r\n });\r\n\r\n this.selectedLanguageId = this.getLanguages()[0].id;\r\n }\r\n }\r\n\r\n public cancelTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.reset();\r\n });\r\n }\r\n\r\n public async changeLanguage(langId: string) {\r\n this.selectedLanguageId = langId;\r\n this.syncTranslation();\r\n }\r\n\r\n public getTranslation(id: string) {\r\n return this.translations.get(id);\r\n }\r\n\r\n public getCurrentTranslation() {\r\n return this.translations.get(this.selectedLanguageId);\r\n }\r\n\r\n public getTranslations() {\r\n return this.translations;\r\n }\r\n\r\n public submitTranslations() {\r\n [...this.getTranslations().values()]\r\n .filter((c) => c.state.hasChanged)\r\n .forEach((c) => {\r\n c.submitTranslation(\r\n c.value,\r\n this.getSynchronizeUrl({\r\n react: true,\r\n preventAsXmlParameter: true,\r\n langId: c.langId,\r\n }),\r\n );\r\n });\r\n }\r\n\r\n public async syncTranslation() {\r\n const langId = this.selectedLanguageId;\r\n this.isTradLoading = true;\r\n\r\n await this.getTranslation(langId)?.readTranslations(\r\n await makeApiaUrl({\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'getFieldTranslations',\r\n frmId: this.getForm().definition.id,\r\n frmParent: this.getForm().definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n langId,\r\n react: true,\r\n }),\r\n );\r\n\r\n this.isTradLoading = false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n const isSuperValid = await super.validate();\r\n let isValid = isSuperValid;\r\n\r\n if (isSuperValid && this.properties.reqTrad) {\r\n const translations = [...this.getTranslations().values()];\r\n\r\n const tradNotValidated = translations.find((c) => !c.state.isTranslated);\r\n\r\n if (tradNotValidated) {\r\n this.state.validation.errorMessage = `El idioma ${tradNotValidated.state.label} es requerido`;\r\n isValid = false;\r\n } else {\r\n this.state.validation.errorMessage = null;\r\n }\r\n }\r\n return isValid;\r\n }\r\n}\r\n","import { TApiaEditorProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport type EditorEvents = 'onChange';\r\n\r\nexport class Editor extends TranslatableField<TApiaEditorProperties, string> {\r\n fireEvent(eventName: EditorEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TModalConfig,\r\n TUploadModalOpener,\r\n UploaderModalState,\r\n} from './types';\r\nimport { cloneDeep, getLabel } from '@apia/util';\r\n\r\nfunction getFileExtension(fileName: string): string {\r\n const parts = fileName.split('.');\r\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\r\n}\r\n\r\nconst initialState: Readonly<UploaderModalState> = Object.freeze({\r\n metadata: {\r\n metadataArray: [],\r\n freeMetadataArray: [],\r\n isFreeMetadata: false,\r\n },\r\n docFolder: undefined,\r\n docExpDate: undefined,\r\n description: '',\r\n permissions: {\r\n pools: [],\r\n users: window.DOCUMENT_OWNER_PRIVILEGES\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: window.CURRENT_USER_LOGIN,\r\n userLogin: window.CURRENT_USER_LOGIN,\r\n },\r\n ]\r\n : [],\r\n allowAllType: ((window.DOCUMENT_EVERYONE_PERMISSION as any as boolean) !==\r\n false\r\n ? 'M'\r\n : '') as '',\r\n },\r\n fileReqError: false,\r\n});\r\n\r\nexport class UploaderModalController {\r\n public state: UploaderModalState = cloneDeep(initialState);\r\n\r\n constructor(\r\n public api: UploaderApi,\r\n public modalConfig: TModalConfig,\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n }\r\n\r\n public get allMetadata() {\r\n return [\r\n ...this.state.metadata.metadataArray,\r\n ...this.state.metadata.freeMetadataArray,\r\n ];\r\n }\r\n\r\n public get allowAllType() {\r\n return this.state.permissions.allowAllType;\r\n }\r\n\r\n public get description() {\r\n return this.state.description;\r\n }\r\n\r\n public get docFolder() {\r\n return this.state.docFolder;\r\n }\r\n\r\n public get docExpDate() {\r\n return this.state.docExpDate;\r\n }\r\n\r\n public get docTypes() {\r\n return this.api.getDocTypes();\r\n }\r\n\r\n public get freeMetadata() {\r\n return this.state.metadata.freeMetadataArray;\r\n }\r\n\r\n public get exitingFiles() {\r\n return this.api.getExistingFiles();\r\n }\r\n\r\n public get inProgressFiles() {\r\n return this.api.getInProgressFiles();\r\n }\r\n\r\n public get hiddenFiles() {\r\n return this.api.getHiddenFiles();\r\n }\r\n\r\n public get progress() {\r\n return this.api.getProgress();\r\n }\r\n\r\n public get metadata() {\r\n return this.state.metadata.metadataArray;\r\n }\r\n\r\n public get selectedDocTypeId() {\r\n return this.api.getCurrentDocTypeId();\r\n }\r\n\r\n public get selectedDocType() {\r\n return this.api.getCurrentDocType();\r\n }\r\n\r\n public addMetadata() {\r\n this.state.metadata.freeMetadataArray.push({\r\n free: 'Y',\r\n id: String(Math.random()),\r\n name: '',\r\n required: 'Y',\r\n title: '',\r\n type: 'S',\r\n value: '',\r\n errorMessage: '',\r\n });\r\n }\r\n\r\n public addFiles(files: File[]) {\r\n this.state.fileReqError = false;\r\n this.api.addFiles(files);\r\n }\r\n\r\n public async changeDocType(docTypeId: string) {\r\n this.resetMetadata();\r\n this.api.setCurrentDocTypeId(docTypeId);\r\n this.onChangeExtension();\r\n this.api.reloadMetadata({ docTypeId });\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.api.clearFile(name);\r\n }\r\n\r\n public clearFiles() {\r\n this.api.clearFiles();\r\n }\r\n\r\n public clearState() {\r\n this.state = cloneDeep(initialState);\r\n this.api.clearState();\r\n }\r\n\r\n public async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal();\r\n return isValid;\r\n }\r\n\r\n public deleteMetadata(indices: number[]) {\r\n const deleteSet = new Set(indices);\r\n this.state.metadata.freeMetadataArray =\r\n this.state.metadata.freeMetadataArray.filter(\r\n (c, index) => c.free !== 'Y' || !deleteSet.has(index),\r\n );\r\n }\r\n\r\n public deletePermission(item: IPoolsPermissions | IUsersPermissions) {\r\n if (item && 'userId' in item) {\r\n this.state.permissions.users = this.state.permissions.users.filter(\r\n (c) => c.userId !== item.userId,\r\n );\r\n } else {\r\n this.state.permissions.pools = this.state.permissions.pools.filter(\r\n (c) => c.poolId !== item.poolId,\r\n );\r\n }\r\n }\r\n\r\n protected onChangeExtension(): void {\r\n const rawDocExts = this.api.getCurrentDocType()?.docExts || '';\r\n let hideFileNames = '';\r\n const allowedExtensions = rawDocExts\r\n .split(';')\r\n .map((ext) => ext.trim())\r\n .filter((ext) => ext !== '');\r\n\r\n if (rawDocExts === '') {\r\n const allFiles = [...this.inProgressFiles, ...this.hiddenFiles];\r\n const dedupedFiles = Array.from(\r\n new Map(allFiles.map((file: File) => [file.name, file])).values(),\r\n );\r\n this.api.state.inProgressFiles = dedupedFiles;\r\n this.api.state.hiddenFiles = [];\r\n return;\r\n }\r\n\r\n const allowedInProgress: File[] = [];\r\n const toHide: File[] = [];\r\n this.inProgressFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedInProgress.push(file);\r\n } else {\r\n toHide.push(file);\r\n hideFileNames += ` ${file.name} `;\r\n }\r\n });\r\n\r\n const allowedHidden: File[] = [];\r\n const stillHidden: File[] = [];\r\n this.api.state.hiddenFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedHidden.push(file);\r\n } else {\r\n stillHidden.push(file);\r\n }\r\n });\r\n\r\n const combinedInProgress = [...allowedInProgress, ...allowedHidden];\r\n const dedupedInProgress = Array.from(\r\n new Map(\r\n combinedInProgress.map((file: File) => [file.name, file]),\r\n ).values(),\r\n );\r\n const combinedHidden = [...toHide, ...stillHidden];\r\n const dedupedHidden = Array.from(\r\n new Map(combinedHidden.map((file: File) => [file.name, file])).values(),\r\n );\r\n\r\n this.api.state.inProgressFiles = dedupedInProgress;\r\n this.api.state.hiddenFiles = dedupedHidden;\r\n if (hideFileNames)\r\n this.api.notify({\r\n title: getLabel('msgFileWrngExt').text,\r\n message: hideFileNames,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n public async openModal() {\r\n const a = 'openUploaderModal';\r\n import(\r\n /* webpackInclude: /\\.tsx?$/ */\r\n `/src/dynamic/files/${a}`\r\n ).then((r) => {\r\n (r as { default: TUploadModalOpener }).default(this);\r\n });\r\n }\r\n\r\n public setDescription(desc: string) {\r\n this.state.description = desc;\r\n }\r\n\r\n protected async resetMetadata() {\r\n this.state.metadata = {\r\n freeMetadataArray: [],\r\n metadataArray: [],\r\n isFreeMetadata: false,\r\n };\r\n }\r\n\r\n public validate(): boolean {\r\n let isValid = true;\r\n this.state.fileReqError = false;\r\n if (this.api.getInProgressFiles().length === 0) {\r\n this.state.fileReqError = true;\r\n isValid = false;\r\n }\r\n\r\n this.allMetadata.forEach((c) => {\r\n if (c.required === 'Y') {\r\n if (c.value.trim() === '' || c.name.trim() === '') {\r\n c.errorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n } else {\r\n c.errorMessage = '';\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n}\r\n","import { ApiaApi, makeApiaUrl } from '@apia/api';\r\n\r\nimport {\r\n addBoundary,\r\n arrayOrArray,\r\n cloneDeep,\r\n downloadUrl,\r\n formatMessage,\r\n parseAsSize,\r\n TApiaFunction,\r\n TApiaLoad,\r\n toBoolean,\r\n} from '@apia/util';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TAjaxUploadFileStatus,\r\n TAjaxUploadStart,\r\n TApiaDocumentDefinition,\r\n TConfirmDropModal,\r\n TDocType,\r\n TDocumentMetadata,\r\n TFileUploaded,\r\n TProcessDroppedFiles,\r\n TSaveDroppedFilesConf,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploaderLoadCurrentFunction,\r\n TUploaderLoadCurrentFunctionMessages,\r\n UploaderState,\r\n TDocumentInformation,\r\n TRequireOnlyOne,\r\n} from './types';\r\nimport { UploaderModalController } from './UploaderModalController';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { NotificationDefinition } from '../../Notifications/Notification';\r\nimport QueryString from 'qs';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Execution } from '..';\r\n\r\n/**\r\n * El comportamiento de esta función se explica por su\r\n * nombre.\r\n */\r\nexport function returnExactlyTheSame(\r\n defaultParameters: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n return defaultParameters;\r\n}\r\n\r\nexport const parseFileDefinition = (\r\n fileDefinition: TFileUploaded | TUploaderFileInfo,\r\n isSignRequired: boolean,\r\n): TUploaderFileInfo => {\r\n const { lock, locked, lockedBy, userLocking, ...file } =\r\n fileDefinition as TFileUploaded;\r\n\r\n return {\r\n ...file,\r\n isLocked: !!lockedBy || String(lock || locked) === 'true',\r\n isLockedByMe: (lockedBy || userLocking) === window.CURRENT_USER_LOGIN,\r\n isMarkedToSign: file.markedToSign || toBoolean(file.sign) || isSignRequired,\r\n isVirtual: file.virtualDoc ?? false,\r\n lockingUser: lockedBy || userLocking,\r\n };\r\n};\r\nexport type TOnUploadProgress = (progress: number) => void;\r\nexport class UploaderApi {\r\n maxFiles = Infinity;\r\n modalController: UploaderModalController | null = null;\r\n allowTranslations = false;\r\n langs: Record<number, string> | undefined;\r\n currentConfiguration: TUploaderLoadCurrentFunctionMessages | undefined;\r\n docTypePermittedObjId;\r\n state: UploaderState = {\r\n progress: 0,\r\n allowedTypes: [],\r\n selectedDocTypeId: '1',\r\n versioningFile: null,\r\n inProgressFiles: [],\r\n files: {},\r\n selectedFiles: [],\r\n hiddenFiles: [],\r\n translatedFiles: new Map(),\r\n hasAllDocTypes: false,\r\n };\r\n get filesArray() {\r\n return Object.values(this.state.files);\r\n }\r\n\r\n constructor(\r\n public id: string,\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n this.allowTranslations = type === 'E' && !!window.DOC_LANGS;\r\n this.langs = window.DOC_LANGS;\r\n try {\r\n this.docTypePermittedObjId =\r\n type === 'E' ? window.docTypePerEntId : window.docTypePerProId;\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n\r\n //TODO sacar\r\n window.fileApi = this as any as string;\r\n }\r\n async onInit() {\r\n await this.ajaxUploadStart();\r\n await this.reloadMetadata({\r\n docTypeId: this.state.selectedDocTypeId,\r\n });\r\n await this.loadCurrentDocuments();\r\n }\r\n\r\n async onStartUpload() {\r\n if (window.OneClickUploadEnabled) {\r\n console.warn('HACER ONECLIOCK UPLOAD');\r\n } else {\r\n this.onInit();\r\n this.modalController = new UploaderModalController(\r\n this,\r\n this.modalConfig,\r\n );\r\n this.modalController.openModal();\r\n }\r\n }\r\n\r\n async autoLock(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n public notify(notification: NotificationDefinition) {\r\n Notifications.instance.add(new MessageNotification(notification));\r\n }\r\n\r\n protected getAjaxUrl(): string {\r\n return window.URL_REQUEST_AJAX;\r\n }\r\n\r\n public getDocTypes() {\r\n return this.state.allowedTypes;\r\n }\r\n\r\n public getCurrentDocTypeId() {\r\n return this.state.selectedDocTypeId;\r\n }\r\n\r\n public getCurrentDocType() {\r\n return this.state.allowedTypes.find(\r\n (c) => c.id === this.state.selectedDocTypeId,\r\n );\r\n }\r\n\r\n public getInProgressFiles() {\r\n return this.state.inProgressFiles;\r\n }\r\n\r\n public getHiddenFiles() {\r\n return this.state.hiddenFiles;\r\n }\r\n\r\n public getExistingFiles() {\r\n return this.state.files;\r\n }\r\n\r\n public getProgress() {\r\n return this.state.progress;\r\n }\r\n\r\n public getHasAllDocTypes() {\r\n return this.state.hasAllDocTypes;\r\n }\r\n\r\n async getDocumentInfo(\r\n {\r\n docId: apiId,\r\n downloadDocId: docId,\r\n }: TRequireOnlyOne<{ docId: string; downloadDocId: string }>,\r\n newElem?: boolean,\r\n ) {\r\n const id = apiId ? this.indexedFiles[apiId].docId : docId;\r\n const result = await ApiaApi.post<TDocumentInformation>(\r\n makeApiaUrl(\r\n this.getDocumentInfoParameters({\r\n action: 'getDocumentInfo',\r\n isAjax: true,\r\n docId: id,\r\n newElem,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n return result.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Devuelve un proxy que permite modificar los\r\n * archivos por su id.\r\n */\r\n get indexedFiles() {\r\n return new Proxy(cloneDeep(this.state.files), {\r\n get: (files, prop) => {\r\n if (prop in files) return files[prop as any];\r\n\r\n const translatedFilesArr = Array.from(\r\n this.state.translatedFiles.values(),\r\n );\r\n for (let i = 0; i < translatedFilesArr.length; i++) {\r\n const translatedLangs = Object.values(translatedFilesArr[i]);\r\n for (let j = 0; j < translatedLangs.length; j++) {\r\n if (translatedLangs[j].docId === prop) return translatedLangs[j];\r\n }\r\n }\r\n\r\n return undefined;\r\n },\r\n set: (_, __, value: TUploaderFileInfo) => {\r\n this.state.files[value.docId] = value;\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.state.inProgressFiles = this.state.inProgressFiles.filter(\r\n (c) => c.name !== name,\r\n );\r\n }\r\n\r\n public clearFiles() {\r\n this.state.inProgressFiles = [];\r\n this.state.hiddenFiles = [];\r\n }\r\n\r\n public clearState() {\r\n this.state.selectedDocTypeId = '1';\r\n this.state.inProgressFiles = [];\r\n }\r\n\r\n async checkLockDocument(id: string, shouldNotifyUnlocked = true) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n if (Number(file.docId) < 0) return true;\r\n\r\n const result = await ApiaApi.post<{\r\n success: 'ok' | 'unlocked';\r\n usr: string;\r\n }>(\r\n makeApiaUrl(\r\n this.getCheckLockDocumentParameters({\r\n action: 'checkLockDocument',\r\n docId: file.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n const isLocked = result?.data?.success === 'ok';\r\n if (\r\n !isLocked &&\r\n result?.data?.usr &&\r\n result.data.usr !== window.CURRENT_USER_LOGIN\r\n ) {\r\n this.notify({\r\n message: `${window.MSG_DOC_LOCKED_BY_USR.split('.')[0]}: ${\r\n result.data.usr\r\n }.`,\r\n type: 'warning',\r\n });\r\n return result.data.usr;\r\n }\r\n if (!isLocked && shouldNotifyUnlocked && !(await this.autoLock()))\r\n this.notify({\r\n message: window.MSG_DOC_MUST_BE_LOCKED,\r\n type: 'warning',\r\n });\r\n\r\n return isLocked;\r\n }\r\n\r\n public setCurrentDocTypeId(docTypeId: string) {\r\n this.state.selectedDocTypeId = docTypeId;\r\n }\r\n\r\n public async ajaxUploadStart(newFiles: File[] = []) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n const versioningFile = this.state.versioningFile;\r\n const res = await ApiaApi.post<TAjaxUploadStart>(\r\n makeApiaUrl(\r\n this.getAjaxUploadStartParameters({\r\n action: 'ajaxUploadStart',\r\n isAjax: true,\r\n docId: versioningFile?.docId,\r\n prefix: this.type,\r\n docTypeId:\r\n newFiles.length === 1 ? versioningFile?.docTypeId || '1' : '1',\r\n newDoc: !versioningFile,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjType: this.type,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n if (res?.data) {\r\n // this.#lastUploadKnownConf = result.data;\r\n // this.resetModal();\r\n\r\n const docTypes = arrayOrArray(res?.data.function.docTypes.docType);\r\n const hasGeneric = !!docTypes.find((c) => String(c.id) === '1');\r\n\r\n // if (newFiles.length > 0) {\r\n // await this.saveDroppedFiles(newFiles, (progress) => {\r\n // console.log(progress);\r\n // });\r\n // }\r\n\r\n this.state.allowedTypes = docTypes;\r\n this.state.selectedDocTypeId = hasGeneric ? '1' : docTypes[0].id;\r\n\r\n if (newFiles.length > 0) {\r\n await this.addFiles(newFiles);\r\n }\r\n return res?.data?.function.name === 'fncDocumentLoadInformation'\r\n ? true\r\n : false;\r\n } else {\r\n throw new Error('No files data');\r\n }\r\n }\r\n\r\n public async reloadMetadata(\r\n props?: Partial<{ docId: string; docTypeId: number | string }>,\r\n additionalProps?: Record<string, unknown>,\r\n ) {\r\n if (!this.modalController) return;\r\n const res = await ApiaApi.post<{\r\n metadata: TDocumentMetadata | TDocumentMetadata[];\r\n }>(\r\n makeApiaUrl(\r\n this.getReloadMetadataParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'reloadMetadata',\r\n isAjax: true,\r\n docId: props?.docId,\r\n docTypeId: props?.docTypeId,\r\n metadata: this.getConfirmDropModalMetadataString({\r\n metadata: this.modalController?.allMetadata,\r\n }),\r\n prefix: this.type,\r\n ...additionalProps,\r\n }),\r\n ),\r\n );\r\n\r\n if (res?.data && props?.docTypeId) {\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find(\r\n (current) => current.id === props.docTypeId,\r\n )?.free ?? false;\r\n\r\n this.modalController!.state.metadata.metadataArray = arrayOrArray(\r\n res.data.metadata,\r\n );\r\n this.modalController!.state.metadata.isFreeMetadata = isFreeMetadata;\r\n }\r\n }\r\n\r\n public async addFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const {\r\n // langId,\r\n strictMode: isConfStrictMode = false,\r\n // translatingFile,\r\n } = conf ?? {};\r\n const isStrictMode = isConfStrictMode || !!this.state.versioningFile;\r\n // || !!validationsStore.fromDirectoryFile;\r\n\r\n const docType = this.getCurrentDocTypeId();\r\n\r\n if (!isStrictMode && !docType) {\r\n this.notify({\r\n message: `${window.LBL_DROP_FILE_DELETED}: ${unprocessedFiles\r\n .map((current) => current.name)\r\n .join(', ')}.`,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n const allowedFiles = this.filterAlreadyUploadedFiles(\r\n this.filterByFilesAmountLimit(\r\n this.filterAcceptedFiles(\r\n this.filterExistingFiles(\r\n this.filterVersioningFiles(unprocessedFiles, conf),\r\n conf,\r\n ),\r\n true,\r\n docType as string,\r\n ),\r\n ),\r\n conf,\r\n );\r\n\r\n const formData = new FormData();\r\n allowedFiles.forEach((file) =>\r\n formData.append('fileRepository', file, file.name),\r\n );\r\n\r\n await ApiaApi.post(\r\n makeApiaUrl(\r\n this.getSaveDroppedFilesParameters({\r\n action: 'saveDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n elemType: this.type,\r\n elemId: `prmDocumentContainter${this.type}`,\r\n frmOut: !this.modalController,\r\n docTypeId: this.state.selectedDocTypeId,\r\n ...conf,\r\n }),\r\n ),\r\n {\r\n postData: formData,\r\n axiosConfig: {\r\n onUploadProgress: (ev) =>\r\n (this.state.progress =\r\n (ev.loaded * 100) / ((ev.total ?? ev.loaded) * 2)),\r\n },\r\n },\r\n );\r\n const ajaxUploadFileStatusParameters =\r\n this.getAjaxUploadFileStatusParameters({\r\n action: 'ajaxUploadFileStatus',\r\n ajaxUrl: this.getAjaxUrl(),\r\n delayForDrop: true,\r\n isAjax: true,\r\n prefix: this.type,\r\n });\r\n\r\n let tries = 0;\r\n const checkUploadResult = async () => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n tries += 1;\r\n if (tries === 10) {\r\n this.notify({\r\n message:\r\n 'Error while checking for uploadFileStatus, too many tries',\r\n type: 'error',\r\n });\r\n resolve(false);\r\n return;\r\n }\r\n const response = await ApiaApi.post<TAjaxUploadFileStatus>(\r\n makeApiaUrl(ajaxUploadFileStatusParameters),\r\n );\r\n if (response && response.data) {\r\n const hasMessages =\r\n arrayOrArray<any>(\r\n response.data?.sysMessages?.message ??\r\n response.data?.sysExceptions?.exception ??\r\n response.data?.exceptions?.exception ??\r\n response.data.function.messages?.message,\r\n ).length > 0 || !!response.data.function.dropLastMessage;\r\n\r\n const uploadMessage = arrayOrArray(\r\n response.data.function.messages?.message,\r\n ).find((current) => current.name === 'message');\r\n if (uploadMessage)\r\n this.notify({ message: uploadMessage.label, type: 'warning' });\r\n\r\n const method = response.data?.function.name;\r\n this.state.progress = 44;\r\n if (hasMessages) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (method === 'fncProceedDocumentProcessing') {\r\n resolve(true);\r\n return;\r\n }\r\n if (tries === 10) {\r\n resolve(method === 'fncProceedDocumentProcessing');\r\n }\r\n setTimeout(() => {\r\n checkUploadResult()\r\n .then(resolve)\r\n .catch(() => resolve(false));\r\n }, 100);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n const hasUploadedCorrectly = await checkUploadResult();\r\n\r\n this.state.progress = 66;\r\n\r\n if (hasUploadedCorrectly) {\r\n const shown = (this.state.inProgressFiles ?? []).map((file) => file.name);\r\n const postData = QueryString.stringify(\r\n this.getProcessDroppedFilesPostdata({\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId?.toString(),\r\n docTypePermittedObjType: this.type,\r\n dropped: allowedFiles.map((file) => file.name).concat(shown),\r\n shown,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n const secondResult = await ApiaApi.post<TProcessDroppedFiles>(\r\n makeApiaUrl(\r\n this.getProcessDroppedFilesParameters({\r\n action: 'processDroppedFiles',\r\n elemType: this.type,\r\n docId: this.state.versioningFile?.docId,\r\n frmOut: !this.modalController,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n this.state.progress = 83;\r\n\r\n if (secondResult?.data?.function?.principal?.docInfo) {\r\n const acceptedByServerFiles = arrayOrArray(\r\n secondResult.data.function?.principal?.docInfo,\r\n );\r\n\r\n this.state.inProgressFiles = [\r\n ...(this.state.inProgressFiles ?? []),\r\n ...acceptedByServerFiles\r\n .map((current) =>\r\n [...this.state.inProgressFiles, ...unprocessedFiles].find(\r\n (search) => search.name === current.docInfoName,\r\n ),\r\n )\r\n .filter((current): current is File => !!current),\r\n ];\r\n this.state.progress = 100;\r\n\r\n this.notify({\r\n type: 'success',\r\n message: window.FILE_UPLOADED_SUCCESSFULLY,\r\n });\r\n\r\n // if (isOneClickUploadEnabled(this.configurationObject.oneClickUpload)) {\r\n // if (langId && translatingFile)\r\n // void this.confirmDropModal({ langId, translatingFile });\r\n // else void this.confirmDropModal();\r\n // } else if (!this.isModalOpen)\r\n // this.openModal({\r\n // langId,\r\n // translatingFile,\r\n // shouldReset: false,\r\n // });\r\n }\r\n }\r\n this.state.progress = 100;\r\n }\r\n\r\n async checkWebDavLock(docId: string) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n let tries = 10;\r\n const checkLockAction = async () => {\r\n const isLocked = await ApiaApi.post<{ locked: boolean }>(\r\n makeApiaUrl(\r\n this.getCheckWebDavLockParameters({\r\n action: 'isWebDavDocumentLocked',\r\n docId,\r\n ajaxUrl: window.URL_REQUEST_AJAX,\r\n }),\r\n ),\r\n );\r\n if (\r\n isLocked?.data?.locked === true ||\r\n isLocked?.data?.locked === undefined\r\n ) {\r\n if (--tries > 0) {\r\n Execution.instance.state.locked = true;\r\n setTimeout(() => void checkLockAction(), 1000);\r\n } else {\r\n Execution.instance.state.locked = false;\r\n this.notify({ message: window.MSG_FAIL_SYNC_DOCUMENT });\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(true);\r\n Execution.instance.state.locked = false;\r\n }\r\n };\r\n void checkLockAction();\r\n });\r\n }\r\n\r\n async checkSignature(file: TUploaderFileInfo) {\r\n let res = null;\r\n if (Number(file.docId) >= 0)\r\n res = await ApiaApi.get<{ markedToSign: boolean }>(\r\n makeApiaUrl({\r\n action: 'viewDocSigns',\r\n docId: file.docId,\r\n lock: false,\r\n isAjax: true,\r\n prefix: this.type,\r\n react: true,\r\n }),\r\n );\r\n return res;\r\n }\r\n\r\n async editDocument(id: string) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post<{ folderId: string }>(\r\n makeApiaUrl(\r\n this.getEditDocumentParameters({\r\n action: 'updateWebDavDocument',\r\n docId: file.docId,\r\n prefix: this.type,\r\n isAjax: true,\r\n }),\r\n ),\r\n );\r\n if (result?.data?.folderId) {\r\n const sDocumentUrl = `${window.WEBDAV_SERVER}${\r\n result?.data?.folderId\r\n }/${file.docId}/${file.name || file.docName || ''}`;\r\n\r\n const ProtocolInstallMessage = () => {\r\n this.notify({\r\n type: 'warning',\r\n message: window.MSG_NO_DOC_EDIT_PROTOCOL,\r\n title: window.LBL_EDIT,\r\n });\r\n };\r\n\r\n (window.avoidLoadEvents as any) = true;\r\n (window.ITHit as any).WebDAV.Client.DavConstants.ProtocolTimeoutMs =\r\n 10000;\r\n\r\n await (\r\n window.ITHit as any\r\n ).WebDAV.Client.DocManager.DavProtocolEditDocument(\r\n sDocumentUrl,\r\n window.WEBDAV_SERVER,\r\n ProtocolInstallMessage,\r\n null,\r\n 'Current',\r\n 'ApiaWebDavCookie', // Cookie(s) to copy.\r\n '', // URL to navigate to if any cookie from the list is not found.\r\n 'Edit',\r\n );\r\n }\r\n }\r\n }\r\n\r\n async downloadDocument(id: string, version?: string) {\r\n const file = this.indexedFiles[id];\r\n if (window.IN_MONITOR || (await this.checkWebDavLock(file.docId))) {\r\n await downloadUrl(\r\n makeApiaUrl({\r\n action: 'downloadDocument',\r\n prefix: this.type,\r\n docId: file.downloadDocId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n version,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n async deleteDocument(id: string, langId?: number) {\r\n const file = this.indexedFiles[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl(\r\n this.getDeleteDocumentParameters({\r\n action: 'ajaxRemoveDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (this.evaluateDeleteDocumentResult(result?.data))\r\n if (this.state.files[id]) delete this.state.files[id];\r\n }\r\n }\r\n\r\n async markFileToSign(id: string, langId?: number) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n this.state.files[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const marked = await ApiaApi.post<{ markedToSign: boolean }>(\r\n makeApiaUrl(\r\n this.getMarkFileToSignParameters({\r\n action: 'markDocTosign',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (marked?.data?.markedToSign !== undefined) {\r\n //TODO: ver si hay que actualizar los traduciods tambien( en todos los lugares donde se usa el indexedFiles)\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n // file.markedToSign = marked.data.markedToSign;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Por el momento realiza la descarga de todos los archivos\r\n * que estén subidos.\r\n */\r\n downloadMultipleDocuments() {\r\n const files = this.filesArray;\r\n if (files.length === 0) return;\r\n const docIds = this.state.selectedFiles;\r\n\r\n const selectedFiles = files.filter((current) =>\r\n docIds.find((search) => search === current.docId),\r\n );\r\n const ids = (selectedFiles.length > 0 ? selectedFiles : files)\r\n .map((current) => current.downloadDocId)\r\n .join('-');\r\n\r\n void downloadUrl(\r\n makeApiaUrl(\r\n this.getDownloadMultipleDocumentsParameters({\r\n action: 'multipleDownload',\r\n docId: ids,\r\n prefix: this.type,\r\n }),\r\n ),\r\n 'documents.zip',\r\n );\r\n }\r\n\r\n async confirmDropModal(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n }) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const { langId, translatingFile } = conf ?? {};\r\n\r\n const cmbDocType = this.state.selectedDocTypeId;\r\n const fromDirectoryFile = null as any as TApiaDocumentDefinition | null; //this.state.versioningFile //TODO\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = this.modalController?.allowAllType ?? '';\r\n const docFolder = this.modalController?.docFolder;\r\n const docExpDate = this.modalController?.docExpDate;\r\n const metadata = this.modalController?.metadata ?? [];\r\n const freeMetadata = this.modalController?.freeMetadata ?? [];\r\n\r\n const poolsPermissions =\r\n this.modalController?.state.permissions.pools ?? [];\r\n\r\n const usersPermissions =\r\n this.modalController?.state.permissions.users ?? [];\r\n\r\n let postData = QueryString.stringify(\r\n this.getConfirmDropModalPostdata({\r\n cmbDocType,\r\n docDesc,\r\n docAllowAllType,\r\n pe: this.docTypePermittedObjId?.toString(),\r\n dropped: this.state.inProgressFiles.map((file) => file.name),\r\n txtLangId: langId,\r\n txtLangGroup: translatingFile?.docLangGroup,\r\n docFolder: docFolder,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n postData = `${postData}${\r\n postData.length > 0 ? '&' : ''\r\n }${this.getConfirmDropModalPermissionsString({\r\n poolsPermissions,\r\n usersPermissions,\r\n })}&txtFreeMetadata=${this.getConfirmDropModalAdditionalMetadataString(\r\n freeMetadata,\r\n )}&txtMetadata=${this.getConfirmDropModalMetadataString({\r\n metadata: Object.values(metadata || {}),\r\n })}&docExpDate=${docExpDate ?? ''}`;\r\n\r\n const result = await ApiaApi.post<TConfirmDropModal>(\r\n makeApiaUrl(\r\n this.getConfirmDropModalParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: fromDirectoryFile\r\n ? fromDirectoryFile.docId\r\n : this.state.versioningFile?.docId,\r\n action: fromDirectoryFile\r\n ? 'associateExistingFile'\r\n : 'confirmDropModal',\r\n elemType: this.type,\r\n fromForm: true,\r\n ...(fromDirectoryFile\r\n ? {\r\n docId: fromDirectoryFile.docId,\r\n fromReuse: true,\r\n uploadDocument: false,\r\n }\r\n : null),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n if (result?.data?.function) {\r\n const currentFiles = { ...this.state.files };\r\n const versioningFile = this.state.versioningFile;\r\n\r\n if (versioningFile && versioningFile.name) {\r\n delete currentFiles[versioningFile.name];\r\n }\r\n const newFiles: Record<string, TUploaderFileInfo> = arrayOrArray(\r\n result.data.function.general,\r\n )\r\n .map((current) =>\r\n this.parseFileDefinition({\r\n ...current,\r\n canWrite: true,\r\n canRead: true,\r\n canEdit: true,\r\n }),\r\n )\r\n .filter((current) => !currentFiles[current.docId])\r\n .reduce((acc, current) => ({ ...acc, [current.docId]: current }), {});\r\n\r\n if (langId && translatingFile) {\r\n const docId = translatingFile.docId;\r\n let innerMap = this.state.translatedFiles.get(docId);\r\n\r\n if (!innerMap) {\r\n innerMap = new Map<number, TUploaderFileInfo>();\r\n }\r\n innerMap.set(langId, newFiles[docId]);\r\n this.state.translatedFiles.set(docId, innerMap);\r\n } else {\r\n this.state.files = { ...currentFiles, ...newFiles };\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n async loadCurrentDocuments() {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<TApiaFunction<TUploaderLoadCurrentFunction, false>>\r\n >(\r\n makeApiaUrl({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'ajaxLoadCurrent',\r\n isAjax: true,\r\n readOnly: window.IS_READONLY,\r\n allowLock: true,\r\n allowSign: true,\r\n allowMultiple: true,\r\n prefix: this.type,\r\n }),\r\n {},\r\n );\r\n\r\n if (result && result.data) {\r\n const currentConfiguration: TUploaderLoadCurrentFunctionMessages =\r\n arrayOrArray(result.data.function.messages.message).reduce(\r\n (prev, { name, label }) => ({ ...prev, [name]: Boolean(label) }),\r\n {} as TUploaderLoadCurrentFunctionMessages,\r\n );\r\n\r\n const currentFiles: TUploaderFileInfo[] = result.data.function.general\r\n ? arrayOrArray(result.data.function.general).map(\r\n this.parseFileDefinition,\r\n )\r\n : [];\r\n\r\n this.currentConfiguration = currentConfiguration;\r\n const nonTranslationFiles: TUploaderFileInfo[] = [];\r\n const translationFiles: TUploaderFileInfo[] = [];\r\n currentFiles.forEach((current) => {\r\n if (current.docLang === undefined) nonTranslationFiles.push(current);\r\n else translationFiles.push(current);\r\n });\r\n\r\n nonTranslationFiles.forEach((c) => {\r\n this.state.files[c.docId] = c;\r\n });\r\n translationFiles.forEach((current) => {\r\n const originalFile = nonTranslationFiles.find(\r\n (search) => search.docLangGroup === current.docLangGroup,\r\n );\r\n if (originalFile && current.docLang !== undefined) {\r\n this.state.translatedFiles;\r\n this.setTranslationFile(\r\n current,\r\n originalFile.docId,\r\n Number(current.docLang),\r\n );\r\n } else\r\n console.warn(\r\n `The following file is translated but has no orignal file`,\r\n current,\r\n nonTranslationFiles,\r\n );\r\n });\r\n }\r\n }\r\n\r\n async lockDocument(id: string) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n if (file.isMarkedToSign) {\r\n this.notify({\r\n message: window.CANT_UNLOCK_MARKED_TO_SIGN,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n if (!file.isLocked || !file.isLockedByMe) {\r\n const isLocked = await this.checkLockDocument(file.docId, false);\r\n if (typeof isLocked === 'string') {\r\n this.state.files[id] = this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n locked: true,\r\n lockedBy: isLocked,\r\n });\r\n } else this.state.files[id] = { ...this.indexedFiles[id], isLocked };\r\n }\r\n\r\n const result = await ApiaApi.post<\r\n TApiaFunction<\r\n {\r\n data: {\r\n general: {\r\n docId: string;\r\n locked: boolean;\r\n prefix: string;\r\n userLocking: string;\r\n };\r\n };\r\n },\r\n false\r\n >\r\n >(\r\n makeApiaUrl(\r\n this.getLockDocumentParameters({\r\n action: 'lockDocument',\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: file.docId,\r\n lock: file.isLocked,\r\n isAjax: true,\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n const resultFile = result.data.function?.data?.general;\r\n if (resultFile)\r\n this.indexedFiles[resultFile.docId] = this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\r\n });\r\n }\r\n }\r\n\r\n protected evaluateDeleteDocumentResult(result: unknown) {\r\n return (\r\n (\r\n result as\r\n | undefined\r\n | TApiaLoad<\r\n TApiaFunction<\r\n {\r\n general: {\r\n docId: string;\r\n prefix: string;\r\n };\r\n },\r\n false\r\n >\r\n >\r\n )?.function?.name === 'fncDocumentRemove'\r\n );\r\n }\r\n\r\n private setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.get(docId)) {\r\n this.state.translatedFiles.set(docId, new Map());\r\n }\r\n this.state.translatedFiles.get(docId)?.set(langId, file);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = returnExactlyTheSame;\r\n\r\n protected getAjaxUploadStartParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalParameters = returnExactlyTheSame;\r\n\r\n protected getCheckLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getCheckWebDavLockParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalPostdata = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalMetadataString = ({\r\n metadata,\r\n }: {\r\n metadata: TDocumentMetadata[];\r\n }) => {\r\n return (\r\n metadata\r\n ?.filter?.((current) => !!current.value)\r\n .map((current) => `${current.id}~${current.type}~${current.value}`)\r\n .join(';') ?? []\r\n );\r\n };\r\n\r\n protected getConfirmDropModalPermissionsString = ({\r\n poolsPermissions,\r\n usersPermissions,\r\n }: {\r\n poolsPermissions: IPoolsPermissions[];\r\n usersPermissions: IUsersPermissions[];\r\n }) => {\r\n let returnString = '';\r\n\r\n poolsPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docPoolId=${current.poolId}&docPoolName=${\r\n current.poolName\r\n }&docPermType${current.poolId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n usersPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docUserId=${current.userId}&docUsrLogin=${\r\n current.userLogin\r\n }&docPermType${current.userId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n return returnString;\r\n };\r\n\r\n protected getConfirmDropModalAdditionalMetadataString = (\r\n additionalMetadata: TDocumentMetadata[] | [],\r\n ) => {\r\n return Object.values(additionalMetadata)\r\n .filter((current) => !!current?.value)\r\n .map((current) => `${current.name}~${current.value}`)\r\n .join(';');\r\n };\r\n\r\n protected getDeleteDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getClearTempFilesParameters = returnExactlyTheSame;\r\n\r\n protected getDocumentInfoParameters = returnExactlyTheSame;\r\n\r\n protected getDownloadMultipleDocumentsParameters = returnExactlyTheSame;\r\n\r\n protected getEditDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getMarkFileToSignParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesPostdata = returnExactlyTheSame;\r\n\r\n protected getReloadMetadataParameters = returnExactlyTheSame;\r\n\r\n protected getSaveDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected filterAlreadyUploadedFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) return files;\r\n\r\n const uploadedFiles = this.state.inProgressFiles;\r\n const existingFiles: File[] = [];\r\n const nonExistingFiles: File[] = [];\r\n if (conf?.langId) {\r\n const docId = conf.translatingFile?.docId ?? Infinity;\r\n const translationsMap = this.state.translatedFiles.get(String(docId));\r\n const alreadyUploadedToTranslationsFile = translationsMap\r\n ? Array.from(translationsMap.values()).find(\r\n (current) => (current.docName || current.name) === files[0]?.name,\r\n )\r\n : undefined;\r\n if (alreadyUploadedToTranslationsFile) existingFiles.push(files[0]);\r\n } else\r\n files.forEach((file) => {\r\n if (uploadedFiles.find((search) => search.name === file.name)) {\r\n existingFiles.push(file);\r\n } else nonExistingFiles.push(file);\r\n });\r\n if (existingFiles.length > 0) {\r\n void this.notify({\r\n message: `${window.LBL_DROP_FILE_REPEATED}: ${existingFiles\r\n .map((current) => current.name)\r\n .join(', ')}`,\r\n type: 'warning',\r\n });\r\n return nonExistingFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n return files.slice(\r\n 0,\r\n addBoundary(this.maxFiles - (this.state.inProgressFiles?.length ?? 0), 0),\r\n );\r\n }\r\n\r\n protected filterAcceptedFiles(\r\n files: File[],\r\n shouldNotify = true,\r\n docTypeId?: string | TDocType,\r\n ): File[] {\r\n const docTypes =\r\n docTypeId !== undefined\r\n ? this.state.allowedTypes.filter((c) => {\r\n return typeof docTypeId === 'string'\r\n ? c.id === docTypeId\r\n : c.id === docTypeId.id;\r\n })\r\n : this.state.allowedTypes;\r\n\r\n if (!docTypes.find((c) => c.docExts === '')) {\r\n const notAllowedFilesBecauseOfExtension: File[] = [];\r\n const notAllowedFilesBecauseOfSize: File[] = [];\r\n let maxSize = Infinity;\r\n const allowedFiles = files.filter((currentFile) => {\r\n const extension = (currentFile.name.match(/\\.(\\w+)$/) ?? [])[1];\r\n\r\n let isAllowed = true;\r\n if (\r\n !docTypes.find((currentDocType) => {\r\n if (\r\n !currentDocType.docExts\r\n .split(';')\r\n .map((current) => current.toLowerCase())\r\n .includes(extension.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n isAllowed = false;\r\n notAllowedFilesBecauseOfExtension.push(currentFile);\r\n }\r\n if (\r\n isAllowed &&\r\n !docTypes.find((currentDocType: any) => {\r\n if (Number(currentDocType.maxSize) < currentFile.size) {\r\n maxSize = Number(currentDocType.maxSize);\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n notAllowedFilesBecauseOfSize.push(currentFile);\r\n isAllowed = false;\r\n }\r\n\r\n if (!isAllowed) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (shouldNotify) {\r\n let errorMessage = '';\r\n\r\n if (notAllowedFilesBecauseOfExtension.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfExtension.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n errorMessage = `<strong>${window.FILES_WRONG_EXT}</strong><br />${filesNames}`;\r\n }\r\n\r\n if (notAllowedFilesBecauseOfSize.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfSize.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n if (errorMessage.length > 0)\r\n errorMessage = `${errorMessage} <br /><br />`;\r\n errorMessage = `${errorMessage}${formatMessage(window.FILES_TOO_BIG, {\r\n TOK1: `<br />${filesNames}`,\r\n TOK2: `${parseAsSize(maxSize)}`,\r\n })}`;\r\n }\r\n\r\n if (errorMessage.length > 0)\r\n this.notify({\r\n message: errorMessage,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n return allowedFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterExistingFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n if (conf?.langId) return files;\r\n\r\n const currentFiles = this.state.inProgressFiles;\r\n const alreadyUploadedFiles = this.filesArray.filter(\r\n (current) => Number(current.docId) < 0,\r\n );\r\n let alreadyIncludedFileNames = '';\r\n const filteredFiles = files.filter((current) => {\r\n const isIncluded =\r\n currentFiles.findIndex((search) => search.name === current.name) !==\r\n -1 ||\r\n alreadyUploadedFiles.findIndex(\r\n (search) => search.docName === current.name,\r\n ) !== -1;\r\n\r\n if (isIncluded)\r\n alreadyIncludedFileNames = `${alreadyIncludedFileNames}${\r\n alreadyIncludedFileNames.length > 0 ? ', ' : ''\r\n }${current.name}`;\r\n\r\n return !isIncluded;\r\n });\r\n if (alreadyIncludedFileNames.length > 0)\r\n this.notify({\r\n message: `${window.LBL_DROP_FILE_REPEATED}: ${alreadyIncludedFileNames}`,\r\n type: 'warning',\r\n });\r\n return filteredFiles;\r\n }\r\n\r\n protected filterVersioningFiles(\r\n files: File[],\r\n conf?: {\r\n langId?: number;\r\n strictMode?: boolean;\r\n translatingFile?: TUploaderFileInfo;\r\n shouldReset?: boolean;\r\n },\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) {\r\n const newFiles = files.filter(\r\n (current) =>\r\n current.name === versioningFile.docName ||\r\n current.name === versioningFile.name,\r\n );\r\n if (newFiles.length === 0) {\r\n this.notify({\r\n type: 'warning',\r\n message: window.LBL_DROP_FILE_NAMES_NOT_MATCH,\r\n });\r\n }\r\n return newFiles;\r\n }\r\n if (\r\n files.length === 1 &&\r\n conf?.translatingFile === undefined &&\r\n conf?.langId === undefined\r\n ) {\r\n // const actualVersioningFile = fileStore.filesArray.find(\r\n // (current) => (current.name || current.docName) === files[0].name,\r\n // );\r\n // if (actualVersioningFile) {\r\n // if (actualVersioningFile.isLockedByMe)\r\n // this.updateModal({ versioningFile: actualVersioningFile });\r\n // }\r\n }\r\n\r\n return files;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(file, false),\r\n canEdit: file.canEdit || file.canWrite,\r\n canRead: file.canRead,\r\n };\r\n };\r\n}\r\n","import type { File } from '.';\r\nimport { TModalConfig, UploaderApi } from '../../../Uploader';\r\n\r\nexport class FileUploaderApi extends UploaderApi {\r\n constructor(\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n private field: File,\r\n ) {\r\n super(type + '_' + field.definition.id, type, modalConfig);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ) => {\r\n return {\r\n ...defaultParameters,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n };\r\n };\r\n}\r\n","import { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TModalConfig } from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { FileUploaderApi } from './FileUploaderApi';\r\n\r\nexport class File extends TranslatableField<TApiaFileProperties> {\r\n uploader: FileUploaderApi = {} as FileUploaderApi;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FileUploaderApi(\r\n form.definition.frmParent,\r\n {\r\n oneClickUpload: this.properties.oneClickUpload,\r\n } as TModalConfig,\r\n this,\r\n );\r\n }\r\n}\r\n","import { responsiveTableStore } from '@apia/table';\n\nexport function getTableSelection(tableName: string) {\n const state = responsiveTableStore.getState().responsiveTableSlice[tableName];\n\n const set = new Set<number>();\n state.selectedRows.forEach((e) => {\n if (e >= 0) {\n set.add(e);\n }\n });\n\n return [...set];\n}\n","import { getTableSelection } from './getTableSelection';\r\nimport { makeObservable, observable, runInAction } from 'mobx';\r\nimport { IGrid } from '../types';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n isLoading: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n isLoading: false,\r\n };\r\n\r\n constructor(private grid: IGrid) {\r\n makeObservable(this, { state: observable });\r\n this.init();\r\n }\r\n\r\n #unsubscribeTableEvents = () => {};\r\n private init() {\r\n this.#unsubscribeTableEvents();\r\n\r\n const { paged, currentPage, rowsCount } = this.grid.properties;\r\n const isFirstPage = paged ? currentPage === 1 : false;\r\n\r\n const u2 = this.grid.controller.events.on(\r\n 'onChangeSelection',\r\n ([selection]) => {\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.index === 0) && isFirstPage\r\n : selection.find((c) => c.index === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) => c.row?.rendererProps?.index === rowsCount - 1,\r\n )\r\n : selection.find(\r\n (c) => c.index === this.grid.properties.rowsCount - 1,\r\n ));\r\n });\r\n },\r\n );\r\n this.#unsubscribeTableEvents = () => {\r\n u2();\r\n };\r\n }\r\n\r\n get showAddButton() {\r\n const { hideGridButtons, hideAddButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return !hideGridButtons && !hideAddButton && !hideIncludeButton;\r\n }\r\n get showDelButton() {\r\n const { hideGridButtons, hideDelButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return !hideGridButtons && !hideDelButton && !hideIncludeButton;\r\n }\r\n get showSortButtons() {\r\n const { hideGridButtons, hideOrderButton } = this.grid.properties;\r\n return !hideGridButtons && !hideOrderButton;\r\n }\r\n get isSortUpDisabled() {\r\n return (\r\n this.state.isSortUpDisabled ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n get isSortDownDisabled() {\r\n return (\r\n this.state.isSortDownDisabled ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n get isAddDisabled() {\r\n return this.state.isLoading || this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getSelection().length === 0 ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n private async runBlockingCode(cb: () => Promise<void>) {\r\n this.state.isLoading = true;\r\n\r\n try {\r\n await cb();\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this.state.isLoading = false;\r\n }\r\n }\r\n\r\n async sortUp() {\r\n await this.runBlockingCode(async () => {\r\n const { paged, currentPage, pageSize } = this.grid.properties;\r\n const tableName = this.grid.controller.tableName;\r\n\r\n let selection = getTableSelection(tableName);\r\n\r\n if (paged) {\r\n const offset = (currentPage - 1) * pageSize;\r\n selection = selection.map((index) => index + offset);\r\n }\r\n const isFirstRowSelected =\r\n paged && selection.includes((currentPage - 1) * pageSize);\r\n\r\n if (await this.grid.sortUp(selection)) {\r\n const state = this.grid.controller.getState();\r\n\r\n if (paged) {\r\n if (isFirstRowSelected) {\r\n state.selectedRows = [pageSize - 1];\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c - 1)\r\n .filter((c) => c >= 0);\r\n }\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c - 1)\r\n .filter((c) => c >= 0);\r\n }\r\n\r\n state.focusedRow = state.selectedRows[state.selectedRows.length - 1];\r\n state.scrollIntoViewRow =\r\n state.selectedRows[state.selectedRows.length - 1];\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async sortDown() {\r\n await this.runBlockingCode(async () => {\r\n const { paged, currentPage, pageSize, rowsCount } = this.grid.properties;\r\n const tableName = this.grid.controller.tableName;\r\n\r\n let selection = getTableSelection(tableName);\r\n\r\n if (paged) {\r\n const offset = (currentPage - 1) * pageSize;\r\n selection = selection.map((index) => index + offset);\r\n }\r\n\r\n const isLastRowSelected =\r\n paged && selection.includes(currentPage * pageSize - 1);\r\n\r\n if (await this.grid.sortDown(selection)) {\r\n const state = this.grid.controller.getState();\r\n\r\n if (paged) {\r\n if (isLastRowSelected) {\r\n state.selectedRows = [0];\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c + 1)\r\n .filter((c) => c < pageSize);\r\n }\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c + 1)\r\n .filter((c) => c < rowsCount);\r\n }\r\n state.focusedRow = Math.min(state.focusedRow + 1, rowsCount - 1);\r\n state.scrollIntoViewRow = Math.min(state.focusedRow + 1, rowsCount - 1);\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async addRow() {\r\n await this.runBlockingCode(async () => {\r\n const { currentPage, pageSize } = this.grid.properties;\r\n\r\n if (await this.grid.addRow()) {\r\n const newTotalRows = this.grid.properties.rowsCount;\r\n\r\n const totalPages = Math.ceil(newTotalRows / pageSize);\r\n\r\n let newSelectedRowIndex: number;\r\n\r\n if (currentPage === totalPages) {\r\n newSelectedRowIndex = (newTotalRows - 1) % pageSize;\r\n } else {\r\n newSelectedRowIndex = newTotalRows - 1;\r\n }\r\n\r\n const state = this.grid.controller.getState();\r\n\r\n state.selectedRows = [newSelectedRowIndex];\r\n state.focusedRow = newSelectedRowIndex;\r\n state.focusedColumn = Math.max(state.focusedColumn, 1);\r\n state.scrollIntoViewRow = newSelectedRowIndex;\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async deleteSelectedRows(index?: number) {\r\n await this.runBlockingCode(async () => {\r\n const state = this.grid.controller.getState();\r\n const selection = getTableSelection(this.grid.controller.tableName);\r\n\r\n if (index !== undefined) {\r\n await this.grid.deleteRow([index]);\r\n if (state.focusedRow > index) {\r\n state.focusedRow = state.focusedRow - 1;\r\n }\r\n state.selectedRows = selection.map((c) => (c > index ? c - 1 : c));\r\n this.grid.controller.setState(state);\r\n } else {\r\n const { currentPage, pageSize } = this.grid.properties;\r\n // Obtener la selección actual de filas\r\n if (selection.length === 0) {\r\n // No hay filas seleccionadas para eliminar\r\n return;\r\n }\r\n\r\n // Encontrar el índice mínimo seleccionado (asumiendo índices relativos a la página)\r\n let min = Infinity;\r\n selection.forEach((c) => {\r\n if (c < min) min = c;\r\n });\r\n\r\n // Eliminar las filas seleccionadas\r\n const deletionSuccess = await this.grid.deleteRow(selection);\r\n if (!deletionSuccess) {\r\n // Manejar el fallo en la eliminación si es necesario\r\n console.error('Error al eliminar filas seleccionadas.');\r\n return;\r\n }\r\n\r\n // Obtener el estado actual de la tabla después de la eliminación\r\n\r\n // Determinar si la primera fila de la página estaba seleccionada\r\n const isFirstRowSelected = min === 0;\r\n\r\n if (isFirstRowSelected) {\r\n if (currentPage > 1) {\r\n // Seleccionar la última fila de la página anterior\r\n state.selectedRows = [pageSize - 1];\r\n } else {\r\n // Seleccionar la primera fila de la página actual\r\n this.state.isSortDownDisabled = false;\r\n state.selectedRows = [0];\r\n }\r\n } else {\r\n // Seleccionar la fila anterior a la eliminada\r\n const newSelected = min - 1;\r\n state.selectedRows = [Math.max(newSelected, 0)];\r\n }\r\n\r\n // Establecer el foco en la fila seleccionada\r\n state.focusedRow = state.selectedRows[0];\r\n state.scrollIntoViewRow = state.focusedRow;\r\n state.isFocused = false;\r\n\r\n // Actualizar el estado de la tabla\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n}\r\n","import { Controller2 } from '@apia/table';\r\nimport { arrayOrArray, makeApiaUrl, parseXml, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { FieldWithIndexedFields } from '../../FieldWithIndexedFields';\r\nimport { FieldsGroup } from '../../FieldWithIndexedFields/FieldsGroup';\r\nimport { Form } from '../../Form';\r\nimport { actions } from '../../constants/actions';\r\nimport { eventTypes } from '../../constants/eventTypes';\r\nimport { FireEventParameters, SetValueOptions } from '../../types';\r\nimport {\r\n GridAction,\r\n GridActionResponse,\r\n GridColumn,\r\n GridEvents,\r\n GridProps,\r\n IGrid,\r\n} from './types';\r\nimport { GridFooterHandler } from './util/GridFooterHandler';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Grid\r\n extends FieldWithIndexedFields<\r\n GridProps,\r\n TApiaFieldBaseDefinition<GridProps>,\r\n {\r\n definition: Omit<TApiaFieldBaseDefinition<GridProps>, 'properties'>;\r\n header: GridColumn[];\r\n isLoading: boolean;\r\n selectedIndices: number[];\r\n showAdditionalColumn: boolean;\r\n }\r\n >\r\n implements IGrid\r\n{\r\n private _controller: Controller2 | null = null;\r\n public get controller() {\r\n if (!this._controller) {\r\n throw new Error('Controller2 has not been set');\r\n }\r\n return this._controller;\r\n }\r\n public setController(c: Controller2) {\r\n this._controller = c;\r\n this.footerHandler = new GridFooterHandler(this);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n const fieldsArray = arrayOrArray(field);\r\n const statesArray = fieldsArray.map((current) =>\r\n arrayOrArray(current.fieldValue || current.row),\r\n );\r\n\r\n super(\r\n {\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(properties.pagedGridSize, Infinity),\r\n rowsCount: arrayOrArray(arrayOrArray(field)[0]?.fieldValue).length,\r\n\r\n shownColumns: new Map(),\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n },\r\n fieldsArray.map(({ properties, fieldValue, ...current }) => {\r\n return current;\r\n }),\r\n\r\n statesArray,\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150',\r\n }));\r\n this.calculateMustShowAdditionalColumn();\r\n this.state.isLoading = false;\r\n }\r\n\r\n #hasSetHeadersSizes = false;\r\n private footerHandler: GridFooterHandler | null = null;\r\n private initHeadersSizes() {\r\n if (this.#hasSetHeadersSizes) {\r\n return;\r\n }\r\n\r\n const firstRow = this.getRow(0);\r\n if (firstRow) {\r\n this.#hasSetHeadersSizes = true;\r\n this.state.header = arrayOrArray(firstRow).map((field, columnIndex) => ({\r\n ...this.state.header[columnIndex],\r\n width: field.properties?.colWidth ?? '150',\r\n }));\r\n }\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.initHeadersSizes();\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const willShowEditionButton = !!this.properties.gridForm;\r\n let willShowDeleteButton =\r\n !this.properties.hideDelButton &&\r\n !this.properties.hideGridButtons &&\r\n !this.properties.hideIncludeButton;\r\n\r\n if (!willShowDeleteButton) {\r\n const showDeleteButtonsValues =\r\n this.properties.shownDeleteButtons.values();\r\n\r\n for (const value of showDeleteButtonsValues) {\r\n if (value) {\r\n willShowDeleteButton = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.state.showAdditionalColumn =\r\n willShowEditionButton || willShowDeleteButton;\r\n }\r\n protected async parseAddRowXml(str: string): Promise<boolean> {\r\n const xml = parseXml(str) as TApiaGridDefinition;\r\n\r\n if (xml.field) {\r\n await this.addGroup(\r\n new FieldsGroup(\r\n arrayOrArray(xml.field).map((c) => {\r\n if (c.fieldType === 'select' || c.fieldType === 'radio') {\r\n return { ...c, ...c.row };\r\n }\r\n\r\n return c;\r\n }),\r\n ),\r\n );\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n protected async rebuildGrid(\r\n xmlString: string,\r\n rowsCount: number,\r\n ): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: 1,\r\n rowsCount,\r\n pages: 1,\r\n };\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray = fieldsArray.map((field) =>\r\n arrayOrArray(field.fieldValue || field.row),\r\n );\r\n\r\n if (statesArray[0].length > this.fieldsGroups.length) {\r\n for (let i = this.fieldsGroups.length; i < statesArray[0].length; i++) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i + this.getStartIndex(),\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i].properties,\r\n value: statesArray[columnIndex][i].value,\r\n },\r\n };\r\n });\r\n const fieldsGroup = new FieldsGroup(parsedFieldGroups);\r\n\r\n await this.addGroup(fieldsGroup);\r\n }\r\n } else if (statesArray[0].length < this.fieldsGroups.length) {\r\n this.fieldsGroups.splice(statesArray[0].length);\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n this.fieldsStates = statesArray;\r\n this.fieldsStates.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const fieldGroup = this.getFieldsGroupByIndex(\r\n this.getStartIndex() + rowIndex,\r\n );\r\n const field = fieldGroup.getFieldById(id);\r\n\r\n if (field) {\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = rowIndex + this.getStartIndex();\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n behave: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n await makeApiaUrl({\r\n action: 'processGridFieldAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n behave,\r\n );\r\n }\r\n\r\n get minIndex() {\r\n return Number.isFinite(this.properties.pageSize)\r\n ? (this.properties.currentPage - 1) * this.properties.pageSize\r\n : 0;\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n async addRow(): Promise<boolean> {\r\n const eventsResult = await this.fireEvent('gridAdd', {\r\n cantRowsToAdd: 1,\r\n gridAction: 'add',\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridAdd')) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n cantRowsToAdd: 1,\r\n gridAction: 'last',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n clearGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'clearGrid',\r\n clearReadonly: true,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n clearPage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented clearPage';\r\n };\r\n deleteGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n deletePage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented deletePage';\r\n };\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n async deleteRow(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n )\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.minIndex);\r\n\r\n const eventsResult = await this.fireEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: selectedIndices,\r\n });\r\n\r\n // if (eventsResult) {\r\n // this.fieldsGroups = this.removeElementsByIndices(\r\n // this.fieldsGroups,\r\n // selectedIndices,\r\n // );\r\n // }\r\n if (eventsResult) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n private getServerEventOfType(eventName: GridEvents) {\r\n return this.definition.serverEvents?.find((c) => c.evtName === eventName);\r\n }\r\n protected async fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n let event = this.getServerEventOfType(eventName);\r\n\r\n if (event) {\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n public getGridFooterHandler() {\r\n if (!this.footerHandler)\r\n throw new Error(\"Grid footer handler hasn't been set\");\r\n\r\n return this.footerHandler;\r\n }\r\n fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, params);\r\n }\r\n gotoPage: GridAction<[page: number]> = async (\r\n page: number,\r\n ): Promise<boolean> => {\r\n const response = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (response?.data?.success) {\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: page,\r\n };\r\n await this.rebuildGrid(\r\n response.data.gridXml.text,\r\n noNaN(response.data.rowCount, 0),\r\n );\r\n\r\n return true;\r\n }\r\n return false;\r\n };\r\n getCurrentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n getHeader() {\r\n return this.state.header;\r\n }\r\n getMustShowAdditionalColumn() {\r\n return this.state.showAdditionalColumn;\r\n }\r\n getPageCount() {\r\n return this.properties.pages;\r\n }\r\n getSelectedIndices() {\r\n return this.state.selectedIndices;\r\n }\r\n getSelectedItems() {\r\n return this.getSelectedIndices().map((current) => this.getRow(current)!);\r\n }\r\n isPaged() {\r\n return this.properties.paged;\r\n }\r\n async refresh() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n }\r\n }\r\n /**\r\n * @alias deleteRow\r\n */\r\n remove(index?: number | number[]): Promise<boolean> {\r\n return this.deleteRow(index);\r\n }\r\n removeElementsByIndices(\r\n array: FieldsGroup[],\r\n indicesToRemove: number[],\r\n ): FieldsGroup[] {\r\n const indicesSet = new Set(indicesToRemove);\r\n\r\n return array.filter((_, index) => !indicesSet.has(index));\r\n }\r\n\r\n sortColumn: GridAction<[index: number]> = async (index) => {\r\n const firingField = this.fieldsGroups\r\n .at(\r\n (this.properties.currentPage -\r\n (this.state.showAdditionalColumn ? 1 : 0)) *\r\n this.properties.pageSize,\r\n )\r\n ?.getAllFields()\r\n .at(index - 1)?.definition.id;\r\n\r\n if (firingField) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField,\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n async sortDown(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n ).sort((a, b) => b - a);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'down', { synchronize: false });\r\n } else if (eventsResult && !this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'down', { synchronize: false });\r\n }\r\n return eventsResult;\r\n }\r\n\r\n async sortUp(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'up', { synchronize: false });\r\n } else if (eventsResult && !this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'up', { synchronize: false });\r\n }\r\n return eventsResult;\r\n }\r\n\r\n private swapRows(\r\n rows: number[],\r\n direction: 'up' | 'down',\r\n props?: SetValueOptions,\r\n ) {\r\n for (const i of rows) {\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n this.swapRowsIndices(i, swapIndex, props);\r\n }\r\n }\r\n\r\n private swapRowsIndices(a: number, b: number, props?: SetValueOptions) {\r\n const swapGroup = this.getFieldsGroupByIndex(a)?.getAllFields();\r\n const swapProps = swapGroup.map((c) => c.properties);\r\n const swapValues = swapGroup.map((c) => {\r\n if (c instanceof FieldWithAttribute) {\r\n return c.getValue();\r\n }\r\n return undefined;\r\n });\r\n const currentGroup = this.getFieldsGroupByIndex(b)?.getAllFields();\r\n const currentProps = currentGroup.map((c) => c.properties);\r\n const currentValues = currentGroup.map((c) => {\r\n if (c instanceof FieldWithAttribute) {\r\n return c.getValue();\r\n }\r\n return undefined;\r\n });\r\n\r\n swapGroup.forEach((field, column) => {\r\n field.properties = currentProps[column];\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(currentValues[column], props);\r\n }\r\n });\r\n currentGroup.forEach((field, column) => {\r\n field.properties = swapProps[column];\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(swapValues[column], props);\r\n }\r\n });\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n const currentValue = this.properties.shownColumns.get(fieldName);\r\n this.properties.shownColumns.set(fieldName, isShown ?? !currentValue);\r\n }\r\n\r\n toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n}\r\n","import { Controller2 } from '@apia/table';\r\nimport { arrayOrArray, makeApiaUrl, parseXml, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { FieldWithIndexedFields } from '../../FieldWithIndexedFields';\r\nimport { FieldsGroup } from '../../FieldWithIndexedFields/FieldsGroup';\r\nimport { Form } from '../../Form';\r\nimport { actions } from '../../constants/actions';\r\nimport { eventTypes } from '../../constants/eventTypes';\r\nimport { FireEventParameters } from '../../types';\r\nimport { GridFooterHandler } from '../Grid/util/GridFooterHandler';\r\nimport {\r\n GridAction,\r\n GridActionResponse,\r\n GridColumn,\r\n GridEvents,\r\n GridProps,\r\n} from './types';\r\nimport { IGrid } from '../Grid/types';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class GridPaginated\r\n extends FieldWithIndexedFields<\r\n GridProps,\r\n TApiaFieldBaseDefinition<GridProps>,\r\n {\r\n definition: Omit<TApiaFieldBaseDefinition<GridProps>, 'properties'>;\r\n header: GridColumn[];\r\n isLoading: boolean;\r\n selectedIndices: number[];\r\n showAdditionalColumn: boolean;\r\n }\r\n >\r\n implements IGrid\r\n{\r\n private _controller: Controller2 | null = null;\r\n public get controller() {\r\n if (!this._controller) {\r\n throw new Error('Controller2 has not been set');\r\n }\r\n return this._controller;\r\n }\r\n public setController(c: Controller2) {\r\n this._controller = c;\r\n this.footerHandler = new GridFooterHandler(this);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n const fieldsArray = arrayOrArray(field);\r\n const statesArray = fieldsArray.map((current) =>\r\n arrayOrArray(current.fieldValue || current.row),\r\n );\r\n\r\n super(\r\n {\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(properties.pagedGridSize, Infinity),\r\n rowsCount: arrayOrArray(arrayOrArray(field)[0].fieldValue).length,\r\n shownColumns: new Map(),\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n },\r\n fieldsArray.map(({ properties, fieldValue, ...current }) => {\r\n return current;\r\n }),\r\n\r\n statesArray,\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150',\r\n }));\r\n this.calculateMustShowAdditionalColumn();\r\n this.footerHandler = new GridFooterHandler(this);\r\n this.state.isLoading = false;\r\n }\r\n private footerHandler: GridFooterHandler;\r\n #hasSetHeadersSizes = false;\r\n private initHeadersSizes() {\r\n if (this.#hasSetHeadersSizes) {\r\n return;\r\n }\r\n\r\n const firstRow = this.getRow(0);\r\n if (firstRow) {\r\n this.#hasSetHeadersSizes = true;\r\n this.state.header = arrayOrArray(firstRow).map((field, columnIndex) => ({\r\n ...this.state.header[columnIndex],\r\n width: field.properties?.colWidth ?? '150',\r\n }));\r\n }\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.initHeadersSizes();\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const willShowEditionButton = !!this.properties.gridForm;\r\n\r\n let willShowDeleteButton =\r\n !this.properties.hideDelButton &&\r\n !this.properties.hideGridButtons &&\r\n !this.properties.hideIncludeButton;\r\n\r\n if (!willShowDeleteButton) {\r\n const showDeleteButtonsValues =\r\n this.properties.shownDeleteButtons.values();\r\n\r\n for (const value of showDeleteButtonsValues) {\r\n if (value) {\r\n willShowDeleteButton = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.state.showAdditionalColumn =\r\n willShowEditionButton || willShowDeleteButton;\r\n }\r\n protected async parseAddRowXml(str: string): Promise<boolean> {\r\n const xml = parseXml(str) as TApiaGridDefinition;\r\n\r\n if (xml.field) {\r\n await this.addGroup(\r\n new FieldsGroup(\r\n arrayOrArray(xml.field).map((c) => {\r\n if (c.fieldType === 'select' || c.fieldType === 'radio') {\r\n return { ...c, ...c.row };\r\n }\r\n\r\n return c;\r\n }),\r\n ),\r\n );\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n protected async rebuildGrid(\r\n xmlString: string,\r\n rowsCount: number,\r\n ): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n const pages = noNaN(xml.pages, 1);\r\n const currentPage = noNaN(xml.curPage, 1);\r\n\r\n this.properties = {\r\n ...this.properties,\r\n currentPage,\r\n rowsCount,\r\n pages,\r\n };\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray = fieldsArray.map((field) =>\r\n arrayOrArray(field.fieldValue || field.row),\r\n );\r\n\r\n if (statesArray[0].length > this.fieldsGroups.length) {\r\n for (let i = this.fieldsGroups.length; i < statesArray[0].length; i++) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i + this.getStartIndex(),\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i].properties,\r\n value: statesArray[columnIndex][i].value,\r\n },\r\n };\r\n });\r\n const fieldsGroup = new FieldsGroup(parsedFieldGroups);\r\n\r\n await this.addGroup(fieldsGroup);\r\n }\r\n } else if (statesArray[0].length < this.fieldsGroups.length) {\r\n this.fieldsGroups.splice(statesArray[0].length);\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n this.fieldsStates = statesArray;\r\n this.fieldsStates.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const fieldGroup = this.getFieldsGroupByIndex(\r\n this.getStartIndex() + rowIndex,\r\n );\r\n const field = fieldGroup.getFieldById(id);\r\n\r\n if (field) {\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = rowIndex + this.getStartIndex();\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n behave: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n await makeApiaUrl({\r\n action: 'processGridFieldAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n behave,\r\n );\r\n }\r\n\r\n get minIndex() {\r\n return (this.properties.currentPage - 1) * this.properties.pageSize;\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n async addRow(): Promise<boolean> {\r\n const eventsResult = await this.fireEvent('gridAdd', {\r\n cantRowsToAdd: 1,\r\n gridAction: 'add',\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridAdd')) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'last',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else if (res?.data?.gridXml.text) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n clearGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'clearGrid',\r\n clearReadonly: true,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n clearPage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented clearPage';\r\n };\r\n deleteGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n deletePage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented deletePage';\r\n };\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n async deleteRow(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n )\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.minIndex);\r\n\r\n const eventsResult = await this.fireEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: selectedIndices,\r\n });\r\n\r\n if (eventsResult) {\r\n let targetPage = this.properties.currentPage;\r\n const lastRowIndex =\r\n this.properties.currentPage * (this.properties.pageSize - 1);\r\n\r\n if (\r\n selectedIndices.includes(lastRowIndex) &&\r\n this.properties.currentPage !== 1\r\n ) {\r\n targetPage = this.properties.currentPage - 1;\r\n }\r\n return this.gotoPage(targetPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n private getServerEventOfType(eventName: GridEvents) {\r\n return this.definition.serverEvents?.find((c) => c.evtName === eventName);\r\n }\r\n public getGridFooterHandler() {\r\n if (!this.footerHandler)\r\n throw new Error(\"Grid footer handler hasn't been set\");\r\n\r\n return this.footerHandler;\r\n }\r\n protected async fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n let event = this.getServerEventOfType(eventName);\r\n\r\n if (event) {\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else if (res?.data?.gridXml.text) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, params);\r\n }\r\n gotoPage: GridAction<[page: number]> = async (\r\n page: number,\r\n ): Promise<boolean> => {\r\n this.state.isLoading = true;\r\n const response = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (response?.data?.success) {\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: page,\r\n };\r\n await this.rebuildGrid(\r\n response.data.gridXml.text,\r\n noNaN(response.data.rowCount, 0),\r\n );\r\n\r\n this.state.isLoading = false;\r\n return true;\r\n }\r\n this.state.isLoading = false;\r\n return false;\r\n };\r\n getCurrentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n getHeader() {\r\n return this.state.header;\r\n }\r\n getMustShowAdditionalColumn() {\r\n return this.state.showAdditionalColumn;\r\n }\r\n getPageCount() {\r\n return this.properties.pages;\r\n }\r\n getSelectedIndices() {\r\n return this.state.selectedIndices;\r\n }\r\n getSelectedItems() {\r\n return this.getSelectedIndices().map((current) => this.getRow(current)!);\r\n }\r\n isPaged() {\r\n return this.properties.paged;\r\n }\r\n /**\r\n * @alias deleteRow\r\n */\r\n remove(index?: number | number[]): Promise<boolean> {\r\n return this.deleteRow(index);\r\n }\r\n\r\n sortColumn: GridAction<[index: number]> = async (index) => {\r\n const calculatedIndex =\r\n (this.properties.currentPage -\r\n (this.state.showAdditionalColumn ? 1 : 0)) *\r\n this.properties.pageSize;\r\n\r\n const group = this.fieldsGroups.at(calculatedIndex);\r\n\r\n if (!group) {\r\n console.error('No group found at calculated index.');\r\n return false;\r\n }\r\n\r\n const fields = group.getAllFields();\r\n\r\n if (!fields || fields.length < index) {\r\n console.error('No field found at index:', index - 1);\r\n return false;\r\n }\r\n const field = fields.at(index - 1);\r\n const firingField = field?.definition.id;\r\n\r\n if (firingField) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField,\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n async sortDown(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n const { currentPage, pageSize, pages } = this.properties;\r\n\r\n const lastRowIndex = currentPage * pageSize - 1;\r\n\r\n if (selectedIndices.includes(lastRowIndex) && currentPage < pages) {\r\n const targetPage = currentPage + 1;\r\n console.log(`Navigating to Page: ${targetPage}`);\r\n return this.gotoPage(targetPage);\r\n }\r\n\r\n console.log(`Staying on Page: ${currentPage}`);\r\n return this.gotoPage(currentPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n\r\n async sortUp(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n const { currentPage, pageSize } = this.properties;\r\n\r\n const firstRowIndexOfCurrentPage = (currentPage - 1) * pageSize;\r\n if (\r\n selectedIndices.includes(firstRowIndexOfCurrentPage) &&\r\n currentPage > 1\r\n ) {\r\n return this.gotoPage(currentPage - 1);\r\n }\r\n\r\n return this.gotoPage(currentPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n const currentValue = this.properties.shownColumns.get(fieldName);\r\n this.properties.shownColumns.set(fieldName, isShown ?? !currentValue);\r\n }\r\n\r\n toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n}\r\n","import { TApiaHiddenProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Hidden extends FieldWithAttribute<TApiaHiddenProperties> {}\r\n","import { TApiaImageProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Image extends Field<TApiaImageProperties> {}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaInputDefinition } from '../../../../InitialData/types/fields/TApiaInputDefinition';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { SetValueOptions } from '../../types';\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\nexport class Input<ValueType = any> extends TranslatableField<\r\n TApiaInputProperties,\r\n ValueType,\r\n TApiaInputDefinition\r\n> {\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public async setValue(\r\n newValue: ValueType,\r\n options?: SetValueOptions,\r\n ): Promise<boolean> {\r\n if (!this.definition.regExp || this.validateRegex(newValue)) {\r\n if (newValue !== '') this.state.validation.errorMessage = null;\r\n return super.setValue(newValue, options);\r\n }\r\n return false;\r\n }\r\n\r\n private validateRegex(value: ValueType): boolean {\r\n const regex = new RegExp(this.definition.regExp ?? '');\r\n\r\n if (!regex.test(String(value)) && value !== '') {\r\n this.state.validation.errorMessage = labels.errorRegexNotValidated();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n return super.validate();\r\n }\r\n}\r\n","import { TApiaLabelProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Label extends Field<TApiaLabelProperties> {}\r\n","import { TApiaLinkProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Link extends Field<TApiaLinkProperties> {}\r\n","import { makeApiaUrl, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaModalInputDefinition } from '../../../../InitialData/types/fields/TApiaModalInputDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\ntype ModalInputValue = { showValue: string; storeValue?: string };\r\n\r\nexport class ModalInput extends FieldWithAttribute<\r\n TApiaInputProperties,\r\n ModalInputValue\r\n> {\r\n constructor({ value, ...definition }: TApiaModalInputDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n },\r\n value: { showValue: definition.qry_show_value, storeValue: value },\r\n });\r\n }\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public setValue(\r\n newValue: Required<ModalInputValue>,\r\n options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n const actualValue: ModalInputValue = {\r\n showValue: newValue.showValue,\r\n storeValue: this.properties.storeMdlQryResult\r\n ? newValue.storeValue\r\n : undefined,\r\n };\r\n\r\n return super.setValue(actualValue, options);\r\n }\r\n\r\n public async setValueFromModalSelection(rowId: string) {\r\n const result = await post<{ row: { cell: { text: string }[] } }>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.query.ModalAction.run',\r\n action: 'getValues',\r\n }),\r\n { postData: { id: rowId }, postDataTreatment: 'stringify' },\r\n );\r\n\r\n if (result?.data?.row?.cell) {\r\n this.setValue({\r\n storeValue: result.data.row.cell[0].text,\r\n showValue: result.data.row.cell[1].text,\r\n });\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n if (this.properties.required && !this.getValue().storeValue) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n }\r\n\r\n return super.validate();\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ModalInputValue,\r\n ): IApiaApiPostConfig<any> {\r\n const storeIdValue = this.properties.storeMdlQryResult;\r\n\r\n return {\r\n ...super.getSynchronizePostConfiguration(value),\r\n postData: {\r\n value: storeIdValue\r\n ? [this.getValue().storeValue!, this.getValue().showValue]\r\n : this.getValue().showValue,\r\n },\r\n };\r\n }\r\n}\r\n","import { arrayOrArray } from '../../../../../util';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaMultipleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaMultipleDefinition } from '../../../../InitialData/types/fields/TApiaMultipleDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Multiple extends FieldWithAttribute<\r\n TApiaMultipleProperties,\r\n Record<number, string>\r\n> {\r\n constructor({\r\n possibleValue,\r\n value,\r\n ...definition\r\n }: TApiaMultipleDefinition) {\r\n super({\r\n ...{\r\n ...definition,\r\n value: arrayOrArray(possibleValue).find((c) => c.selected)?.value,\r\n },\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n console.warn('Validation incomplete');\r\n const isValid = !!this.getValue()[0] || !this.properties.required;\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n}\r\n","import { TApiaPasswordProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Password extends FieldWithAttribute<\r\n TApiaPasswordProperties,\r\n string\r\n> {}\r\n","import { TApiaRadioProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaRadioButtonDefinition } from '../../../../InitialData/types/fields/TApiaRadioButtonDefinition';\r\nimport { Form } from '../../Form';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype RadioEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Radio extends FieldWithAttribute<\r\n TApiaRadioProperties,\r\n number | string,\r\n TApiaRadioButtonDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaRadioButtonDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n await this.fireEvent('onPopulate');\r\n }\r\n\r\n fireEvent(eventName: RadioEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { arrayOrArray } from '../../../../../util';\r\nimport { TApiaSelectProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaSelectDefinition } from '../../../../InitialData/types/fields/TApiaSelectDefinition';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Select extends FieldWithAttribute<\r\n TApiaSelectProperties,\r\n string,\r\n TApiaSelectDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaSelectDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n protected getInitialValue({\r\n properties: { possibleValue },\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaSelectProperties>): string {\r\n return value || arrayOrArray(possibleValue)[0]?.value;\r\n }\r\n}\r\n","import { TApiaTextareaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class Textarea extends TranslatableField<\r\n TApiaTextareaProperties,\r\n string\r\n> {}\r\n","import { TApiaTitleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Title extends Field<TApiaTitleProperties> {}\r\n","import { reaction } from 'mobx';\r\nimport { arrayOrArray, EventEmitter } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaTreeProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport {\r\n TApiaTreeDefinition,\r\n TApiaTreePossibleValue,\r\n} from '../../../../InitialData/types/fields/TApiaTreeDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport type TTreeValue = string | number;\r\ntype TreeEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Tree extends FieldWithAttribute<\r\n TApiaTreeProperties,\r\n TTreeValue | TTreeValue[],\r\n TApiaTreeDefinition\r\n> {\r\n private treeNodes = new EventEmitter<{\r\n nodesList: TApiaTreePossibleValue[];\r\n }>();\r\n\r\n constructor({ possibleValue, ...props }: TApiaTreeDefinition) {\r\n super(props);\r\n\r\n this.properties.possibleValue = arrayOrArray(possibleValue);\r\n\r\n reaction(\r\n () => {\r\n this.properties.possibleValue;\r\n },\r\n () => {\r\n this.treeNodes.emit('nodesList', this.properties.possibleValue);\r\n },\r\n );\r\n }\r\n\r\n getPossibleValues() {\r\n return this.properties.possibleValue;\r\n }\r\n\r\n onPossibleValuesChange = this.treeNodes.on.bind(this.treeNodes, 'nodesList');\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: TTreeValue | TTreeValue[],\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n return {\r\n ...conf,\r\n postData: {\r\n ...conf.postData,\r\n clearValues: true,\r\n },\r\n };\r\n }\r\n fireEvent(eventName: TreeEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Field } from './Field';\r\nimport { TranslatableField } from './TranslatableField';\r\nimport { Button } from './fields/Button';\r\nimport { Captcha } from './fields/Captcha';\r\nimport { Checkbox } from './fields/Checkbox';\r\nimport { Editor } from './fields/Editor';\r\nimport { File } from './fields/File';\r\nimport { Grid } from './fields/Grid';\r\nimport { GridProps } from './fields/Grid/types';\r\nimport { GridPaginated } from './fields/GridPaginated';\r\nimport { Hidden } from './fields/Hidden';\r\nimport { Image } from './fields/Image';\r\nimport { Input } from './fields/Input';\r\nimport { Label } from './fields/Label';\r\nimport { Link } from './fields/Link';\r\nimport { ModalInput } from './fields/ModalInput';\r\nimport { Multiple } from './fields/Multiple';\r\nimport { Password } from './fields/Password';\r\nimport { Radio } from './fields/Radio';\r\nimport { Select } from './fields/Select';\r\nimport { Textarea } from './fields/Textarea';\r\nimport { Title } from './fields/Title';\r\nimport { Tree } from './fields/Tree';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\n\r\nexport type FieldConstructor = new (\r\n definition: any,\r\n) =>\r\n | Field<any, any, any>\r\n | FieldWithAttribute<any, any, any>\r\n | TranslatableField<any, any, any>;\r\n\r\nexport type FieldsMapping = Record<\r\n string,\r\n (definition: any) => FieldConstructor\r\n>;\r\n\r\nexport const defaultFieldsMap: FieldsMapping = Object.freeze({\r\n area: () => Textarea,\r\n button: () => Button,\r\n captcha: () => Captcha,\r\n check: () => Checkbox,\r\n editor: () => Editor,\r\n file: () => File,\r\n grid: (def) => {\r\n const definition = def as TApiaFieldBaseDefinition<GridProps>;\r\n\r\n if (definition?.properties?.paged) {\r\n return GridPaginated;\r\n }\r\n\r\n return Grid;\r\n },\r\n hidden: () => Hidden,\r\n href: () => Link,\r\n image: () => Image,\r\n input: (def) => {\r\n const definition = def as TApiaFieldWithAttributeBaseProps<any>;\r\n\r\n if (definition.qryId) {\r\n return ModalInput;\r\n }\r\n\r\n return Input;\r\n },\r\n label: () => Label,\r\n multiple: () => Multiple,\r\n password: () => Password,\r\n radio: () => Radio,\r\n select: () => Select,\r\n title: () => Title,\r\n tree: () => Tree,\r\n});\r\n","import { action, computed, makeObservable, observable } from 'mobx';\r\nimport { TProcess } from './types';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\n\r\nexport class Process {\r\n state: TProcess | null = null;\r\n\r\n uploader = new UploaderApi(\r\n 'ProcessUploader',\r\n 'P',\r\n window.processDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n name: computed,\r\n });\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n async init() {\r\n const res = await post<{ processData: { text: string } }>(\r\n makeApiaUrl({\r\n action: 'getProcessData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.processData.text) {\r\n throw new Error('Cannot retrieve the process data');\r\n }\r\n\r\n const parsedData: TProcess = JSON.parse(res?.data?.processData.text);\r\n const calValue = arrayOrArray(parsedData.calendar?.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n const priorityValue =\r\n arrayOrArray(parsedData.priority.options).find((c) => c.selected)\r\n ?.value ?? arrayOrArray(parsedData?.priority?.options)[0]?.value;\r\n\r\n this.state = parsedData;\r\n if (calValue) this.state.calendar.value = calValue;\r\n if (priorityValue) this.state.priority.value = priorityValue;\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n cmbProPri: this.state?.priority?.value,\r\n selCal: this.state?.calendar?.value,\r\n };\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n if (this.state?.priority) this.state.priority.value = newPriority;\r\n }\r\n}\r\n","export class Task {\r\n #name: string;\r\n constructor(task: any) {\r\n this.#name = task.name;\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n get name() {\r\n return this.#name;\r\n }\r\n}\r\n","import { computed, makeObservable, observable } from 'mobx';\r\nimport { TEntity } from './type';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\n\r\nexport class Entity {\r\n state: TEntity | null = null;\r\n\r\n uploader = new UploaderApi(\r\n 'EntityUploader',\r\n 'E',\r\n window.entityDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n name: computed,\r\n });\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n async init() {\r\n const res = await post<{ entityData: { text: string } }>(\r\n makeApiaUrl({\r\n action: 'getEntityData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.entityData.text) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n this.uploader.onInit();\r\n\r\n const parsedData: TEntity = JSON.parse(res?.data?.entityData.text);\r\n const statusValue = arrayOrArray(parsedData.status.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n this.state = parsedData;\r\n if (statusValue && this.state.status) this.state.status.value = statusValue;\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n busEntSta: this.state?.status.value,\r\n };\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { TObservation, TObservations } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\nexport class Observations {\r\n state: TObservations = { newObservation: null, observations: [] };\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n });\r\n }\r\n\r\n async init() {\r\n this.state = { newObservation: null, observations: [] };\r\n\r\n const res = await post<{\r\n obData: { text: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'getObservationsData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.obData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n\r\n const parsedData: {\r\n observations: TObservation[];\r\n newCommentData: { comment: string; isChecked: boolean };\r\n } = JSON.parse(res?.data?.obData.text);\r\n\r\n this.state.observations = arrayOrArray(parsedData.observations);\r\n\r\n const newObservation = {\r\n commentValue: parsedData.newCommentData.comment,\r\n chkAddAlert: parsedData.newCommentData.isChecked,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n };\r\n this.state.newObservation = newObservation;\r\n }\r\n getConfirmParams() {\r\n return {\r\n txtComment: this.state.newObservation?.commentValue,\r\n chkAddAlert: this.state.newObservation?.chkAddAlert === true ? 'on' : '',\r\n chkAddAllAlert:\r\n this.state.newObservation?.chkAddAllAlert === true ? 'on' : '',\r\n chkRemAlert: this.state.newObservation?.chkRemAlert === true ? 'on' : '',\r\n };\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n}\r\n","export type ConfirmChecker = (\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep =\r\n | 'CHECK_LOCK'\r\n | 'CONFIRM'\r\n | 'CHECK_SIGN'\r\n | 'CHECK_WIZARD'\r\n | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowPoolSelection extends FlowModal<{\r\n confirmed: boolean;\r\n group: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n group: string;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport type TFetchConfirmPathResponse = {\r\n sysMessages?: {\r\n message?: {\r\n text: string;\r\n };\r\n };\r\n pathSelection?: boolean | null;\r\n groupSelection?: boolean | null;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n};\r\n\r\nexport class ShowPathSelection extends FlowModal<{\r\n confirmed: boolean;\r\n path: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n path: string;\r\n }) => Promise<Status | FlowModal<any>>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { ShowPoolSelection } from './ShowPoolSelection';\r\nimport {\r\n ShowPathSelection,\r\n TFetchConfirmPathResponse,\r\n} from './ShowPathSelection';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution, ExecutionState } from '..';\r\nimport { TCheckWizardResponse } from './types';\r\nimport { parseXMLRequestResponse, TApiaLoadForm } from '@apia/util';\r\nimport axios from 'axios';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmResponse } from '../types';\r\n\r\nfunction buildPoolSelection(status: Status, poolForm: TApiaLoadForm['form']) {\r\n return new ShowPoolSelection(poolForm, async (result) => {\r\n if (result.confirmed) {\r\n const confirmPoolResult = await axios.post<{\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'confirmPool',\r\n isAjax: true,\r\n appletToken: 'null',\r\n }),\r\n result.group,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n confirmPoolResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else {\r\n throw Error('Failed to confirm pool');\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nfunction buildPathSelection(status: Status, form: TApiaLoadForm['form']) {\r\n return new ShowPathSelection(form, async (result) => {\r\n if (result.confirmed) {\r\n const pathSelectionResult = await axios.post<TFetchConfirmPathResponse>(\r\n makeApiaUrl({\r\n action: 'confirmPath',\r\n isAjax: true,\r\n asXML: true,\r\n }),\r\n result.path,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n pathSelectionResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes?.groupSelection) {\r\n return buildPoolSelection(status, parsedRes.load!.form!);\r\n } else if (parsedRes?.actions?.action?.toDo === 'functionTimedCall') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n\r\n const selectedPathInServer = true; // fetch(confirmPath, result.path)\r\n if (selectedPathInServer) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nasync function checkSign(status: Status): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n makeApiaUrl({\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(status: Status): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n }[];\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1].text === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(status: Status): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1]?.text !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...Execution.instance.getEntity().getConfirmParams(),\r\n ...Execution.instance.getProcess().getConfirmParams(),\r\n ...Execution.instance.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmResponse>(\r\n makeApiaUrl({\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: '',\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (confirmResponse?.data?.sysMessages?.message) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n };\r\n }\r\n if (confirmResponse?.data?.onClose === 'confirmOkOnClose') {\r\n Execution.instance.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(\r\n status,\r\n confirmResponse.data.load?.text?.text ?? '',\r\n );\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n const checkConfirmProcess = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'P',\r\n currentTab: 0,\r\n }),\r\n );\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(checkConfirmEntity.data?.form);\r\n }\r\n if (checkConfirmProcess?.data?.form) {\r\n setAjaxFormResponse(checkConfirmProcess.data?.form);\r\n }\r\n if (confirmResponse?.data?.pathSelection) {\r\n return buildPathSelection(status, confirmResponse.data.load!.form!);\r\n }\r\n\r\n if (confirmResponse?.data?.groupSelection === true) {\r\n return buildPoolSelection(status, confirmResponse.data.load!.form!);\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_WIZARD',\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\nasync function checkWizard(status: Status): Promise<Status> {\r\n const checkWizardResponse = await post<TCheckWizardResponse>(\r\n makeApiaUrl({\r\n action: 'checkWizzard',\r\n }),\r\n {\r\n postData: {},\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (!checkWizardResponse?.data?.url && checkWizardResponse?.status === 200) {\r\n Execution.instance.close();\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n } else if (checkWizardResponse?.data?.url) {\r\n window.location.assign(checkWizardResponse.data.url + '&nuevo=true');\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: true,\r\n error: 'Failed to check wizard',\r\n };\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CHECK_WIZARD: checkWizard,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirm(\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n Notifications.instance.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { InitialData } from '../InitialData';\r\nimport { labels } from '../../util/labels/labels';\r\nimport { Form } from './FormsExecution/Form';\r\nimport { TFrmParent } from '../InitialData/types/TApiaForm';\r\nimport { FieldsMapping, defaultFieldsMap } from './FormsExecution/fieldsMap';\r\nimport { Notifications } from '../Notifications';\r\nimport { MessageNotification } from '../Notifications/MessageNotification';\r\nimport { Process } from './Process';\r\nimport { makeAutoObservable } from 'mobx';\r\nimport { Field } from './FormsExecution/Field';\r\nimport { makeApiaUrl, post, get, parseXml, arrayOrArray } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport { postNavigation } from '@apia/util';\r\nimport { Observations } from './Observations';\r\nimport { confirm } from './FlowModals/confirmFlow';\r\nimport { ConfirmStep, FlowModal, Status } from './FlowModals/FlowModal';\r\nimport { Captcha } from './FormsExecution/fields';\r\nimport { getCurrentTabsString } from '../../util/app/getCurrentTabsString';\r\nimport { TFetchTaskActionResponse } from './types';\r\nimport { ScreenLocker } from '@apia/components';\r\ninterface TExec_errors {\r\n onClose: string;\r\n sysMessages: {\r\n message: {\r\n text: string;\r\n }[];\r\n };\r\n}\r\n\r\nexport enum ExecutionState {\r\n RUNNING,\r\n LOADING,\r\n FINISHED,\r\n RENDERING,\r\n}\r\nexport type TExecutionConfig = {\r\n canConfirm: boolean;\r\n canGoBack: boolean;\r\n canGoForward: boolean;\r\n canSave: boolean;\r\n canFree: boolean;\r\n canDelegate: boolean;\r\n canClose: boolean;\r\n canShare: boolean;\r\n};\r\n\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/&apos;/g, \"'\")\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&lt;/g, '<')\r\n .replace(/&amp;/g, '&');\r\n }\r\n return '';\r\n};\r\n\r\nexport class Execution {\r\n static #instance: Execution | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new Execution();\r\n\r\n return this.#instance!;\r\n }\r\n public fieldsMapping: FieldsMapping;\r\n private entity = new Entity();\r\n private process = new Process();\r\n private observations = new Observations();\r\n public executionConfig: TExecutionConfig | null = null;\r\n private _steps: {\r\n title: string;\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[] = [];\r\n private _currentStep: number = 1;\r\n private _stepCount: number = 1;\r\n private constructor(fieldsMapping?: FieldsMapping) {\r\n this.fieldsMapping = { ...defaultFieldsMap, ...fieldsMapping };\r\n\r\n makeAutoObservable(this, { fieldsMapping: false });\r\n }\r\n\r\n protected formsById = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n protected forms = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n\r\n state: {\r\n formsReady: ReturnType<Execution['getAllForms']>;\r\n executionState: ExecutionState;\r\n locked: boolean;\r\n } = {\r\n formsReady: [],\r\n executionState: ExecutionState.LOADING,\r\n locked: true,\r\n };\r\n\r\n locker = new ScreenLocker();\r\n\r\n getAllForms() {\r\n return [...this.forms.E.values(), ...this.forms.P.values()];\r\n }\r\n getFormsByType(type: TFrmParent) {\r\n return [...this.forms[type].values()];\r\n }\r\n getFormByName(formName: string, frmParent?: TFrmParent) {\r\n if (frmParent) {\r\n return this.forms[frmParent].get(formName);\r\n } else {\r\n this.forms.E.get(formName) || this.forms.P.get(formName);\r\n }\r\n }\r\n getFormById(formId: string | number, frmParent?: TFrmParent) {\r\n if (frmParent) return this.formsById[frmParent].get(String(formId));\r\n return (\r\n this.formsById.E.get(String(formId)) ||\r\n this.formsById.P.get(String(formId))\r\n );\r\n }\r\n get currentStep() {\r\n return this._currentStep;\r\n }\r\n get steps() {\r\n return this._steps;\r\n }\r\n public getEntity() {\r\n return this.entity;\r\n }\r\n public getProcess() {\r\n return this.process;\r\n }\r\n public getObservations() {\r\n return this.observations;\r\n }\r\n public getCurrentTask() {\r\n return new Task({ task: { name: 'TODO' } });\r\n }\r\n\r\n private mustRenderForms: string[] = [];\r\n\r\n public async run(executionConfig: TExecutionConfig) {\r\n this.entity.init();\r\n this.process.init();\r\n this.observations.init();\r\n this._stepCount = Number(window.STEP_QTY);\r\n this._currentStep = Number(window.CURRENT_STEP);\r\n this.executionConfig = executionConfig;\r\n\r\n const errXML = unescapeMarkup(window.EXEC_ERRORS);\r\n\r\n if (errXML) {\r\n const obj: TExec_errors = parseXml(errXML);\r\n arrayOrArray(obj.sysMessages?.message).forEach((c) =>\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'warning',\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n for (let i = 1; i < Number(window.STEP_QTY) + 1; i++) {\r\n if (i < this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'completed',\r\n });\r\n }\r\n if (i > this._currentStep && i <= this._stepCount) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'pending',\r\n });\r\n }\r\n if (i === this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'current',\r\n });\r\n }\r\n }\r\n const res = await InitialData.instance.getFormsDefinition();\r\n\r\n try {\r\n for await (const formDefinition of res) {\r\n this.mustRenderForms.push(\r\n formDefinition.frmParent + '_' + formDefinition.formName,\r\n );\r\n }\r\n for await (const formDefinition of res) {\r\n const newForm = new Form(formDefinition);\r\n await newForm.init();\r\n\r\n if (formDefinition.frmParent === 'E') {\r\n this.forms.E.set(formDefinition.formName, newForm);\r\n this.formsById.E.set(String(formDefinition.id), newForm);\r\n } else {\r\n this.forms.P.set(formDefinition.formName, newForm);\r\n this.formsById.P.set(String(formDefinition.id), newForm);\r\n }\r\n }\r\n\r\n for await (const formDefinition of res) {\r\n this.formsById[formDefinition.frmParent]\r\n .get(String(formDefinition.id))\r\n ?.runEvent('onLoad');\r\n }\r\n\r\n this.state.formsReady = this.getAllForms();\r\n this.state.executionState = ExecutionState.RENDERING;\r\n this.state.locked = false;\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorLoadForms(),\r\n }),\r\n );\r\n }\r\n }\r\n\r\n public markFormAsRendered(frmParent: string, frmName: string) {\r\n this.mustRenderForms = this.mustRenderForms.filter(\r\n (c) => c !== frmParent + '_' + frmName,\r\n );\r\n if (this.mustRenderForms.length === 0) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n }\r\n\r\n public async back() {\r\n const canGoBack = this.executionConfig?.canGoBack;\r\n if (canGoBack) {\r\n try {\r\n const nextUrl = makeApiaUrl({\r\n action: 'gotoPrevStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(),\r\n fromPanel: null,\r\n nuevo: true,\r\n });\r\n\r\n const serverParams = {\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async close() {\r\n const tabId = ((window.top ?? window).tabsController as any)?.handler\r\n .activeTab.id;\r\n const force = true;\r\n ((window.top ?? window).tabsController as any)?.handler.closeTab(\r\n tabId,\r\n force,\r\n );\r\n }\r\n\r\n public async desktop() {}\r\n\r\n public async confirm(\r\n status?: Status,\r\n step?: ConfirmStep,\r\n ): Promise<boolean | FlowModal<any> | Field> {\r\n const isValid = await this.validate();\r\n const canConfirm = this.executionConfig?.canConfirm && isValid === true;\r\n\r\n if (canConfirm) {\r\n try {\r\n const result = await confirm(\r\n status || {\r\n step: step ?? 'CHECK_LOCK',\r\n },\r\n );\r\n\r\n if (result instanceof FlowModal) {\r\n return result;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n } else {\r\n return isValid;\r\n }\r\n }\r\n\r\n public async free() {\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const data = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'release',\r\n nuevo: true,\r\n currentTab: getCurrentTabsString(),\r\n }),\r\n {\r\n postData: serverParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n return data;\r\n }\r\n\r\n public async print() {\r\n window.print();\r\n }\r\n\r\n public getStepTitle(step: number) {\r\n if (this._steps) return this._steps[step];\r\n }\r\n\r\n public async next() {\r\n const isValid = await this.validate();\r\n if (isValid !== true) return isValid;\r\n const canGoNext = this.executionConfig?.canGoForward && isValid === true;\r\n\r\n if (canGoNext) {\r\n try {\r\n const checkLocksRes = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksRes?.data?.actions?.action?.param[1]?.text !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n throw new Error('Failed to check WebDAV document locks.');\r\n }\r\n\r\n // Check signable forms\r\n const checkSignableFormsRes = await post<{ hasForms: boolean }>(\r\n makeApiaUrl({\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (checkSignableFormsRes?.status !== 200) {\r\n throw new Error('No signable forms available.');\r\n }\r\n\r\n const nextUrl = makeApiaUrl({\r\n action: 'gotoNextStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(),\r\n fromPanel: null,\r\n nuevo: true,\r\n });\r\n\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n return true;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async save() {\r\n const data = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n nuevo: true,\r\n }),\r\n );\r\n\r\n const saveResponse = data as any;\r\n const showSaveConfirmMessage = saveResponse?.onClose as string;\r\n if (\r\n showSaveConfirmMessage === 'confirmOkOnCloseSplash' ||\r\n showSaveConfirmMessage === 'confirmOkOnClose'\r\n ) {\r\n return data;\r\n } else if (\r\n saveResponse?.onClose === 'confirmOkOnSaveSplash' ||\r\n saveResponse?.actions?.action.param[1] === 'confirmOkOnSaveSplash'\r\n ) {\r\n return data;\r\n }\r\n }\r\n\r\n public async viewDocs() {\r\n const url = `${\r\n window.CONTEXT\r\n }/react/generic/docExecutionModal.jsp?isProcessMonitor=${\r\n window.IN_MONITOR_PROCESS ?? 'false'\r\n }&isTaskMonitor=${window.IN_MONITOR_TASK ?? 'false'}&isTask=true${\r\n window.TAB_ID_REQUEST\r\n }&react=true`;\r\n\r\n const result = await get(url);\r\n\r\n if (result && result.data !== null) {\r\n const { data } = result;\r\n return data;\r\n }\r\n }\r\n\r\n public setStepTitle(stepNumber: number, stepTitle: string) {\r\n if (this._steps && this._steps[stepNumber - 1])\r\n this._steps[stepNumber - 1].title = stepTitle;\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const [, c] of this.forms.E) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n for await (const [, c] of this.forms.P) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n\r\n return firstInvalid ?? true;\r\n }\r\n}\r\n","import {\r\n ApiaUtil,\r\n TDispatchedNotification,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { ActionsController } from './ActionController';\r\nimport { IApiaField, IApiaForm, IApiaFunctions, TActionButtons } from './types';\r\nimport { notify } from '@apia/notifications';\r\nimport ApiaForm from './ApiaForm';\r\nimport { TFrmParent } from '../main/InitialData/types/TApiaForm';\r\nimport { Execution } from '../main/Execution';\r\n\r\ndeclare global {\r\n interface Window {\r\n lastModalReturn: string[];\r\n }\r\n}\r\n\r\nconst OptionButton = {\r\n BTN_VIEW_DOCS: 100,\r\n BTN_PRINT: 101,\r\n};\r\n\r\nexport class ApiaFunctions implements IApiaFunctions {\r\n public static instance = new ApiaFunctions();\r\n\r\n private constructor() {}\r\n\r\n getFormByType(frmName: string, frmType: TFrmParent): IApiaForm | null {\r\n const form = Execution.instance.getFormByName(frmName, frmType);\r\n if (form) return new ApiaForm(form);\r\n return null;\r\n }\r\n\r\n actionButton(id: string | number) {\r\n const actualId = this.getButtonAction(id);\r\n return ActionsController.instance.getButton(actualId);\r\n }\r\n\r\n admEntity(\r\n entName: string,\r\n entNum?: number,\r\n parameters?: string,\r\n width?: number,\r\n height?: number,\r\n ) {\r\n entName;\r\n entNum;\r\n parameters;\r\n width;\r\n height;\r\n ApiaUtil.instance.modals.open({ children: 'TODO' });\r\n //TODO\r\n }\r\n\r\n clearMessages() {\r\n ApiaUtil.instance.notifications.closeAll();\r\n }\r\n\r\n clickActionButton(button: number) {\r\n const id = Number(button);\r\n let action;\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n action = 'confirm';\r\n break;\r\n case ActionsController.NEXT:\r\n action = 'next';\r\n break;\r\n case ActionsController.PREVIOUS:\r\n action = 'previous';\r\n break;\r\n case ActionsController.SAVE:\r\n action = 'save';\r\n break;\r\n case ActionsController.RELEASE:\r\n action = 'release';\r\n break;\r\n case ActionsController.DELEGATE:\r\n action = 'delegate';\r\n break;\r\n case ActionsController.SHARE:\r\n action = 'socialShare';\r\n break;\r\n case OptionButton.BTN_VIEW_DOCS:\r\n action = 'viewDocs';\r\n break;\r\n case OptionButton.BTN_PRINT:\r\n action = 'print';\r\n break;\r\n case ActionsController.CLOSE:\r\n action = 'close';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n (\r\n document.querySelector(`[action=\"${action}\"]`) as HTMLButtonElement\r\n )?.click();\r\n }\r\n\r\n closeCurrentTab(): void {\r\n ApiaUtil.instance.tabs.currentTab.close();\r\n }\r\n\r\n disableActionButton(id: string | number): void {\r\n const actualId = this.getButtonAction(id);\r\n this.actionButton(actualId)?.disable();\r\n }\r\n\r\n disableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.disableActionButton(actualId);\r\n }\r\n\r\n enableActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.enable();\r\n }\r\n\r\n enableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.enableActionButton(actualId);\r\n }\r\n\r\n getAllForms(): IApiaForm[] {\r\n return Execution.instance.getAllForms().map((c) => new ApiaForm(c));\r\n }\r\n getAllFormsByType(type: 'P' | 'E'): IApiaForm[] {\r\n return Execution.instance.getAllForms().reduce<ApiaForm[]>((acc, c) => {\r\n if (c.definition.frmParent === type) {\r\n acc.push(new ApiaForm(c));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getAttField(\r\n attType: 'P' | 'E',\r\n attId: string,\r\n ): IApiaField | IApiaField[] | undefined {\r\n const fields: IApiaField[] = [];\r\n this.getAllFormsByType(attType).forEach((c) =>\r\n fields.push(c.getField(attId) as IApiaField),\r\n );\r\n return fields;\r\n }\r\n\r\n getButtonAction(id: number | string) {\r\n let btnId: TActionButtons;\r\n\r\n switch (id) {\r\n case ActionsController.CLOSE || 'CLOSE':\r\n btnId = 'CLOSE';\r\n break;\r\n case ActionsController.CONFIRM || 'CONFIRM':\r\n btnId = 'CONFIRM';\r\n break;\r\n case ActionsController.DELEGATE || 'DELEGATE':\r\n btnId = 'DELEGATE';\r\n break;\r\n case ActionsController.NEXT || 'NEXT':\r\n btnId = 'NEXT';\r\n break;\r\n case ActionsController.PREVIOUS || 'PREVIOUS':\r\n btnId = 'PREVIOUS';\r\n break;\r\n case ActionsController.PRINT || 'PRINT':\r\n btnId = 'PRINT';\r\n break;\r\n case ActionsController.RELEASE || 'RELEASE':\r\n btnId = 'RELEASE';\r\n break;\r\n case ActionsController.SAVE || 'SAVE':\r\n btnId = 'SAVE';\r\n break;\r\n case ActionsController.SIGN || 'SIGN':\r\n btnId = 'SIGN';\r\n break;\r\n case ActionsController.SHARE || 'SHARE':\r\n btnId = 'SHARE';\r\n break;\r\n case ActionsController.VIEW_DOCS || 'VIEW_DOCS':\r\n btnId = 'VIEW_DOCS';\r\n break;\r\n default:\r\n throw new Error(`There is no button with id ${id}`);\r\n }\r\n return btnId;\r\n }\r\n\r\n getCurrentLanguageCode(): string | null {\r\n return window.LANG_CODE;\r\n }\r\n\r\n getCurrentProcessName(): string | null {\r\n return Execution.instance.getProcess().name ?? null;\r\n }\r\n\r\n getCurrentStep(): number | null {\r\n return Execution.instance.currentStep;\r\n }\r\n\r\n getCurrentTaskName(): string | null {\r\n return Execution.instance.getCurrentTask().name;\r\n }\r\n\r\n getEntityForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'E');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getForm(frmName: string, frmType?: string): IApiaForm | null {\r\n if (frmType === 'E') return this.getFormByType(frmName, frmType);\r\n if (frmType === 'P') return this.getFormByType(frmName, frmType);\r\n const eFrm = this.getFormByType(frmName, 'E');\r\n if (eFrm) {\r\n return eFrm;\r\n }\r\n const pForm = this.getFormByType(frmName, 'P');\r\n return pForm;\r\n }\r\n\r\n getLastModalReturn() {\r\n return window.lastModalReturn;\r\n }\r\n\r\n getModalReturn() {\r\n return this.getLastModalReturn();\r\n }\r\n\r\n getModalSelectedRow() {\r\n return window.lastModalReturn.slice(2);\r\n }\r\n\r\n getModalShowValue() {\r\n return window.lastModalReturn[1];\r\n }\r\n\r\n getModalValue() {\r\n return window.lastModalReturn[0];\r\n }\r\n\r\n getProcessForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'P');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getRootPath(): string | null {\r\n try {\r\n return window.APIA_ROOT_CONTEXT;\r\n } catch (e: unknown) {\r\n if (e instanceof Error) {\r\n console.error(`Apia JSApi Error: ${e.message}`);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hideActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.hide();\r\n }\r\n\r\n hideOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.hideActionButton(actualId);\r\n }\r\n\r\n openModal(props: TOpenModal) {\r\n ApiaUtil.instance.modals.open(props);\r\n }\r\n\r\n openTab(title: string, url: string): void {\r\n ApiaUtil.instance.tabs.openTab(title, url);\r\n }\r\n\r\n saveTask() {\r\n //TODO\r\n Execution.instance.save().then((res) => {\r\n if (res) console.warn('Manage...');\r\n });\r\n }\r\n\r\n setLastModalReturn(value: string[]) {\r\n window.lastModalReturn = value;\r\n window.lastModalReturn = value;\r\n }\r\n\r\n setStepTitle(stepNumber: number, stepTitle: string): void {\r\n Execution.instance.setStepTitle(stepNumber, stepTitle);\r\n }\r\n\r\n showActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.show();\r\n }\r\n\r\n showConfirm(\r\n text: string,\r\n title: string,\r\n callbackFn: (win: boolean) => unknown,\r\n ): void {\r\n ApiaUtil.instance.dialogs\r\n .confirm({ children: text, title })\r\n .then((hasConfirmed) => {\r\n try {\r\n callbackFn(hasConfirmed);\r\n } catch (e) {\r\n if (e instanceof Error) {\r\n notify({\r\n message: String(e),\r\n type: 'danger',\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n showMessage(\r\n text: string,\r\n title?: string,\r\n type?: TDispatchedNotification['type'],\r\n ): void {\r\n notify({ message: text, type: type ?? 'warning', title });\r\n }\r\n\r\n showOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.showActionButton(actualId);\r\n }\r\n\r\n // converts a number in an Apia formatted number\r\n toApiaNumber(value: number): number | string {\r\n return ApiaUtil.instance.parsers.apiaNumber(value);\r\n }\r\n\r\n // converts an Apia formatted number into a javascript number\r\n toJSNumber(value: string): number | string {\r\n return ApiaUtil.instance.parsers.jsNumber(value);\r\n }\r\n\r\n viewAdmEntity(entName: string, entNum?: number) {\r\n this.admEntity(entName, entNum);\r\n }\r\n}\r\n","import { computed, makeObservable, observable, toJS } from 'mobx';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { actions } from '../constants/actions';\r\nimport { arrayOrArray, parseXml, post } from '../../../../util';\r\nimport type { Form } from '../Form';\r\nimport { setAjaxFormResponse } from '../events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { ResponseSysMessages } from '../../../../util/api/types';\r\nimport {\r\n ComponentEvent,\r\n TCusCmpStateRequest,\r\n TCustomComponentDefaultResponse,\r\n TCustomComponentDefinition,\r\n} from '../../../InitialData/types/TApiaForm';\r\nimport { DeepReadonly, freezeDeep } from '@apia/util';\r\nimport { TFncParams } from '../Field';\r\nimport { Notifications } from '../../../Notifications';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { ApiaFunctions } from '../../../../programming';\r\n\r\nexport type TCustomComponentState = {\r\n isLoading: boolean;\r\n\r\n attributes: Record<string, any[]>;\r\n properties: Record<string, any>;\r\n additional: any;\r\n};\r\n\r\nexport class CustomComponent {\r\n #hasInited = false;\r\n public form: Form = {} as Form;\r\n private _state: TCustomComponentState = {\r\n isLoading: false,\r\n attributes: {},\r\n properties: {},\r\n additional: {},\r\n };\r\n\r\n constructor(public readonly definition: TCustomComponentDefinition) {\r\n makeObservable<CustomComponent, '_state'>(this, {\r\n _state: observable,\r\n state: computed,\r\n });\r\n this.parseStateObject(definition.state.state);\r\n }\r\n\r\n public get state(): DeepReadonly<TCustomComponentState> {\r\n return freezeDeep(toJS(this._state));\r\n }\r\n\r\n public getAdditional<T>() {\r\n return this.state.additional as DeepReadonly<T>;\r\n }\r\n\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n\r\n private parseStateObject(o: TCusCmpStateRequest) {\r\n if (o.additional) {\r\n this._state.additional = JSON.parse(o.additional.text);\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(c.values).map(\r\n (c) => c.text,\r\n );\r\n });\r\n arrayOrArray(o.property).forEach((c) => {\r\n this._state.properties[c.name] = c.value;\r\n });\r\n }\r\n\r\n public async processResult(res?: TCustomComponentDefaultResponse | null) {\r\n let proceed = true;\r\n const scheduledEvents: string[] = [];\r\n\r\n const newState = res?.state || res?.processResult?.state;\r\n\r\n if (newState) {\r\n for (const directive of arrayOrArray(newState.directive)) {\r\n if (directive.type === 'RELOAD') {\r\n proceed = false;\r\n window.location.assign(\r\n makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'reload',\r\n nuevo: true,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n );\r\n } else if (directive.type === 'FIRE') {\r\n scheduledEvents.push(directive.content);\r\n }\r\n }\r\n }\r\n\r\n if (proceed) {\r\n if (res!.ajaxUpdated) {\r\n const result = parseXml(res!.ajaxUpdated.text);\r\n\r\n setAjaxFormResponse(\r\n result as TFieldAjaxEventResponsePayload & ResponseSysMessages,\r\n );\r\n }\r\n\r\n if (newState) {\r\n this.parseStateObject(newState);\r\n }\r\n\r\n for await (const event of scheduledEvents) {\r\n await this.fireEvent(event);\r\n }\r\n\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n protected getScriptEventParams(fncParams: TFncParams[]): unknown[] {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n ApiaFunctions.instance\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n protected async fireScriptEvents(event: ComponentEvent): Promise<boolean> {\r\n let result = true;\r\n\r\n for await (const script of arrayOrArray(event.script)) {\r\n const def = JSON.parse(script.text) as {\r\n fncName: string;\r\n fncParams: {\r\n type: 'P' | 'E';\r\n attId: number;\r\n }[];\r\n };\r\n\r\n try {\r\n const fn = (window as any)[def.fncName] as (\r\n src: CustomComponent | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n result =\r\n result &&\r\n (await fn(\r\n this,\r\n ...this.getScriptEventParams(arrayOrArray(def.fncParams)),\r\n ));\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(event.name, def.fncName),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async fireEvent(evtName: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const event = arrayOrArray(this.definition.event).find(\r\n (c) => c.name === evtName,\r\n );\r\n if (!event) {\r\n throw new Error('Unknown event ' + evtName);\r\n }\r\n\r\n if (\r\n (!event.script || (await this.fireScriptEvents(event))) &&\r\n event.serverEvents\r\n ) {\r\n await this.processResult(\r\n (await this.postMessage('fireEvent', evtName))?.data,\r\n );\r\n }\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getProperty(prpName: string) {\r\n return this._state.properties[prpName];\r\n }\r\n\r\n private async postMessage(method: string, body: any) {\r\n return post<TCustomComponentDefaultResponse>(\r\n makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData: {\r\n payload: body,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n }\r\n\r\n async setStringValue(attName: string, value: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n attName,\r\n clear: true,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getStringValue(attName: string) {\r\n return this._state.attributes[attName].join();\r\n }\r\n\r\n getValue(attName: string, index: number = 0) {\r\n return this._state.attributes[attName][index];\r\n }\r\n\r\n async setValue(attName: string, value: any, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n index,\r\n attName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setProperty(prpName: string, value: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setProperty',\r\n JSON.stringify({\r\n prpName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async sendMessage(payload: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'message',\r\n typeof payload === 'object' && payload\r\n ? JSON.stringify(payload)\r\n : payload,\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n}\r\n","import { Notification, NotificationDefinition } from './Notification';\r\n\r\nexport class StatusNotification extends Notification<\r\n NotificationDefinition & { blocking: boolean }\r\n> {\r\n constructor(\r\n public readonly props: NotificationDefinition & { blocking: boolean },\r\n ) {\r\n super(props);\r\n }\r\n}\r\n"],"names":["Field","Form","IProperty","_instance","__publicField","__privateGet","__privateSet","__privateAdd","parser","queryString","id","_field","arrayOrArray","TextAreaField","_hasInited","ApiaFunctions","result","noNaN","parseFakeJSON","EventEmitter","getLabel","makeApiaUrl","_hasSetHeadersSizes","properties","ExecutionState","c"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/programming/constants/Field.ts","../src/programming/constants/Form.ts","../src/programming/constants/IProperty.ts","../src/main/Notifications/index.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/util/array/arrayOrArray.ts","../src/main/Execution/FormsExecution/constants/fieldProps.ts","../src/main/Execution/FormsExecution/constants/formProps.ts","../src/main/Execution/FormsExecution/constants/props/booleanProps.ts","../src/util/dataTypes/parseBoolean.ts","../src/util/xml/parseXml.ts","../src/util/api/apiaApi.ts","../src/util/events/EventEmitter.ts","../src/util/events/StatefulEmitter.ts","../src/util/events/BouncingEmitter.ts","../src/util/labels/labels.ts","../src/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.ts","../src/programming/ActionController/ButtonsActions.ts","../src/programming/ActionController/index.ts","../src/programming/ApiaField.ts","../src/programming/fields/ButtonField.ts","../src/programming/fields/EditorField.ts","../src/programming/ApiaFieldWithAttribute.ts","../src/programming/fields/SelectField.ts","../src/programming/fields/InputField.ts","../src/programming/fields/TreeField.ts","../src/programming/fields/CheckField.ts","../src/programming/fields/RadioField.ts","../src/programming/fields/MultipleField.ts","../src/programming/fields/HiddenField.ts","../src/programming/fields/AreaField.ts","../src/programming/fields/ImageField.ts","../src/programming/fields/LinkField.ts","../src/programming/fields/TextField.ts","../src/programming/fields/CustomComponentField.ts","../src/programming/utils/createApiaField.ts","../src/main/Execution/FormsExecution/WithProperties.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/Field.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.ts","../src/programming/fields/GridField.ts","../src/programming/fields/CaptchaField.ts","../src/programming/fields/FileUploaderField.ts","../src/programming/fields/PasswordField.ts","../src/programming/ApiaForm.ts","../src/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/FormsExecution/FieldWithIndexedFields/FieldsGroup.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/FieldWithIndexedFields/index.ts","../src/main/Execution/FormsExecution/Form.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.ts","../src/main/Execution/FormsExecution/fields/Checkbox/index.ts","../src/main/Execution/FormsExecution/TranslatableField/Translation.ts","../src/main/Execution/FormsExecution/TranslatableField/util.ts","../src/main/Execution/FormsExecution/TranslatableField/index.ts","../src/main/Execution/FormsExecution/fields/Editor/index.ts","../src/main/Execution/Uploader/UploaderModalController.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/FormsExecution/fields/File/FileUploaderApi.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/main/Execution/FormsExecution/fields/Grid/util/getTableSelection.ts","../src/main/Execution/FormsExecution/fields/Grid/util/GridFooterHandler.ts","../src/main/Execution/FormsExecution/fields/Grid/index.ts","../src/main/Execution/FormsExecution/fields/GridPaginated/index.ts","../src/main/Execution/FormsExecution/fields/Hidden/index.ts","../src/main/Execution/FormsExecution/fields/Image/index.ts","../src/main/Execution/FormsExecution/fields/Input/index.ts","../src/main/Execution/FormsExecution/fields/Label/index.ts","../src/main/Execution/FormsExecution/fields/Link/index.ts","../src/main/Execution/FormsExecution/fields/ModalInput/index.ts","../src/main/Execution/FormsExecution/fields/Multiple/index.ts","../src/main/Execution/FormsExecution/fields/Password/index.ts","../src/main/Execution/FormsExecution/fields/Radio/index.ts","../src/main/Execution/FormsExecution/fields/Select/index.ts","../src/main/Execution/FormsExecution/fields/Textarea/index.ts","../src/main/Execution/FormsExecution/fields/Title/index.ts","../src/main/Execution/FormsExecution/fields/Tree/index.ts","../src/main/Execution/FormsExecution/fieldsMap.ts","../src/main/Execution/Process/index.ts","../src/main/Execution/Task.ts","../src/main/Execution/Entity/index.ts","../src/main/Execution/Observations/index.ts","../src/main/Execution/FlowModals/FlowModal.ts","../src/main/Execution/FlowModals/ShowPoolSelection.ts","../src/main/Execution/FlowModals/ShowPathSelection.ts","../src/main/Execution/FlowModals/ShowSignSelection.ts","../src/main/Execution/FlowModals/ShowConfirmMessage.ts","../src/main/Execution/FlowModals/ShowSign.ts","../src/main/Execution/FlowModals/confirmFlow.ts","../src/main/Execution/index.ts","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/Notifications/StatusNotification.ts"],"sourcesContent":["const Field = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n\r\n // Mensajes de error\r\n WRONG_ATT_TYPE_ERROR:\r\n 'Component does not support attributes of type <TOK>. Contact system administrator',\r\n\r\n // Keys almacenadas en los campos\r\n STORE_KEY_FIELD: 'field',\r\n STORE_KEY_FORM: 'form',\r\n\r\n PROPERTY_ARIA_DESCRIPTION: 'ariaDescription',\r\n PROPERTY_ARIA_LABEL: 'ariaLabel',\r\n PROPERTY_ALT: 'alt',\r\n PROPERTY_AUTO_COMPLETE: 'autoComplete',\r\n PROPERTY_AUTO_FOCUS: 'autoFocus',\r\n PROPERTY_INPUT_TYPE: 'inputType',\r\n PROPERTY_PLACE_HOLDER: 'placeHolder',\r\n PROPERTY_TITLE: 'title',\r\n} as const;\r\n\r\nexport default Field;\r\n","const Form = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default Form;\r\n","import Field from './Field';\r\nimport Form from './Form';\r\n\r\nexport const IProperty = {\r\n ...Field,\r\n ...Form,\r\n} as const;\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { Notification } from './Notification';\r\nimport { EventEmitter } from '../../util';\r\nimport type { CustomComponent } from '../Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { Field } from '../Execution/FormsExecution/Field';\r\n\r\nexport type FocusTarget = {\r\n element: Field | CustomComponent;\r\n};\r\n\r\nexport class Notifications {\r\n static #instance: Notifications | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new Notifications();\r\n\r\n return this.#instance!;\r\n }\r\n\r\n private emitter = new EventEmitter<{\r\n notification: Notification;\r\n }>();\r\n\r\n private constructor() {\r\n makeObservable<Notifications, 'notifications'>(this, {\r\n notifications: observable,\r\n add: action,\r\n remove: action,\r\n });\r\n }\r\n\r\n protected notifications: Notification[] = [];\r\n\r\n add(notification: Notification) {\r\n this.notifications.push(notification);\r\n this.emitter.emit('notification', notification);\r\n }\r\n\r\n getAll() {\r\n return this.notifications;\r\n }\r\n\r\n getById(id: string | number) {\r\n return this.notifications.find((c) => c.id === id);\r\n }\r\n\r\n remove(notification: string | number | Notification) {\r\n this.notifications = this.notifications.filter((c) => {\r\n if (typeof notification === 'string' || typeof notification === 'number')\r\n return c.id !== notification;\r\n return c !== notification;\r\n });\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n}\r\n","import { makeAutoObservable } from 'mobx';\r\n\r\nexport type NotificationIcon = string;\r\n\r\nexport type NotificationType = 'info' | 'error' | 'success' | 'warning';\r\n\r\nexport type NotificationDefinition = {\r\n icon?: NotificationIcon;\r\n id?: string | number;\r\n isOpen?: boolean;\r\n message: string;\r\n stackTrace?: string;\r\n title?: string;\r\n type?: NotificationType;\r\n};\r\n\r\nexport abstract class Notification<\r\n State extends NotificationDefinition = NotificationDefinition,\r\n> {\r\n protected state: State;\r\n\r\n constructor(public readonly props: State) {\r\n this.state = props;\r\n\r\n makeAutoObservable(this);\r\n }\r\n\r\n get icon() {\r\n return this.state.icon;\r\n }\r\n get id() {\r\n return this.state.id;\r\n }\r\n get isOpen() {\r\n return this.state.isOpen;\r\n }\r\n get message() {\r\n return this.state.message;\r\n }\r\n get stackTrace() {\r\n return this.state.stackTrace;\r\n }\r\n get title() {\r\n return this.state.title;\r\n }\r\n get type() {\r\n return this.state.type;\r\n }\r\n}\r\n","import { Notification } from './Notification';\r\n\r\nexport class MessageNotification extends Notification {\r\n close() {\r\n this.state.isOpen = false;\r\n }\r\n}\r\n","export function arrayOrArray<T>(e: T | T[] | undefined): T[] {\r\n if (Array.isArray(e)) return e as T[];\r\n if (e !== undefined) return [e] as T[];\r\n return [] as T[];\r\n}\r\n","const fieldProps = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n} as const;\r\n\r\nexport default fieldProps;\r\n","const formProps = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default formProps;\r\n","import fieldProps from '../fieldProps';\r\nimport formProps from '../formProps';\r\n\r\nconst FormBoolProps = [\r\n formProps.PROPERTY_FORM_INVISIBLE,\r\n formProps.PROPERTY_FORM_HIDDEN,\r\n formProps.PROPERTY_FORM_CLOSED,\r\n formProps.PROPERTY_FORM_TAB,\r\n formProps.PROPERTY_FORM_HIGHLIGHT,\r\n formProps.PROPERTY_FORM_DONT_FIRE,\r\n formProps.PROPERTY_FORM_READONLY,\r\n formProps.SIGNABLE_FORM,\r\n formProps.MARKED_TO_SIGN,\r\n formProps.REQUIRED_SIGN,\r\n];\r\n\r\nconst FieldBoolProps = [\r\n fieldProps.PROPERTY_ALLOW_EDITION,\r\n fieldProps.PROPERTY_CHECKED,\r\n fieldProps.PROPERTY_DISABLED,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\r\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\r\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\r\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\r\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\r\n fieldProps.PROPERTY_FILE_PREVIEW,\r\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\r\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\r\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\r\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\r\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\r\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\r\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\r\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\r\n fieldProps.PROPERTY_HIDE_GRID_BTN,\r\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\r\n fieldProps.PROPERTY_INPUT_AS_TEXT,\r\n fieldProps.PROPERTY_MODAL_DISABLED,\r\n fieldProps.PROPERTY_MULTISELECT,\r\n fieldProps.PROPERTY_NO_DOWNLOAD,\r\n fieldProps.PROPERTY_NO_ERASE,\r\n fieldProps.PROPERTY_NO_LOCK,\r\n fieldProps.PROPERTY_NO_MODIFY,\r\n fieldProps.PROPERTY_NOT_PRINT,\r\n fieldProps.PROPERTY_PAGED_GRID,\r\n fieldProps.PROPERTY_READONLY,\r\n fieldProps.PROPERTY_REQUIRED,\r\n fieldProps.PROPERTY_SEL_PARENT,\r\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\r\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\r\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\r\n fieldProps.PROPERTY_TRANSIENT,\r\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\r\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\r\n];\r\n\r\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\r\nexport default BoolProps;\r\n","// get boolean value from string values\r\nexport const parseBoolean = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst childParsers: ((element: Element, next: () => void) => void | Element)[] =\r\n [\r\n (element, next) => {\r\n if (element.tagName === 'f') {\r\n if (\r\n BoolProps.includes(element.attributes.getNamedItem('i')?.value || '')\r\n ) {\r\n element.setAttribute(\r\n 'v',\r\n String(\r\n parseBoolean(element.attributes.getNamedItem('v')?.value || ''),\r\n ),\r\n );\r\n return element;\r\n }\r\n next();\r\n }\r\n },\r\n ];\r\n\r\nconst tagNameParsers: ((key: string, next: () => void) => void | string)[] = [\r\n (key, next) => {\r\n if (key === 'a') return 'form';\r\n if (key === 'b') return 'field';\r\n if (key === 'g') return 'possibleValues';\r\n if (key === 'h') return 'item';\r\n if (key === 'z') return 'focusTo';\r\n if (key === 'r') return 'reload';\r\n if (key === 'p') return 'proccess';\r\n if (key === 'd') return 'valueAttr';\r\n next();\r\n },\r\n (key, next) => {\r\n if (key === 't') return 'text';\r\n if (key === 'label') return 'LABEL';\r\n next();\r\n },\r\n];\r\n\r\nconst attributesParsers: ((\r\n key: string,\r\n value: any,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (String(value).toLowerCase() === 'true') return { key, value: true };\r\n if (String(value).toLowerCase() === 'false') return { key, value: false };\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (['scriptEvents', 'serverEvents'].includes(key)) {\r\n return { key, value: JSON.parse(value) };\r\n }\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (key === 'value' && typeof value === 'number' && Number.isNaN(value)) {\r\n return { key, value: '' };\r\n }\r\n if (key === 'valueType' && typeof value === 'string' && value === 'null') {\r\n return { key, value: '' };\r\n }\r\n if (\r\n (key === 'cols' ||\r\n key === 'rows' ||\r\n key === 'x' ||\r\n key === 'y' ||\r\n key === 'length') &&\r\n typeof value === 'string'\r\n ) {\r\n const n = Number.parseFloat(value);\r\n if (!Number.isNaN(n)) {\r\n return { key, value: n };\r\n }\r\n }\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (BoolProps.includes(key)) {\r\n return { key, value: parseBoolean(value) };\r\n }\r\n next();\r\n },\r\n (_key, value, next) => {\r\n if (value.match?.(/[&]/))\r\n new DOMParser().parseFromString(\r\n value.replaceAll('<', '&lt;'),\r\n 'text/html',\r\n ).body.textContent!;\r\n\r\n next();\r\n },\r\n];\r\n\r\nexport function parseXml<T>(xmlString: string): T {\r\n // Parse the XML string into a DOM Document\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(xmlString, 'application/xml');\r\n\r\n // Check for parsing errors\r\n if (xmlDoc.querySelector('parsererror')) {\r\n throw new Error('Error parsing XML');\r\n }\r\n\r\n function xmlElementToObject(element: Element): any {\r\n const obj: any = {};\r\n\r\n for (const elParser of childParsers) {\r\n let next = false;\r\n const el = elParser(element, () => {\r\n next = true;\r\n });\r\n if (!next && el) {\r\n element = el;\r\n break;\r\n }\r\n }\r\n\r\n // Add attributes to the object\r\n for (const originalAttr of element.attributes) {\r\n const attr = {\r\n name: originalAttr.name,\r\n value: originalAttr.value,\r\n };\r\n\r\n for (const parser of attributesParsers) {\r\n let next = false;\r\n const res = parser(attr.name, attr.value, () => {\r\n next = true;\r\n });\r\n if (!next) {\r\n attr.name = res!.key;\r\n attr.value = res!.value;\r\n break;\r\n }\r\n }\r\n\r\n if (obj[attr.name]) {\r\n if (Array.isArray(obj[attr.name])) {\r\n obj[attr.name].push(attr.value);\r\n } else {\r\n obj[attr.name] = [obj[attr.name], attr.value];\r\n }\r\n } else {\r\n obj[attr.name] = attr.value;\r\n }\r\n }\r\n\r\n // Recursively process child nodes\r\n for (const child of element.childNodes) {\r\n if (child instanceof Element) {\r\n const o = xmlElementToObject(child as Element);\r\n\r\n let tagName = child.tagName;\r\n for (const parser of tagNameParsers) {\r\n let next = false;\r\n const current = parser(tagName, () => {\r\n next = true;\r\n });\r\n if (!next && current) {\r\n tagName = current;\r\n break;\r\n }\r\n }\r\n\r\n if (obj[tagName]) {\r\n if (Array.isArray(obj[tagName])) {\r\n obj[tagName].push(o);\r\n } else {\r\n obj[tagName] = [obj[tagName], o];\r\n }\r\n } else {\r\n obj[tagName] = o;\r\n }\r\n } else if (child.nodeType === Node.TEXT_NODE) {\r\n const textContent = child.textContent?.trim();\r\n if (textContent) {\r\n if (obj.text) {\r\n if (Array.isArray(obj.text)) {\r\n obj.text.push(textContent);\r\n } else {\r\n obj.text = [obj.text, textContent];\r\n }\r\n } else {\r\n obj.text = textContent;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return replaceLabelHtmlValues(obj);\r\n }\r\n\r\n function replaceLabelHtmlValues(o: object) {\r\n for (const [key, value] of Object.entries(o)) {\r\n if (typeof value === 'object' && value) {\r\n (o as any)[key] = replaceLabelHtmlValues(value);\r\n } else if (typeof value === 'string' && value.match(/&/)) {\r\n (o as any)[key] = new DOMParser().parseFromString(\r\n value.replaceAll('<', '&lt;'),\r\n 'text/html',\r\n ).body.textContent!;\r\n }\r\n }\r\n return o;\r\n }\r\n\r\n // Convert the root XML element to a JavaScript object\r\n const rootElement = xmlDoc.documentElement;\r\n return xmlElementToObject(rootElement);\r\n}\r\n\r\n(window as any).x = parseXml;\r\n","import type { AxiosResponse } from 'axios';\r\nimport { Notifications } from '../../main/Notifications';\r\nimport { MessageNotification } from '../../main/Notifications/MessageNotification';\r\nimport { arrayOrArray } from '../array/arrayOrArray';\r\nimport {\r\n IApiaApiPostConfig,\r\n IApiaApiRequestConfig,\r\n TApiaApiAxiosResponse,\r\n TApiaApiResult,\r\n TApiaMessage,\r\n TApiaSystemMessageObj,\r\n} from './types';\r\nimport { NotificationType } from '../../main/Notifications/Notification';\r\nimport { parseXml } from '../xml/parseXml';\r\nimport type { IStringifyOptions } from 'qs';\r\nimport QueryString from 'qs';\r\n\r\ndeclare global {\r\n interface Window {\r\n [key: string]: string;\r\n }\r\n}\r\n\r\nfunction dispatchMessage(type: NotificationType, message: TApiaMessage) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: message.text,\r\n title: message.label,\r\n type,\r\n }),\r\n );\r\n}\r\n\r\nfunction getAxios() {\r\n return import('axios').then((r) => r.default);\r\n}\r\n\r\nconst handleWrongResponse = (error: Error) => {\r\n if (error instanceof InvalidSessionException) throw error;\r\n\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: errorMessage.replaceAll('AxiosError', 'Error'),\r\n }),\r\n );\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nexport function parseMessages(response: TApiaSystemMessageObj) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n arrayOrArray(exceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'error'),\r\n );\r\n arrayOrArray(sysMessages?.message).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'warning'),\r\n );\r\n arrayOrArray(sysExceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'error'),\r\n );\r\n}\r\n\r\nasync function handleResponse<LoadType extends Record<string, unknown>>(\r\n result: AxiosResponse<string> | void,\r\n): Promise<TApiaApiAxiosResponse<LoadType> | null> {\r\n try {\r\n if (!result || result.data === undefined) {\r\n //\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<LoadType>(result);\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(e instanceof Error ? e : new Error(e as string));\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class InvalidSessionException extends Error {}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n LoadType extends Record<string, unknown>,\r\n>(\r\n response: AxiosResponse<string>,\r\n) => {\r\n let parsedObj: TApiaSystemMessageObj<LoadType> | void | undefined = undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<LoadType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n try {\r\n parsedObj = parseXml<LoadType>(response.data);\r\n } catch (e) {\r\n handleWrongResponse(new Error(e as string));\r\n }\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n\r\n parseMessages({ exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n return { ...parsedObj, ...load, ...(rest as LoadType) };\r\n }\r\n return {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n ...(rest as LoadType),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nexport async function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiPostConfig<DataType>,\r\n): TApiaApiResult<LoadType> {\r\n const postData =\r\n behaveConfig?.postDataTreatment === 'stringify'\r\n ? QueryString.stringify(\r\n behaveConfig.postData,\r\n behaveConfig.stringifyOptions,\r\n )\r\n : behaveConfig?.postData;\r\n\r\n const response = await (await getAxios())\r\n .post<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(actualUrl, postData, behaveConfig?.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(new Error(e as string));\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nexport async function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiRequestConfig,\r\n): TApiaApiResult<LoadType> {\r\n const response = await (await getAxios())\r\n .get<T, AxiosResponse<string>, D>(actualUrl, behaveConfig?.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(e instanceof Error ? e : new Error(e as string));\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport type MakeApiaUrlProps = {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n};\r\n\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * window.URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(props?: MakeApiaUrlProps) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? window.URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = window.TAB_ID_REQUEST.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : window.TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = window;\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replaceAll('/', '');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n","import { Callback, Callbacks, Map, UnSubscriber } from './types';\r\n\r\nexport type { Callback, Map, UnSubscriber } from './types';\r\n\r\n/**\r\n * @public\r\n *\r\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\r\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\r\n *\r\n * @typeParam Events - An extension of `Map` where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class EventEmitter<Events extends Map> {\r\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\r\n on: {} as Callbacks<Events>,\r\n once: {} as Callbacks<Events>,\r\n };\r\n protected enabled = true;\r\n\r\n protected debugMode = false;\r\n debug(enable = true) {\r\n this.debugMode = enable;\r\n }\r\n\r\n /**\r\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\r\n *\r\n * @param event - The event name to emit.\r\n * @param data - The data associated with the event. Its type is dependent on the event name.\r\n */\r\n emit<K extends keyof Events>(event: K, data: Events[K]) {\r\n this.callbacks.on[event]?.forEach((current) => current(data));\r\n\r\n this.callbacks.once[event]?.forEach((current) => current(data));\r\n this.callbacks.once[event] = [];\r\n }\r\n\r\n /**\r\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\r\n */\r\n get isEnabled() {\r\n return this.enabled;\r\n }\r\n\r\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\r\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\r\n *\r\n * @param event - The event name to listen to.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\r\n this.callbacks.on[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.on[event] = this.callbacks.on[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\r\n *\r\n * @param event - The event name to listen to for a single occurrence.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\r\n this.callbacks.once[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.once[event] = this.callbacks.once[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n}\r\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype Setter<T> = (prevState: T) => T;\r\n\r\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\r\n return typeof data === 'function';\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\ntype EmitterState<Events extends Map> = {\r\n [K in keyof Events]: Events[K];\r\n};\r\n\r\n/**\r\n * Extends EventEmitter to manage and emit events with state persistence.\r\n * This class allows emitting and listening to typed events while also keeping\r\n * a state that can be accessed synchronously for each event.\r\n *\r\n * @param initialState - If given will be passed to subscriptions\r\n *\r\n * @template Events - A mapping of event names to their associated data types.\r\n * @extends EventEmitter<Events>\r\n */\r\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\r\n protected state = {} as EmitterState<Events>;\r\n\r\n constructor(initialState?: Partial<Events>) {\r\n super();\r\n\r\n this.state = Object.assign({}, initialState) as Events;\r\n }\r\n\r\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\r\n this.state[event] = data;\r\n super.emit(event, data);\r\n }\r\n\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (this.state[event]) cb(this.state[event]);\r\n\r\n return super.on(event, cb);\r\n }\r\n\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (this.state[event]) {\r\n cb(this.state[event]);\r\n\r\n /**\r\n * Given that the information has already been sent, the subscription is not necessary\r\n */\r\n return () => {};\r\n }\r\n\r\n return super.once(event, cb);\r\n }\r\n\r\n /**\r\n * Retrieves the stored state for a given event\r\n */\r\n getState<K extends keyof Events>(event: K): Events[K] {\r\n return this.state[event];\r\n }\r\n\r\n /**\r\n * Just an alias for emit, with the advantage that can be called with a callback as second parameter in which case behaves exactly as react's setState.\r\n */\r\n setState<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.emit(event, actualData);\r\n }\r\n}\r\n","import { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n","export function getLabel(\r\n label: string,\r\n replacers?: Partial<{\r\n text: Record<string, string>;\r\n tooltip: Record<string, string>;\r\n }>,\r\n) {\r\n const labelObject = (window as any).labels[label] as {\r\n text: string;\r\n tooltip: string;\r\n };\r\n\r\n if (replacers?.text) {\r\n Object.entries(replacers.text).forEach(([key, value]) => {\r\n labelObject.text = labelObject.text.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n if (replacers?.tooltip) {\r\n Object.entries(replacers.tooltip).forEach(([key, value]) => {\r\n labelObject.tooltip = labelObject.tooltip.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n\r\n return labelObject;\r\n}\r\n\r\nexport const labels = {\r\n errorConfirmationFailed: () => 'Error al confirmar',\r\n errorRegexNotValidated: () => 'La expresión regular no fue validada.',\r\n errorCouldNotSync: () => 'No se pudo sincronizar',\r\n errorFieldRequired: () => 'Este campo es requerido',\r\n errorLoadForms: () =>\r\n 'Error al inicializar los formularios, contacte al administrador.',\r\n errorOnEvent: (eventName: string, className: string) =>\r\n (window as any).SERVER_MODE\r\n ? 'Error al ejecutar la clase de negocios, contacte al administrador.'\r\n : `Error on event ${eventName}, className ${className}`,\r\n};\r\n","import { Tab } from '@apia/components';\r\n\r\nexport function getCurrentTabsString() {\r\n const tabsList = (window.tabsController as any)?.tabsList as Tab[];\r\n\r\n if (tabsList)\r\n return `${tabsList\r\n .map((c) => (c.state.isOpen ? c.id : -1))\r\n .filter((c) => !(typeof c === 'number'))\r\n .join(',')}~${document.scrollingElement?.scrollTop ?? 0}`;\r\n}\r\n","import { getCurrentTabsString } from '../../../../util/app/getCurrentTabsString';\r\n\r\nexport const actions = {\r\n forms: 'apia.execution.FormAction.run',\r\n formSubmit: `${window.CONTEXT}/apia.execution.FormAction.run?action=fireFieldEvent&currentTab=${getCurrentTabsString()}${window.TAB_ID_REQUEST}`,\r\n};\r\n","import fieldProps from './fieldProps';\r\nimport formProps from './formProps';\r\n\r\nconst IProperty = {\r\n ...fieldProps,\r\n ...formProps,\r\n} as const;\r\n\r\nexport default IProperty;\r\n","import IProperty from '../constants/IProperty';\r\nimport { arrayOrArray } from '../../../../util';\r\nimport { Notifications } from '../../../Notifications';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { Field } from '../Field';\r\nimport { Grid, Select } from '../fields';\r\nimport { parseMessages } from '../../../../util/api/apiaApi';\r\n\r\nasync function getExecution() {\r\n return (await import('../../index')).Execution;\r\n}\r\n\r\nexport const setAjaxFormResponse = async (\r\n response: TFieldAjaxEventResponsePayload,\r\n) => {\r\n const forms = arrayOrArray(response.form);\r\n for (let i = 0; i < forms.length; i += 1) {\r\n const formId = forms[i].i;\r\n const form = forms[i];\r\n const [frmParent, id] = formId.split('_');\r\n const apiaForm = (await getExecution()).instance.getFormById(\r\n id,\r\n frmParent as 'E',\r\n );\r\n\r\n arrayOrArray(form.cusCmp).forEach((c) => {\r\n apiaForm\r\n ?.getCustomComponentByFldId(Number.parseInt(String(c.id)))\r\n ?.processResult({ state: c.state });\r\n });\r\n\r\n /** Refresh the updated grids */\r\n const changedGrids = arrayOrArray(form.changedGrids.grdId);\r\n changedGrids.forEach(({ id }) => {\r\n (apiaForm?.getFieldById(id) as Grid)?.refresh();\r\n });\r\n\r\n if (!apiaForm) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: `Form with id ${formId} not found`,\r\n }),\r\n );\r\n\r\n continue;\r\n }\r\n\r\n // Iterate each field element in form element\r\n const ajaxFields = arrayOrArray(forms[i].field);\r\n for (let f = 0; f < ajaxFields.length; f += 1) {\r\n // got id of field to alter\r\n const apiField = apiaForm?.getFieldById(ajaxFields[f].i) as Field<any>;\r\n if (apiField) {\r\n // set VALUE to fldId\r\n if (ajaxFields[f].c !== undefined) {\r\n const { c } = ajaxFields[f];\r\n\r\n let value: any = undefined;\r\n if (typeof c === 'string') {\r\n value = c;\r\n } else {\r\n /**\r\n * Este procedimiento se usa para concatenar los distintos índices de textarea, editor, etc\r\n */\r\n const valuesArray = arrayOrArray(c?.valueAttr);\r\n value = valuesArray.reduce((reduced, current) => {\r\n return reduced + current.v;\r\n }, '');\r\n }\r\n\r\n /**\r\n * Si ponemos que apiField es instanceof FieldWithAttribute generamos una dependencia\r\n * circular que rompe la compilación !!!\r\n */\r\n if ((apiField as any).attribute) {\r\n (apiField as any).setValue(value);\r\n }\r\n }\r\n // set PROPERTIES to fldId\r\n if (ajaxFields[f].e !== undefined) {\r\n const ajaxProps = arrayOrArray(ajaxFields[f].e);\r\n for (let c = 0; c < ajaxProps.length; c += 1) {\r\n if (ajaxProps[c]?.f) {\r\n const prop = arrayOrArray(ajaxProps[c]?.f);\r\n for (let p = 0; p < prop.length; p += 1) {\r\n if (prop[p]?.i) {\r\n apiField.setProperty(prop[p]?.i, prop[p]?.v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // set field possible VALUES for select/multi and radio\r\n if (ajaxFields[f].possibleValues !== undefined) {\r\n const possibleValuesItems = arrayOrArray(\r\n ajaxFields[f].possibleValues,\r\n );\r\n const items = arrayOrArray(possibleValuesItems[0]?.item);\r\n if (items) {\r\n if (\r\n ['multiple', 'radio', 'select'].includes(\r\n apiField.definition.fieldType,\r\n )\r\n ) {\r\n (apiField as Select).setProperty(\r\n 'possibleValue',\r\n items.map((current) => ({\r\n value: current.v,\r\n text: current.text,\r\n })),\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n ['tree', 'file'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const possibleValues = arrayOrArray(\r\n ajaxFields[f]?.field?.possibleValue,\r\n );\r\n apiField.setProperty('possibleValue', possibleValues);\r\n\r\n const propertiesObj = eval(\r\n '(' + ajaxFields[f]?.field?.properties + ')',\r\n );\r\n\r\n Object.keys(propertiesObj).forEach((key) => {\r\n let value = propertiesObj[key];\r\n\r\n if (typeof value === 'string') {\r\n const lowerValue = value.toLowerCase();\r\n if (lowerValue === 't' || lowerValue === 'true') {\r\n value = true;\r\n } else if (lowerValue === 'f' || lowerValue === 'false') {\r\n value = false;\r\n }\r\n }\r\n\r\n apiField.setProperty(key, value);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Formulario invisible\r\n if (\r\n form.v === 't' &&\r\n String(apiaForm.properties[IProperty.PROPERTY_FORM_HIDDEN]) !== 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, true);\r\n } else if (\r\n form.v === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_HIDDEN)) === 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, false);\r\n }\r\n\r\n // Formulario cerrado\r\n if (\r\n form.c === 't' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) !== 'true'\r\n ) {\r\n apiaForm.closeForm();\r\n } else if (\r\n form.c === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) === 'true'\r\n ) {\r\n apiaForm.openForm();\r\n }\r\n }\r\n\r\n if (response.proccess?.p) {\r\n (await getExecution()).instance\r\n .getProcess()\r\n ?.setPriority(response.proccess.p);\r\n }\r\n\r\n if (response.data) {\r\n parseMessages(response.data);\r\n }\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { IButton } from '../types';\r\n\r\nexport class ButtonsAction {\r\n constructor(private button: IButton) {\r\n makeObservable<ButtonsAction, 'button'>(this, {\r\n button: observable,\r\n });\r\n }\r\n\r\n private update(props: Partial<IButton>) {\r\n if (this.button) {\r\n this.button = { ...this.button, ...props };\r\n }\r\n }\r\n\r\n get action() {\r\n return this;\r\n }\r\n\r\n get disabled() {\r\n return this.button.disabled;\r\n }\r\n\r\n get props() {\r\n const properties = {\r\n disabled: this.button.disabled,\r\n hidden: this.button.hidden,\r\n loading: this.button.isLoading,\r\n };\r\n return properties;\r\n }\r\n\r\n get label() {\r\n return this.button?.label;\r\n }\r\n\r\n get title() {\r\n return this.button?.title ?? '';\r\n }\r\n\r\n get variant() {\r\n return this.button?.variant ?? '';\r\n }\r\n\r\n set title(title: string) {\r\n this.update({ title });\r\n }\r\n\r\n set variant(variant: string) {\r\n this.update({ variant });\r\n }\r\n\r\n public disable() {\r\n this.update({ disabled: true });\r\n }\r\n\r\n public enable() {\r\n this.update({ disabled: false });\r\n }\r\n\r\n public hide() {\r\n this.update({ hidden: true });\r\n }\r\n\r\n public show() {\r\n this.update({ hidden: false });\r\n }\r\n}\r\n","import { ButtonsAction } from './ButtonsActions';\r\nimport { IButton, TActionButtons } from '../types';\r\n\r\nexport class ActionsController {\r\n static CONFIRM = 0;\r\n static NEXT = 1;\r\n static PREVIOUS = 2;\r\n static SIGN = 3;\r\n static SAVE = 4;\r\n static RELEASE = 5;\r\n static DELEGATE = 6;\r\n static SHARE = 7;\r\n static PRINT = 8;\r\n static VIEW_DOCS = 9;\r\n static CLOSE = 10;\r\n\r\n private static _instance: ActionsController;\r\n public static get instance(): ActionsController {\r\n if (!ActionsController._instance) {\r\n ActionsController._instance = new ActionsController();\r\n }\r\n return ActionsController._instance;\r\n }\r\n\r\n private buttons = new Map<TActionButtons, ButtonsAction>();\r\n\r\n public addButton(button: IButton) {\r\n if (this.buttons.has(button.id)) return;\r\n this.buttons.set(\r\n button.id,\r\n new ButtonsAction({\r\n ...{\r\n isLoading: false,\r\n disabled: false,\r\n hidden: false,\r\n },\r\n ...button,\r\n }),\r\n );\r\n }\r\n\r\n public getButton(id: TActionButtons) {\r\n if (this.buttons.has(id)) {\r\n return this.buttons.get(id);\r\n }\r\n throw Error('That button not exist');\r\n }\r\n}\r\n","import { Field } from '../main/Execution/FormsExecution/Field';\r\nimport { TApiaFieldCommonProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { IApiaField } from './types';\r\n\r\nexport default abstract class ApiaField implements IApiaField {\r\n #field: Field;\r\n\r\n constructor(field: Field) {\r\n this.#field = field;\r\n }\r\n\r\n get fldType() {\r\n return this.#field.definition.fieldType;\r\n }\r\n get index() {\r\n const idx = undefined;\r\n return idx ?? 0;\r\n }\r\n\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: TApiaFieldCommonProperties[K],\r\n ) {\r\n this.#field.setProperty(name, value);\r\n }\r\n getProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n ): TApiaFieldCommonProperties[K] {\r\n return this.#field.getProperty(name);\r\n }\r\n\r\n setFocus(): IApiaField | null {\r\n throw new Error('Method not implemented. ');\r\n }\r\n isInGrid(): boolean {\r\n return !!this.#field.properties.inGrid;\r\n }\r\n}\r\n","import { Button } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IButtonField extends IApiaField {\r\n fireClickEvent(): void;\r\n getValue(): string | null;\r\n}\r\n\r\nexport default class ButtonField extends ApiaField implements IButtonField {\r\n #field: Button;\r\n\r\n constructor(field: Button) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n fireClickEvent(): void {\r\n if (this.#field.definition.id) {\r\n this.#field.fireEvent('onClick');\r\n }\r\n }\r\n\r\n getValue(): string | null {\r\n if (this.#field.definition.id) {\r\n return this.#field.properties.value ?? '';\r\n }\r\n return null;\r\n }\r\n\r\n clearValue(): void {\r\n this.#field.properties.value = '';\r\n }\r\n}\r\n","import { Editor } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TEditorField = IApiaField;\r\n\r\nexport default class EditorField extends ApiaField implements TEditorField {\r\n constructor(field: Editor) {\r\n super(field);\r\n }\r\n}\r\n","import { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport ApiaField from './ApiaField';\r\n\r\nexport class ApiaFieldWithAttribute<T = string | boolean> extends ApiaField {\r\n #field: FieldWithAttribute;\r\n constructor(field: FieldWithAttribute) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue() {\r\n this.#field.setValue('');\r\n }\r\n\r\n getValue() {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: T) {\r\n this.#field.setValue(v);\r\n }\r\n\r\n getLabel(): string | null | void {\r\n return this.#field.attribute.title;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Select } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport type TOptionsAsArray = (string | number)[];\r\n\r\nexport default class SelectField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Select;\r\n constructor(field: Select) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n // get all select options either as array[] or object\r\n getOptions(asObject: boolean): TOptionsMap | TOptionsAsArray | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options.map((c) => c.value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // adds a option to the select field\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n text: showValue,\r\n });\r\n }\r\n }\r\n\r\n // overwrite all options in select field\r\n setOptions(optionsArray: PossibleValue[] | PossibleValue): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = optionsArray;\r\n }\r\n }\r\n\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n\r\n // get selected option either as array or object key/value\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n const arr = arrayOrArray(this.#field.properties.possibleValue);\r\n if (this.#field.definition.id) {\r\n if (asObject) {\r\n let obj = null;\r\n arr.forEach((c) => {\r\n if (c.selected) {\r\n obj = c;\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return arrayOrArray(arr.find((c) => c.selected));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedText(): string | null {\r\n if (this.#field.definition.id) {\r\n return (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.selected,\r\n )?.text ?? 'Not option selected'\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // // remove all select options\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n}\r\n","import { Input } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class InputField extends ApiaFieldWithAttribute {\r\n #field: Input;\r\n constructor(field: Input) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): number | string | boolean | null {\r\n return this.#field.getValue();\r\n }\r\n}\r\n","import { Tree } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class TreeField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Tree;\r\n constructor(field: Tree) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n setValue(v: string | number | (string | number)[]): void {\r\n this.#field.setValue(v);\r\n }\r\n}\r\n","import { ApiaUtil } from '@apia/components';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Checkbox } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport default class CheckField extends ApiaFieldWithAttribute {\r\n constructor(field: Checkbox) {\r\n super(field);\r\n }\r\n\r\n clearValue(): void {\r\n this.setValue(false);\r\n }\r\n\r\n setValue(value: string | boolean | number): void {\r\n // accepts 1/0 or true/false as values\r\n let val;\r\n const isBool = ApiaUtil.instance.parsers.parseBool(\r\n value as unknown as string,\r\n );\r\n if (isBool === true || isBool === false) {\r\n val = isBool;\r\n } else {\r\n throw new Error(\r\n 'Apia JSApi Error: The function setValue for a Checkbox field only accepts boolean or string type for value parameter.',\r\n );\r\n }\r\n super.setValue(val);\r\n }\r\n}\r\n","import { PossibleValue } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Radio } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class RadioField extends ApiaFieldWithAttribute {\r\n #field: Radio;\r\n constructor(field: Radio) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions(asObject: boolean): TOptionsMap | string[] | null {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n radioValues.forEach((c) => options.set(String(c.value), c));\r\n\r\n return options;\r\n }\r\n let optionsResult = [];\r\n optionsResult = radioValues.map((c) => String(c.value));\r\n return optionsResult;\r\n }\r\n return null;\r\n }\r\n\r\n clearOptions(): void | null {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = [];\r\n }\r\n }\r\n\r\n addOption(\r\n radioValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n const isValueIsRepeated = radioValues.some((c) => {\r\n return c.value === radioValue.toString();\r\n });\r\n\r\n if (allowRepeatedValue || !isValueIsRepeated) {\r\n radioValues.push({\r\n value: radioValue.toString(),\r\n text: showValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setOptions(options: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = options;\r\n }\r\n }\r\n\r\n removeOption(radioValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== radioValue,\r\n );\r\n }\r\n }\r\n\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue | null {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n const selected = radioValues.find((c) => c.selected);\r\n if (!selected) return null;\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n options.set(String(selected?.value), selected);\r\n return options;\r\n } else {\r\n return selected;\r\n }\r\n }\r\n\r\n getSelectedText(): string | undefined | null {\r\n if (this.#field.definition.id) {\r\n const possibleValue = arrayOrArray(this.#field.properties.possibleValue);\r\n if (possibleValue) {\r\n return possibleValue.find((c) => c.selected)?.text;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { TOptionsAsArray } from './SelectField';\r\nimport { Multiple } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class MultipleField extends ApiaFieldWithAttribute<string[]> {\r\n #field: Multiple;\r\n constructor(field: Multiple) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n text: showValue,\r\n });\r\n }\r\n }\r\n setValue(value: string[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.setValue(value);\r\n }\r\n }\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const selected = arrayOrArray(\r\n this.#field.properties.possibleValue,\r\n ).filter((c) => c.selected);\r\n\r\n if (selected) {\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n selected.forEach((c) => options.set(String(c.value), c));\r\n return options;\r\n }\r\n\r\n return selected;\r\n }\r\n }\r\n return null;\r\n }\r\n getOptions(asObject: boolean): TOptionsMap | TOptionsAsArray | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options.map((c) => c.value);\r\n }\r\n return null;\r\n }\r\n setOptions(optionsArray: PossibleValue[] | PossibleValue): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = optionsArray;\r\n }\r\n }\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n}\r\n","import { Hidden } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\n\r\nexport default class HiddenField extends ApiaField {\r\n constructor(field: Hidden) {\r\n super(field);\r\n }\r\n}\r\n","import { Textarea } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class AreaField extends ApiaFieldWithAttribute {\r\n constructor(field: Textarea) {\r\n super(field);\r\n }\r\n}\r\n","import { Image } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IImageField extends IApiaField {\r\n getValue(): null;\r\n setValue(): null;\r\n getLabel(): void;\r\n clearValue(): null;\r\n}\r\n\r\nexport default class ImageField extends ApiaField implements IImageField {\r\n #field: Image;\r\n constructor(field: Image) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n\r\n getValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Link } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ILinkField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class LinkField extends ApiaField implements ILinkField {\r\n #field: Link;\r\n constructor(field: Link) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n if (this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n }\r\n}\r\n","import { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ITextField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class TextField extends ApiaField implements ITextField {\r\n #field: Field;\r\n constructor(field: Field) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { IApiaField } from '../types';\r\n\r\nexport class CustomComponentField implements IApiaField {\r\n #field: CustomComponent;\r\n constructor(field: CustomComponent) {\r\n this.#field = field;\r\n }\r\n\r\n fireEvent(name: string) {\r\n this.#field.fireEvent(name);\r\n }\r\n getProperty(name: string): any {\r\n return this.#field.getProperty(name);\r\n }\r\n setFocus(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isInGrid(): boolean {\r\n return false;\r\n }\r\n getStringValue(attName: string) {\r\n return this.#field.getStringValue(attName);\r\n }\r\n getValue(attName: string, index = 0) {\r\n return this.#field.getValue(attName, index);\r\n }\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: any,\r\n ): void {\r\n this.#field.setProperty(name, value);\r\n }\r\n setStringValue(attName: string, value: string) {\r\n return this.#field.setStringValue(attName, value);\r\n }\r\n setValue(attName: string, value: any, index = 0) {\r\n return this.#field.setValue(attName, value, index);\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { Field as ExecutionField } from '../../main/Execution/FormsExecution/Field';\r\nimport {\r\n Button,\r\n Captcha,\r\n Checkbox,\r\n Editor,\r\n File,\r\n Grid,\r\n Hidden,\r\n Image,\r\n Input,\r\n Label,\r\n Link,\r\n Multiple,\r\n Password,\r\n Radio,\r\n Select,\r\n Textarea,\r\n Title,\r\n Tree,\r\n} from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport Field from '../constants/Field';\r\nimport {\r\n ButtonField,\r\n CaptchaField,\r\n CheckField,\r\n EditorField,\r\n FileUploaderField,\r\n HiddenField,\r\n ImageField,\r\n InputField,\r\n LinkField,\r\n MultipleField,\r\n PasswordField,\r\n RadioField,\r\n SelectField,\r\n TextAreaField,\r\n TextField,\r\n TreeField,\r\n} from '../fields';\r\nimport { CustomComponentField } from '../fields/CustomComponentField';\r\nimport GridField from '../fields/GridField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport const createNewField = (\r\n field: ExecutionField | FieldWithAttribute | CustomComponent,\r\n): IApiaField | null => {\r\n if (field instanceof CustomComponent) {\r\n return new CustomComponentField(field);\r\n } else {\r\n const { fieldType } = field.definition;\r\n let newField: IApiaField | null = null;\r\n\r\n switch (fieldType) {\r\n case Field.TYPE_INPUT:\r\n newField = new InputField(field as Input);\r\n break;\r\n case Field.TYPE_PASSWORD:\r\n newField = new PasswordField(field as Password);\r\n break;\r\n case Field.TYPE_SELECT:\r\n newField = new SelectField(field as Select);\r\n break;\r\n case Field.TYPE_RADIO:\r\n newField = new RadioField(field as Radio);\r\n break;\r\n case Field.TYPE_CHECK:\r\n newField = new CheckField(field as Checkbox);\r\n break;\r\n case Field.TYPE_BUTTON:\r\n newField = new ButtonField(field as Button);\r\n break;\r\n case Field.TYPE_MULTIPLE:\r\n newField = new MultipleField(field as Multiple);\r\n break;\r\n case Field.TYPE_HIDDEN:\r\n newField = new HiddenField(field as Hidden);\r\n break;\r\n case Field.TYPE_AREA:\r\n newField = new TextAreaField(field as Textarea);\r\n break;\r\n case Field.TYPE_GRID:\r\n newField = new GridField(field as Grid);\r\n break;\r\n case Field.TYPE_IMAGE:\r\n newField = new ImageField(field as Image);\r\n break;\r\n case Field.TYPE_HREF:\r\n newField = new LinkField(field as Link);\r\n break;\r\n case Field.TYPE_LABEL:\r\n newField = new TextField(field as Label);\r\n break;\r\n case Field.TYPE_TITLE:\r\n newField = new TextField(field as Title);\r\n break;\r\n case Field.TYPE_FILE:\r\n newField = new FileUploaderField(field as File);\r\n break;\r\n case Field.TYPE_CAPTCHA:\r\n newField = new CaptchaField(field as Captcha);\r\n break;\r\n case Field.TYPE_TREE:\r\n newField = new TreeField(field as Tree);\r\n break;\r\n case Field.TYPE_EDITOR:\r\n newField = new EditorField(field as Editor);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return newField;\r\n }\r\n};\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { SetStateAction } from '../../../util/events/types';\r\n\r\nexport class WithProperties<Props extends Record<string, any>> {\r\n properties: Props = {} as Props;\r\n\r\n constructor(initialState?: Props) {\r\n if (initialState) {\r\n this.properties = initialState;\r\n }\r\n makeObservable(this, { properties: observable, setProperty: action });\r\n }\r\n\r\n getProperty<K extends keyof Props>(propName: K): Props[K] {\r\n return this.properties[propName];\r\n }\r\n setProperty<K extends keyof Props>(\r\n propName: K,\r\n propValue: SetStateAction<Props[K]>,\r\n ) {\r\n const value =\r\n propValue instanceof Function\r\n ? propValue(this.properties[propName])\r\n : propValue;\r\n\r\n this.properties[propName] = value;\r\n }\r\n}\r\n","export const eventTypes = {\r\n EVENT_FLD_ONCHANGE: 1,\r\n EVENT_FLD_ONCLICK: 4,\r\n EVENT_FLD_POPULATE: 5,\r\n EVENT_FLD_ONMODALRETURN: 37,\r\n EVENT_FLD_ONMODALCHANGE: 36,\r\n\r\n // Grid Events\r\n EVENT_FLD_GRID_ADD: 60,\r\n EVENT_FLD_GRID_DEL: 61,\r\n EVENT_FLD_GRID_SORT: 62,\r\n EVENT_FLD_GRID_COLUMN_SELECT: 65,\r\n\r\n // Print Events\r\n EVENT_FRM_ONBEFORE_PRINT: 63,\r\n EVENT_FRM_ONAFTER_PRINT: 64,\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TFieldServerEvent,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { Form } from './Form';\r\nimport { WithProperties } from './WithProperties';\r\nimport { actions } from './constants/actions';\r\nimport { eventTypes } from './constants/eventTypes';\r\nimport { setAjaxFormResponse } from './events/setAjaxFormResponse';\r\nimport {\r\n FieldValidationState,\r\n FireEventParameters,\r\n TFieldAjaxEventResponsePayload,\r\n} from './types';\r\nimport { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaFunctions } from '../../../programming';\r\n\r\nexport type TFncParams = {\r\n type: 'V' | 'P' | 'E';\r\n value?: string;\r\n attId?: string | number;\r\n};\r\n\r\nlet af: ApiaFunctions | null = null;\r\nasync function getApiaFunctions() {\r\n if (!af) {\r\n await import('../../../programming/ApiaFunctions').then(\r\n ({ ApiaFunctions }) => (af = ApiaFunctions.instance),\r\n );\r\n }\r\n return af!;\r\n}\r\n\r\nexport abstract class Field<\r\n FieldProps extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n } = {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n },\r\n> extends WithProperties<FieldProps> {\r\n protected form: Form = {} as Form;\r\n\r\n definition: State['definition'];\r\n state: Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n } = {\r\n validation: { dirty: false, errorMessage: '', synchronizing: false },\r\n } as Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n };\r\n\r\n constructor({ properties, ...definition }: FieldDefinition) {\r\n super();\r\n\r\n this.properties = properties;\r\n this.definition = definition;\r\n\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions())\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n let idx: any;\r\n if (window.IS_EDIT_GRID_MODAL) {\r\n idx = window.MODAL_INDEX;\r\n } else {\r\n idx = this.definition?.index || 0;\r\n }\r\n return {\r\n ajaxUrl: actions.forms,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n action: 'fireFieldEvent',\r\n frmParent: this.form.definition.frmParent,\r\n frmId: this.form.definition.id,\r\n fldId: this.definition.id,\r\n index: idx,\r\n evtId,\r\n nuevo: true,\r\n preventAsXmlParameter: true,\r\n ...additionalParams,\r\n };\r\n }\r\n\r\n protected async fireScriptEvent(eventName: string): Promise<boolean> {\r\n const event = this.definition.scriptEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (event) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: Field<any, any, any> | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n this,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n return result;\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(eventName, event.evtName),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n protected async fireAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n const response = await post<TFieldAjaxEventResponsePayload>(\r\n await makeApiaUrl(\r\n this.getServerEventParams(event.evtId, {\r\n isAjax: true,\r\n }),\r\n ),\r\n {\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n if (response?.data?.success) {\r\n await setAjaxFormResponse(response.data);\r\n return true;\r\n }\r\n } catch (rejectedValue) {\r\n console.error(rejectedValue);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: String(rejectedValue),\r\n }),\r\n );\r\n }\r\n return false;\r\n }\r\n protected async fireNoAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const p = this.getServerEventParams(event.evtId, params);\r\n if ((window.config as any).execution.reloadOnNoAjaxEvents) {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n }\r\n protected async fireServerEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let event = this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n async fireEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let result = await this.fireScriptEvent(eventName);\r\n if (result) {\r\n result = await this.fireServerEvent(eventName, params);\r\n }\r\n\r\n /**\r\n * No es necesario mostrar errores ya que cada fireXXXEvent sabe hacerlo por sí mismo.\r\n */\r\n\r\n return result;\r\n }\r\n\r\n getForm() {\r\n return this.form;\r\n }\r\n\r\n protected hasEventsOfType(eventName: string) {\r\n return (\r\n this.definition.serverEvents?.find((c) => c.evtName === eventName) ||\r\n this.definition.scriptEvents?.find((c) => c.evtName === eventName)\r\n );\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n public async validate(): Promise<boolean | Field> {\r\n return true;\r\n }\r\n\r\n markAsRendered() {\r\n this.getForm().markFieldAsRendered(\r\n this.definition.id,\r\n this.definition.index,\r\n );\r\n }\r\n}\r\n","export type RetryConfiguration = {\r\n retries: number;\r\n timeout: number;\r\n};\r\n\r\nexport class TooMuchRetriesException extends Error {}\r\n\r\nfunction timeout(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n\r\n/**\r\n * Ejecuta el callback provisto y verifica el resultado contra el método checkSuccess. En caso de que checkSuccess devuelva false, reintenta en el timeout especificado, siempre que las restricciones de configuration.retries lo permita.\r\n *\r\n * En caso de fallar demasiadas veces, eleva una excepción de tipo TooMuchRetriesException\r\n *\r\n */\r\nexport async function asyncRetry<ReturnType>(\r\n cb: () => Promise<ReturnType>,\r\n checkSuccess: (value: ReturnType) => boolean,\r\n configuration: RetryConfiguration = {\r\n retries: 3,\r\n timeout: 300,\r\n },\r\n): Promise<ReturnType> {\r\n return new Promise<ReturnType>((resolve, reject) => {\r\n (async () => {\r\n const tryIt = async () => {\r\n const res = await cb();\r\n return checkSuccess(res) ? res : null;\r\n };\r\n\r\n for await (const _ of new Array(configuration.retries)) {\r\n const res = await tryIt();\r\n if (res) {\r\n resolve(res);\r\n return;\r\n }\r\n await timeout(configuration.timeout);\r\n }\r\n\r\n reject(new TooMuchRetriesException());\r\n })();\r\n });\r\n}\r\n","export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!Object.is(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!Object.is(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!Object.is(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttributeState, SetValueOptions } from './types';\r\nimport { Field } from './Field';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { IApiaApiPostConfig } from '../../../util/api/types';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TooMuchRetriesException,\r\n asyncRetry,\r\n} from '../../../util/other/asyncRetry';\r\nimport {\r\n TApiaFieldValueType,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { actions } from './constants/actions';\r\nimport { shallowEqual } from '../../../util/comparators/shallowEqual';\r\nimport { TApiaFieldWithAttributeProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\n\r\nexport class Attribute {\r\n constructor(\r\n public readonly id: string,\r\n public readonly name: string,\r\n public readonly title: string,\r\n public readonly valueType: TApiaFieldValueType,\r\n ) {}\r\n}\r\n\r\nexport abstract class FieldWithAttribute<\r\n FieldProps extends\r\n TApiaFieldWithAttributeProperties = TApiaFieldWithAttributeProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n FieldWithAttributeState<FieldDefinition, FieldProps, ValueType>\r\n> {\r\n #lastOnChangeValue: ValueType | null = null;\r\n protected lastSynchronizationValue: ValueType | null = null;\r\n\r\n public readonly attribute: Attribute;\r\n\r\n constructor({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(definition as FieldDefinition);\r\n\r\n this.attribute = new Attribute(attId, attName, attLabel, valueType);\r\n\r\n const initialValue = this.getInitialValue({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition,\r\n });\r\n if (initialValue !== value) {\r\n this.synchronize(initialValue);\r\n }\r\n this.state.value = initialValue || ('' as ValueType);\r\n this.state.validation = {\r\n dirty: false,\r\n errorMessage: null,\r\n synchronizing: false,\r\n };\r\n\r\n makeObservable(this, {\r\n attribute: observable,\r\n });\r\n }\r\n\r\n async fireEvent(eventName: string): Promise<boolean> {\r\n if (this.getValidationState().dirty) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (eventName === 'onChange') {\r\n if (this.getValue() === this.#lastOnChangeValue) {\r\n return true;\r\n } else {\r\n const res = await super.fireEvent(eventName);\r\n if (res) {\r\n this.#lastOnChangeValue = this.getValue();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return super.fireEvent(eventName);\r\n }\r\n protected getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>): ValueType {\r\n return value;\r\n }\r\n public getValidationState() {\r\n return this.state.validation;\r\n }\r\n public getValue() {\r\n return this.state.value;\r\n }\r\n public setValue(newValue: ValueType, options?: SetValueOptions) {\r\n if (\r\n this.properties.readonly ||\r\n this.form.properties.readOnly ||\r\n this.form.properties.readonly ||\r\n shallowEqual(newValue, this.getValue())\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n return this.fireEvent('onChange');\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ValueType,\r\n ): IApiaApiPostConfig<any> {\r\n return {\r\n postData: {\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n };\r\n }\r\n protected getSynchronizeUrl(params?: Record<string, unknown>) {\r\n return makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'processFieldSubmit',\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attId: this.attribute.id,\r\n index: this.definition.index || 0,\r\n timestamp: Date.now(),\r\n isAjax: true,\r\n ...params,\r\n });\r\n }\r\n protected processSynchronizeError(e: unknown) {\r\n if (e instanceof TooMuchRetriesException) {\r\n this.state.validation.dirty = true;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n protected async synchronize(newValue: ValueType) {\r\n if (newValue === this.lastSynchronizationValue) return true;\r\n\r\n try {\r\n const postData = this.getSynchronizePostConfiguration(newValue);\r\n const result =\r\n (\r\n await asyncRetry(\r\n async () => {\r\n try {\r\n return await post<{ success: boolean }>(\r\n await this.getSynchronizeUrl(),\r\n postData,\r\n );\r\n } catch (e) {\r\n Notifications.instance.add(\r\n new MessageNotification({ message: String(e) }),\r\n );\r\n return null;\r\n }\r\n },\r\n (result) => !!result?.data?.success,\r\n { retries: 10, timeout: 500 },\r\n )\r\n )?.data?.success || false;\r\n\r\n if (result) {\r\n this.lastSynchronizationValue = newValue;\r\n this.state.validation.dirty = false;\r\n return true;\r\n }\r\n } catch (e) {\r\n this.processSynchronizeError(e);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid = !!this.getValue() || !this.properties.required;\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n return {\r\n ...super.getServerEventParams(evtId, additionalParams),\r\n attId: this.attribute.id,\r\n };\r\n }\r\n}\r\n","import ApiaField from '../ApiaField';\r\nimport { arrayOrArray, noNaN } from '@apia/util';\r\nimport { createNewField } from '../utils/createApiaField';\r\nimport { Grid } from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\n\r\nexport default class GridField extends ApiaField {\r\n #field: Grid;\r\n\r\n constructor(protected field: Grid) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n addRow() {\r\n this.#field.addRow();\r\n }\r\n\r\n clearGrid() {\r\n this.#field.clearGrid();\r\n }\r\n\r\n clearPage(pageNumber: number) {\r\n this.#field.clearPage(pageNumber);\r\n }\r\n\r\n clearRow(index: number) {\r\n const row = this.#field.getRow(index);\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n }\r\n\r\n deleteGrid() {\r\n this.#field.deleteGrid();\r\n }\r\n\r\n deletePage(pageNumber: number) {\r\n const props = this.#field.properties;\r\n if (props.paged) {\r\n this.#field.deletePage(pageNumber);\r\n }\r\n }\r\n\r\n deleteRow(index: number) {\r\n this.#field.deleteRow(index);\r\n }\r\n\r\n editRow(index: number) {\r\n return this.#field.getRow(index).map((c) => createNewField(c));\r\n }\r\n\r\n getAllColumns() {\r\n return this.#field\r\n .getAllColumns()\r\n .map((c) => c.map((f) => createNewField(f)));\r\n }\r\n\r\n getColumn(fieldName: string) {\r\n const fields = this.#field.getColumn(fieldName);\r\n if (fields) arrayOrArray(fields).map((c) => createNewField(c!));\r\n }\r\n\r\n getCurrentPage() {\r\n return this.#field.getCurrentPage();\r\n }\r\n\r\n getField(fieldName: string, fieldIndex = 0) {\r\n const fields = this.#field.getField(fieldName, fieldIndex);\r\n\r\n if (fields) return arrayOrArray(fields).map((c) => createNewField(c!));\r\n return null;\r\n }\r\n\r\n getPageCount() {\r\n return this.#field.definition.pages;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.definition.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field.getRow(index).map((c) => createNewField(c));\r\n }\r\n\r\n getSelectedIndexes(useAbsoluteIndex?: boolean) {\r\n return this.#field.controller\r\n .getSelection()\r\n .map(\r\n (c) => c + (useAbsoluteIndex ? noNaN(this.#field.getStartIndex()) : 0),\r\n );\r\n }\r\n\r\n getSelectedItems() {\r\n return this.getSelectedIndexes().map((index) => this.getRow(index));\r\n }\r\n\r\n get id() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n isPaged() {\r\n return this.#field.properties.paged;\r\n }\r\n\r\n get rowsCount() {\r\n return this.#field.getRowsIndices().length;\r\n }\r\n\r\n get selected_col_index() {\r\n //TODO\r\n return this.#field.controller;\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.#field.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n toggleDeleteButton(index: number, isShown?: boolean) {\r\n this.#field.toggleDeleteButton(index, isShown);\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n this.#field.toggleEditFormButton(rowIndex, isShown);\r\n }\r\n}\r\n","import { Captcha } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TCaptchaField = IApiaField;\r\n\r\nexport default class CaptchaField extends ApiaField implements TCaptchaField {\r\n constructor(field: Captcha) {\r\n super(field);\r\n }\r\n}\r\n","import { File } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { reaction } from 'mobx';\r\n\r\nexport default class FileUploaderField extends ApiaFieldWithAttribute {\r\n #field: File;\r\n constructor(field: File) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n onChange(cb: (newValue: unknown) => unknown) {\r\n reaction(\r\n () => {\r\n this.#field.getValue();\r\n },\r\n () => {\r\n cb(this.#field.getValue());\r\n },\r\n { fireImmediately: false },\r\n );\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id && this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Password } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\n\r\nexport default class PasswordField extends ApiaField {\r\n constructor(field: Password) {\r\n super(field);\r\n }\r\n}\r\n","import { DataGridField as GridField } from './fields';\r\nimport { IApiaField, IApiaForm } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from './ApiaFieldWithAttribute';\r\nimport { createNewField } from './utils/createApiaField';\r\nimport { Form } from '../main/Execution/FormsExecution/Form';\r\nimport { TApiaFormProperties } from '../main/InitialData/types/TApiaForm';\r\nimport { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\n\r\nexport default class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n\r\n constructor(form: Form) {\r\n this.#form = form;\r\n }\r\n\r\n getFormName(): string {\r\n return this.#form.definition.formName;\r\n }\r\n getFormTitle(): string {\r\n return this.#form.definition.formTitle;\r\n }\r\n openForm(): void {\r\n this.#form.setProperty('prpFrmClosed', false);\r\n }\r\n closeForm(): void {\r\n this.#form.setProperty('prpFrmClosed', true);\r\n }\r\n getProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n ): TApiaFormProperties[K] {\r\n return this.#form.getProperty(name);\r\n }\r\n setProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n value: TApiaFormProperties[K],\r\n ): void {\r\n this.#form.setProperty(name, value);\r\n }\r\n getCustomComponent(attName: string) {\r\n return this.#form.getCustomComponentByAttName(attName);\r\n }\r\n getField(fld: string | number, index?: number): IApiaField | undefined {\r\n const field = this.#form.getField(fld as string, index);\r\n\r\n if (field) {\r\n return createNewField(field as FieldWithAttribute)!;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldColumn(name: string): IApiaField[] {\r\n return arrayOrArray(this.#form.getFieldByName(name))\r\n .map((c) => createNewField(c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n getAllFields(): IApiaField[] {\r\n return this.#form\r\n .getAllFields()\r\n .map((c) => createNewField(c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n clearForm(clearReadonlyFields: boolean, deleteGridsRows: boolean): void {\r\n this.getAllFields().forEach((c) => {\r\n if (deleteGridsRows && c instanceof GridField) {\r\n c.clearGrid();\r\n }\r\n\r\n if (c instanceof ApiaFieldWithAttribute) {\r\n if (!c.getProperty('readonly') || clearReadonlyFields) {\r\n c.setValue('');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { parseXml } from '../../../util/xml/parseXml';\r\nimport { TApiaForm } from '../types/TApiaForm';\r\n\r\nfunction decodeBase64ToUtf8(base64String: string) {\r\n const binaryString = atob(base64String);\r\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\r\n return new TextDecoder('utf-8').decode(bytes);\r\n}\r\n\r\nasync function getFormXMLDataAsObj(\r\n formDiv: HTMLElement,\r\n): Promise<TApiaForm | null> {\r\n if (formDiv.dataset.xml) {\r\n const formData = (await parseXml(\r\n decodeBase64ToUtf8(formDiv.dataset.xml),\r\n )) as TApiaForm;\r\n return formData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function readFormsDefinition() {\r\n const elements = [...document.querySelectorAll('.formContainer')];\r\n const forms: TApiaForm[] = [];\r\n\r\n for await (const form of elements) {\r\n const def = await getFormXMLDataAsObj(form as HTMLElement);\r\n if (def) forms.push(def);\r\n }\r\n\r\n return forms;\r\n}\r\n","import { readFormsDefinition } from './bootstrap/readFormsDefinition';\r\n\r\nexport class InitialData {\r\n static #instance: InitialData | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new InitialData();\r\n\r\n return this.#instance!;\r\n }\r\n private constructor() {}\r\n\r\n getFormsDefinition() {\r\n return readFormsDefinition();\r\n }\r\n}\r\n","import fieldProps from '../fieldProps';\r\n\r\nconst NumProps: string[] = [\r\n fieldProps.PROPERTY_SIZE,\r\n fieldProps.PROPERTY_ROWS,\r\n fieldProps.PROPERTY_COLSPAN,\r\n fieldProps.PROPERTY_ROWSPAN,\r\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\r\n fieldProps.PROPERTY_GRID_HEIGHT,\r\n fieldProps.PROPERTY_MAX_REG_GRID,\r\n];\r\n\r\nexport default NumProps;\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst valueParsers: ((\r\n key: string,\r\n value: unknown,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n return next();\r\n } else if (typeof value === 'number') {\r\n return next();\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n return { key, value: parseBoolean(value as string) };\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n return { key, value: parseInt((value as string) || '', 10) };\r\n }\r\n next();\r\n },\r\n];\r\n\r\nexport function parseFakeJSON<T extends Record<string, unknown>>(str: string) {\r\n const res = new Function(`const form = ${str}; return form;`)() as T;\r\n\r\n const ret: T = {} as T;\r\n\r\n for (const [key, value] of Object.entries(res)) {\r\n for (const p of valueParsers) {\r\n let next = false;\r\n const t = p(key, value, () => {\r\n next = true;\r\n });\r\n if (!next && t) {\r\n (ret as any)[t.key] = t.value;\r\n } else {\r\n (ret as any)[key] = value;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n","import { arrayOrArray } from '../../../../util';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../../util/other/parseFakeJSON';\r\nimport { Field } from '../Field';\r\nimport { Form } from '../Form';\r\nimport { Execution } from '../..';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\nexport type GridEvents =\r\n | 'onRowAdd'\r\n | 'onRowDelete'\r\n | 'onRowSort'\r\n | 'onColSelect';\r\n\r\nexport type FieldState = {\r\n properties: any;\r\n value?: any;\r\n};\r\n\r\nexport class FieldsGroup {\r\n constructor(\r\n protected fields: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {}\r\n\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n\r\n getAllFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n getField(field: string) {\r\n return (\r\n this.getFieldById(field) ||\r\n this.getFieldByName(field) ||\r\n this.getFieldByAttributeName(field)\r\n );\r\n }\r\n getFieldByAttributeId(attId: string | number) {\r\n return this.fieldsByAttributeId.get(String(attId));\r\n }\r\n getFieldByAttributeName(attName: string) {\r\n return this.fieldsByAttributeName.get(attName);\r\n }\r\n getFieldById(id: string | number) {\r\n return this.fieldsById.get(String(id));\r\n }\r\n getFieldByName(name: string) {\r\n return this.fieldsByName.get(name);\r\n }\r\n async init(form: Form, index: number) {\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n Execution.instance.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor({ ...field, index });\r\n await newField.init(form);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties.name) {\r\n this.fieldsByName.set(\r\n newField.properties.name,\r\n newField as Field<any>,\r\n );\r\n }\r\n newField.properties.inGrid = true;\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","export function noNaN(number: unknown, defaultReturn = 0) {\r\n const returnNumber = Number(number);\r\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\r\n return returnNumber;\r\n}\r\n","import { TApiaFieldBaseDefinition } from '../../../InitialData/types/TApiaField';\r\nimport { FieldWithIndexedFieldsProps } from './types';\r\nimport { Field } from '../Field';\r\nimport { FieldState, FieldsGroup } from './FieldsGroup';\r\nimport { Form } from '../Form';\r\nimport { noNaN } from '../../../../util/number/noNaN';\r\nimport { action, makeObservable, observable } from 'mobx';\r\n\r\nexport abstract class FieldWithIndexedFields<\r\n FieldProps extends FieldWithIndexedFieldsProps = FieldWithIndexedFieldsProps,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends Record<string, unknown> = Record<string, unknown>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n {\r\n definition: Omit<FieldDefinition, 'properties'> &\r\n FieldWithIndexedFieldsProps;\r\n } & State\r\n> {\r\n protected managedAttIds = new Set<string | number>();\r\n protected managedAttNames = new Set<string>();\r\n protected managedFieldIds = new Set<string | number>();\r\n protected managedFieldsNames = new Set<string>();\r\n\r\n constructor(\r\n definition: FieldDefinition,\r\n protected fieldsDefinitions: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >[],\r\n protected fieldsStates: FieldState[][],\r\n ) {\r\n super(definition);\r\n\r\n fieldsDefinitions.forEach((current) => {\r\n this.managedFieldIds.add(current.id);\r\n if ((current as any).name) {\r\n this.managedFieldsNames.add((current as any).name);\r\n }\r\n if ((current as any).attName) {\r\n this.managedAttNames.add((current as any).attName);\r\n }\r\n if ((current as any).attId) {\r\n this.managedAttIds.add((current as any).attId);\r\n }\r\n });\r\n\r\n makeObservable(this as any, {\r\n fieldsGroups: observable,\r\n isMaximized: observable,\r\n addGroup: action,\r\n });\r\n }\r\n\r\n protected fieldsGroups: FieldsGroup[] = [];\r\n public isMaximized = false;\r\n protected getFieldsGroupByIndex(index: number) {\r\n const pageSize =\r\n this.properties.pageSize === Infinity || !this.properties.paged\r\n ? 0\r\n : this.properties.pageSize;\r\n\r\n const startIndex = noNaN(pageSize * (this.properties.currentPage - 1), 0);\r\n\r\n return this.fieldsGroups[Math.abs(index - startIndex)];\r\n }\r\n\r\n protected async addGroup(group: FieldsGroup) {\r\n // Check if pageSize is finite\r\n const pageSize = this.properties.pageSize;\r\n const offset = Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0; // When pageSize is Infinity, we treat it as a single page\r\n\r\n const index = this.fieldsGroups.length + offset;\r\n\r\n await group.init(this.form, index);\r\n\r\n this.fieldsGroups.push(group);\r\n this.properties.rowsCount =\r\n (Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0) + this.fieldsGroups.length;\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form): Promise<void> {\r\n if (!this.#hasInited) {\r\n this.#hasInited = true;\r\n await super.init(form);\r\n }\r\n\r\n const indices = new Array(this.fieldsStates[0]?.length || 0)\r\n .fill(1)\r\n .map((_, i) => i);\r\n const newRows: FieldsGroup[] = [];\r\n\r\n for await (const index of indices) {\r\n const group = new FieldsGroup(\r\n this.fieldsDefinitions.map((current, columnIndex) => {\r\n form.addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.fieldsStates[columnIndex][index],\r\n };\r\n }),\r\n );\r\n\r\n await group.init(form, index);\r\n newRows[index] = group;\r\n }\r\n\r\n this.fieldsGroups = newRows;\r\n }\r\n\r\n getAllColumns() {\r\n return [...Object.values(this.fieldsGroups)].map((c) => c.getAllFields());\r\n }\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n getField(field: string, index?: number) {\r\n if (this.managedFieldsNames.has(field) || this.managedAttNames.has(field)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getField(field);\r\n } else {\r\n return [...this.fieldsGroups.values()].map((current) =>\r\n current.getField(field),\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByAttributeId(attId);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByAttributeId(attId),\r\n );\r\n }\r\n }\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByAttributeName(\r\n attName,\r\n );\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByAttributeName(attName),\r\n );\r\n }\r\n }\r\n }\r\n getFieldById(id: string | number, index?: number) {\r\n if (this.managedFieldIds.has(id)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldById(id);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldById(id),\r\n );\r\n }\r\n }\r\n }\r\n getFieldByName(name: string, index?: number) {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByName(name);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByName(name),\r\n );\r\n }\r\n }\r\n }\r\n getRow(index: number) {\r\n return this.getFieldsGroupByIndex(index)?.getAllFields();\r\n }\r\n\r\n getStartIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n getRowsIndices(): number[] {\r\n const minIndex = this.getStartIndex();\r\n const maxIndex = minIndex + this.fieldsGroups.length;\r\n const size = maxIndex - minIndex;\r\n\r\n return new Array(size).fill(1).map((_, i) => i + minIndex);\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const fg of this.fieldsGroups) {\r\n for await (const field of fg.getAllFields()) {\r\n if (field instanceof Field) {\r\n const result = await field.validate();\r\n if (!result && isValid && !firstInvalid) {\r\n isValid = false;\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n}\r\n","import {\r\n TApiaForm,\r\n TApiaFormProperties,\r\n TFormEventName,\r\n} from '../../InitialData/types/TApiaForm';\r\nimport { Execution } from '..';\r\nimport { TSignaturesData } from './types';\r\nimport { Field } from './Field';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { arrayOrArray } from '../../../util/array/arrayOrArray';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { FieldWithIndexedFields } from './FieldWithIndexedFields';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\r\n\r\nexport class Form extends WithProperties<TApiaFormProperties> {\r\n fields: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n state = { isMarkedToSign: false };\r\n protected customComponents: Map<string, CustomComponent> = new Map();\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsGroups = new Map<string, FieldWithIndexedFields>();\r\n definition: TApiaForm = {} as TApiaForm;\r\n\r\n constructor(definition: TApiaForm) {\r\n const props = parseFakeJSON<TApiaFormProperties>(definition.properties);\r\n super(props);\r\n makeObservable<Form, 'state'>(this, {\r\n state: observable,\r\n });\r\n\r\n this.definition = definition;\r\n this.fields = arrayOrArray(definition.field).sort((a, b) => {\r\n if (a.y < b.y) return -1;\r\n if (a.y > b.y) return 1;\r\n\r\n if (a.x < b.x) return -1;\r\n if (a.x > b.x) return 1;\r\n\r\n return 0;\r\n });\r\n this.state.isMarkedToSign = this.definition.markedToSign;\r\n }\r\n\r\n closeForm() {\r\n this.properties.prpFrmClosed = true;\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getAllFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n getCustomComponents() {\r\n return [...this.customComponents.values()];\r\n }\r\n\r\n getField(field: string, index?: number) {\r\n const found =\r\n this.getFieldById(field) ||\r\n this.getFieldByName(field) ||\r\n this.getFieldByAttributeId(field) ||\r\n this.getFieldByAttributeName(field);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getField(field, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n const found = this.fieldsByAttributeId.get(String(attId));\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeId(attId, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n const found = this.fieldsByAttributeName.get(attName);\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeName(attName, index);\r\n return res;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(id: string | number, index?: number) {\r\n const found = this.fieldsById.get(String(id));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldById(id, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldByName(name: string): Field | Field[] | undefined;\r\n getFieldByName(name: string, index: number): Field | undefined;\r\n getFieldByName(name: string, index?: number) {\r\n const found = this.fieldsByName.get(String(name));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByName(name, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n async markFormToSign() {\r\n void post<{ success: boolean }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'markFormToSign',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n sign: !this.state.isMarkedToSign,\r\n react: true,\r\n }),\r\n ).then((res) => {\r\n if (res?.data && res.data.success) {\r\n this.state.isMarkedToSign = !this.state.isMarkedToSign;\r\n }\r\n });\r\n }\r\n\r\n async viewSigns(): Promise<TSignaturesData | undefined> {\r\n const res = await get<TSignaturesData>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'viewSigns',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n react: true,\r\n }),\r\n );\r\n if (res?.data) {\r\n return res.data;\r\n }\r\n }\r\n\r\n private cucCmpByAttId = new Map<number, CustomComponent>();\r\n private cucCmpByFldId = new Map<number, CustomComponent>();\r\n private cucCmpByAttName = new Map<string, CustomComponent>();\r\n\r\n getCustomComponentByFldId(fldId: number) {\r\n return this.cucCmpByFldId.get(fldId);\r\n }\r\n\r\n getCustomComponentByAttId(attId: number) {\r\n return this.cucCmpByAttId.get(attId);\r\n }\r\n\r\n getCustomComponentByAttName(attName: string) {\r\n return this.cucCmpByAttName.get(attName);\r\n }\r\n\r\n private mustRenderFields: string[] = [];\r\n\r\n public addFieldToRender(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields.push(fldId + '_' + fldIndex);\r\n }\r\n\r\n public markFieldAsRendered(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields = this.mustRenderFields.filter(\r\n (c) => c !== fldId + '_' + fldIndex,\r\n );\r\n if (this.mustRenderFields.length === 0) {\r\n Execution.instance.markFormAsRendered(\r\n this.definition.frmParent,\r\n this.definition.formName,\r\n );\r\n }\r\n }\r\n\r\n async init() {\r\n const cusFields = arrayOrArray(this.definition.customField);\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n this.mustRenderFields.push(field.id + '_' + (field.index ?? 0));\r\n }\r\n for await (const customComponent of cusFields) {\r\n this.mustRenderFields.push(customComponent.id + '_' + 0);\r\n }\r\n for await (const customComponent of cusFields) {\r\n const cc = new CustomComponent(customComponent);\r\n await cc.init(this);\r\n this.customComponents.set(customComponent.id, cc);\r\n arrayOrArray(customComponent.state.state.attribute).forEach((a) => {\r\n this.cucCmpByAttId.set(Number.parseInt(String(a.attId)), cc);\r\n this.cucCmpByAttName.set(a.attName, cc);\r\n this.cucCmpByFldId.set(Number.parseInt(String(customComponent.id)), cc);\r\n });\r\n }\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n Execution.instance.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor(field);\r\n await newField.init(this);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties?.name) {\r\n this.fieldsByName.set(\r\n String(newField.properties?.name),\r\n newField as Field<any>,\r\n );\r\n }\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n\r\n if (newField instanceof FieldWithIndexedFields) {\r\n this.fieldsGroups.set(String(newField.definition.id), newField);\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n async runEvent(eventType: TFormEventName) {\r\n switch (eventType) {\r\n case 'onLoad':\r\n break;\r\n }\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const field of this.getAllFields()) {\r\n if (field instanceof FieldWithIndexedFields) {\r\n const result = await field.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n isValid = false;\r\n } else {\r\n isValid = isValid && result === true;\r\n }\r\n } else if (field instanceof Field) {\r\n isValid = (await field.validate()) && isValid;\r\n if (!isValid && !firstInvalid) {\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n}\r\n","import { TApiaButtonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport type ButtonEvents = 'onClick';\r\n\r\nexport class Button extends Field<TApiaButtonProperties> {\r\n fireEvent(eventName: ButtonEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\nimport { TApiaCaptchaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { labels } from '../../../../../util/labels/labels';\r\n\r\nexport class Captcha extends Field<\r\n TApiaCaptchaProperties,\r\n TApiaFieldBaseDefinition<TApiaCaptchaProperties>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<TApiaCaptchaProperties>,\r\n 'properties'\r\n >;\r\n value: string;\r\n url: string;\r\n }\r\n> {\r\n private static emitter = new EventEmitter<{ confirm: null }>();\r\n public static reload() {\r\n this.emitter.emit('confirm', null);\r\n }\r\n\r\n private id: string = '';\r\n\r\n private static confirmParams: Record<string, string> = {};\r\n public static getConfirmParams() {\r\n return this.confirmParams;\r\n }\r\n\r\n constructor(definition: TApiaCaptchaProperties) {\r\n super(definition as TApiaFieldBaseDefinition<TApiaCaptchaProperties>);\r\n this.state.value = '';\r\n this.properties.name = '__captcha__';\r\n\r\n Captcha.emitter.on('confirm', () => {\r\n this.generateImgUrl();\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.id = this.getCaptchaId();\r\n this.generateImgUrl();\r\n }\r\n\r\n private getCaptchaId() {\r\n return `${window.TAB_ID}${this.form.definition.frmParent}_${this.form.definition.id}`;\r\n }\r\n public getUrl() {\r\n return this.state.url;\r\n }\r\n\r\n public generateImgUrl() {\r\n this.state.url = `${window.CONTEXT}/captchaImg?captchaName=${this.getId()}&t=${new Date().getTime()}`;\r\n }\r\n\r\n public generateVoiceUrl() {\r\n return `${window.CONTEXT}/captchaAudio?captchaName=${this.getId()}&t=${new Date().getTime()}&langCode=${window.LANG_CODE}`;\r\n }\r\n\r\n public getId() {\r\n return this.id;\r\n }\r\n\r\n public setValue(value: string) {\r\n this.state.value = value;\r\n this.state.validation.errorMessage = '';\r\n Captcha.confirmParams = { [this.id]: value };\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n this.id = this.getCaptchaId();\r\n if (this.state.value === '') {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n } else {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n }\r\n}\r\n","import { TApiaCheckboxProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype CheckboxEvents = 'onClick';\r\n\r\nexport class Checkbox extends FieldWithAttribute<\r\n TApiaCheckboxProperties,\r\n boolean\r\n> {\r\n fireEvent(eventName: CheckboxEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n protected getInitialValue({\r\n value,\r\n properties,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaCheckboxProperties>): boolean {\r\n return value === undefined || value === ''\r\n ? properties.checked || value\r\n : value;\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { TTranslationState } from './types';\r\nimport { post } from '../../../../util';\r\n\r\nexport class Translation {\r\n state: TTranslationState;\r\n\r\n constructor(state: Pick<TTranslationState, 'id' | 'label' | 'isTranslated'>) {\r\n this.state = {\r\n ...state,\r\n hasChanged: false,\r\n isTranslated: state.isTranslated,\r\n tempValue: '',\r\n };\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n cancelTranslation() {\r\n this.reset();\r\n }\r\n\r\n async readTranslations(url: string) {\r\n if (this.state.remoteValue === undefined) {\r\n const result = await post<{ values: { value: { text: string } } }>(url);\r\n\r\n const newValue = result?.data?.values?.value?.text;\r\n this.state.tempValue =\r\n newValue !== 'null' ? result?.data?.values?.value?.text ?? '' : '';\r\n this.state.remoteValue = this.state.tempValue;\r\n }\r\n }\r\n\r\n reset() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n }\r\n\r\n setTempValue(str: string) {\r\n this.state.tempValue = str;\r\n this.state.hasChanged = str !== this.state.remoteValue;\r\n }\r\n\r\n submitTranslation(value: string, url: string) {\r\n if (this.state.hasChanged) {\r\n post(url, {\r\n postData: { value },\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n postDataTreatment: 'stringify',\r\n });\r\n }\r\n\r\n this.state.isTranslated = this.value !== '';\r\n this.reset();\r\n }\r\n\r\n get langId() {\r\n return this.state.id;\r\n }\r\n\r\n get value() {\r\n return this.state.tempValue;\r\n }\r\n}\r\n","export function parseFakeJSON(fakeJSON: string) {\r\n return [...fakeJSON.matchAll(/(\\d+): '?([^']+)'?/g)].map(([, k, v]) => ({\r\n id: k,\r\n label: v,\r\n }));\r\n}\r\n","import { TApiaFieldWithAttributeBaseProps } from '../../../InitialData/types/TApiaField';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Form } from '../Form';\r\nimport { TApiaTranslatableFieldProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { Translation } from './Translation';\r\nimport { parseFakeJSON } from './util';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\ninterface InitialTradMap {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport abstract class TranslatableField<\r\n FieldProps extends\r\n TApiaTranslatableFieldProperties = TApiaTranslatableFieldProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends FieldWithAttribute<FieldProps, ValueType, FieldDefinition> {\r\n translations = new Map<string, Translation>();\r\n selectedLanguageId = this.getLanguages()[0]?.id;\r\n isTradLoading = false;\r\n definitionTradParsed: InitialTradMap = {};\r\n\r\n constructor(props: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(props);\r\n makeObservable(this, {\r\n translations: observable,\r\n selectedLanguageId: observable,\r\n isTradLoading: observable,\r\n });\r\n }\r\n\r\n private extractTrad() {\r\n const tradMap: InitialTradMap = {};\r\n const regex = /(\\d+)\\s*:\\s*(true|false)/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(this.definition.trad ?? '{}')) !== null) {\r\n const key = match[1];\r\n const value = match[2] === 'true';\r\n tradMap[key] = value;\r\n }\r\n\r\n this.definitionTradParsed = tradMap;\r\n }\r\n\r\n private getLanguages() {\r\n return arrayOrArray(parseFakeJSON(this.getForm().definition?.langs ?? ''));\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n if (this.getLanguages().length > 0) {\r\n this.extractTrad();\r\n this.getLanguages().forEach((lang) => {\r\n const isTranslated = this.definitionTradParsed[lang.id] ?? false;\r\n this.translations.set(\r\n lang.id,\r\n new Translation({\r\n id: lang.id,\r\n label: lang.label,\r\n isTranslated: isTranslated,\r\n }),\r\n );\r\n });\r\n\r\n this.selectedLanguageId = this.getLanguages()[0].id;\r\n }\r\n }\r\n\r\n public cancelTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.reset();\r\n });\r\n }\r\n\r\n public async changeLanguage(langId: string) {\r\n this.selectedLanguageId = langId;\r\n this.syncTranslation();\r\n }\r\n\r\n public getTranslation(id: string) {\r\n return this.translations.get(id);\r\n }\r\n\r\n public getCurrentTranslation() {\r\n return this.translations.get(this.selectedLanguageId);\r\n }\r\n\r\n public getTranslations() {\r\n return this.translations;\r\n }\r\n\r\n public submitTranslations() {\r\n [...this.getTranslations().values()]\r\n .filter((c) => c.state.hasChanged)\r\n .forEach((c) => {\r\n c.submitTranslation(\r\n c.value,\r\n this.getSynchronizeUrl({\r\n react: true,\r\n preventAsXmlParameter: true,\r\n langId: c.langId,\r\n }),\r\n );\r\n });\r\n }\r\n\r\n public async syncTranslation() {\r\n const langId = this.selectedLanguageId;\r\n this.isTradLoading = true;\r\n\r\n await this.getTranslation(langId)?.readTranslations(\r\n await makeApiaUrl({\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'getFieldTranslations',\r\n frmId: this.getForm().definition.id,\r\n frmParent: this.getForm().definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n langId,\r\n react: true,\r\n }),\r\n );\r\n\r\n this.isTradLoading = false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n const isSuperValid = await super.validate();\r\n let isValid = isSuperValid;\r\n\r\n if (isSuperValid && this.properties.reqTrad) {\r\n const translations = [...this.getTranslations().values()];\r\n\r\n const tradNotValidated = translations.find((c) => !c.state.isTranslated);\r\n\r\n if (tradNotValidated) {\r\n this.state.validation.errorMessage = `El idioma ${tradNotValidated.state.label} es requerido`;\r\n isValid = false;\r\n } else {\r\n this.state.validation.errorMessage = null;\r\n }\r\n }\r\n return isValid;\r\n }\r\n}\r\n","import { TApiaEditorProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport type EditorEvents = 'onChange';\r\n\r\nexport class Editor extends TranslatableField<TApiaEditorProperties, string> {\r\n fireEvent(eventName: EditorEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TModalConfig,\r\n TUploadModalOpener,\r\n UploaderModalState,\r\n} from './types';\r\nimport { cloneDeep, getLabel } from '@apia/util';\r\n\r\nfunction getFileExtension(fileName: string): string {\r\n const parts = fileName.split('.');\r\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\r\n}\r\n\r\nconst initialState: Readonly<UploaderModalState> = Object.freeze({\r\n metadata: {\r\n metadataArray: [],\r\n freeMetadataArray: [],\r\n isFreeMetadata: false,\r\n },\r\n docFolder: undefined,\r\n docExpDate: undefined,\r\n description: '',\r\n permissions: {\r\n pools: [],\r\n users: window.DOCUMENT_OWNER_PRIVILEGES\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: window.CURRENT_USER_LOGIN,\r\n userLogin: window.CURRENT_USER_LOGIN,\r\n },\r\n ]\r\n : [],\r\n allowAllType: ((window.DOCUMENT_EVERYONE_PERMISSION as any as boolean) !==\r\n false\r\n ? 'M'\r\n : '') as '',\r\n },\r\n fileReqError: false,\r\n});\r\n\r\nexport class UploaderModalController {\r\n public state: UploaderModalState = cloneDeep(initialState);\r\n\r\n constructor(\r\n public api: UploaderApi,\r\n public modalConfig: TModalConfig,\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n }\r\n\r\n public get allMetadata() {\r\n return [\r\n ...this.state.metadata.metadataArray,\r\n ...this.state.metadata.freeMetadataArray,\r\n ];\r\n }\r\n\r\n public get allowAllType() {\r\n return this.state.permissions.allowAllType;\r\n }\r\n\r\n public get description() {\r\n return this.state.description;\r\n }\r\n\r\n public get docFolder() {\r\n return this.state.docFolder;\r\n }\r\n\r\n public get docExpDate() {\r\n return this.state.docExpDate;\r\n }\r\n\r\n public get docTypes() {\r\n return this.api.getDocTypes();\r\n }\r\n\r\n public get freeMetadata() {\r\n return this.state.metadata.freeMetadataArray;\r\n }\r\n\r\n public get exitingFiles() {\r\n return this.api.getExistingFiles();\r\n }\r\n\r\n public get inProgressFiles() {\r\n return this.api.getInProgressFiles();\r\n }\r\n\r\n public get hiddenFiles() {\r\n return this.api.getHiddenFiles();\r\n }\r\n\r\n public get progress() {\r\n return this.api.getProgress();\r\n }\r\n\r\n public get metadata() {\r\n return this.state.metadata.metadataArray;\r\n }\r\n\r\n public get selectedDocTypeId() {\r\n return this.api.getCurrentDocTypeId();\r\n }\r\n\r\n public get selectedDocType() {\r\n return this.api.getCurrentDocType();\r\n }\r\n\r\n public addMetadata() {\r\n this.state.metadata.freeMetadataArray.push({\r\n free: 'Y',\r\n id: String(Math.random()),\r\n name: '',\r\n required: 'Y',\r\n title: '',\r\n type: 'S',\r\n value: '',\r\n errorMessage: '',\r\n });\r\n }\r\n\r\n public addFiles(files: File[]) {\r\n this.state.fileReqError = false;\r\n this.api.addFiles(files);\r\n }\r\n\r\n public async changeDocType(docTypeId: string) {\r\n this.resetMetadata();\r\n this.api.setCurrentDocTypeId(docTypeId);\r\n this.onChangeExtension();\r\n this.api.reloadMetadata({ docTypeId });\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.api.clearFile(name);\r\n }\r\n\r\n public clearFiles() {\r\n this.api.clearFiles();\r\n }\r\n\r\n public clearState() {\r\n this.state = cloneDeep(initialState);\r\n this.api.clearState();\r\n }\r\n\r\n public async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal();\r\n return isValid;\r\n }\r\n\r\n public deleteMetadata(indices: number[]) {\r\n const deleteSet = new Set(indices);\r\n this.state.metadata.freeMetadataArray =\r\n this.state.metadata.freeMetadataArray.filter(\r\n (c, index) => c.free !== 'Y' || !deleteSet.has(index),\r\n );\r\n }\r\n\r\n public deletePermission(item: IPoolsPermissions | IUsersPermissions) {\r\n if (item && 'userId' in item) {\r\n this.state.permissions.users = this.state.permissions.users.filter(\r\n (c) => c.userId !== item.userId,\r\n );\r\n } else {\r\n this.state.permissions.pools = this.state.permissions.pools.filter(\r\n (c) => c.poolId !== item.poolId,\r\n );\r\n }\r\n }\r\n\r\n protected onChangeExtension(): void {\r\n const rawDocExts = this.api.getCurrentDocType()?.docExts || '';\r\n let hideFileNames = '';\r\n const allowedExtensions = rawDocExts\r\n .split(';')\r\n .map((ext) => ext.trim())\r\n .filter((ext) => ext !== '');\r\n\r\n if (rawDocExts === '') {\r\n const allFiles = [...this.inProgressFiles, ...this.hiddenFiles];\r\n const dedupedFiles = Array.from(\r\n new Map(allFiles.map((file: File) => [file.name, file])).values(),\r\n );\r\n this.api.state.inProgressFiles = dedupedFiles;\r\n this.api.state.hiddenFiles = [];\r\n return;\r\n }\r\n\r\n const allowedInProgress: File[] = [];\r\n const toHide: File[] = [];\r\n this.inProgressFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedInProgress.push(file);\r\n } else {\r\n toHide.push(file);\r\n hideFileNames += ` ${file.name} `;\r\n }\r\n });\r\n\r\n const allowedHidden: File[] = [];\r\n const stillHidden: File[] = [];\r\n this.api.state.hiddenFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedHidden.push(file);\r\n } else {\r\n stillHidden.push(file);\r\n }\r\n });\r\n\r\n const combinedInProgress = [...allowedInProgress, ...allowedHidden];\r\n const dedupedInProgress = Array.from(\r\n new Map(\r\n combinedInProgress.map((file: File) => [file.name, file]),\r\n ).values(),\r\n );\r\n const combinedHidden = [...toHide, ...stillHidden];\r\n const dedupedHidden = Array.from(\r\n new Map(combinedHidden.map((file: File) => [file.name, file])).values(),\r\n );\r\n\r\n this.api.state.inProgressFiles = dedupedInProgress;\r\n this.api.state.hiddenFiles = dedupedHidden;\r\n if (hideFileNames)\r\n this.api.notify({\r\n title: getLabel('msgFileWrngExt').text,\r\n message: hideFileNames,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n public async openModal() {\r\n const a = 'openUploaderModal';\r\n import(\r\n /* webpackInclude: /\\.tsx?$/ */\r\n `/src/dynamic/files/${a}`\r\n ).then((r) => {\r\n (r as { default: TUploadModalOpener }).default(this);\r\n });\r\n }\r\n\r\n public setDescription(desc: string) {\r\n this.state.description = desc;\r\n }\r\n\r\n protected async resetMetadata() {\r\n this.state.metadata = {\r\n freeMetadataArray: [],\r\n metadataArray: [],\r\n isFreeMetadata: false,\r\n };\r\n }\r\n\r\n public validate(): boolean {\r\n let isValid = true;\r\n this.state.fileReqError = false;\r\n if (this.api.getInProgressFiles().length === 0) {\r\n this.state.fileReqError = true;\r\n isValid = false;\r\n }\r\n\r\n this.allMetadata.forEach((c) => {\r\n if (c.required === 'Y') {\r\n if (c.value.trim() === '' || c.name.trim() === '') {\r\n c.errorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n } else {\r\n c.errorMessage = '';\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n}\r\n","import { ApiaApi, makeApiaUrl } from '@apia/api';\r\n\r\nimport {\r\n addBoundary,\r\n arrayOrArray,\r\n cloneDeep,\r\n downloadUrl,\r\n formatMessage,\r\n parseAsSize,\r\n TApiaFunction,\r\n TApiaLoad,\r\n toBoolean,\r\n} from '@apia/util';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TAjaxUploadFileStatus,\r\n TAjaxUploadStart,\r\n TApiaDocumentDefinition,\r\n TConfirmDropModal,\r\n TDocType,\r\n TDocumentMetadata,\r\n TFileUploaded,\r\n TProcessDroppedFiles,\r\n TSaveDroppedFilesConf,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploaderLoadCurrentFunction,\r\n TUploaderLoadCurrentFunctionMessages,\r\n UploaderState,\r\n TDocumentInformation,\r\n TRequireOnlyOne,\r\n} from './types';\r\nimport { UploaderModalController } from './UploaderModalController';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { NotificationDefinition } from '../../Notifications/Notification';\r\nimport QueryString from 'qs';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Execution } from '..';\r\n\r\n/**\r\n * El comportamiento de esta función se explica por su\r\n * nombre.\r\n */\r\nexport function returnExactlyTheSame(\r\n defaultParameters: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n return defaultParameters;\r\n}\r\n\r\nexport const parseFileDefinition = (\r\n fileDefinition: TFileUploaded | TUploaderFileInfo,\r\n isSignRequired: boolean,\r\n): TUploaderFileInfo => {\r\n const { lock, locked, lockedBy, userLocking, ...file } =\r\n fileDefinition as TFileUploaded;\r\n\r\n return {\r\n ...file,\r\n isLocked: !!lockedBy || String(lock || locked) === 'true',\r\n isLockedByMe: (lockedBy || userLocking) === window.CURRENT_USER_LOGIN,\r\n isMarkedToSign: file.markedToSign || toBoolean(file.sign) || isSignRequired,\r\n isVirtual: file.virtualDoc ?? false,\r\n lockingUser: lockedBy || userLocking,\r\n };\r\n};\r\nexport type TOnUploadProgress = (progress: number) => void;\r\nexport class UploaderApi {\r\n maxFiles = Infinity;\r\n modalController: UploaderModalController | null = null;\r\n allowTranslations = false;\r\n langs: Record<number, string> | undefined;\r\n currentConfiguration: TUploaderLoadCurrentFunctionMessages | undefined;\r\n docTypePermittedObjId;\r\n state: UploaderState = {\r\n progress: 0,\r\n allowedTypes: [],\r\n selectedDocTypeId: '1',\r\n versioningFile: null,\r\n inProgressFiles: [],\r\n files: {},\r\n selectedFiles: [],\r\n hiddenFiles: [],\r\n translatedFiles: new Map(),\r\n hasAllDocTypes: false,\r\n };\r\n get filesArray() {\r\n return Object.values(this.state.files);\r\n }\r\n\r\n constructor(\r\n public id: string,\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n this.allowTranslations = type === 'E' && !!window.DOC_LANGS;\r\n this.langs = window.DOC_LANGS;\r\n try {\r\n this.docTypePermittedObjId =\r\n type === 'E' ? window.docTypePerEntId : window.docTypePerProId;\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n\r\n //TODO sacar\r\n window.fileApi = this as any as string;\r\n }\r\n async onInit() {\r\n await this.ajaxUploadStart();\r\n await this.reloadMetadata({\r\n docTypeId: this.state.selectedDocTypeId,\r\n });\r\n await this.loadCurrentDocuments();\r\n }\r\n\r\n async onStartUpload() {\r\n if (window.OneClickUploadEnabled) {\r\n console.warn('HACER ONECLIOCK UPLOAD');\r\n } else {\r\n this.onInit();\r\n this.modalController = new UploaderModalController(\r\n this,\r\n this.modalConfig,\r\n );\r\n this.modalController.openModal();\r\n }\r\n }\r\n\r\n async autoLock(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n public notify(notification: NotificationDefinition) {\r\n Notifications.instance.add(new MessageNotification(notification));\r\n }\r\n\r\n protected getAjaxUrl(): string {\r\n return window.URL_REQUEST_AJAX;\r\n }\r\n\r\n public getDocTypes() {\r\n return this.state.allowedTypes;\r\n }\r\n\r\n public getCurrentDocTypeId() {\r\n return this.state.selectedDocTypeId;\r\n }\r\n\r\n public getCurrentDocType() {\r\n return this.state.allowedTypes.find(\r\n (c) => c.id === this.state.selectedDocTypeId,\r\n );\r\n }\r\n\r\n public getInProgressFiles() {\r\n return this.state.inProgressFiles;\r\n }\r\n\r\n public getHiddenFiles() {\r\n return this.state.hiddenFiles;\r\n }\r\n\r\n public getExistingFiles() {\r\n return this.state.files;\r\n }\r\n\r\n public getProgress() {\r\n return this.state.progress;\r\n }\r\n\r\n public getHasAllDocTypes() {\r\n return this.state.hasAllDocTypes;\r\n }\r\n\r\n async getDocumentInfo(\r\n {\r\n docId: apiId,\r\n downloadDocId: docId,\r\n }: TRequireOnlyOne<{ docId: string; downloadDocId: string }>,\r\n newElem?: boolean,\r\n ) {\r\n const id = apiId ? this.indexedFiles[apiId].docId : docId;\r\n const result = await ApiaApi.post<TDocumentInformation>(\r\n makeApiaUrl(\r\n this.getDocumentInfoParameters({\r\n action: 'getDocumentInfo',\r\n isAjax: true,\r\n docId: id,\r\n newElem,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n return result.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Devuelve un proxy que permite modificar los\r\n * archivos por su id.\r\n */\r\n get indexedFiles() {\r\n return new Proxy(cloneDeep(this.state.files), {\r\n get: (files, prop) => {\r\n if (prop in files) return files[prop as any];\r\n\r\n const translatedFilesArr = Array.from(\r\n this.state.translatedFiles.values(),\r\n );\r\n for (let i = 0; i < translatedFilesArr.length; i++) {\r\n const translatedLangs = Object.values(translatedFilesArr[i]);\r\n for (let j = 0; j < translatedLangs.length; j++) {\r\n if (translatedLangs[j].docId === prop) return translatedLangs[j];\r\n }\r\n }\r\n\r\n return undefined;\r\n },\r\n set: (_, __, value: TUploaderFileInfo) => {\r\n this.state.files[value.docId] = value;\r\n return true;\r\n },\r\n });\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.state.inProgressFiles = this.state.inProgressFiles.filter(\r\n (c) => c.name !== name,\r\n );\r\n }\r\n\r\n public clearFiles() {\r\n this.state.inProgressFiles = [];\r\n this.state.hiddenFiles = [];\r\n }\r\n\r\n public clearState() {\r\n this.state.selectedDocTypeId = '1';\r\n this.state.inProgressFiles = [];\r\n }\r\n\r\n async checkLockDocument(id: string, shouldNotifyUnlocked = true) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n if (Number(file.docId) < 0) return true;\r\n\r\n const result = await ApiaApi.post<{\r\n success: 'ok' | 'unlocked';\r\n usr: string;\r\n }>(\r\n makeApiaUrl(\r\n this.getCheckLockDocumentParameters({\r\n action: 'checkLockDocument',\r\n docId: file.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n const isLocked = result?.data?.success === 'ok';\r\n if (\r\n !isLocked &&\r\n result?.data?.usr &&\r\n result.data.usr !== window.CURRENT_USER_LOGIN\r\n ) {\r\n this.notify({\r\n message: `${window.MSG_DOC_LOCKED_BY_USR.split('.')[0]}: ${\r\n result.data.usr\r\n }.`,\r\n type: 'warning',\r\n });\r\n return result.data.usr;\r\n }\r\n if (!isLocked && shouldNotifyUnlocked && !(await this.autoLock()))\r\n this.notify({\r\n message: window.MSG_DOC_MUST_BE_LOCKED,\r\n type: 'warning',\r\n });\r\n\r\n return isLocked;\r\n }\r\n\r\n public setCurrentDocTypeId(docTypeId: string) {\r\n this.state.selectedDocTypeId = docTypeId;\r\n }\r\n\r\n public async ajaxUploadStart(newFiles: File[] = []) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n const versioningFile = this.state.versioningFile;\r\n const res = await ApiaApi.post<TAjaxUploadStart>(\r\n makeApiaUrl(\r\n this.getAjaxUploadStartParameters({\r\n action: 'ajaxUploadStart',\r\n isAjax: true,\r\n docId: versioningFile?.docId,\r\n prefix: this.type,\r\n docTypeId:\r\n newFiles.length === 1 ? versioningFile?.docTypeId || '1' : '1',\r\n newDoc: !versioningFile,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjType: this.type,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n if (res?.data) {\r\n // this.#lastUploadKnownConf = result.data;\r\n // this.resetModal();\r\n\r\n const docTypes = arrayOrArray(res?.data.function.docTypes.docType);\r\n const hasGeneric = !!docTypes.find((c) => String(c.id) === '1');\r\n\r\n // if (newFiles.length > 0) {\r\n // await this.saveDroppedFiles(newFiles, (progress) => {\r\n // console.log(progress);\r\n // });\r\n // }\r\n\r\n this.state.allowedTypes = docTypes;\r\n this.state.selectedDocTypeId = hasGeneric ? '1' : docTypes[0].id;\r\n\r\n if (newFiles.length > 0) {\r\n await this.addFiles(newFiles);\r\n }\r\n return res?.data?.function.name === 'fncDocumentLoadInformation'\r\n ? true\r\n : false;\r\n } else {\r\n throw new Error('No files data');\r\n }\r\n }\r\n\r\n public async reloadMetadata(\r\n props?: Partial<{ docId: string; docTypeId: number | string }>,\r\n additionalProps?: Record<string, unknown>,\r\n ) {\r\n if (!this.modalController) return;\r\n const res = await ApiaApi.post<{\r\n metadata: TDocumentMetadata | TDocumentMetadata[];\r\n }>(\r\n makeApiaUrl(\r\n this.getReloadMetadataParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'reloadMetadata',\r\n isAjax: true,\r\n docId: props?.docId,\r\n docTypeId: props?.docTypeId,\r\n metadata: this.getConfirmDropModalMetadataString({\r\n metadata: this.modalController?.allMetadata,\r\n }),\r\n prefix: this.type,\r\n ...additionalProps,\r\n }),\r\n ),\r\n );\r\n\r\n if (res?.data && props?.docTypeId) {\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find(\r\n (current) => current.id === props.docTypeId,\r\n )?.free ?? false;\r\n\r\n this.modalController!.state.metadata.metadataArray = arrayOrArray(\r\n res.data.metadata,\r\n );\r\n this.modalController!.state.metadata.isFreeMetadata = isFreeMetadata;\r\n }\r\n }\r\n\r\n public async addFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const {\r\n // langId,\r\n strictMode: isConfStrictMode = false,\r\n // translatingFile,\r\n } = conf ?? {};\r\n const isStrictMode = isConfStrictMode || !!this.state.versioningFile;\r\n // || !!validationsStore.fromDirectoryFile;\r\n\r\n const docType = this.getCurrentDocTypeId();\r\n\r\n if (!isStrictMode && !docType) {\r\n this.notify({\r\n message: `${window.LBL_DROP_FILE_DELETED}: ${unprocessedFiles\r\n .map((current) => current.name)\r\n .join(', ')}.`,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n const allowedFiles = this.filterAlreadyUploadedFiles(\r\n this.filterByFilesAmountLimit(\r\n this.filterAcceptedFiles(\r\n this.filterExistingFiles(\r\n this.filterVersioningFiles(unprocessedFiles, conf),\r\n conf,\r\n ),\r\n true,\r\n docType as string,\r\n ),\r\n ),\r\n conf,\r\n );\r\n\r\n const formData = new FormData();\r\n allowedFiles.forEach((file) =>\r\n formData.append('fileRepository', file, file.name),\r\n );\r\n\r\n await ApiaApi.post(\r\n makeApiaUrl(\r\n this.getSaveDroppedFilesParameters({\r\n action: 'saveDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n elemType: this.type,\r\n elemId: `prmDocumentContainter${this.type}`,\r\n frmOut: !this.modalController,\r\n docTypeId: this.state.selectedDocTypeId,\r\n ...conf,\r\n }),\r\n ),\r\n {\r\n postData: formData,\r\n axiosConfig: {\r\n onUploadProgress: (ev) =>\r\n (this.state.progress =\r\n (ev.loaded * 100) / ((ev.total ?? ev.loaded) * 2)),\r\n },\r\n },\r\n );\r\n const ajaxUploadFileStatusParameters =\r\n this.getAjaxUploadFileStatusParameters({\r\n action: 'ajaxUploadFileStatus',\r\n ajaxUrl: this.getAjaxUrl(),\r\n delayForDrop: true,\r\n isAjax: true,\r\n prefix: this.type,\r\n });\r\n\r\n let tries = 0;\r\n const checkUploadResult = async () => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n tries += 1;\r\n if (tries === 10) {\r\n this.notify({\r\n message:\r\n 'Error while checking for uploadFileStatus, too many tries',\r\n type: 'error',\r\n });\r\n resolve(false);\r\n return;\r\n }\r\n const response = await ApiaApi.post<TAjaxUploadFileStatus>(\r\n makeApiaUrl(ajaxUploadFileStatusParameters),\r\n );\r\n if (response && response.data) {\r\n const hasMessages =\r\n arrayOrArray<any>(\r\n response.data?.sysMessages?.message ??\r\n response.data?.sysExceptions?.exception ??\r\n response.data?.exceptions?.exception ??\r\n response.data.function.messages?.message,\r\n ).length > 0 || !!response.data.function.dropLastMessage;\r\n\r\n const uploadMessage = arrayOrArray(\r\n response.data.function.messages?.message,\r\n ).find((current) => current.name === 'message');\r\n if (uploadMessage)\r\n this.notify({ message: uploadMessage.label, type: 'warning' });\r\n\r\n const method = response.data?.function.name;\r\n this.state.progress = 44;\r\n if (hasMessages) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (method === 'fncProceedDocumentProcessing') {\r\n resolve(true);\r\n return;\r\n }\r\n if (tries === 10) {\r\n resolve(method === 'fncProceedDocumentProcessing');\r\n }\r\n setTimeout(() => {\r\n checkUploadResult()\r\n .then(resolve)\r\n .catch(() => resolve(false));\r\n }, 100);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n const hasUploadedCorrectly = await checkUploadResult();\r\n\r\n this.state.progress = 66;\r\n\r\n if (hasUploadedCorrectly) {\r\n const shown = (this.state.inProgressFiles ?? []).map((file) => file.name);\r\n const postData = QueryString.stringify(\r\n this.getProcessDroppedFilesPostdata({\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId?.toString(),\r\n docTypePermittedObjType: this.type,\r\n dropped: allowedFiles.map((file) => file.name).concat(shown),\r\n shown,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n const secondResult = await ApiaApi.post<TProcessDroppedFiles>(\r\n makeApiaUrl(\r\n this.getProcessDroppedFilesParameters({\r\n action: 'processDroppedFiles',\r\n elemType: this.type,\r\n docId: this.state.versioningFile?.docId,\r\n frmOut: !this.modalController,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n this.state.progress = 83;\r\n\r\n if (secondResult?.data?.function?.principal?.docInfo) {\r\n const acceptedByServerFiles = arrayOrArray(\r\n secondResult.data.function?.principal?.docInfo,\r\n );\r\n\r\n this.state.inProgressFiles = [\r\n ...(this.state.inProgressFiles ?? []),\r\n ...acceptedByServerFiles\r\n .map((current) =>\r\n [...this.state.inProgressFiles, ...unprocessedFiles].find(\r\n (search) => search.name === current.docInfoName,\r\n ),\r\n )\r\n .filter((current): current is File => !!current),\r\n ];\r\n this.state.progress = 100;\r\n\r\n this.notify({\r\n type: 'success',\r\n message: window.FILE_UPLOADED_SUCCESSFULLY,\r\n });\r\n\r\n // if (isOneClickUploadEnabled(this.configurationObject.oneClickUpload)) {\r\n // if (langId && translatingFile)\r\n // void this.confirmDropModal({ langId, translatingFile });\r\n // else void this.confirmDropModal();\r\n // } else if (!this.isModalOpen)\r\n // this.openModal({\r\n // langId,\r\n // translatingFile,\r\n // shouldReset: false,\r\n // });\r\n }\r\n }\r\n this.state.progress = 100;\r\n }\r\n\r\n async checkWebDavLock(docId: string) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n let tries = 10;\r\n const checkLockAction = async () => {\r\n const isLocked = await ApiaApi.post<{ locked: boolean }>(\r\n makeApiaUrl(\r\n this.getCheckWebDavLockParameters({\r\n action: 'isWebDavDocumentLocked',\r\n docId,\r\n ajaxUrl: window.URL_REQUEST_AJAX,\r\n }),\r\n ),\r\n );\r\n if (\r\n isLocked?.data?.locked === true ||\r\n isLocked?.data?.locked === undefined\r\n ) {\r\n if (--tries > 0) {\r\n Execution.instance.state.locked = true;\r\n setTimeout(() => void checkLockAction(), 1000);\r\n } else {\r\n Execution.instance.state.locked = false;\r\n this.notify({ message: window.MSG_FAIL_SYNC_DOCUMENT });\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(true);\r\n Execution.instance.state.locked = false;\r\n }\r\n };\r\n void checkLockAction();\r\n });\r\n }\r\n\r\n async checkSignature(file: TUploaderFileInfo) {\r\n let res = null;\r\n if (Number(file.docId) >= 0)\r\n res = await ApiaApi.get<{ markedToSign: boolean }>(\r\n makeApiaUrl({\r\n action: 'viewDocSigns',\r\n docId: file.docId,\r\n lock: false,\r\n isAjax: true,\r\n prefix: this.type,\r\n react: true,\r\n }),\r\n );\r\n return res;\r\n }\r\n\r\n async editDocument(id: string) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post<{ folderId: string }>(\r\n makeApiaUrl(\r\n this.getEditDocumentParameters({\r\n action: 'updateWebDavDocument',\r\n docId: file.docId,\r\n prefix: this.type,\r\n isAjax: true,\r\n }),\r\n ),\r\n );\r\n if (result?.data?.folderId) {\r\n const sDocumentUrl = `${window.WEBDAV_SERVER}${\r\n result?.data?.folderId\r\n }/${file.docId}/${file.name || file.docName || ''}`;\r\n\r\n const ProtocolInstallMessage = () => {\r\n this.notify({\r\n type: 'warning',\r\n message: window.MSG_NO_DOC_EDIT_PROTOCOL,\r\n title: window.LBL_EDIT,\r\n });\r\n };\r\n\r\n (window.avoidLoadEvents as any) = true;\r\n (window.ITHit as any).WebDAV.Client.DavConstants.ProtocolTimeoutMs =\r\n 10000;\r\n\r\n await (\r\n window.ITHit as any\r\n ).WebDAV.Client.DocManager.DavProtocolEditDocument(\r\n sDocumentUrl,\r\n window.WEBDAV_SERVER,\r\n ProtocolInstallMessage,\r\n null,\r\n 'Current',\r\n 'ApiaWebDavCookie', // Cookie(s) to copy.\r\n '', // URL to navigate to if any cookie from the list is not found.\r\n 'Edit',\r\n );\r\n }\r\n }\r\n }\r\n\r\n async downloadDocument(id: string, version?: string) {\r\n const file = this.indexedFiles[id];\r\n if (window.IN_MONITOR || (await this.checkWebDavLock(file.docId))) {\r\n await downloadUrl(\r\n makeApiaUrl({\r\n action: 'downloadDocument',\r\n prefix: this.type,\r\n docId: file.downloadDocId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n version,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n async deleteDocument(id: string, langId?: number) {\r\n const file = this.indexedFiles[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl(\r\n this.getDeleteDocumentParameters({\r\n action: 'ajaxRemoveDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (this.evaluateDeleteDocumentResult(result?.data))\r\n if (this.state.files[id]) delete this.state.files[id];\r\n }\r\n }\r\n\r\n async markFileToSign(id: string, langId?: number) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n this.state.files[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const marked = await ApiaApi.post<{ markedToSign: boolean }>(\r\n makeApiaUrl(\r\n this.getMarkFileToSignParameters({\r\n action: 'markDocTosign',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (marked?.data?.markedToSign !== undefined) {\r\n //TODO: ver si hay que actualizar los traduciods tambien( en todos los lugares donde se usa el indexedFiles)\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n // file.markedToSign = marked.data.markedToSign;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Por el momento realiza la descarga de todos los archivos\r\n * que estén subidos.\r\n */\r\n downloadMultipleDocuments() {\r\n const files = this.filesArray;\r\n if (files.length === 0) return;\r\n const docIds = this.state.selectedFiles;\r\n\r\n const selectedFiles = files.filter((current) =>\r\n docIds.find((search) => search === current.docId),\r\n );\r\n const ids = (selectedFiles.length > 0 ? selectedFiles : files)\r\n .map((current) => current.downloadDocId)\r\n .join('-');\r\n\r\n void downloadUrl(\r\n makeApiaUrl(\r\n this.getDownloadMultipleDocumentsParameters({\r\n action: 'multipleDownload',\r\n docId: ids,\r\n prefix: this.type,\r\n }),\r\n ),\r\n 'documents.zip',\r\n );\r\n }\r\n\r\n async confirmDropModal(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n }) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const { langId, translatingFile } = conf ?? {};\r\n\r\n const cmbDocType = this.state.selectedDocTypeId;\r\n const fromDirectoryFile = null as any as TApiaDocumentDefinition | null; //this.state.versioningFile //TODO\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = this.modalController?.allowAllType ?? '';\r\n const docFolder = this.modalController?.docFolder;\r\n const docExpDate = this.modalController?.docExpDate;\r\n const metadata = this.modalController?.metadata ?? [];\r\n const freeMetadata = this.modalController?.freeMetadata ?? [];\r\n\r\n const poolsPermissions =\r\n this.modalController?.state.permissions.pools ?? [];\r\n\r\n const usersPermissions =\r\n this.modalController?.state.permissions.users ?? [];\r\n\r\n let postData = QueryString.stringify(\r\n this.getConfirmDropModalPostdata({\r\n cmbDocType,\r\n docDesc,\r\n docAllowAllType,\r\n pe: this.docTypePermittedObjId?.toString(),\r\n dropped: this.state.inProgressFiles.map((file) => file.name),\r\n txtLangId: langId,\r\n txtLangGroup: translatingFile?.docLangGroup,\r\n docFolder: docFolder,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n postData = `${postData}${\r\n postData.length > 0 ? '&' : ''\r\n }${this.getConfirmDropModalPermissionsString({\r\n poolsPermissions,\r\n usersPermissions,\r\n })}&txtFreeMetadata=${this.getConfirmDropModalAdditionalMetadataString(\r\n freeMetadata,\r\n )}&txtMetadata=${this.getConfirmDropModalMetadataString({\r\n metadata: Object.values(metadata || {}),\r\n })}&docExpDate=${docExpDate ?? ''}`;\r\n\r\n const result = await ApiaApi.post<TConfirmDropModal>(\r\n makeApiaUrl(\r\n this.getConfirmDropModalParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: fromDirectoryFile\r\n ? fromDirectoryFile.docId\r\n : this.state.versioningFile?.docId,\r\n action: fromDirectoryFile\r\n ? 'associateExistingFile'\r\n : 'confirmDropModal',\r\n elemType: this.type,\r\n fromForm: true,\r\n ...(fromDirectoryFile\r\n ? {\r\n docId: fromDirectoryFile.docId,\r\n fromReuse: true,\r\n uploadDocument: false,\r\n }\r\n : null),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n if (result?.data?.function) {\r\n const currentFiles = { ...this.state.files };\r\n const versioningFile = this.state.versioningFile;\r\n\r\n if (versioningFile && versioningFile.name) {\r\n delete currentFiles[versioningFile.name];\r\n }\r\n const newFiles: Record<string, TUploaderFileInfo> = arrayOrArray(\r\n result.data.function.general,\r\n )\r\n .map((current) =>\r\n this.parseFileDefinition({\r\n ...current,\r\n canWrite: true,\r\n canRead: true,\r\n canEdit: true,\r\n }),\r\n )\r\n .filter((current) => !currentFiles[current.docId])\r\n .reduce((acc, current) => ({ ...acc, [current.docId]: current }), {});\r\n\r\n if (langId && translatingFile) {\r\n const docId = translatingFile.docId;\r\n let innerMap = this.state.translatedFiles.get(docId);\r\n\r\n if (!innerMap) {\r\n innerMap = new Map<number, TUploaderFileInfo>();\r\n }\r\n innerMap.set(langId, newFiles[docId]);\r\n this.state.translatedFiles.set(docId, innerMap);\r\n } else {\r\n this.state.files = { ...currentFiles, ...newFiles };\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n async loadCurrentDocuments() {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<TApiaFunction<TUploaderLoadCurrentFunction, false>>\r\n >(\r\n makeApiaUrl({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'ajaxLoadCurrent',\r\n isAjax: true,\r\n readOnly: window.IS_READONLY,\r\n allowLock: true,\r\n allowSign: true,\r\n allowMultiple: true,\r\n prefix: this.type,\r\n }),\r\n {},\r\n );\r\n\r\n if (result && result.data) {\r\n const currentConfiguration: TUploaderLoadCurrentFunctionMessages =\r\n arrayOrArray(result.data.function.messages.message).reduce(\r\n (prev, { name, label }) => ({ ...prev, [name]: Boolean(label) }),\r\n {} as TUploaderLoadCurrentFunctionMessages,\r\n );\r\n\r\n const currentFiles: TUploaderFileInfo[] = result.data.function.general\r\n ? arrayOrArray(result.data.function.general).map(\r\n this.parseFileDefinition,\r\n )\r\n : [];\r\n\r\n this.currentConfiguration = currentConfiguration;\r\n const nonTranslationFiles: TUploaderFileInfo[] = [];\r\n const translationFiles: TUploaderFileInfo[] = [];\r\n currentFiles.forEach((current) => {\r\n if (current.docLang === undefined) nonTranslationFiles.push(current);\r\n else translationFiles.push(current);\r\n });\r\n\r\n nonTranslationFiles.forEach((c) => {\r\n this.state.files[c.docId] = c;\r\n });\r\n translationFiles.forEach((current) => {\r\n const originalFile = nonTranslationFiles.find(\r\n (search) => search.docLangGroup === current.docLangGroup,\r\n );\r\n if (originalFile && current.docLang !== undefined) {\r\n this.state.translatedFiles;\r\n this.setTranslationFile(\r\n current,\r\n originalFile.docId,\r\n Number(current.docLang),\r\n );\r\n } else\r\n console.warn(\r\n `The following file is translated but has no orignal file`,\r\n current,\r\n nonTranslationFiles,\r\n );\r\n });\r\n }\r\n }\r\n\r\n async lockDocument(id: string) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.indexedFiles[id];\r\n if (file.isMarkedToSign) {\r\n this.notify({\r\n message: window.CANT_UNLOCK_MARKED_TO_SIGN,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n if (!file.isLocked || !file.isLockedByMe) {\r\n const isLocked = await this.checkLockDocument(file.docId, false);\r\n if (typeof isLocked === 'string') {\r\n this.state.files[id] = this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n locked: true,\r\n lockedBy: isLocked,\r\n });\r\n } else this.state.files[id] = { ...this.indexedFiles[id], isLocked };\r\n }\r\n\r\n const result = await ApiaApi.post<\r\n TApiaFunction<\r\n {\r\n data: {\r\n general: {\r\n docId: string;\r\n locked: boolean;\r\n prefix: string;\r\n userLocking: string;\r\n };\r\n };\r\n },\r\n false\r\n >\r\n >(\r\n makeApiaUrl(\r\n this.getLockDocumentParameters({\r\n action: 'lockDocument',\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: file.docId,\r\n lock: file.isLocked,\r\n isAjax: true,\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n const resultFile = result.data.function?.data?.general;\r\n if (resultFile)\r\n this.indexedFiles[resultFile.docId] = this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\r\n });\r\n }\r\n }\r\n\r\n protected evaluateDeleteDocumentResult(result: unknown) {\r\n return (\r\n (\r\n result as\r\n | undefined\r\n | TApiaLoad<\r\n TApiaFunction<\r\n {\r\n general: {\r\n docId: string;\r\n prefix: string;\r\n };\r\n },\r\n false\r\n >\r\n >\r\n )?.function?.name === 'fncDocumentRemove'\r\n );\r\n }\r\n\r\n private setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.get(docId)) {\r\n this.state.translatedFiles.set(docId, new Map());\r\n }\r\n this.state.translatedFiles.get(docId)?.set(langId, file);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = returnExactlyTheSame;\r\n\r\n protected getAjaxUploadStartParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalParameters = returnExactlyTheSame;\r\n\r\n protected getCheckLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getCheckWebDavLockParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalPostdata = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalMetadataString = ({\r\n metadata,\r\n }: {\r\n metadata: TDocumentMetadata[];\r\n }) => {\r\n return (\r\n metadata\r\n ?.filter?.((current) => !!current.value)\r\n .map((current) => `${current.id}~${current.type}~${current.value}`)\r\n .join(';') ?? []\r\n );\r\n };\r\n\r\n protected getConfirmDropModalPermissionsString = ({\r\n poolsPermissions,\r\n usersPermissions,\r\n }: {\r\n poolsPermissions: IPoolsPermissions[];\r\n usersPermissions: IUsersPermissions[];\r\n }) => {\r\n let returnString = '';\r\n\r\n poolsPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docPoolId=${current.poolId}&docPoolName=${\r\n current.poolName\r\n }&docPermType${current.poolId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n usersPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docUserId=${current.userId}&docUsrLogin=${\r\n current.userLogin\r\n }&docPermType${current.userId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n return returnString;\r\n };\r\n\r\n protected getConfirmDropModalAdditionalMetadataString = (\r\n additionalMetadata: TDocumentMetadata[] | [],\r\n ) => {\r\n return Object.values(additionalMetadata)\r\n .filter((current) => !!current?.value)\r\n .map((current) => `${current.name}~${current.value}`)\r\n .join(';');\r\n };\r\n\r\n protected getDeleteDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getClearTempFilesParameters = returnExactlyTheSame;\r\n\r\n protected getDocumentInfoParameters = returnExactlyTheSame;\r\n\r\n protected getDownloadMultipleDocumentsParameters = returnExactlyTheSame;\r\n\r\n protected getEditDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getMarkFileToSignParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesPostdata = returnExactlyTheSame;\r\n\r\n protected getReloadMetadataParameters = returnExactlyTheSame;\r\n\r\n protected getSaveDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected filterAlreadyUploadedFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) return files;\r\n\r\n const uploadedFiles = this.state.inProgressFiles;\r\n const existingFiles: File[] = [];\r\n const nonExistingFiles: File[] = [];\r\n if (conf?.langId) {\r\n const docId = conf.translatingFile?.docId ?? Infinity;\r\n const translationsMap = this.state.translatedFiles.get(String(docId));\r\n const alreadyUploadedToTranslationsFile = translationsMap\r\n ? Array.from(translationsMap.values()).find(\r\n (current) => (current.docName || current.name) === files[0]?.name,\r\n )\r\n : undefined;\r\n if (alreadyUploadedToTranslationsFile) existingFiles.push(files[0]);\r\n } else\r\n files.forEach((file) => {\r\n if (uploadedFiles.find((search) => search.name === file.name)) {\r\n existingFiles.push(file);\r\n } else nonExistingFiles.push(file);\r\n });\r\n if (existingFiles.length > 0) {\r\n void this.notify({\r\n message: `${window.LBL_DROP_FILE_REPEATED}: ${existingFiles\r\n .map((current) => current.name)\r\n .join(', ')}`,\r\n type: 'warning',\r\n });\r\n return nonExistingFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n return files.slice(\r\n 0,\r\n addBoundary(this.maxFiles - (this.state.inProgressFiles?.length ?? 0), 0),\r\n );\r\n }\r\n\r\n protected filterAcceptedFiles(\r\n files: File[],\r\n shouldNotify = true,\r\n docTypeId?: string | TDocType,\r\n ): File[] {\r\n const docTypes =\r\n docTypeId !== undefined\r\n ? this.state.allowedTypes.filter((c) => {\r\n return typeof docTypeId === 'string'\r\n ? c.id === docTypeId\r\n : c.id === docTypeId.id;\r\n })\r\n : this.state.allowedTypes;\r\n\r\n if (!docTypes.find((c) => c.docExts === '')) {\r\n const notAllowedFilesBecauseOfExtension: File[] = [];\r\n const notAllowedFilesBecauseOfSize: File[] = [];\r\n let maxSize = Infinity;\r\n const allowedFiles = files.filter((currentFile) => {\r\n const extension = (currentFile.name.match(/\\.(\\w+)$/) ?? [])[1];\r\n\r\n let isAllowed = true;\r\n if (\r\n !docTypes.find((currentDocType) => {\r\n if (\r\n !currentDocType.docExts\r\n .split(';')\r\n .map((current) => current.toLowerCase())\r\n .includes(extension.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n isAllowed = false;\r\n notAllowedFilesBecauseOfExtension.push(currentFile);\r\n }\r\n if (\r\n isAllowed &&\r\n !docTypes.find((currentDocType: any) => {\r\n if (Number(currentDocType.maxSize) < currentFile.size) {\r\n maxSize = Number(currentDocType.maxSize);\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n notAllowedFilesBecauseOfSize.push(currentFile);\r\n isAllowed = false;\r\n }\r\n\r\n if (!isAllowed) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (shouldNotify) {\r\n let errorMessage = '';\r\n\r\n if (notAllowedFilesBecauseOfExtension.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfExtension.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n errorMessage = `<strong>${window.FILES_WRONG_EXT}</strong><br />${filesNames}`;\r\n }\r\n\r\n if (notAllowedFilesBecauseOfSize.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfSize.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n if (errorMessage.length > 0)\r\n errorMessage = `${errorMessage} <br /><br />`;\r\n errorMessage = `${errorMessage}${formatMessage(window.FILES_TOO_BIG, {\r\n TOK1: `<br />${filesNames}`,\r\n TOK2: `${parseAsSize(maxSize)}`,\r\n })}`;\r\n }\r\n\r\n if (errorMessage.length > 0)\r\n this.notify({\r\n message: errorMessage,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n return allowedFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterExistingFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n if (conf?.langId) return files;\r\n\r\n const currentFiles = this.state.inProgressFiles;\r\n const alreadyUploadedFiles = this.filesArray.filter(\r\n (current) => Number(current.docId) < 0,\r\n );\r\n let alreadyIncludedFileNames = '';\r\n const filteredFiles = files.filter((current) => {\r\n const isIncluded =\r\n currentFiles.findIndex((search) => search.name === current.name) !==\r\n -1 ||\r\n alreadyUploadedFiles.findIndex(\r\n (search) => search.docName === current.name,\r\n ) !== -1;\r\n\r\n if (isIncluded)\r\n alreadyIncludedFileNames = `${alreadyIncludedFileNames}${\r\n alreadyIncludedFileNames.length > 0 ? ', ' : ''\r\n }${current.name}`;\r\n\r\n return !isIncluded;\r\n });\r\n if (alreadyIncludedFileNames.length > 0)\r\n this.notify({\r\n message: `${window.LBL_DROP_FILE_REPEATED}: ${alreadyIncludedFileNames}`,\r\n type: 'warning',\r\n });\r\n return filteredFiles;\r\n }\r\n\r\n protected filterVersioningFiles(\r\n files: File[],\r\n conf?: {\r\n langId?: number;\r\n strictMode?: boolean;\r\n translatingFile?: TUploaderFileInfo;\r\n shouldReset?: boolean;\r\n },\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) {\r\n const newFiles = files.filter(\r\n (current) =>\r\n current.name === versioningFile.docName ||\r\n current.name === versioningFile.name,\r\n );\r\n if (newFiles.length === 0) {\r\n this.notify({\r\n type: 'warning',\r\n message: window.LBL_DROP_FILE_NAMES_NOT_MATCH,\r\n });\r\n }\r\n return newFiles;\r\n }\r\n if (\r\n files.length === 1 &&\r\n conf?.translatingFile === undefined &&\r\n conf?.langId === undefined\r\n ) {\r\n // const actualVersioningFile = fileStore.filesArray.find(\r\n // (current) => (current.name || current.docName) === files[0].name,\r\n // );\r\n // if (actualVersioningFile) {\r\n // if (actualVersioningFile.isLockedByMe)\r\n // this.updateModal({ versioningFile: actualVersioningFile });\r\n // }\r\n }\r\n\r\n return files;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(file, false),\r\n canEdit: file.canEdit || file.canWrite,\r\n canRead: file.canRead,\r\n };\r\n };\r\n}\r\n","import type { File } from '.';\r\nimport { TModalConfig, UploaderApi } from '../../../Uploader';\r\n\r\nexport class FileUploaderApi extends UploaderApi {\r\n constructor(\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n private field: File,\r\n ) {\r\n super(type + '_' + field.definition.id, type, modalConfig);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ) => {\r\n return {\r\n ...defaultParameters,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n };\r\n };\r\n}\r\n","import { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TModalConfig } from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { FileUploaderApi } from './FileUploaderApi';\r\n\r\nexport class File extends TranslatableField<TApiaFileProperties> {\r\n uploader: FileUploaderApi = {} as FileUploaderApi;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FileUploaderApi(\r\n form.definition.frmParent,\r\n {\r\n oneClickUpload: this.properties.oneClickUpload,\r\n } as TModalConfig,\r\n this,\r\n );\r\n }\r\n}\r\n","import { responsiveTableStore } from '@apia/table';\r\n\r\nexport function getTableSelection(tableName: string) {\r\n const state = responsiveTableStore.getState().responsiveTableSlice[tableName];\r\n\r\n const set = new Set<number>();\r\n state.selectedRows.forEach((e) => {\r\n if (e >= 0) {\r\n set.add(e);\r\n }\r\n });\r\n\r\n return [...set];\r\n}\r\n","import { getTableSelection } from './getTableSelection';\r\nimport { makeObservable, observable, runInAction } from 'mobx';\r\nimport { IGrid } from '../types';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n isLoading: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n isLoading: false,\r\n };\r\n\r\n constructor(private grid: IGrid) {\r\n makeObservable(this, { state: observable });\r\n this.init();\r\n }\r\n\r\n #unsubscribeTableEvents = () => {};\r\n private init() {\r\n this.#unsubscribeTableEvents();\r\n\r\n const { paged, currentPage, rowsCount } = this.grid.properties;\r\n const isFirstPage = paged ? currentPage === 1 : false;\r\n\r\n const u2 = this.grid.controller.events.on(\r\n 'onChangeSelection',\r\n ([selection]) => {\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.index === 0) && isFirstPage\r\n : selection.find((c) => c.index === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) => c.row?.rendererProps?.index === rowsCount - 1,\r\n )\r\n : selection.find(\r\n (c) => c.index === this.grid.properties.rowsCount - 1,\r\n ));\r\n });\r\n },\r\n );\r\n this.#unsubscribeTableEvents = () => {\r\n u2();\r\n };\r\n }\r\n\r\n get showAddButton() {\r\n const { hideGridButtons, hideAddButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return !hideGridButtons && !hideAddButton && !hideIncludeButton;\r\n }\r\n get showDelButton() {\r\n const { hideGridButtons, hideDelButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return !hideGridButtons && !hideDelButton && !hideIncludeButton;\r\n }\r\n get showSortButtons() {\r\n const { hideGridButtons, hideOrderButton } = this.grid.properties;\r\n return !hideGridButtons && !hideOrderButton;\r\n }\r\n get isSortUpDisabled() {\r\n return (\r\n this.state.isSortUpDisabled ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n get isSortDownDisabled() {\r\n return (\r\n this.state.isSortDownDisabled ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n get isAddDisabled() {\r\n return this.state.isLoading || this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getSelection().length === 0 ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n private async runBlockingCode(cb: () => Promise<void>) {\r\n this.state.isLoading = true;\r\n\r\n try {\r\n await cb();\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this.state.isLoading = false;\r\n }\r\n }\r\n\r\n async sortUp() {\r\n await this.runBlockingCode(async () => {\r\n const { paged, currentPage, pageSize } = this.grid.properties;\r\n const tableName = this.grid.controller.tableName;\r\n\r\n let selection = getTableSelection(tableName);\r\n\r\n if (paged) {\r\n const offset = (currentPage - 1) * pageSize;\r\n selection = selection.map((index) => index + offset);\r\n }\r\n const isFirstRowSelected =\r\n paged && selection.includes((currentPage - 1) * pageSize);\r\n\r\n if (await this.grid.sortUp(selection)) {\r\n const state = this.grid.controller.getState();\r\n\r\n if (paged) {\r\n if (isFirstRowSelected) {\r\n state.selectedRows = [pageSize - 1];\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c - 1)\r\n .filter((c) => c >= 0);\r\n }\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c - 1)\r\n .filter((c) => c >= 0);\r\n }\r\n\r\n state.focusedRow = state.selectedRows[state.selectedRows.length - 1];\r\n state.scrollIntoViewRow =\r\n state.selectedRows[state.selectedRows.length - 1];\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async sortDown() {\r\n await this.runBlockingCode(async () => {\r\n const { paged, currentPage, pageSize, rowsCount } = this.grid.properties;\r\n const tableName = this.grid.controller.tableName;\r\n\r\n let selection = getTableSelection(tableName);\r\n\r\n if (paged) {\r\n const offset = (currentPage - 1) * pageSize;\r\n selection = selection.map((index) => index + offset);\r\n }\r\n\r\n const isLastRowSelected =\r\n paged && selection.includes(currentPage * pageSize - 1);\r\n\r\n if (await this.grid.sortDown(selection)) {\r\n const state = this.grid.controller.getState();\r\n\r\n if (paged) {\r\n if (isLastRowSelected) {\r\n state.selectedRows = [0];\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c + 1)\r\n .filter((c) => c < pageSize);\r\n }\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c + 1)\r\n .filter((c) => c < rowsCount);\r\n }\r\n state.focusedRow = Math.min(state.focusedRow + 1, rowsCount - 1);\r\n state.scrollIntoViewRow = Math.min(state.focusedRow + 1, rowsCount - 1);\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async addRow() {\r\n await this.runBlockingCode(async () => {\r\n const { currentPage, pageSize } = this.grid.properties;\r\n\r\n if (await this.grid.addRow()) {\r\n const newTotalRows = this.grid.properties.rowsCount;\r\n\r\n const totalPages = Math.ceil(newTotalRows / pageSize);\r\n\r\n let newSelectedRowIndex: number;\r\n\r\n if (currentPage === totalPages) {\r\n newSelectedRowIndex = (newTotalRows - 1) % pageSize;\r\n } else {\r\n newSelectedRowIndex = newTotalRows - 1;\r\n }\r\n\r\n const state = this.grid.controller.getState();\r\n\r\n state.selectedRows = [newSelectedRowIndex];\r\n state.focusedRow = newSelectedRowIndex;\r\n state.focusedColumn = Math.max(state.focusedColumn, 1);\r\n state.scrollIntoViewRow = newSelectedRowIndex;\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async deleteSelectedRows(index?: number) {\r\n await this.runBlockingCode(async () => {\r\n const state = this.grid.controller.getState();\r\n const selection = getTableSelection(this.grid.controller.tableName);\r\n\r\n if (index !== undefined) {\r\n await this.grid.deleteRow([index]);\r\n if (state.focusedRow > index) {\r\n state.focusedRow = state.focusedRow - 1;\r\n }\r\n state.selectedRows = selection.map((c) => (c > index ? c - 1 : c));\r\n this.grid.controller.setState(state);\r\n } else {\r\n const { currentPage, pageSize } = this.grid.properties;\r\n // Obtener la selección actual de filas\r\n if (selection.length === 0) {\r\n // No hay filas seleccionadas para eliminar\r\n return;\r\n }\r\n\r\n // Encontrar el índice mínimo seleccionado (asumiendo índices relativos a la página)\r\n let min = Infinity;\r\n selection.forEach((c) => {\r\n if (c < min) min = c;\r\n });\r\n\r\n // Eliminar las filas seleccionadas\r\n const deletionSuccess = await this.grid.deleteRow(selection);\r\n if (!deletionSuccess) {\r\n // Manejar el fallo en la eliminación si es necesario\r\n console.error('Error al eliminar filas seleccionadas.');\r\n return;\r\n }\r\n\r\n // Obtener el estado actual de la tabla después de la eliminación\r\n\r\n // Determinar si la primera fila de la página estaba seleccionada\r\n const isFirstRowSelected = min === 0;\r\n\r\n if (isFirstRowSelected) {\r\n if (currentPage > 1) {\r\n // Seleccionar la última fila de la página anterior\r\n state.selectedRows = [pageSize - 1];\r\n } else {\r\n // Seleccionar la primera fila de la página actual\r\n this.state.isSortDownDisabled = false;\r\n state.selectedRows = [0];\r\n }\r\n } else {\r\n // Seleccionar la fila anterior a la eliminada\r\n const newSelected = min - 1;\r\n state.selectedRows = [Math.max(newSelected, 0)];\r\n }\r\n\r\n // Establecer el foco en la fila seleccionada\r\n state.focusedRow = state.selectedRows[0];\r\n state.scrollIntoViewRow = state.focusedRow;\r\n state.isFocused = false;\r\n\r\n // Actualizar el estado de la tabla\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n}\r\n","import { Controller2 } from '@apia/table';\r\nimport { arrayOrArray, makeApiaUrl, parseXml, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { FieldWithIndexedFields } from '../../FieldWithIndexedFields';\r\nimport { FieldsGroup } from '../../FieldWithIndexedFields/FieldsGroup';\r\nimport { Form } from '../../Form';\r\nimport { actions } from '../../constants/actions';\r\nimport { eventTypes } from '../../constants/eventTypes';\r\nimport { FireEventParameters, SetValueOptions } from '../../types';\r\nimport {\r\n GridAction,\r\n GridActionResponse,\r\n GridColumn,\r\n GridEvents,\r\n GridProps,\r\n IGrid,\r\n} from './types';\r\nimport { GridFooterHandler } from './util/GridFooterHandler';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Grid\r\n extends FieldWithIndexedFields<\r\n GridProps,\r\n TApiaFieldBaseDefinition<GridProps>,\r\n {\r\n definition: Omit<TApiaFieldBaseDefinition<GridProps>, 'properties'>;\r\n header: GridColumn[];\r\n isLoading: boolean;\r\n selectedIndices: number[];\r\n showAdditionalColumn: boolean;\r\n }\r\n >\r\n implements IGrid\r\n{\r\n private _controller: Controller2 | null = null;\r\n public get controller() {\r\n if (!this._controller) {\r\n throw new Error('Controller2 has not been set');\r\n }\r\n return this._controller;\r\n }\r\n public setController(c: Controller2) {\r\n this._controller = c;\r\n this.footerHandler = new GridFooterHandler(this);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n const fieldsArray = arrayOrArray(field);\r\n const statesArray = fieldsArray.map((current) =>\r\n arrayOrArray(current.fieldValue || current.row),\r\n );\r\n\r\n super(\r\n {\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(properties.pagedGridSize, Infinity),\r\n rowsCount: arrayOrArray(arrayOrArray(field)[0]?.fieldValue).length,\r\n\r\n shownColumns: new Map(),\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n },\r\n fieldsArray.map(({ properties, fieldValue, ...current }) => {\r\n return current;\r\n }),\r\n\r\n statesArray,\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150',\r\n }));\r\n this.calculateMustShowAdditionalColumn();\r\n this.state.isLoading = false;\r\n }\r\n\r\n #hasSetHeadersSizes = false;\r\n private footerHandler: GridFooterHandler | null = null;\r\n private initHeadersSizes() {\r\n if (this.#hasSetHeadersSizes) {\r\n return;\r\n }\r\n\r\n const firstRow = this.getRow(0);\r\n if (firstRow) {\r\n this.#hasSetHeadersSizes = true;\r\n this.state.header = arrayOrArray(firstRow).map((field, columnIndex) => ({\r\n ...this.state.header[columnIndex],\r\n width: field.properties?.colWidth ?? '150',\r\n }));\r\n }\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.initHeadersSizes();\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const willShowEditionButton = !!this.properties.gridForm;\r\n let willShowDeleteButton =\r\n !this.properties.hideDelButton &&\r\n !this.properties.hideGridButtons &&\r\n !this.properties.hideIncludeButton;\r\n\r\n if (!willShowDeleteButton) {\r\n const showDeleteButtonsValues =\r\n this.properties.shownDeleteButtons.values();\r\n\r\n for (const value of showDeleteButtonsValues) {\r\n if (value) {\r\n willShowDeleteButton = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.state.showAdditionalColumn =\r\n willShowEditionButton || willShowDeleteButton;\r\n }\r\n protected async parseAddRowXml(str: string): Promise<boolean> {\r\n const xml = parseXml(str) as TApiaGridDefinition;\r\n\r\n if (xml.field) {\r\n await this.addGroup(\r\n new FieldsGroup(\r\n arrayOrArray(xml.field).map((c) => {\r\n if (c.fieldType === 'select' || c.fieldType === 'radio') {\r\n return { ...c, ...c.row };\r\n }\r\n\r\n return c;\r\n }),\r\n ),\r\n );\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n protected async rebuildGrid(\r\n xmlString: string,\r\n rowsCount: number,\r\n ): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: 1,\r\n rowsCount,\r\n pages: 1,\r\n };\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray = fieldsArray.map((field) =>\r\n arrayOrArray(field.fieldValue || field.row),\r\n );\r\n\r\n if (statesArray[0].length > this.fieldsGroups.length) {\r\n for (let i = this.fieldsGroups.length; i < statesArray[0].length; i++) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i + this.getStartIndex(),\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i].properties,\r\n value: statesArray[columnIndex][i].value,\r\n },\r\n };\r\n });\r\n const fieldsGroup = new FieldsGroup(parsedFieldGroups);\r\n\r\n await this.addGroup(fieldsGroup);\r\n }\r\n } else if (statesArray[0].length < this.fieldsGroups.length) {\r\n this.fieldsGroups.splice(statesArray[0].length);\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n this.fieldsStates = statesArray;\r\n this.fieldsStates.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const fieldGroup = this.getFieldsGroupByIndex(\r\n this.getStartIndex() + rowIndex,\r\n );\r\n const field = fieldGroup.getFieldById(id);\r\n\r\n if (field) {\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = rowIndex + this.getStartIndex();\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n behave: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n await makeApiaUrl({\r\n action: 'processGridFieldAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n behave,\r\n );\r\n }\r\n\r\n get minIndex() {\r\n return Number.isFinite(this.properties.pageSize)\r\n ? (this.properties.currentPage - 1) * this.properties.pageSize\r\n : 0;\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n async addRow(): Promise<boolean> {\r\n const eventsResult = await this.fireEvent('gridAdd', {\r\n cantRowsToAdd: 1,\r\n gridAction: 'add',\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridAdd')) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n cantRowsToAdd: 1,\r\n gridAction: 'last',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n clearGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'clearGrid',\r\n clearReadonly: true,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n clearPage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented clearPage';\r\n };\r\n deleteGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n deletePage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented deletePage';\r\n };\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n async deleteRow(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n )\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.minIndex);\r\n\r\n const eventsResult = await this.fireEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: selectedIndices,\r\n });\r\n\r\n // if (eventsResult) {\r\n // this.fieldsGroups = this.removeElementsByIndices(\r\n // this.fieldsGroups,\r\n // selectedIndices,\r\n // );\r\n // }\r\n if (eventsResult) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n private getServerEventOfType(eventName: GridEvents) {\r\n return this.definition.serverEvents?.find((c) => c.evtName === eventName);\r\n }\r\n protected async fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n let event = this.getServerEventOfType(eventName);\r\n\r\n if (event) {\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n public getGridFooterHandler() {\r\n if (!this.footerHandler)\r\n throw new Error(\"Grid footer handler hasn't been set\");\r\n\r\n return this.footerHandler;\r\n }\r\n fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, params);\r\n }\r\n gotoPage: GridAction<[page: number]> = async (\r\n page: number,\r\n ): Promise<boolean> => {\r\n const response = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (response?.data?.success) {\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: page,\r\n };\r\n await this.rebuildGrid(\r\n response.data.gridXml.text,\r\n noNaN(response.data.rowCount, 0),\r\n );\r\n\r\n return true;\r\n }\r\n return false;\r\n };\r\n getCurrentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n getHeader() {\r\n return this.state.header;\r\n }\r\n getMustShowAdditionalColumn() {\r\n return this.state.showAdditionalColumn;\r\n }\r\n getPageCount() {\r\n return this.properties.pages;\r\n }\r\n getSelectedIndices() {\r\n return this.state.selectedIndices;\r\n }\r\n getSelectedItems() {\r\n return this.getSelectedIndices().map((current) => this.getRow(current)!);\r\n }\r\n isPaged() {\r\n return this.properties.paged;\r\n }\r\n async refresh() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n }\r\n }\r\n /**\r\n * @alias deleteRow\r\n */\r\n remove(index?: number | number[]): Promise<boolean> {\r\n return this.deleteRow(index);\r\n }\r\n removeElementsByIndices(\r\n array: FieldsGroup[],\r\n indicesToRemove: number[],\r\n ): FieldsGroup[] {\r\n const indicesSet = new Set(indicesToRemove);\r\n\r\n return array.filter((_, index) => !indicesSet.has(index));\r\n }\r\n\r\n sortColumn: GridAction<[index: number]> = async (index) => {\r\n const firingField = this.fieldsGroups\r\n .at(\r\n (this.properties.currentPage -\r\n (this.state.showAdditionalColumn ? 1 : 0)) *\r\n this.properties.pageSize,\r\n )\r\n ?.getAllFields()\r\n .at(index - 1)?.definition.id;\r\n\r\n if (firingField) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField,\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n async sortDown(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n ).sort((a, b) => b - a);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'down', { synchronize: false });\r\n } else if (eventsResult && !this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'down', { synchronize: false });\r\n }\r\n return eventsResult;\r\n }\r\n\r\n async sortUp(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'up', { synchronize: false });\r\n } else if (eventsResult && !this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'up', { synchronize: false });\r\n }\r\n return eventsResult;\r\n }\r\n\r\n private swapRows(\r\n rows: number[],\r\n direction: 'up' | 'down',\r\n props?: SetValueOptions,\r\n ) {\r\n for (const i of rows) {\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n this.swapRowsIndices(i, swapIndex, props);\r\n }\r\n }\r\n\r\n private swapRowsIndices(a: number, b: number, props?: SetValueOptions) {\r\n const swapGroup = this.getFieldsGroupByIndex(a)?.getAllFields();\r\n const swapProps = swapGroup.map((c) => c.properties);\r\n const swapValues = swapGroup.map((c) => {\r\n if (c instanceof FieldWithAttribute) {\r\n return c.getValue();\r\n }\r\n return undefined;\r\n });\r\n const currentGroup = this.getFieldsGroupByIndex(b)?.getAllFields();\r\n const currentProps = currentGroup.map((c) => c.properties);\r\n const currentValues = currentGroup.map((c) => {\r\n if (c instanceof FieldWithAttribute) {\r\n return c.getValue();\r\n }\r\n return undefined;\r\n });\r\n\r\n swapGroup.forEach((field, column) => {\r\n field.properties = currentProps[column];\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(currentValues[column], props);\r\n }\r\n });\r\n currentGroup.forEach((field, column) => {\r\n field.properties = swapProps[column];\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(swapValues[column], props);\r\n }\r\n });\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n const currentValue = this.properties.shownColumns.get(fieldName);\r\n this.properties.shownColumns.set(fieldName, isShown ?? !currentValue);\r\n }\r\n\r\n toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n}\r\n","import { Controller2 } from '@apia/table';\r\nimport { arrayOrArray, makeApiaUrl, parseXml, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { FieldWithIndexedFields } from '../../FieldWithIndexedFields';\r\nimport { FieldsGroup } from '../../FieldWithIndexedFields/FieldsGroup';\r\nimport { Form } from '../../Form';\r\nimport { actions } from '../../constants/actions';\r\nimport { eventTypes } from '../../constants/eventTypes';\r\nimport { FireEventParameters } from '../../types';\r\nimport { GridFooterHandler } from '../Grid/util/GridFooterHandler';\r\nimport {\r\n GridAction,\r\n GridActionResponse,\r\n GridColumn,\r\n GridEvents,\r\n GridProps,\r\n} from './types';\r\nimport { IGrid } from '../Grid/types';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class GridPaginated\r\n extends FieldWithIndexedFields<\r\n GridProps,\r\n TApiaFieldBaseDefinition<GridProps>,\r\n {\r\n definition: Omit<TApiaFieldBaseDefinition<GridProps>, 'properties'>;\r\n header: GridColumn[];\r\n isLoading: boolean;\r\n selectedIndices: number[];\r\n showAdditionalColumn: boolean;\r\n }\r\n >\r\n implements IGrid\r\n{\r\n private _controller: Controller2 | null = null;\r\n public get controller() {\r\n if (!this._controller) {\r\n throw new Error('Controller2 has not been set');\r\n }\r\n return this._controller;\r\n }\r\n public setController(c: Controller2) {\r\n this._controller = c;\r\n this.footerHandler = new GridFooterHandler(this);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n const fieldsArray = arrayOrArray(field);\r\n const statesArray = fieldsArray.map((current) =>\r\n arrayOrArray(current.fieldValue || current.row),\r\n );\r\n\r\n super(\r\n {\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(properties.pagedGridSize, Infinity),\r\n rowsCount: arrayOrArray(arrayOrArray(field)[0].fieldValue).length,\r\n shownColumns: new Map(),\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n },\r\n fieldsArray.map(({ properties, fieldValue, ...current }) => {\r\n return current;\r\n }),\r\n\r\n statesArray,\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150',\r\n }));\r\n this.calculateMustShowAdditionalColumn();\r\n this.footerHandler = new GridFooterHandler(this);\r\n this.state.isLoading = false;\r\n }\r\n private footerHandler: GridFooterHandler;\r\n #hasSetHeadersSizes = false;\r\n private initHeadersSizes() {\r\n if (this.#hasSetHeadersSizes) {\r\n return;\r\n }\r\n\r\n const firstRow = this.getRow(0);\r\n if (firstRow) {\r\n this.#hasSetHeadersSizes = true;\r\n this.state.header = arrayOrArray(firstRow).map((field, columnIndex) => ({\r\n ...this.state.header[columnIndex],\r\n width: field.properties?.colWidth ?? '150',\r\n }));\r\n }\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.initHeadersSizes();\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const willShowEditionButton = !!this.properties.gridForm;\r\n\r\n let willShowDeleteButton =\r\n !this.properties.hideDelButton &&\r\n !this.properties.hideGridButtons &&\r\n !this.properties.hideIncludeButton;\r\n\r\n if (!willShowDeleteButton) {\r\n const showDeleteButtonsValues =\r\n this.properties.shownDeleteButtons.values();\r\n\r\n for (const value of showDeleteButtonsValues) {\r\n if (value) {\r\n willShowDeleteButton = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.state.showAdditionalColumn =\r\n willShowEditionButton || willShowDeleteButton;\r\n }\r\n protected async parseAddRowXml(str: string): Promise<boolean> {\r\n const xml = parseXml(str) as TApiaGridDefinition;\r\n\r\n if (xml.field) {\r\n await this.addGroup(\r\n new FieldsGroup(\r\n arrayOrArray(xml.field).map((c) => {\r\n if (c.fieldType === 'select' || c.fieldType === 'radio') {\r\n return { ...c, ...c.row };\r\n }\r\n\r\n return c;\r\n }),\r\n ),\r\n );\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n protected async rebuildGrid(\r\n xmlString: string,\r\n rowsCount: number,\r\n ): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n const pages = noNaN(xml.pages, 1);\r\n const currentPage = noNaN(xml.curPage, 1);\r\n\r\n this.properties = {\r\n ...this.properties,\r\n currentPage,\r\n rowsCount,\r\n pages,\r\n };\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray = fieldsArray.map((field) =>\r\n arrayOrArray(field.fieldValue || field.row),\r\n );\r\n\r\n if (statesArray[0].length > this.fieldsGroups.length) {\r\n for (let i = this.fieldsGroups.length; i < statesArray[0].length; i++) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i + this.getStartIndex(),\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i].properties,\r\n value: statesArray[columnIndex][i].value,\r\n },\r\n };\r\n });\r\n const fieldsGroup = new FieldsGroup(parsedFieldGroups);\r\n\r\n await this.addGroup(fieldsGroup);\r\n }\r\n } else if (statesArray[0].length < this.fieldsGroups.length) {\r\n this.fieldsGroups.splice(statesArray[0].length);\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n this.fieldsStates = statesArray;\r\n this.fieldsStates.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const fieldGroup = this.getFieldsGroupByIndex(\r\n this.getStartIndex() + rowIndex,\r\n );\r\n const field = fieldGroup.getFieldById(id);\r\n\r\n if (field) {\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = rowIndex + this.getStartIndex();\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n behave: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n await makeApiaUrl({\r\n action: 'processGridFieldAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n behave,\r\n );\r\n }\r\n\r\n get minIndex() {\r\n return (this.properties.currentPage - 1) * this.properties.pageSize;\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n async addRow(): Promise<boolean> {\r\n const eventsResult = await this.fireEvent('gridAdd', {\r\n cantRowsToAdd: 1,\r\n gridAction: 'add',\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridAdd')) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'last',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else if (res?.data?.gridXml.text) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n clearGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'clearGrid',\r\n clearReadonly: true,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n clearPage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented clearPage';\r\n };\r\n deleteGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n deletePage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented deletePage';\r\n };\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n async deleteRow(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n )\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.minIndex);\r\n\r\n const eventsResult = await this.fireEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: selectedIndices,\r\n });\r\n\r\n if (eventsResult) {\r\n let targetPage = this.properties.currentPage;\r\n const lastRowIndex =\r\n this.properties.currentPage * (this.properties.pageSize - 1);\r\n\r\n if (\r\n selectedIndices.includes(lastRowIndex) &&\r\n this.properties.currentPage !== 1\r\n ) {\r\n targetPage = this.properties.currentPage - 1;\r\n }\r\n return this.gotoPage(targetPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n private getServerEventOfType(eventName: GridEvents) {\r\n return this.definition.serverEvents?.find((c) => c.evtName === eventName);\r\n }\r\n public getGridFooterHandler() {\r\n if (!this.footerHandler)\r\n throw new Error(\"Grid footer handler hasn't been set\");\r\n\r\n return this.footerHandler;\r\n }\r\n protected async fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n let event = this.getServerEventOfType(eventName);\r\n\r\n if (event) {\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else if (res?.data?.gridXml.text) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, params);\r\n }\r\n gotoPage: GridAction<[page: number]> = async (\r\n page: number,\r\n ): Promise<boolean> => {\r\n this.state.isLoading = true;\r\n const response = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (response?.data?.success) {\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: page,\r\n };\r\n await this.rebuildGrid(\r\n response.data.gridXml.text,\r\n noNaN(response.data.rowCount, 0),\r\n );\r\n\r\n this.state.isLoading = false;\r\n return true;\r\n }\r\n this.state.isLoading = false;\r\n return false;\r\n };\r\n getCurrentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n getHeader() {\r\n return this.state.header;\r\n }\r\n getMustShowAdditionalColumn() {\r\n return this.state.showAdditionalColumn;\r\n }\r\n getPageCount() {\r\n return this.properties.pages;\r\n }\r\n getSelectedIndices() {\r\n return this.state.selectedIndices;\r\n }\r\n getSelectedItems() {\r\n return this.getSelectedIndices().map((current) => this.getRow(current)!);\r\n }\r\n isPaged() {\r\n return this.properties.paged;\r\n }\r\n /**\r\n * @alias deleteRow\r\n */\r\n remove(index?: number | number[]): Promise<boolean> {\r\n return this.deleteRow(index);\r\n }\r\n\r\n sortColumn: GridAction<[index: number]> = async (index) => {\r\n const calculatedIndex =\r\n (this.properties.currentPage -\r\n (this.state.showAdditionalColumn ? 1 : 0)) *\r\n this.properties.pageSize;\r\n\r\n const group = this.fieldsGroups.at(calculatedIndex);\r\n\r\n if (!group) {\r\n console.error('No group found at calculated index.');\r\n return false;\r\n }\r\n\r\n const fields = group.getAllFields();\r\n\r\n if (!fields || fields.length < index) {\r\n console.error('No field found at index:', index - 1);\r\n return false;\r\n }\r\n const field = fields.at(index - 1);\r\n const firingField = field?.definition.id;\r\n\r\n if (firingField) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField,\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n async sortDown(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n const { currentPage, pageSize, pages } = this.properties;\r\n\r\n const lastRowIndex = currentPage * pageSize - 1;\r\n\r\n if (selectedIndices.includes(lastRowIndex) && currentPage < pages) {\r\n const targetPage = currentPage + 1;\r\n console.log(`Navigating to Page: ${targetPage}`);\r\n return this.gotoPage(targetPage);\r\n }\r\n\r\n console.log(`Staying on Page: ${currentPage}`);\r\n return this.gotoPage(currentPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n\r\n async sortUp(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n const { currentPage, pageSize } = this.properties;\r\n\r\n const firstRowIndexOfCurrentPage = (currentPage - 1) * pageSize;\r\n if (\r\n selectedIndices.includes(firstRowIndexOfCurrentPage) &&\r\n currentPage > 1\r\n ) {\r\n return this.gotoPage(currentPage - 1);\r\n }\r\n\r\n return this.gotoPage(currentPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n const currentValue = this.properties.shownColumns.get(fieldName);\r\n this.properties.shownColumns.set(fieldName, isShown ?? !currentValue);\r\n }\r\n\r\n toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n}\r\n","import { TApiaHiddenProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Hidden extends FieldWithAttribute<TApiaHiddenProperties> {}\r\n","import { TApiaImageProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Image extends Field<TApiaImageProperties> {}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaInputDefinition } from '../../../../InitialData/types/fields/TApiaInputDefinition';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { SetValueOptions } from '../../types';\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\nexport class Input<ValueType = any> extends TranslatableField<\r\n TApiaInputProperties,\r\n ValueType,\r\n TApiaInputDefinition\r\n> {\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public async setValue(\r\n newValue: ValueType,\r\n options?: SetValueOptions,\r\n ): Promise<boolean> {\r\n if (!this.definition.regExp || this.validateRegex(newValue)) {\r\n if (newValue !== '') this.state.validation.errorMessage = null;\r\n return super.setValue(newValue, options);\r\n }\r\n return false;\r\n }\r\n\r\n private validateRegex(value: ValueType): boolean {\r\n const regex = new RegExp(this.definition.regExp ?? '');\r\n\r\n if (!regex.test(String(value)) && value !== '') {\r\n this.state.validation.errorMessage = labels.errorRegexNotValidated();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n return super.validate();\r\n }\r\n}\r\n","import { TApiaLabelProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Label extends Field<TApiaLabelProperties> {}\r\n","import { TApiaLinkProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Link extends Field<TApiaLinkProperties> {}\r\n","import { makeApiaUrl, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaModalInputDefinition } from '../../../../InitialData/types/fields/TApiaModalInputDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\ntype ModalInputValue = { showValue: string; storeValue?: string };\r\n\r\nexport class ModalInput extends FieldWithAttribute<\r\n TApiaInputProperties,\r\n ModalInputValue\r\n> {\r\n constructor({ value, ...definition }: TApiaModalInputDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n },\r\n value: { showValue: definition.qry_show_value, storeValue: value },\r\n });\r\n }\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public setValue(\r\n newValue: Required<ModalInputValue>,\r\n options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n const actualValue: ModalInputValue = {\r\n showValue: newValue.showValue,\r\n storeValue: this.properties.storeMdlQryResult\r\n ? newValue.storeValue\r\n : undefined,\r\n };\r\n\r\n return super.setValue(actualValue, options);\r\n }\r\n\r\n public async setValueFromModalSelection(rowId: string) {\r\n const result = await post<{ row: { cell: { text: string }[] } }>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.query.ModalAction.run',\r\n action: 'getValues',\r\n }),\r\n { postData: { id: rowId }, postDataTreatment: 'stringify' },\r\n );\r\n\r\n if (result?.data?.row?.cell) {\r\n this.setValue({\r\n storeValue: result.data.row.cell[0].text,\r\n showValue: result.data.row.cell[1].text,\r\n });\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n if (this.properties.required && !this.getValue().storeValue) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n }\r\n\r\n return super.validate();\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ModalInputValue,\r\n ): IApiaApiPostConfig<any> {\r\n const storeIdValue = this.properties.storeMdlQryResult;\r\n\r\n return {\r\n ...super.getSynchronizePostConfiguration(value),\r\n postData: {\r\n value: storeIdValue\r\n ? [this.getValue().storeValue!, this.getValue().showValue]\r\n : this.getValue().showValue,\r\n },\r\n };\r\n }\r\n}\r\n","import { arrayOrArray } from '../../../../../util';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaMultipleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaMultipleDefinition } from '../../../../InitialData/types/fields/TApiaMultipleDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Multiple extends FieldWithAttribute<\r\n TApiaMultipleProperties,\r\n Record<number, string>\r\n> {\r\n constructor({\r\n possibleValue,\r\n value,\r\n ...definition\r\n }: TApiaMultipleDefinition) {\r\n super({\r\n ...{\r\n ...definition,\r\n value: arrayOrArray(possibleValue).find((c) => c.selected)?.value,\r\n },\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n console.warn('Validation incomplete');\r\n const isValid = !!this.getValue()[0] || !this.properties.required;\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n}\r\n","import { TApiaPasswordProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Password extends FieldWithAttribute<\r\n TApiaPasswordProperties,\r\n string\r\n> {}\r\n","import { TApiaRadioProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaRadioButtonDefinition } from '../../../../InitialData/types/fields/TApiaRadioButtonDefinition';\r\nimport { Form } from '../../Form';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype RadioEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Radio extends FieldWithAttribute<\r\n TApiaRadioProperties,\r\n number | string,\r\n TApiaRadioButtonDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaRadioButtonDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n await this.fireEvent('onPopulate');\r\n }\r\n\r\n fireEvent(eventName: RadioEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { arrayOrArray } from '../../../../../util';\r\nimport { TApiaSelectProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaSelectDefinition } from '../../../../InitialData/types/fields/TApiaSelectDefinition';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Select extends FieldWithAttribute<\r\n TApiaSelectProperties,\r\n string,\r\n TApiaSelectDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaSelectDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n protected getInitialValue({\r\n properties: { possibleValue },\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaSelectProperties>): string {\r\n return value || arrayOrArray(possibleValue)[0]?.value;\r\n }\r\n}\r\n","import { TApiaTextareaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class Textarea extends TranslatableField<\r\n TApiaTextareaProperties,\r\n string\r\n> {}\r\n","import { TApiaTitleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Title extends Field<TApiaTitleProperties> {}\r\n","import { reaction } from 'mobx';\r\nimport { arrayOrArray, EventEmitter } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaTreeProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport {\r\n TApiaTreeDefinition,\r\n TApiaTreePossibleValue,\r\n} from '../../../../InitialData/types/fields/TApiaTreeDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport type TTreeValue = string | number;\r\ntype TreeEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Tree extends FieldWithAttribute<\r\n TApiaTreeProperties,\r\n TTreeValue | TTreeValue[],\r\n TApiaTreeDefinition\r\n> {\r\n private treeNodes = new EventEmitter<{\r\n nodesList: TApiaTreePossibleValue[];\r\n }>();\r\n\r\n constructor({ possibleValue, ...props }: TApiaTreeDefinition) {\r\n super(props);\r\n\r\n this.properties.possibleValue = arrayOrArray(possibleValue);\r\n\r\n reaction(\r\n () => {\r\n this.properties.possibleValue;\r\n },\r\n () => {\r\n this.treeNodes.emit('nodesList', this.properties.possibleValue);\r\n },\r\n );\r\n }\r\n\r\n getPossibleValues() {\r\n return this.properties.possibleValue;\r\n }\r\n\r\n onPossibleValuesChange = this.treeNodes.on.bind(this.treeNodes, 'nodesList');\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: TTreeValue | TTreeValue[],\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n return {\r\n ...conf,\r\n postData: {\r\n ...conf.postData,\r\n clearValues: true,\r\n },\r\n };\r\n }\r\n fireEvent(eventName: TreeEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Field } from './Field';\r\nimport { TranslatableField } from './TranslatableField';\r\nimport { Button } from './fields/Button';\r\nimport { Captcha } from './fields/Captcha';\r\nimport { Checkbox } from './fields/Checkbox';\r\nimport { Editor } from './fields/Editor';\r\nimport { File } from './fields/File';\r\nimport { Grid } from './fields/Grid';\r\nimport { GridProps } from './fields/Grid/types';\r\nimport { GridPaginated } from './fields/GridPaginated';\r\nimport { Hidden } from './fields/Hidden';\r\nimport { Image } from './fields/Image';\r\nimport { Input } from './fields/Input';\r\nimport { Label } from './fields/Label';\r\nimport { Link } from './fields/Link';\r\nimport { ModalInput } from './fields/ModalInput';\r\nimport { Multiple } from './fields/Multiple';\r\nimport { Password } from './fields/Password';\r\nimport { Radio } from './fields/Radio';\r\nimport { Select } from './fields/Select';\r\nimport { Textarea } from './fields/Textarea';\r\nimport { Title } from './fields/Title';\r\nimport { Tree } from './fields/Tree';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\n\r\nexport type FieldConstructor = new (\r\n definition: any,\r\n) =>\r\n | Field<any, any, any>\r\n | FieldWithAttribute<any, any, any>\r\n | TranslatableField<any, any, any>;\r\n\r\nexport type FieldsMapping = Record<\r\n string,\r\n (definition: any) => FieldConstructor\r\n>;\r\n\r\nexport const defaultFieldsMap: FieldsMapping = Object.freeze({\r\n area: () => Textarea,\r\n button: () => Button,\r\n captcha: () => Captcha,\r\n check: () => Checkbox,\r\n editor: () => Editor,\r\n file: () => File,\r\n grid: (def) => {\r\n const definition = def as TApiaFieldBaseDefinition<GridProps>;\r\n\r\n if (definition?.properties?.paged) {\r\n return GridPaginated;\r\n }\r\n\r\n return Grid;\r\n },\r\n hidden: () => Hidden,\r\n href: () => Link,\r\n image: () => Image,\r\n input: (def) => {\r\n const definition = def as TApiaFieldWithAttributeBaseProps<any>;\r\n\r\n if (definition.qryId) {\r\n return ModalInput;\r\n }\r\n\r\n return Input;\r\n },\r\n label: () => Label,\r\n multiple: () => Multiple,\r\n password: () => Password,\r\n radio: () => Radio,\r\n select: () => Select,\r\n title: () => Title,\r\n tree: () => Tree,\r\n});\r\n","import { action, computed, makeObservable, observable } from 'mobx';\r\nimport { TProcess } from './types';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\n\r\nexport class Process {\r\n state: TProcess | null = null;\r\n\r\n uploader = new UploaderApi(\r\n 'ProcessUploader',\r\n 'P',\r\n window.processDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n name: computed,\r\n });\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n async init() {\r\n const res = await post<{ processData: { text: string } }>(\r\n makeApiaUrl({\r\n action: 'getProcessData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.processData.text) {\r\n throw new Error('Cannot retrieve the process data');\r\n }\r\n\r\n const parsedData: TProcess = JSON.parse(res?.data?.processData.text);\r\n const calValue = arrayOrArray(parsedData.calendar?.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n const priorityValue =\r\n arrayOrArray(parsedData.priority.options).find((c) => c.selected)\r\n ?.value ?? arrayOrArray(parsedData?.priority?.options)[0]?.value;\r\n\r\n this.state = parsedData;\r\n if (calValue) this.state.calendar.value = calValue;\r\n if (priorityValue) this.state.priority.value = priorityValue;\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n cmbProPri: this.state?.priority?.value,\r\n selCal: this.state?.calendar?.value,\r\n };\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n if (this.state?.priority) this.state.priority.value = newPriority;\r\n }\r\n}\r\n","export class Task {\r\n #name: string;\r\n constructor(task: any) {\r\n this.#name = task.name;\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n get name() {\r\n return this.#name;\r\n }\r\n}\r\n","import { computed, makeObservable, observable } from 'mobx';\r\nimport { TEntity } from './type';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\n\r\nexport class Entity {\r\n state: TEntity | null = null;\r\n\r\n uploader = new UploaderApi(\r\n 'EntityUploader',\r\n 'E',\r\n window.entityDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n name: computed,\r\n });\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n async init() {\r\n const res = await post<{ entityData: { text: string } }>(\r\n makeApiaUrl({\r\n action: 'getEntityData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.entityData.text) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n this.uploader.onInit();\r\n\r\n const parsedData: TEntity = JSON.parse(res?.data?.entityData.text);\r\n const statusValue = arrayOrArray(parsedData.status.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n this.state = parsedData;\r\n if (statusValue && this.state.status) this.state.status.value = statusValue;\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n busEntSta: this.state?.status.value,\r\n };\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { TObservation, TObservations } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\nexport class Observations {\r\n state: TObservations = { newObservation: null, observations: [] };\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n });\r\n }\r\n\r\n async init() {\r\n this.state = { newObservation: null, observations: [] };\r\n\r\n const res = await post<{\r\n obData: { text: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'getObservationsData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.obData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n\r\n const parsedData: {\r\n observations: TObservation[];\r\n newCommentData: { comment: string; isChecked: boolean };\r\n } = JSON.parse(res?.data?.obData.text);\r\n\r\n this.state.observations = arrayOrArray(parsedData.observations);\r\n\r\n const newObservation = {\r\n commentValue: parsedData.newCommentData.comment,\r\n chkAddAlert: parsedData.newCommentData.isChecked,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n };\r\n this.state.newObservation = newObservation;\r\n }\r\n getConfirmParams() {\r\n return {\r\n txtComment: this.state.newObservation?.commentValue,\r\n chkAddAlert: this.state.newObservation?.chkAddAlert === true ? 'on' : '',\r\n chkAddAllAlert:\r\n this.state.newObservation?.chkAddAllAlert === true ? 'on' : '',\r\n chkRemAlert: this.state.newObservation?.chkRemAlert === true ? 'on' : '',\r\n };\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n}\r\n","export type ConfirmChecker = (\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep =\r\n | 'CHECK_LOCK'\r\n | 'CONFIRM'\r\n | 'CHECK_SIGN'\r\n | 'CHECK_WIZARD'\r\n | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowPoolSelection extends FlowModal<{\r\n confirmed: boolean;\r\n group: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n group: string;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport type TFetchConfirmPathResponse = {\r\n sysMessages?: {\r\n message?: {\r\n text: string;\r\n };\r\n };\r\n pathSelection?: boolean | null;\r\n groupSelection?: boolean | null;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n};\r\n\r\nexport class ShowPathSelection extends FlowModal<{\r\n confirmed: boolean;\r\n path: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n path: string;\r\n }) => Promise<Status | FlowModal<any>>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { ShowPoolSelection } from './ShowPoolSelection';\r\nimport {\r\n ShowPathSelection,\r\n TFetchConfirmPathResponse,\r\n} from './ShowPathSelection';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution, ExecutionState } from '..';\r\nimport { TCheckWizardResponse } from './types';\r\nimport { parseXMLRequestResponse, TApiaLoadForm } from '@apia/util';\r\nimport axios from 'axios';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmResponse } from '../types';\r\n\r\nfunction buildPoolSelection(status: Status, poolForm: TApiaLoadForm['form']) {\r\n return new ShowPoolSelection(poolForm, async (result) => {\r\n if (result.confirmed) {\r\n const confirmPoolResult = await axios.post<{\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'confirmPool',\r\n isAjax: true,\r\n appletToken: 'null',\r\n }),\r\n result.group,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n confirmPoolResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else {\r\n throw Error('Failed to confirm pool');\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nfunction buildPathSelection(status: Status, form: TApiaLoadForm['form']) {\r\n return new ShowPathSelection(form, async (result) => {\r\n if (result.confirmed) {\r\n const pathSelectionResult = await axios.post<TFetchConfirmPathResponse>(\r\n makeApiaUrl({\r\n action: 'confirmPath',\r\n isAjax: true,\r\n asXML: true,\r\n }),\r\n result.path,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n pathSelectionResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes?.groupSelection) {\r\n return buildPoolSelection(status, parsedRes.load!.form!);\r\n } else if (parsedRes?.actions?.action?.toDo === 'functionTimedCall') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n\r\n const selectedPathInServer = true; // fetch(confirmPath, result.path)\r\n if (selectedPathInServer) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nasync function checkSign(status: Status): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n makeApiaUrl({\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(status: Status): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n }[];\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1].text === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(status: Status): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1]?.text !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...Execution.instance.getEntity().getConfirmParams(),\r\n ...Execution.instance.getProcess().getConfirmParams(),\r\n ...Execution.instance.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmResponse>(\r\n makeApiaUrl({\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: '',\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (confirmResponse?.data?.sysMessages?.message) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n };\r\n }\r\n if (confirmResponse?.data?.onClose === 'confirmOkOnClose') {\r\n Execution.instance.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(\r\n status,\r\n confirmResponse.data.load?.text?.text ?? '',\r\n );\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n const checkConfirmProcess = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'P',\r\n currentTab: 0,\r\n }),\r\n );\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(checkConfirmEntity.data?.form);\r\n }\r\n if (checkConfirmProcess?.data?.form) {\r\n setAjaxFormResponse(checkConfirmProcess.data?.form);\r\n }\r\n if (confirmResponse?.data?.pathSelection) {\r\n return buildPathSelection(status, confirmResponse.data.load!.form!);\r\n }\r\n\r\n if (confirmResponse?.data?.groupSelection === true) {\r\n return buildPoolSelection(status, confirmResponse.data.load!.form!);\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_WIZARD',\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\nasync function checkWizard(status: Status): Promise<Status> {\r\n const checkWizardResponse = await post<TCheckWizardResponse>(\r\n makeApiaUrl({\r\n action: 'checkWizzard',\r\n }),\r\n {\r\n postData: {},\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (!checkWizardResponse?.data?.url && checkWizardResponse?.status === 200) {\r\n Execution.instance.close();\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n } else if (checkWizardResponse?.data?.url) {\r\n window.location.assign(checkWizardResponse.data.url + '&nuevo=true');\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: true,\r\n error: 'Failed to check wizard',\r\n };\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CHECK_WIZARD: checkWizard,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirm(\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n Notifications.instance.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { InitialData } from '../InitialData';\r\nimport { labels } from '../../util/labels/labels';\r\nimport { Form } from './FormsExecution/Form';\r\nimport { TFrmParent } from '../InitialData/types/TApiaForm';\r\nimport { FieldsMapping, defaultFieldsMap } from './FormsExecution/fieldsMap';\r\nimport { Notifications } from '../Notifications';\r\nimport { MessageNotification } from '../Notifications/MessageNotification';\r\nimport { Process } from './Process';\r\nimport { makeAutoObservable } from 'mobx';\r\nimport { Field } from './FormsExecution/Field';\r\nimport { makeApiaUrl, post, get, parseXml, arrayOrArray } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport { postNavigation } from '@apia/util';\r\nimport { Observations } from './Observations';\r\nimport { confirm } from './FlowModals/confirmFlow';\r\nimport { ConfirmStep, FlowModal, Status } from './FlowModals/FlowModal';\r\nimport { Captcha } from './FormsExecution/fields';\r\nimport { getCurrentTabsString } from '../../util/app/getCurrentTabsString';\r\nimport { TFetchTaskActionResponse } from './types';\r\nimport { ScreenLocker } from '@apia/components';\r\ninterface TExec_errors {\r\n onClose: string;\r\n sysMessages: {\r\n message: {\r\n text: string;\r\n }[];\r\n };\r\n}\r\n\r\nexport enum ExecutionState {\r\n RUNNING,\r\n LOADING,\r\n FINISHED,\r\n RENDERING,\r\n}\r\nexport type TExecutionConfig = {\r\n canConfirm: boolean;\r\n canGoBack: boolean;\r\n canGoForward: boolean;\r\n canSave: boolean;\r\n canFree: boolean;\r\n canDelegate: boolean;\r\n canClose: boolean;\r\n canShare: boolean;\r\n};\r\n\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/&apos;/g, \"'\")\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&lt;/g, '<')\r\n .replace(/&amp;/g, '&');\r\n }\r\n return '';\r\n};\r\n\r\nexport class Execution {\r\n static #instance: Execution | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new Execution();\r\n\r\n return this.#instance!;\r\n }\r\n public fieldsMapping: FieldsMapping;\r\n private entity = new Entity();\r\n private process = new Process();\r\n private observations = new Observations();\r\n public executionConfig: TExecutionConfig | null = null;\r\n private _steps: {\r\n title: string;\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[] = [];\r\n private _currentStep: number = 1;\r\n private _stepCount: number = 1;\r\n private constructor(fieldsMapping?: FieldsMapping) {\r\n this.fieldsMapping = { ...defaultFieldsMap, ...fieldsMapping };\r\n\r\n makeAutoObservable(this, { fieldsMapping: false });\r\n }\r\n\r\n protected formsById = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n protected forms = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n\r\n state: {\r\n formsReady: ReturnType<Execution['getAllForms']>;\r\n executionState: ExecutionState;\r\n locked: boolean;\r\n } = {\r\n formsReady: [],\r\n executionState: ExecutionState.LOADING,\r\n locked: true,\r\n };\r\n\r\n locker = new ScreenLocker();\r\n\r\n getAllForms() {\r\n return [...this.forms.E.values(), ...this.forms.P.values()];\r\n }\r\n getFormsByType(type: TFrmParent) {\r\n return [...this.forms[type].values()];\r\n }\r\n getFormByName(formName: string, frmParent?: TFrmParent) {\r\n if (frmParent) {\r\n return this.forms[frmParent].get(formName);\r\n } else {\r\n this.forms.E.get(formName) || this.forms.P.get(formName);\r\n }\r\n }\r\n getFormById(formId: string | number, frmParent?: TFrmParent) {\r\n if (frmParent) return this.formsById[frmParent].get(String(formId));\r\n return (\r\n this.formsById.E.get(String(formId)) ||\r\n this.formsById.P.get(String(formId))\r\n );\r\n }\r\n get currentStep() {\r\n return this._currentStep;\r\n }\r\n get steps() {\r\n return this._steps;\r\n }\r\n public getEntity() {\r\n return this.entity;\r\n }\r\n public getProcess() {\r\n return this.process;\r\n }\r\n public getObservations() {\r\n return this.observations;\r\n }\r\n public getCurrentTask() {\r\n return new Task({ task: { name: 'TODO' } });\r\n }\r\n\r\n private mustRenderForms: string[] = [];\r\n\r\n public async run(executionConfig: TExecutionConfig) {\r\n this.entity.init();\r\n this.process.init();\r\n this.observations.init();\r\n this._stepCount = Number(window.STEP_QTY);\r\n this._currentStep = Number(window.CURRENT_STEP);\r\n this.executionConfig = executionConfig;\r\n\r\n const errXML = unescapeMarkup(window.EXEC_ERRORS);\r\n\r\n if (errXML) {\r\n const obj: TExec_errors = parseXml(errXML);\r\n arrayOrArray(obj.sysMessages?.message).forEach((c) =>\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'warning',\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n for (let i = 1; i < Number(window.STEP_QTY) + 1; i++) {\r\n if (i < this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'completed',\r\n });\r\n }\r\n if (i > this._currentStep && i <= this._stepCount) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'pending',\r\n });\r\n }\r\n if (i === this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'current',\r\n });\r\n }\r\n }\r\n const res = await InitialData.instance.getFormsDefinition();\r\n\r\n try {\r\n for await (const formDefinition of res) {\r\n this.mustRenderForms.push(\r\n formDefinition.frmParent + '_' + formDefinition.formName,\r\n );\r\n }\r\n for await (const formDefinition of res) {\r\n const newForm = new Form(formDefinition);\r\n await newForm.init();\r\n\r\n if (formDefinition.frmParent === 'E') {\r\n this.forms.E.set(formDefinition.formName, newForm);\r\n this.formsById.E.set(String(formDefinition.id), newForm);\r\n } else {\r\n this.forms.P.set(formDefinition.formName, newForm);\r\n this.formsById.P.set(String(formDefinition.id), newForm);\r\n }\r\n }\r\n\r\n for await (const formDefinition of res) {\r\n this.formsById[formDefinition.frmParent]\r\n .get(String(formDefinition.id))\r\n ?.runEvent('onLoad');\r\n }\r\n\r\n this.state.formsReady = this.getAllForms();\r\n this.state.executionState = ExecutionState.RENDERING;\r\n this.state.locked = false;\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorLoadForms(),\r\n }),\r\n );\r\n }\r\n }\r\n\r\n public markFormAsRendered(frmParent: string, frmName: string) {\r\n this.mustRenderForms = this.mustRenderForms.filter(\r\n (c) => c !== frmParent + '_' + frmName,\r\n );\r\n if (this.mustRenderForms.length === 0) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n }\r\n\r\n public async back() {\r\n const canGoBack = this.executionConfig?.canGoBack;\r\n if (canGoBack) {\r\n try {\r\n const nextUrl = makeApiaUrl({\r\n action: 'gotoPrevStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(),\r\n fromPanel: null,\r\n nuevo: true,\r\n });\r\n\r\n const serverParams = {\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async close() {\r\n const tabId = ((window.top ?? window).tabsController as any)?.handler\r\n .activeTab.id;\r\n const force = true;\r\n ((window.top ?? window).tabsController as any)?.handler.closeTab(\r\n tabId,\r\n force,\r\n );\r\n }\r\n\r\n public async desktop() {}\r\n\r\n public async confirm(\r\n status?: Status,\r\n step?: ConfirmStep,\r\n ): Promise<boolean | FlowModal<any> | Field> {\r\n const isValid = await this.validate();\r\n const canConfirm = this.executionConfig?.canConfirm && isValid === true;\r\n\r\n if (canConfirm) {\r\n try {\r\n const result = await confirm(\r\n status || {\r\n step: step ?? 'CHECK_LOCK',\r\n },\r\n );\r\n\r\n if (result instanceof FlowModal) {\r\n return result;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n } else {\r\n return isValid;\r\n }\r\n }\r\n\r\n public async free() {\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const data = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'release',\r\n nuevo: true,\r\n currentTab: getCurrentTabsString(),\r\n }),\r\n {\r\n postData: serverParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n return data;\r\n }\r\n\r\n public async print() {\r\n window.print();\r\n }\r\n\r\n public getStepTitle(step: number) {\r\n if (this._steps) return this._steps[step];\r\n }\r\n\r\n public async next() {\r\n const isValid = await this.validate();\r\n if (isValid !== true) return isValid;\r\n const canGoNext = this.executionConfig?.canGoForward && isValid === true;\r\n\r\n if (canGoNext) {\r\n try {\r\n const checkLocksRes = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksRes?.data?.actions?.action?.param[1]?.text !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n throw new Error('Failed to check WebDAV document locks.');\r\n }\r\n\r\n // Check signable forms\r\n const checkSignableFormsRes = await post<{ hasForms: boolean }>(\r\n makeApiaUrl({\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (checkSignableFormsRes?.status !== 200) {\r\n throw new Error('No signable forms available.');\r\n }\r\n\r\n const nextUrl = makeApiaUrl({\r\n action: 'gotoNextStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(),\r\n fromPanel: null,\r\n nuevo: true,\r\n });\r\n\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n return true;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async save() {\r\n const data = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n nuevo: true,\r\n }),\r\n );\r\n\r\n const saveResponse = data as any;\r\n const showSaveConfirmMessage = saveResponse?.onClose as string;\r\n if (\r\n showSaveConfirmMessage === 'confirmOkOnCloseSplash' ||\r\n showSaveConfirmMessage === 'confirmOkOnClose'\r\n ) {\r\n return data;\r\n } else if (\r\n saveResponse?.onClose === 'confirmOkOnSaveSplash' ||\r\n saveResponse?.actions?.action.param[1] === 'confirmOkOnSaveSplash'\r\n ) {\r\n return data;\r\n }\r\n }\r\n\r\n public async viewDocs() {\r\n const url = `${\r\n window.CONTEXT\r\n }/react/generic/docExecutionModal.jsp?isProcessMonitor=${\r\n window.IN_MONITOR_PROCESS ?? 'false'\r\n }&isTaskMonitor=${window.IN_MONITOR_TASK ?? 'false'}&isTask=true${\r\n window.TAB_ID_REQUEST\r\n }&react=true`;\r\n\r\n const result = await get(url);\r\n\r\n if (result && result.data !== null) {\r\n const { data } = result;\r\n return data;\r\n }\r\n }\r\n\r\n public setStepTitle(stepNumber: number, stepTitle: string) {\r\n if (this._steps && this._steps[stepNumber - 1])\r\n this._steps[stepNumber - 1].title = stepTitle;\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const [, c] of this.forms.E) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n for await (const [, c] of this.forms.P) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n\r\n return firstInvalid ?? true;\r\n }\r\n}\r\n","import {\r\n ApiaUtil,\r\n TDispatchedNotification,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { ActionsController } from './ActionController';\r\nimport { IApiaField, IApiaForm, IApiaFunctions, TActionButtons } from './types';\r\nimport { notify } from '@apia/notifications';\r\nimport ApiaForm from './ApiaForm';\r\nimport { TFrmParent } from '../main/InitialData/types/TApiaForm';\r\nimport { Execution } from '../main/Execution';\r\n\r\ndeclare global {\r\n interface Window {\r\n lastModalReturn: string[];\r\n }\r\n}\r\n\r\nconst OptionButton = {\r\n BTN_VIEW_DOCS: 100,\r\n BTN_PRINT: 101,\r\n};\r\n\r\nexport class ApiaFunctions implements IApiaFunctions {\r\n public static instance = new ApiaFunctions();\r\n\r\n private constructor() {}\r\n\r\n getFormByType(frmName: string, frmType: TFrmParent): IApiaForm | null {\r\n const form = Execution.instance.getFormByName(frmName, frmType);\r\n if (form) return new ApiaForm(form);\r\n return null;\r\n }\r\n\r\n actionButton(id: string | number) {\r\n const actualId = this.getButtonAction(id);\r\n return ActionsController.instance.getButton(actualId);\r\n }\r\n\r\n admEntity(\r\n entName: string,\r\n entNum?: number,\r\n parameters?: string,\r\n width?: number,\r\n height?: number,\r\n ) {\r\n entName;\r\n entNum;\r\n parameters;\r\n width;\r\n height;\r\n ApiaUtil.instance.modals.open({ children: 'TODO' });\r\n //TODO\r\n }\r\n\r\n clearMessages() {\r\n ApiaUtil.instance.notifications.closeAll();\r\n }\r\n\r\n clickActionButton(button: number) {\r\n const id = Number(button);\r\n let action;\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n action = 'confirm';\r\n break;\r\n case ActionsController.NEXT:\r\n action = 'next';\r\n break;\r\n case ActionsController.PREVIOUS:\r\n action = 'previous';\r\n break;\r\n case ActionsController.SAVE:\r\n action = 'save';\r\n break;\r\n case ActionsController.RELEASE:\r\n action = 'release';\r\n break;\r\n case ActionsController.DELEGATE:\r\n action = 'delegate';\r\n break;\r\n case ActionsController.SHARE:\r\n action = 'socialShare';\r\n break;\r\n case OptionButton.BTN_VIEW_DOCS:\r\n action = 'viewDocs';\r\n break;\r\n case OptionButton.BTN_PRINT:\r\n action = 'print';\r\n break;\r\n case ActionsController.CLOSE:\r\n action = 'close';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n (\r\n document.querySelector(`[action=\"${action}\"]`) as HTMLButtonElement\r\n )?.click();\r\n }\r\n\r\n closeCurrentTab(): void {\r\n ApiaUtil.instance.tabs.currentTab.close();\r\n }\r\n\r\n disableActionButton(id: string | number): void {\r\n const actualId = this.getButtonAction(id);\r\n this.actionButton(actualId)?.disable();\r\n }\r\n\r\n disableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.disableActionButton(actualId);\r\n }\r\n\r\n enableActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.enable();\r\n }\r\n\r\n enableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.enableActionButton(actualId);\r\n }\r\n\r\n getAllForms(): IApiaForm[] {\r\n return Execution.instance.getAllForms().map((c) => new ApiaForm(c));\r\n }\r\n getAllFormsByType(type: 'P' | 'E'): IApiaForm[] {\r\n return Execution.instance.getAllForms().reduce<ApiaForm[]>((acc, c) => {\r\n if (c.definition.frmParent === type) {\r\n acc.push(new ApiaForm(c));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getAttField(\r\n attType: 'P' | 'E',\r\n attId: string,\r\n ): IApiaField | IApiaField[] | undefined {\r\n const fields: IApiaField[] = [];\r\n this.getAllFormsByType(attType).forEach((c) =>\r\n fields.push(c.getField(attId) as IApiaField),\r\n );\r\n return fields;\r\n }\r\n\r\n getButtonAction(id: number | string) {\r\n let btnId: TActionButtons;\r\n\r\n switch (id) {\r\n case ActionsController.CLOSE || 'CLOSE':\r\n btnId = 'CLOSE';\r\n break;\r\n case ActionsController.CONFIRM || 'CONFIRM':\r\n btnId = 'CONFIRM';\r\n break;\r\n case ActionsController.DELEGATE || 'DELEGATE':\r\n btnId = 'DELEGATE';\r\n break;\r\n case ActionsController.NEXT || 'NEXT':\r\n btnId = 'NEXT';\r\n break;\r\n case ActionsController.PREVIOUS || 'PREVIOUS':\r\n btnId = 'PREVIOUS';\r\n break;\r\n case ActionsController.PRINT || 'PRINT':\r\n btnId = 'PRINT';\r\n break;\r\n case ActionsController.RELEASE || 'RELEASE':\r\n btnId = 'RELEASE';\r\n break;\r\n case ActionsController.SAVE || 'SAVE':\r\n btnId = 'SAVE';\r\n break;\r\n case ActionsController.SIGN || 'SIGN':\r\n btnId = 'SIGN';\r\n break;\r\n case ActionsController.SHARE || 'SHARE':\r\n btnId = 'SHARE';\r\n break;\r\n case ActionsController.VIEW_DOCS || 'VIEW_DOCS':\r\n btnId = 'VIEW_DOCS';\r\n break;\r\n default:\r\n throw new Error(`There is no button with id ${id}`);\r\n }\r\n return btnId;\r\n }\r\n\r\n getCurrentLanguageCode(): string | null {\r\n return window.LANG_CODE;\r\n }\r\n\r\n getCurrentProcessName(): string | null {\r\n return Execution.instance.getProcess().name ?? null;\r\n }\r\n\r\n getCurrentStep(): number | null {\r\n return Execution.instance.currentStep;\r\n }\r\n\r\n getCurrentTaskName(): string | null {\r\n return Execution.instance.getCurrentTask().name;\r\n }\r\n\r\n getEntityForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'E');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getForm(frmName: string, frmType?: string): IApiaForm | null {\r\n if (frmType === 'E') return this.getFormByType(frmName, frmType);\r\n if (frmType === 'P') return this.getFormByType(frmName, frmType);\r\n const eFrm = this.getFormByType(frmName, 'E');\r\n if (eFrm) {\r\n return eFrm;\r\n }\r\n const pForm = this.getFormByType(frmName, 'P');\r\n return pForm;\r\n }\r\n\r\n getLastModalReturn() {\r\n return window.lastModalReturn;\r\n }\r\n\r\n getModalReturn() {\r\n return this.getLastModalReturn();\r\n }\r\n\r\n getModalSelectedRow() {\r\n return window.lastModalReturn.slice(2);\r\n }\r\n\r\n getModalShowValue() {\r\n return window.lastModalReturn[1];\r\n }\r\n\r\n getModalValue() {\r\n return window.lastModalReturn[0];\r\n }\r\n\r\n getProcessForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'P');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getRootPath(): string | null {\r\n try {\r\n return window.APIA_ROOT_CONTEXT;\r\n } catch (e: unknown) {\r\n if (e instanceof Error) {\r\n console.error(`Apia JSApi Error: ${e.message}`);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hideActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.hide();\r\n }\r\n\r\n hideOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.hideActionButton(actualId);\r\n }\r\n\r\n openModal(props: TOpenModal) {\r\n ApiaUtil.instance.modals.open(props);\r\n }\r\n\r\n openTab(title: string, url: string): void {\r\n ApiaUtil.instance.tabs.openTab(title, url);\r\n }\r\n\r\n saveTask() {\r\n //TODO\r\n Execution.instance.save().then((res) => {\r\n if (res) console.warn('Manage...');\r\n });\r\n }\r\n\r\n setLastModalReturn(value: string[]) {\r\n window.lastModalReturn = value;\r\n window.lastModalReturn = value;\r\n }\r\n\r\n setStepTitle(stepNumber: number, stepTitle: string): void {\r\n Execution.instance.setStepTitle(stepNumber, stepTitle);\r\n }\r\n\r\n showActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.show();\r\n }\r\n\r\n showConfirm(\r\n text: string,\r\n title: string,\r\n callbackFn: (win: boolean) => unknown,\r\n ): void {\r\n ApiaUtil.instance.dialogs\r\n .confirm({ children: text, title })\r\n .then((hasConfirmed) => {\r\n try {\r\n callbackFn(hasConfirmed);\r\n } catch (e) {\r\n if (e instanceof Error) {\r\n notify({\r\n message: String(e),\r\n type: 'danger',\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n showMessage(\r\n text: string,\r\n title?: string,\r\n type?: TDispatchedNotification['type'],\r\n ): void {\r\n notify({ message: text, type: type ?? 'warning', title });\r\n }\r\n\r\n showOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.showActionButton(actualId);\r\n }\r\n\r\n // converts a number in an Apia formatted number\r\n toApiaNumber(value: number): number | string {\r\n return ApiaUtil.instance.parsers.apiaNumber(value);\r\n }\r\n\r\n // converts an Apia formatted number into a javascript number\r\n toJSNumber(value: string): number | string {\r\n return ApiaUtil.instance.parsers.jsNumber(value);\r\n }\r\n\r\n viewAdmEntity(entName: string, entNum?: number) {\r\n this.admEntity(entName, entNum);\r\n }\r\n}\r\n","import { computed, makeObservable, observable, toJS } from 'mobx';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { actions } from '../constants/actions';\r\nimport { arrayOrArray, parseXml, post } from '../../../../util';\r\nimport type { Form } from '../Form';\r\nimport { setAjaxFormResponse } from '../events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { ResponseSysMessages } from '../../../../util/api/types';\r\nimport {\r\n ComponentEvent,\r\n TCusCmpStateRequest,\r\n TCustomComponentDefaultResponse,\r\n TCustomComponentDefinition,\r\n} from '../../../InitialData/types/TApiaForm';\r\nimport { DeepReadonly, freezeDeep } from '@apia/util';\r\nimport { TFncParams } from '../Field';\r\nimport { Notifications } from '../../../Notifications';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { ApiaFunctions } from '../../../../programming';\r\n\r\nexport type TCustomComponentState = {\r\n isLoading: boolean;\r\n\r\n attributes: Record<string, any[]>;\r\n properties: Record<string, any>;\r\n additional: any;\r\n};\r\n\r\nexport class CustomComponent {\r\n #hasInited = false;\r\n public form: Form = {} as Form;\r\n private _state: TCustomComponentState = {\r\n isLoading: false,\r\n attributes: {},\r\n properties: {},\r\n additional: {},\r\n };\r\n\r\n constructor(public readonly definition: TCustomComponentDefinition) {\r\n makeObservable<CustomComponent, '_state'>(this, {\r\n _state: observable,\r\n state: computed,\r\n });\r\n this.parseStateObject(definition.state.state);\r\n }\r\n\r\n public get state(): DeepReadonly<TCustomComponentState> {\r\n return freezeDeep(toJS(this._state));\r\n }\r\n\r\n public getAdditional<T>() {\r\n return this.state.additional as DeepReadonly<T>;\r\n }\r\n\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n\r\n private parseStateObject(o: TCusCmpStateRequest) {\r\n if (o.additional) {\r\n this._state.additional = JSON.parse(o.additional.text);\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(c.values).map(\r\n (c) => c.text,\r\n );\r\n });\r\n arrayOrArray(o.property).forEach((c) => {\r\n this._state.properties[c.name] = c.value;\r\n });\r\n }\r\n\r\n public async processResult(res?: TCustomComponentDefaultResponse | null) {\r\n let proceed = true;\r\n const scheduledEvents: string[] = [];\r\n\r\n const newState = res?.state || res?.processResult?.state;\r\n\r\n if (newState) {\r\n for (const directive of arrayOrArray(newState.directive)) {\r\n if (directive.type === 'RELOAD') {\r\n proceed = false;\r\n window.location.assign(\r\n makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'reload',\r\n nuevo: true,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n );\r\n } else if (directive.type === 'FIRE') {\r\n scheduledEvents.push(directive.content);\r\n }\r\n }\r\n }\r\n\r\n if (proceed) {\r\n if (res!.ajaxUpdated) {\r\n const result = parseXml(res!.ajaxUpdated.text);\r\n\r\n setAjaxFormResponse(\r\n result as TFieldAjaxEventResponsePayload & ResponseSysMessages,\r\n );\r\n }\r\n\r\n if (newState) {\r\n this.parseStateObject(newState);\r\n }\r\n\r\n for await (const event of scheduledEvents) {\r\n await this.fireEvent(event);\r\n }\r\n\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n protected getScriptEventParams(fncParams: TFncParams[]): unknown[] {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n ApiaFunctions.instance\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n protected async fireScriptEvents(event: ComponentEvent): Promise<boolean> {\r\n let result = true;\r\n\r\n for await (const script of arrayOrArray(event.script)) {\r\n const def = JSON.parse(script.text) as {\r\n fncName: string;\r\n fncParams: {\r\n type: 'P' | 'E';\r\n attId: number;\r\n }[];\r\n };\r\n\r\n try {\r\n const fn = (window as any)[def.fncName] as (\r\n src: CustomComponent | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n result =\r\n result &&\r\n (await fn(\r\n this,\r\n ...this.getScriptEventParams(arrayOrArray(def.fncParams)),\r\n ));\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(event.name, def.fncName),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async fireEvent(evtName: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const event = arrayOrArray(this.definition.event).find(\r\n (c) => c.name === evtName,\r\n );\r\n if (!event) {\r\n throw new Error('Unknown event ' + evtName);\r\n }\r\n\r\n if (\r\n (!event.script || (await this.fireScriptEvents(event))) &&\r\n event.serverEvents\r\n ) {\r\n await this.processResult(\r\n (await this.postMessage('fireEvent', evtName))?.data,\r\n );\r\n }\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getProperty(prpName: string) {\r\n return this._state.properties[prpName];\r\n }\r\n\r\n private async postMessage(method: string, body: any) {\r\n return post<TCustomComponentDefaultResponse>(\r\n makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData: {\r\n payload: body,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n }\r\n\r\n async setStringValue(attName: string, value: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n attName,\r\n clear: true,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getStringValue(attName: string) {\r\n return this._state.attributes[attName].join();\r\n }\r\n\r\n getValue(attName: string, index: number = 0) {\r\n return this._state.attributes[attName][index];\r\n }\r\n\r\n async setValue(attName: string, value: any, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n index,\r\n attName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setProperty(prpName: string, value: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setProperty',\r\n JSON.stringify({\r\n prpName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async sendMessage(payload: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'message',\r\n typeof payload === 'object' && payload\r\n ? JSON.stringify(payload)\r\n : payload,\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n}\r\n","import { Notification, NotificationDefinition } from './Notification';\r\n\r\nexport class StatusNotification extends Notification<\r\n NotificationDefinition & { blocking: boolean }\r\n> {\r\n constructor(\r\n public readonly props: NotificationDefinition & { blocking: boolean },\r\n ) {\r\n super(props);\r\n }\r\n}\r\n"],"names":["Field","Form","IProperty","_instance","__publicField","__privateGet","__privateSet","__privateAdd","formProps","fieldProps","parser","queryString","id","_field","arrayOrArray","TextAreaField","_hasInited","ApiaFunctions","result","noNaN","parseFakeJSON","EventEmitter","getLabel","makeApiaUrl","_hasSetHeadersSizes","properties","ExecutionState","c"],"mappings":";;;;;;;;;AAAA,MAAMA,OAAQ,GAAA;AAAA;AAAA,EAEZ,UAAY,EAAA,OAAA;AAAA,EACZ,WAAa,EAAA,QAAA;AAAA,EACb,UAAY,EAAA,OAAA;AAAA,EACZ,UAAY,EAAA,OAAA;AAAA,EACZ,WAAa,EAAA,QAAA;AAAA,EACb,SAAW,EAAA,MAAA;AAAA,EACX,UAAY,EAAA,OAAA;AAAA,EACZ,UAAY,EAAA,OAAA;AAAA,EACZ,SAAW,EAAA,MAAA;AAAA,EACX,aAAe,EAAA,UAAA;AAAA,EACf,WAAa,EAAA,QAAA;AAAA,EACb,aAAe,EAAA,UAAA;AAAA,EACf,SAAW,EAAA,MAAA;AAAA,EACX,UAAY,EAAA,OAAA;AAAA,EACZ,SAAW,EAAA,MAAA;AAAA,EACX,WAAa,EAAA,QAAA;AAAA,EACb,SAAW,EAAA,MAAA;AAAA,EACX,YAAc,EAAA,SAAA;AAAA;AAAA,EAGd,UAAY,EAAA,SAAA;AAAA,EACZ,WAAa,EAAA,UAAA;AAAA,EACb,iBAAmB,EAAA,eAAA;AAAA,EAEnB,YAAc,EAAA,UAAA;AAAA,EACd,eAAiB,EAAA,aAAA;AAAA,EACjB,aAAe,EAAA,WAAA;AAAA,EACf,eAAiB,EAAA,aAAA;AAAA;AAAA,EAGjB,gBAAkB,EAAA,YAAA;AAAA;AAAA,EAGlB,aAAe,EAAA,MAAA;AAAA,EACf,aAAe,EAAA,MAAA;AAAA,EACf,iBAAmB,EAAA,UAAA;AAAA,EACnB,iBAAmB,EAAA,UAAA;AAAA,EACnB,uBAAyB,EAAA,eAAA;AAAA,EACzB,mBAAqB,EAAA,WAAA;AAAA,EACrB,cAAgB,EAAA,OAAA;AAAA,EAChB,iBAAmB,EAAA,UAAA;AAAA,EACnB,gBAAkB,EAAA,SAAA;AAAA,EAClB,gBAAkB,EAAA,SAAA;AAAA,EAClB,cAAgB,EAAA,OAAA;AAAA,EAChB,aAAe,EAAA,UAAA;AAAA,EACf,aAAe,EAAA,MAAA;AAAA,EACf,mBAAqB,EAAA,YAAA;AAAA,EACrB,kBAAoB,EAAA,WAAA;AAAA,EACpB,cAAgB,EAAA,UAAA;AAAA,EAChB,kBAAoB,EAAA,UAAA;AAAA,EACpB,oBAAsB,EAAA,YAAA;AAAA,EACtB,sBAAwB,EAAA,iBAAA;AAAA,EACxB,0BAA4B,EAAA,kBAAA;AAAA,EAC5B,kBAAoB,EAAA,WAAA;AAAA,EACpB,mBAAqB,EAAA,WAAA;AAAA,EACrB,kBAAoB,EAAA,UAAA;AAAA,EACpB,gBAAkB,EAAA,SAAA;AAAA,EAClB,oBAAsB,EAAA,YAAA;AAAA,EACtB,sBAAwB,EAAA,aAAA;AAAA,EACxB,oBAAsB,EAAA,YAAA;AAAA,EACtB,iBAAmB,EAAA,SAAA;AAAA,EACnB,gBAAkB,EAAA,QAAA;AAAA,EAClB,mBAAqB,EAAA,WAAA;AAAA,EACrB,kBAAoB,EAAA,UAAA;AAAA,EACpB,sBAAwB,EAAA,cAAA;AAAA,EACxB,wBAA0B,EAAA,iBAAA;AAAA,EAC1B,YAAc,EAAA,KAAA;AAAA,EACd,4BAA8B,EAAA,iBAAA;AAAA,EAC9B,8BAAgC,EAAA,mBAAA;AAAA,EAChC,uBAAyB,EAAA,eAAA;AAAA,EACzB,mBAAqB,EAAA,OAAA;AAAA,EACrB,wBAA0B,EAAA,eAAA;AAAA,EAC1B,gCAAkC,EAAA,mBAAA;AAAA,EAClC,8BAAgC,EAAA,iBAAA;AAAA,EAChC,iCAAmC,EAAA,mBAAA;AAAA,EACnC,0BAA4B,EAAA,iBAAA;AAAA,EAC5B,qBAAuB,EAAA,YAAA;AAAA,EACvB,mBAAqB,EAAA,cAAA;AAAA,EACrB,mBAAqB,EAAA,WAAA;AAAA,EACrB,6BAA+B,EAAA,oBAAA;AAAA,EAC/B,8BAAgC,EAAA,qBAAA;AAAA,EAChC,0BAA4B,EAAA,eAAA;AAAA,EAC5B,0BAA4B,EAAA,eAAA;AAAA,EAC5B,wBAA0B,EAAA,eAAA;AAAA,EAC1B,0BAA4B,EAAA,iBAAA;AAAA,EAC5B,uBAAyB,EAAA,cAAA;AAAA,EACzB,sBAAwB,EAAA,aAAA;AAAA,EACxB,yBAA2B,EAAA,gBAAA;AAAA,EAC3B,sBAAwB,EAAA,iBAAA;AAAA,EACxB,qBAAuB,EAAA,aAAA;AAAA,EACvB,yBAA2B,EAAA,gBAAA;AAAA,EAC3B,gBAAkB,EAAA,SAAA;AAAA,EAClB,qBAAuB,EAAA,aAAA;AAAA,EACvB,kBAAoB,EAAA,SAAA;AAAA;AAAA,EAEpB,sBAAwB,EAAA,WAAA;AAAA,EACxB,eAAiB,EAAA,QAAA;AAAA,EACjB,oBAAsB,EAAA,aAAA;AAAA,EACtB,mBAAqB,EAAA,WAAA;AAAA,EACrB,oBAAsB,EAAA,YAAA;AAAA,EACtB,kBAAoB,EAAA,UAAA;AAAA,EACpB,kBAAoB,EAAA,UAAA;AAAA,EACpB,iBAAmB,EAAA,SAAA;AAAA;AAAA,EAEnB,0BAA4B,EAAA,iBAAA;AAAA,EAC5B,6BAA+B,EAAA,SAAA;AAAA,EAC/B,2BAA6B,EAAA,SAAA;AAAA,EAC7B,6BAA+B,EAAA,aAAA;AAAA,EAC/B,6BAA+B,EAAA,oBAAA;AAAA,EAC/B,6BAA+B,EAAA,oBAAA;AAAA,EAC/B,oCAAsC,EAAA,oBAAA;AAAA,EACtC,oCAAsC,EAAA,oBAAA;AAAA,EACtC,oCAAsC,EAAA,eAAA;AAAA,EACtC,+BAAiC,EAAA,wBAAA;AAAA,EACjC,2BAA6B,EAAA,cAAA;AAAA,EAC7B,gCAAkC,EAAA,eAAA;AAAA,EAClC,6BAA+B,EAAA,gBAAA;AAAA,EAC/B,0BAA4B,EAAA,aAAA;AAAA,EAC5B,iCAAmC,EAAA,mBAAA;AAAA,EACnC,+BAAiC,EAAA,wBAAA;AAAA,EACjC,+BAAiC,EAAA,sBAAA;AAAA,EACjC,kCAAoC,EAAA,qBAAA;AAAA;AAAA,EAGpC,oBACE,EAAA,mFAAA;AAAA;AAAA,EAGF,eAAiB,EAAA,OAAA;AAAA,EACjB,cAAgB,EAAA,MAAA;AAAA,EAEhB,yBAA2B,EAAA,iBAAA;AAAA,EAC3B,mBAAqB,EAAA,WAAA;AAAA,EACrB,YAAc,EAAA,KAAA;AAAA,EACd,sBAAwB,EAAA,cAAA;AAAA,EACxB,mBAAqB,EAAA,WAAA;AAAA,EACrB,mBAAqB,EAAA,WAAA;AAAA,EACrB,qBAAuB,EAAA,aAAA;AAAA,EACvB,cAAgB,EAAA,OAAA;AAClB,CAAA,CAAA;AAEA,cAAeA,OAAA;;AC/If,MAAMC,MAAO,GAAA;AAAA,EACX,SAAW,EAAA,QAAA;AAAA,EACX,WAAa,EAAA,UAAA;AAAA,EACb,uBAAyB,EAAA,cAAA;AAAA,EACzB,oBAAsB,EAAA,WAAA;AAAA,EACtB,oBAAsB,EAAA,cAAA;AAAA,EACtB,iBAAmB,EAAA,QAAA;AAAA,EACnB,uBAAyB,EAAA,cAAA;AAAA,EACzB,uBAAyB,EAAA,aAAA;AAAA,EACzB,sBAAwB,EAAA,UAAA;AAAA,EACxB,aAAe,EAAA,cAAA;AAAA,EACf,cAAgB,EAAA,cAAA;AAAA,EAChB,aAAe,EAAA,sBAAA;AAAA,EACf,SAAW,EAAA,OAAA;AACb,CAAA,CAAA;AAEA,aAAeA,MAAA;;ACbR,MAAMC,WAAY,GAAA;AAAA,EACvB,GAAGF,OAAA;AAAA,EACH,GAAGC,MAAA;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA,IAAAE,WAAA,CAAA;AAUO,MAAM,cAAA,GAAN,MAAM,cAAc,CAAA;AAAA,EAYjB,WAAc,GAAA;AAJtB,IAAQC,eAAA,CAAA,IAAA,EAAA,SAAA,EAAU,IAAI,YAEnB,EAAA,CAAA,CAAA;AAUH,IAAAA,eAAA,CAAA,IAAA,EAAU,iBAAgC,EAAC,CAAA,CAAA;AAuB3C,IAAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAK,IAAK,CAAA,OAAA,CAAQ,EAAG,CAAA,IAAA,CAAK,KAAK,OAAO,CAAA,CAAA,CAAA;AA9BpC,IAAA,cAAA,CAA+C,IAAM,EAAA;AAAA,MACnD,aAAe,EAAA,UAAA;AAAA,MACf,GAAK,EAAA,MAAA;AAAA,MACL,MAAQ,EAAA,MAAA;AAAA,KACT,CAAA,CAAA;AAAA,GACH;AAAA,EAhBA,WAAkB,QAAW,GAAA;AAC3B,IAAA,IAAI,CAACC,cAAK,CAAA,IAAA,EAAAF,WAAA,CAAA;AAAW,MAAKG,cAAA,CAAA,IAAA,EAAAH,WAAA,EAAY,IAAI,cAAc,EAAA,CAAA,CAAA;AAExD,IAAA,OAAOE,cAAK,CAAA,IAAA,EAAAF,WAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAgBA,IAAI,YAA4B,EAAA;AAC9B,IAAK,IAAA,CAAA,aAAA,CAAc,KAAK,YAAY,CAAA,CAAA;AACpC,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,cAAA,EAAgB,YAAY,CAAA,CAAA;AAAA,GAChD;AAAA,EAEA,MAAS,GAAA;AACP,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EAEA,QAAQ,EAAqB,EAAA;AAC3B,IAAA,OAAO,KAAK,aAAc,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,EAAE,CAAA,CAAA;AAAA,GACnD;AAAA,EAEA,OAAO,YAA8C,EAAA;AACnD,IAAA,IAAA,CAAK,aAAgB,GAAA,IAAA,CAAK,aAAc,CAAA,MAAA,CAAO,CAAC,CAAM,KAAA;AACpD,MAAA,IAAI,OAAO,YAAA,KAAiB,QAAY,IAAA,OAAO,YAAiB,KAAA,QAAA;AAC9D,QAAA,OAAO,EAAE,EAAO,KAAA,YAAA,CAAA;AAClB,MAAA,OAAO,CAAM,KAAA,YAAA,CAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AAGF,CAAA,CAAA;AA3CSA,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAPI,cAAA,CADW,gBACJJ,WAAkC,EAAA,IAAA,CAAA,CAAA;AADpC,IAAM,aAAN,GAAA;;;;;;;;ACMA,MAAe,YAEpB,CAAA;AAAA,EAGA,YAA4B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAF5B,IAAUC,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAGR,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAEb,IAAA,kBAAA,CAAmB,IAAI,CAAA,CAAA;AAAA,GACzB;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,KAAK,KAAM,CAAA,IAAA,CAAA;AAAA,GACpB;AAAA,EACA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,KAAK,KAAM,CAAA,EAAA,CAAA;AAAA,GACpB;AAAA,EACA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,KAAK,KAAM,CAAA,MAAA,CAAA;AAAA,GACpB;AAAA,EACA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,KAAK,KAAM,CAAA,OAAA,CAAA;AAAA,GACpB;AAAA,EACA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,KAAK,KAAM,CAAA,UAAA,CAAA;AAAA,GACpB;AAAA,EACA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,KAAK,KAAM,CAAA,KAAA,CAAA;AAAA,GACpB;AAAA,EACA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,KAAK,KAAM,CAAA,IAAA,CAAA;AAAA,GACpB;AACF;;AC9CO,MAAM,4BAA4B,YAAa,CAAA;AAAA,EACpD,KAAQ,GAAA;AACN,IAAA,IAAA,CAAK,MAAM,MAAS,GAAA,KAAA,CAAA;AAAA,GACtB;AACF;;ACNO,SAAS,aAAgB,CAA6B,EAAA;AAC3D,EAAI,IAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAG,IAAO,OAAA,CAAA,CAAA;AAC7B,EAAA,IAAI,CAAM,KAAA,KAAA,CAAA;AAAW,IAAA,OAAO,CAAC,CAAC,CAAA,CAAA;AAC9B,EAAA,OAAO,EAAC,CAAA;AACV;;ACJA,MAAM,UAAa,GAAA;AAAA;AAAA,EAEjB,UAAY,EAAA,OAAA;AAAA,EACZ,WAAa,EAAA,QAAA;AAAA,EACb,UAAY,EAAA,OAAA;AAAA,EACZ,UAAY,EAAA,OAAA;AAAA,EACZ,WAAa,EAAA,QAAA;AAAA,EACb,SAAW,EAAA,MAAA;AAAA,EACX,UAAY,EAAA,OAAA;AAAA,EACZ,UAAY,EAAA,OAAA;AAAA,EACZ,SAAW,EAAA,MAAA;AAAA,EACX,aAAe,EAAA,UAAA;AAAA,EACf,WAAa,EAAA,QAAA;AAAA,EACb,aAAe,EAAA,UAAA;AAAA,EACf,SAAW,EAAA,MAAA;AAAA,EACX,UAAY,EAAA,OAAA;AAAA,EACZ,SAAW,EAAA,MAAA;AAAA,EACX,WAAa,EAAA,QAAA;AAAA,EACb,SAAW,EAAA,MAAA;AAAA,EACX,YAAc,EAAA,SAAA;AAAA;AAAA,EAGd,UAAY,EAAA,SAAA;AAAA,EACZ,WAAa,EAAA,UAAA;AAAA,EACb,iBAAmB,EAAA,eAAA;AAAA,EAEnB,YAAc,EAAA,UAAA;AAAA,EACd,eAAiB,EAAA,aAAA;AAAA,EACjB,aAAe,EAAA,WAAA;AAAA,EACf,eAAiB,EAAA,aAAA;AAAA;AAAA,EAGjB,gBAAkB,EAAA,YAAA;AAAA;AAAA,EAGlB,aAAe,EAAA,MAAA;AAAA,EACf,aAAe,EAAA,MAAA;AAAA,EACf,iBAAmB,EAAA,UAAA;AAAA,EACnB,iBAAmB,EAAA,UAAA;AAAA,EACnB,uBAAyB,EAAA,eAAA;AAAA,EACzB,mBAAqB,EAAA,WAAA;AAAA,EACrB,cAAgB,EAAA,OAAA;AAAA,EAChB,iBAAmB,EAAA,UAAA;AAAA,EACnB,gBAAkB,EAAA,SAAA;AAAA,EAClB,gBAAkB,EAAA,SAAA;AAAA,EAClB,cAAgB,EAAA,OAAA;AAAA,EAChB,aAAe,EAAA,UAAA;AAAA,EACf,aAAe,EAAA,MAAA;AAAA,EACf,mBAAqB,EAAA,YAAA;AAAA,EACrB,kBAAoB,EAAA,WAAA;AAAA,EACpB,cAAgB,EAAA,UAAA;AAAA,EAChB,kBAAoB,EAAA,UAAA;AAAA,EACpB,oBAAsB,EAAA,YAAA;AAAA,EACtB,sBAAwB,EAAA,iBAAA;AAAA,EACxB,0BAA4B,EAAA,kBAAA;AAAA,EAC5B,kBAAoB,EAAA,WAAA;AAAA,EACpB,mBAAqB,EAAA,WAAA;AAAA,EACrB,kBAAoB,EAAA,UAAA;AAAA,EACpB,gBAAkB,EAAA,SAAA;AAAA,EAClB,oBAAsB,EAAA,YAAA;AAAA,EACtB,sBAAwB,EAAA,aAAA;AAAA,EACxB,oBAAsB,EAAA,YAAA;AAAA,EACtB,iBAAmB,EAAA,SAAA;AAAA,EACnB,gBAAkB,EAAA,QAAA;AAAA,EAClB,mBAAqB,EAAA,WAAA;AAAA,EACrB,kBAAoB,EAAA,UAAA;AAAA,EACpB,sBAAwB,EAAA,cAAA;AAAA,EACxB,wBAA0B,EAAA,iBAAA;AAAA,EAC1B,YAAc,EAAA,KAAA;AAAA,EACd,4BAA8B,EAAA,iBAAA;AAAA,EAC9B,8BAAgC,EAAA,mBAAA;AAAA,EAChC,uBAAyB,EAAA,eAAA;AAAA,EACzB,mBAAqB,EAAA,OAAA;AAAA,EACrB,wBAA0B,EAAA,eAAA;AAAA,EAC1B,gCAAkC,EAAA,mBAAA;AAAA,EAClC,8BAAgC,EAAA,iBAAA;AAAA,EAChC,iCAAmC,EAAA,mBAAA;AAAA,EACnC,0BAA4B,EAAA,iBAAA;AAAA,EAC5B,qBAAuB,EAAA,YAAA;AAAA,EACvB,mBAAqB,EAAA,cAAA;AAAA,EACrB,mBAAqB,EAAA,WAAA;AAAA,EACrB,6BAA+B,EAAA,oBAAA;AAAA,EAC/B,8BAAgC,EAAA,qBAAA;AAAA,EAChC,0BAA4B,EAAA,eAAA;AAAA,EAC5B,0BAA4B,EAAA,eAAA;AAAA,EAC5B,wBAA0B,EAAA,eAAA;AAAA,EAC1B,0BAA4B,EAAA,iBAAA;AAAA,EAC5B,uBAAyB,EAAA,cAAA;AAAA,EACzB,sBAAwB,EAAA,aAAA;AAAA,EACxB,yBAA2B,EAAA,gBAAA;AAAA,EAC3B,sBAAwB,EAAA,iBAAA;AAAA,EACxB,qBAAuB,EAAA,aAAA;AAAA,EACvB,yBAA2B,EAAA,gBAAA;AAAA,EAC3B,gBAAkB,EAAA,SAAA;AAAA,EAClB,qBAAuB,EAAA,aAAA;AAAA,EACvB,kBAAoB,EAAA,SAAA;AAAA;AAAA,EAEpB,sBAAwB,EAAA,WAAA;AAAA,EACxB,eAAiB,EAAA,QAAA;AAAA,EACjB,oBAAsB,EAAA,aAAA;AAAA,EACtB,mBAAqB,EAAA,WAAA;AAAA,EACrB,oBAAsB,EAAA,YAAA;AAAA,EACtB,kBAAoB,EAAA,UAAA;AAAA,EACpB,kBAAoB,EAAA,UAAA;AAAA,EACpB,iBAAmB,EAAA,SAAA;AAAA;AAAA,EAEnB,0BAA4B,EAAA,iBAAA;AAAA,EAC5B,6BAA+B,EAAA,SAAA;AAAA,EAC/B,2BAA6B,EAAA,SAAA;AAAA,EAC7B,6BAA+B,EAAA,aAAA;AAAA,EAC/B,6BAA+B,EAAA,oBAAA;AAAA,EAC/B,6BAA+B,EAAA,oBAAA;AAAA,EAC/B,oCAAsC,EAAA,oBAAA;AAAA,EACtC,oCAAsC,EAAA,oBAAA;AAAA,EACtC,oCAAsC,EAAA,eAAA;AAAA,EACtC,+BAAiC,EAAA,wBAAA;AAAA,EACjC,2BAA6B,EAAA,cAAA;AAAA,EAC7B,gCAAkC,EAAA,eAAA;AAAA,EAClC,6BAA+B,EAAA,gBAAA;AAAA,EAC/B,0BAA4B,EAAA,aAAA;AAAA,EAC5B,iCAAmC,EAAA,mBAAA;AAAA,EACnC,+BAAiC,EAAA,wBAAA;AAAA,EACjC,+BAAiC,EAAA,sBAAA;AAAA,EACjC,kCAAoC,EAAA,qBAAA;AACtC,CAAA,CAAA;AAEA,mBAAe,UAAA;;AC9Hf,MAAM,SAAY,GAAA;AAAA,EAChB,SAAW,EAAA,QAAA;AAAA,EACX,WAAa,EAAA,UAAA;AAAA,EACb,uBAAyB,EAAA,cAAA;AAAA,EACzB,oBAAsB,EAAA,WAAA;AAAA,EACtB,oBAAsB,EAAA,cAAA;AAAA,EACtB,iBAAmB,EAAA,QAAA;AAAA,EACnB,uBAAyB,EAAA,cAAA;AAAA,EACzB,uBAAyB,EAAA,aAAA;AAAA,EACzB,sBAAwB,EAAA,UAAA;AAAA,EACxB,aAAe,EAAA,cAAA;AAAA,EACf,cAAgB,EAAA,cAAA;AAAA,EAChB,aAAe,EAAA,sBAAA;AAAA,EACf,SAAW,EAAA,OAAA;AACb,CAAA,CAAA;AAEA,kBAAe,SAAA;;ACbf,MAAM,aAAgB,GAAA;AAAA,EACpBI,WAAU,CAAA,uBAAA;AAAA,EACVA,WAAU,CAAA,oBAAA;AAAA,EACVA,WAAU,CAAA,oBAAA;AAAA,EACVA,WAAU,CAAA,iBAAA;AAAA,EACVA,WAAU,CAAA,uBAAA;AAAA,EACVA,WAAU,CAAA,uBAAA;AAAA,EACVA,WAAU,CAAA,sBAAA;AAAA,EACVA,WAAU,CAAA,aAAA;AAAA,EACVA,WAAU,CAAA,cAAA;AAAA,EACVA,WAAU,CAAA,aAAA;AACZ,CAAA,CAAA;AAEA,MAAM,cAAiB,GAAA;AAAA,EACrBC,YAAW,CAAA,sBAAA;AAAA,EACXA,YAAW,CAAA,gBAAA;AAAA,EACXA,YAAW,CAAA,iBAAA;AAAA,EACXA,YAAW,CAAA,kCAAA;AAAA,EACXA,YAAW,CAAA,+BAAA;AAAA,EACXA,YAAW,CAAA,+BAAA;AAAA,EACXA,YAAW,CAAA,iCAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AAAA,EACXA,YAAW,CAAA,oCAAA;AAAA,EACXA,YAAW,CAAA,+BAAA;AAAA,EACXA,YAAW,CAAA,2BAAA;AAAA,EACXA,YAAW,CAAA,oCAAA;AAAA,EACXA,YAAW,CAAA,oCAAA;AAAA,EACXA,YAAW,CAAA,qBAAA;AAAA,EACXA,YAAW,CAAA,gCAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AAAA,EACXA,YAAW,CAAA,8BAAA;AAAA,EACXA,YAAW,CAAA,4BAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AAAA,EACXA,YAAW,CAAA,uBAAA;AAAA,EACXA,YAAW,CAAA,sBAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AAAA,EACXA,YAAW,CAAA,6BAAA;AAAA,EACXA,YAAW,CAAA,sBAAA;AAAA,EACXA,YAAW,CAAA,wBAAA;AAAA,EACXA,YAAW,CAAA,sBAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AAAA,EACXA,YAAW,CAAA,sBAAA;AAAA,EACXA,YAAW,CAAA,uBAAA;AAAA,EACXA,YAAW,CAAA,oBAAA;AAAA,EACXA,YAAW,CAAA,oBAAA;AAAA,EACXA,YAAW,CAAA,iBAAA;AAAA,EACXA,YAAW,CAAA,gBAAA;AAAA,EACXA,YAAW,CAAA,kBAAA;AAAA,EACXA,YAAW,CAAA,kBAAA;AAAA,EACXA,YAAW,CAAA,mBAAA;AAAA,EACXA,YAAW,CAAA,iBAAA;AAAA,EACXA,YAAW,CAAA,iBAAA;AAAA,EACXA,YAAW,CAAA,mBAAA;AAAA,EACXA,YAAW,CAAA,6BAAA;AAAA,EACXA,YAAW,CAAA,2BAAA;AAAA,EACXA,YAAW,CAAA,iCAAA;AAAA,EACXA,YAAW,CAAA,kBAAA;AAAA,EACXA,YAAW,CAAA,6BAAA;AAAA,EACXA,YAAW,CAAA,0BAAA;AACb,CAAA,CAAA;AAEA,MAAM,SAAsB,GAAA,CAAC,GAAG,cAAA,EAAgB,GAAG,aAAa,CAAA;;AChEnD,MAAA,YAAA,GAAe,CAAC,GAAgC,KAAA;AAC3D,EAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AAC3B,IAAI,IAAA,wBAAA,CAAyB,KAAK,GAAG,CAAA;AAAG,MAAO,OAAA,IAAA,CAAA;AAC/C,IAAI,IAAA,8BAAA,CAA+B,KAAK,GAAG,CAAA;AAAG,MAAO,OAAA,KAAA,CAAA;AAAA,GACvD;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;;ACJA,MAAM,YACJ,GAAA;AAAA,EACE,CAAC,SAAS,IAAS,KAAA;AACjB,IAAI,IAAA,OAAA,CAAQ,YAAY,GAAK,EAAA;AAC3B,MACE,IAAA,SAAA,CAAU,SAAS,OAAQ,CAAA,UAAA,CAAW,aAAa,GAAG,CAAA,EAAG,KAAS,IAAA,EAAE,CACpE,EAAA;AACA,QAAQ,OAAA,CAAA,YAAA;AAAA,UACN,GAAA;AAAA,UACA,MAAA;AAAA,YACE,aAAa,OAAQ,CAAA,UAAA,CAAW,aAAa,GAAG,CAAA,EAAG,SAAS,EAAE,CAAA;AAAA,WAChE;AAAA,SACF,CAAA;AACA,QAAO,OAAA,OAAA,CAAA;AAAA,OACT;AACA,MAAK,IAAA,EAAA,CAAA;AAAA,KACP;AAAA,GACF;AACF,CAAA,CAAA;AAEF,MAAM,cAAuE,GAAA;AAAA,EAC3E,CAAC,KAAK,IAAS,KAAA;AACb,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,MAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,OAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,gBAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,MAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,SAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,QAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,UAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,WAAA,CAAA;AACxB,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AAAA,EACA,CAAC,KAAK,IAAS,KAAA;AACb,IAAA,IAAI,GAAQ,KAAA,GAAA;AAAK,MAAO,OAAA,MAAA,CAAA;AACxB,IAAA,IAAI,GAAQ,KAAA,OAAA;AAAS,MAAO,OAAA,OAAA,CAAA;AAC5B,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AACF,CAAA,CAAA;AAEA,MAAM,iBAIuC,GAAA;AAAA,EAC3C,CAAC,GAAK,EAAA,KAAA,EAAO,IAAS,KAAA;AACpB,IAAA,IAAI,MAAO,CAAA,KAAK,CAAE,CAAA,WAAA,EAAkB,KAAA,MAAA;AAAQ,MAAO,OAAA,EAAE,GAAK,EAAA,KAAA,EAAO,IAAK,EAAA,CAAA;AACtE,IAAA,IAAI,MAAO,CAAA,KAAK,CAAE,CAAA,WAAA,EAAkB,KAAA,OAAA;AAAS,MAAO,OAAA,EAAE,GAAK,EAAA,KAAA,EAAO,KAAM,EAAA,CAAA;AACxE,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AAAA,EACA,CAAC,GAAK,EAAA,KAAA,EAAO,IAAS,KAAA;AACpB,IAAA,IAAI,CAAC,cAAgB,EAAA,cAAc,CAAE,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AAClD,MAAA,OAAO,EAAE,GAAK,EAAA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,KAAK,CAAE,EAAA,CAAA;AAAA,KACzC;AACA,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AAAA,EACA,CAAC,GAAK,EAAA,KAAA,EAAO,IAAS,KAAA;AACpB,IAAI,IAAA,GAAA,KAAQ,WAAW,OAAO,KAAA,KAAU,YAAY,MAAO,CAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AACvE,MAAO,OAAA,EAAE,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA,CAAA;AAAA,KAC1B;AACA,IAAA,IAAI,QAAQ,WAAe,IAAA,OAAO,KAAU,KAAA,QAAA,IAAY,UAAU,MAAQ,EAAA;AACxE,MAAO,OAAA,EAAE,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA,CAAA;AAAA,KAC1B;AACA,IAAA,IAAA,CACG,GAAQ,KAAA,MAAA,IACP,GAAQ,KAAA,MAAA,IACR,GAAQ,KAAA,GAAA,IACR,GAAQ,KAAA,GAAA,IACR,GAAQ,KAAA,QAAA,KACV,OAAO,KAAA,KAAU,QACjB,EAAA;AACA,MAAM,MAAA,CAAA,GAAI,MAAO,CAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AACjC,MAAA,IAAI,CAAC,MAAA,CAAO,KAAM,CAAA,CAAC,CAAG,EAAA;AACpB,QAAO,OAAA,EAAE,GAAK,EAAA,KAAA,EAAO,CAAE,EAAA,CAAA;AAAA,OACzB;AAAA,KACF;AACA,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AAAA,EACA,CAAC,GAAK,EAAA,KAAA,EAAO,IAAS,KAAA;AACpB,IAAI,IAAA,SAAA,CAAU,QAAS,CAAA,GAAG,CAAG,EAAA;AAC3B,MAAA,OAAO,EAAE,GAAA,EAAK,KAAO,EAAA,YAAA,CAAa,KAAK,CAAE,EAAA,CAAA;AAAA,KAC3C;AACA,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AAAA,EACA,CAAC,IAAM,EAAA,KAAA,EAAO,IAAS,KAAA;AACrB,IAAI,IAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AACrB,MAAA,IAAI,WAAY,CAAA,eAAA;AAAA,QACd,KAAA,CAAM,UAAW,CAAA,GAAA,EAAK,MAAM,CAAA;AAAA,QAC5B,WAAA;AAAA,QACA,IAAK,CAAA,WAAA,CAAA;AAET,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AACF,CAAA,CAAA;AAEO,SAAS,SAAY,SAAsB,EAAA;AAEhD,EAAM,MAAA,MAAA,GAAS,IAAI,SAAU,EAAA,CAAA;AAC7B,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,eAAgB,CAAA,SAAA,EAAW,iBAAiB,CAAA,CAAA;AAGlE,EAAI,IAAA,MAAA,CAAO,aAAc,CAAA,aAAa,CAAG,EAAA;AACvC,IAAM,MAAA,IAAI,MAAM,mBAAmB,CAAA,CAAA;AAAA,GACrC;AAEA,EAAA,SAAS,mBAAmB,OAAuB,EAAA;AACjD,IAAA,MAAM,MAAW,EAAC,CAAA;AAElB,IAAA,KAAA,MAAW,YAAY,YAAc,EAAA;AACnC,MAAA,IAAI,IAAO,GAAA,KAAA,CAAA;AACX,MAAM,MAAA,EAAA,GAAK,QAAS,CAAA,OAAA,EAAS,MAAM;AACjC,QAAO,IAAA,GAAA,IAAA,CAAA;AAAA,OACR,CAAA,CAAA;AACD,MAAI,IAAA,CAAC,QAAQ,EAAI,EAAA;AACf,QAAU,OAAA,GAAA,EAAA,CAAA;AACV,QAAA,MAAA;AAAA,OACF;AAAA,KACF;AAGA,IAAW,KAAA,MAAA,YAAA,IAAgB,QAAQ,UAAY,EAAA;AAC7C,MAAA,MAAM,IAAO,GAAA;AAAA,QACX,MAAM,YAAa,CAAA,IAAA;AAAA,QACnB,OAAO,YAAa,CAAA,KAAA;AAAA,OACtB,CAAA;AAEA,MAAA,KAAA,MAAWC,WAAU,iBAAmB,EAAA;AACtC,QAAA,IAAI,IAAO,GAAA,KAAA,CAAA;AACX,QAAA,MAAM,MAAMA,OAAO,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,CAAK,OAAO,MAAM;AAC9C,UAAO,IAAA,GAAA,IAAA,CAAA;AAAA,SACR,CAAA,CAAA;AACD,QAAA,IAAI,CAAC,IAAM,EAAA;AACT,UAAA,IAAA,CAAK,OAAO,GAAK,CAAA,GAAA,CAAA;AACjB,UAAA,IAAA,CAAK,QAAQ,GAAK,CAAA,KAAA,CAAA;AAClB,UAAA,MAAA;AAAA,SACF;AAAA,OACF;AAEA,MAAI,IAAA,GAAA,CAAI,IAAK,CAAA,IAAI,CAAG,EAAA;AAClB,QAAA,IAAI,MAAM,OAAQ,CAAA,GAAA,CAAI,IAAK,CAAA,IAAI,CAAC,CAAG,EAAA;AACjC,UAAA,GAAA,CAAI,IAAK,CAAA,IAAI,CAAE,CAAA,IAAA,CAAK,KAAK,KAAK,CAAA,CAAA;AAAA,SACzB,MAAA;AACL,UAAI,GAAA,CAAA,IAAA,CAAK,IAAI,CAAI,GAAA,CAAC,IAAI,IAAK,CAAA,IAAI,CAAG,EAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,SAC9C;AAAA,OACK,MAAA;AACL,QAAI,GAAA,CAAA,IAAA,CAAK,IAAI,CAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AAAA,OACxB;AAAA,KACF;AAGA,IAAW,KAAA,MAAA,KAAA,IAAS,QAAQ,UAAY,EAAA;AACtC,MAAA,IAAI,iBAAiB,OAAS,EAAA;AAC5B,QAAM,MAAA,CAAA,GAAI,mBAAmB,KAAgB,CAAA,CAAA;AAE7C,QAAA,IAAI,UAAU,KAAM,CAAA,OAAA,CAAA;AACpB,QAAA,KAAA,MAAWA,WAAU,cAAgB,EAAA;AACnC,UAAA,IAAI,IAAO,GAAA,KAAA,CAAA;AACX,UAAM,MAAA,OAAA,GAAUA,OAAO,CAAA,OAAA,EAAS,MAAM;AACpC,YAAO,IAAA,GAAA,IAAA,CAAA;AAAA,WACR,CAAA,CAAA;AACD,UAAI,IAAA,CAAC,QAAQ,OAAS,EAAA;AACpB,YAAU,OAAA,GAAA,OAAA,CAAA;AACV,YAAA,MAAA;AAAA,WACF;AAAA,SACF;AAEA,QAAI,IAAA,GAAA,CAAI,OAAO,CAAG,EAAA;AAChB,UAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,GAAI,CAAA,OAAO,CAAC,CAAG,EAAA;AAC/B,YAAI,GAAA,CAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAAA,WACd,MAAA;AACL,YAAA,GAAA,CAAI,OAAO,CAAI,GAAA,CAAC,GAAI,CAAA,OAAO,GAAG,CAAC,CAAA,CAAA;AAAA,WACjC;AAAA,SACK,MAAA;AACL,UAAA,GAAA,CAAI,OAAO,CAAI,GAAA,CAAA,CAAA;AAAA,SACjB;AAAA,OACS,MAAA,IAAA,KAAA,CAAM,QAAa,KAAA,IAAA,CAAK,SAAW,EAAA;AAC5C,QAAM,MAAA,WAAA,GAAc,KAAM,CAAA,WAAA,EAAa,IAAK,EAAA,CAAA;AAC5C,QAAA,IAAI,WAAa,EAAA;AACf,UAAA,IAAI,IAAI,IAAM,EAAA;AACZ,YAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,GAAI,CAAA,IAAI,CAAG,EAAA;AAC3B,cAAI,GAAA,CAAA,IAAA,CAAK,KAAK,WAAW,CAAA,CAAA;AAAA,aACpB,MAAA;AACL,cAAA,GAAA,CAAI,IAAO,GAAA,CAAC,GAAI,CAAA,IAAA,EAAM,WAAW,CAAA,CAAA;AAAA,aACnC;AAAA,WACK,MAAA;AACL,YAAA,GAAA,CAAI,IAAO,GAAA,WAAA,CAAA;AAAA,WACb;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEA,IAAA,OAAO,uBAAuB,GAAG,CAAA,CAAA;AAAA,GACnC;AAEA,EAAA,SAAS,uBAAuB,CAAW,EAAA;AACzC,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AAC5C,MAAI,IAAA,OAAO,KAAU,KAAA,QAAA,IAAY,KAAO,EAAA;AACtC,QAAC,CAAU,CAAA,GAAG,CAAI,GAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAAA,iBACrC,OAAO,KAAA,KAAU,YAAY,KAAM,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AACxD,QAAC,CAAU,CAAA,GAAG,CAAI,GAAA,IAAI,WAAY,CAAA,eAAA;AAAA,UAChC,KAAA,CAAM,UAAW,CAAA,GAAA,EAAK,MAAM,CAAA;AAAA,UAC5B,WAAA;AAAA,UACA,IAAK,CAAA,WAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAO,OAAA,CAAA,CAAA;AAAA,GACT;AAGA,EAAA,MAAM,cAAc,MAAO,CAAA,eAAA,CAAA;AAC3B,EAAA,OAAO,mBAAmB,WAAW,CAAA,CAAA;AACvC,CAAA;AAEC,MAAA,CAAe,CAAI,GAAA,QAAA;;AChMpB,SAAS,eAAA,CAAgB,MAAwB,OAAuB,EAAA;AACtE,EAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,IACrB,IAAI,mBAAoB,CAAA;AAAA,MACtB,SAAS,OAAQ,CAAA,IAAA;AAAA,MACjB,OAAO,OAAQ,CAAA,KAAA;AAAA,MACf,IAAA;AAAA,KACD,CAAA;AAAA,GACH,CAAA;AACF,CAAA;AAEA,SAAS,QAAW,GAAA;AAClB,EAAA,OAAO,OAAO,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA,CAAA;AAC9C,CAAA;AAEA,MAAM,mBAAA,GAAsB,CAAC,KAAiB,KAAA;AAC5C,EAAA,IAAI,KAAiB,YAAA,uBAAA;AAAyB,IAAM,MAAA,KAAA,CAAA;AAEpD,EAAI,IAAA,YAAA,CAAA;AACJ,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,IAAA,IAAI,KAAM,CAAA,OAAA;AAAS,MAAA,YAAA,GAAe,KAAM,CAAA,OAAA,CAAA;AAAA;AACnC,MAAA,YAAA,GAAe,MAAM,QAAS,EAAA,CAAA;AAAA,GACrC;AAAO,IAAe,YAAA,GAAA,KAAA,CAAA;AAEtB,EAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,IACrB,IAAI,mBAAoB,CAAA;AAAA,MACtB,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,YAAA,CAAa,UAAW,CAAA,YAAA,EAAc,OAAO,CAAA;AAAA,KACvD,CAAA;AAAA,GACH,CAAA;AACF,CAAA,CAAA;AAEO,SAAS,eAAe,QAAkC,EAAA;AAC/D,EAAA,OAAQ,QAAS,CAAA,OAAA,CAAQ,cAAc,CAAA,CAAa,MAAM,kBAAkB,CAAA,CAAA;AAC9E,CAAA;AACO,SAAS,cAAc,QAAkC,EAAA;AAC9D,EAAQ,OAAA,QAAA,CAAS,OAAQ,CAAA,cAAc,CAAa,CAAA,KAAA;AAAA,IAClD,4BAAA;AAAA,GACF,CAAA;AACF,CAAA;AACO,SAAS,eAAe,QAAkC,EAAA;AAC/D,EAAQ,OAAA,QAAA,CAAS,OAAQ,CAAA,cAAc,CAAa,CAAA,KAAA;AAAA,IAClD,6BAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,cAAc,QAAiC,EAAA;AAC7D,EAAA,IAAI,CAAC,QAAA;AAAU,IAAA,OAAA;AACf,EAAA,MAAM,EAAE,UAAA,EAAY,WAAa,EAAA,aAAA,EAAkB,GAAA,QAAA,CAAA;AACnD,EAAa,YAAA,CAAA,UAAA,EAAY,SAAS,CAAE,CAAA,OAAA;AAAA,IAClC,eAAA,CAAgB,IAAK,CAAA,eAAA,EAAiB,OAAO,CAAA;AAAA,GAC/C,CAAA;AACA,EAAa,YAAA,CAAA,WAAA,EAAa,OAAO,CAAE,CAAA,OAAA;AAAA,IACjC,eAAA,CAAgB,IAAK,CAAA,eAAA,EAAiB,SAAS,CAAA;AAAA,GACjD,CAAA;AACA,EAAa,YAAA,CAAA,aAAA,EAAe,SAAS,CAAE,CAAA,OAAA;AAAA,IACrC,eAAA,CAAgB,IAAK,CAAA,eAAA,EAAiB,OAAO,CAAA;AAAA,GAC/C,CAAA;AACF,CAAA;AAEA,eAAe,eACb,MACiD,EAAA;AACjD,EAAI,IAAA;AACF,IAAA,IAAI,CAAC,MAAA,IAAU,MAAO,CAAA,IAAA,KAAS,KAAW,CAAA,EAAA,CAEnC,MAAA;AACL,MAAM,MAAA,cAAA,GAAiB,MAAM,uBAAA,CAAkC,MAAM,CAAA,CAAA;AAErE,MAAO,OAAA;AAAA,QACL,GAAG,MAAA;AAAA,QACH,IAAM,EAAA,cAAA;AAAA,QACN,UACE,CAAC,CAAC,gBAAgB,UAAc,IAAA,CAAC,CAAC,cAAgB,EAAA,aAAA;AAAA,QACpD,WAAA,EAAa,CAAC,CAAC,cAAgB,EAAA,WAAA;AAAA,OACjC,CAAA;AAAA,KACF;AAAA,WACO,CAAY,EAAA;AACnB,IAAA,mBAAA,CAAoB,aAAa,KAAQ,GAAA,CAAA,GAAI,IAAI,KAAA,CAAM,CAAW,CAAC,CAAA,CAAA;AACnE,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEO,MAAM,gCAAgC,KAAM,CAAA;AAAC,CAAA;AAEvC,MAAA,uBAAA,GAA0B,OAGrC,QACG,KAAA;AACH,EAAA,IAAI,SAAgE,GAAA,KAAA,CAAA,CAAA;AACpE,EAAI,IAAA,cAAA,CAAe,QAAQ,CAAG,EAAA;AAC5B,IAAI,IAAA,OAAO,SAAS,IAAS,KAAA,QAAA;AAC3B,MAAA,SAAA,GAAY,IAAK,CAAA,KAAA;AAAA,QACf,QAAA,CAAS,KAAK,IAAK,EAAA;AAAA,OACrB,CAAA;AAAA,SAAA,IACO,OAAO,QAAA,CAAS,IAAS,KAAA,QAAA,IAAY,QAAS,CAAA,IAAA;AACrD,MAAA,SAAA,GAAY,QAAS,CAAA,IAAA,CAAA;AAAA,GACzB,MAAA,IAAW,aAAc,CAAA,QAAQ,CAAG,EAAA;AAClC,IAAI,IAAA;AACF,MAAY,SAAA,GAAA,QAAA,CAAmB,SAAS,IAAI,CAAA,CAAA;AAAA,aACrC,CAAG,EAAA;AACV,MAAoB,mBAAA,CAAA,IAAI,KAAM,CAAA,CAAW,CAAC,CAAA,CAAA;AAAA,KAC5C;AAAA,GACF,MAAA,IAAW,cAAe,CAAA,QAAQ,CAAG,EAAA;AACnC,IAAQ,OAAA,CAAA,KAAA;AAAA,MACN,6DAAA;AAAA,KACF,CAAA;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,IAAI,SAAW,EAAA;AACb,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAG,IAAA;AAAA,KACD,GAAA,SAAA,CAAA;AACJ,IAAI,IAAA,IAAA,CAAK,IAAS,KAAA,IAAA,IAAQ,UAAY,EAAA;AACpC,MAAA,MAAM,IAAI,uBAAwB,EAAA,CAAA;AAAA,KACpC;AAEA,IAAA,aAAA,CAAc,EAAE,UAAA,EAAY,aAAe,EAAA,WAAA,EAAa,CAAA,CAAA;AAExD,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,OAAO,EAAE,GAAG,SAAA,EAAW,GAAG,IAAA,EAAM,GAAI,IAAkB,EAAA,CAAA;AAAA,KACxD;AACA,IAAO,OAAA;AAAA,MACL,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAI,IAAA;AAAA,KACN,CAAA;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AAkDsB,eAAA,IAAA,CAKpB,WACA,YAC0B,EAAA;AAC1B,EAAA,MAAM,QACJ,GAAA,YAAA,EAAc,iBAAsB,KAAA,WAAA,GAChC,WAAY,CAAA,SAAA;AAAA,IACV,YAAa,CAAA,QAAA;AAAA,IACb,YAAa,CAAA,gBAAA;AAAA,MAEf,YAAc,EAAA,QAAA,CAAA;AAEpB,EAAA,MAAM,QAAW,GAAA,MAAA,CAAO,MAAM,QAAA,EAC3B,EAAA,IAAA,CAIC,SAAW,EAAA,QAAA,EAAU,YAAc,EAAA,WAAW,CAC/C,CAAA,KAAA,CAAM,CAAC,CAAe,KAAA;AACrB,IAAoB,mBAAA,CAAA,IAAI,KAAM,CAAA,CAAW,CAAC,CAAA,CAAA;AAAA,GAC3C,CAAA,CAAA;AAEH,EAAA,IAAI,QAAU,EAAA;AACZ,IAAM,MAAA,MAAA,GAAS,eAAyB,QAAQ,CAAA,CAAA;AAChD,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AA8CsB,eAAA,GAAA,CAKpB,WACA,YAC0B,EAAA;AAC1B,EAAA,MAAM,QAAW,GAAA,MAAA,CAAO,MAAM,QAAA,EAC3B,EAAA,GAAA,CAAiC,SAAW,EAAA,YAAA,EAAc,WAAW,CAAA,CACrE,KAAM,CAAA,CAAC,CAAe,KAAA;AACrB,IAAA,mBAAA,CAAoB,aAAa,KAAQ,GAAA,CAAA,GAAI,IAAI,KAAA,CAAM,CAAW,CAAC,CAAA,CAAA;AAAA,GACpE,CAAA,CAAA;AACH,EAAA,IAAI,QAAU,EAAA;AACZ,IAAM,MAAA,MAAA,GAAS,MAAM,cAAA,CAAyB,QAAQ,CAAA,CAAA;AACtD,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AA6BO,SAAS,YAAY,KAA0B,EAAA;AACpD,EAAA,IAAI,kBAAqD,EAAC,CAAA;AAE1D,EAAA,IAAI,KAAO,EAAA;AACT,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,WAAAC,EAAAA,YAAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAO,EAAA,UAAA;AAAA,MACP,GAAG,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AACJ,IAAkB,eAAA,GAAA,EAAE,GAAG,IAAK,EAAA,CAAA;AAAA,GAC9B;AAEA,EAAA,MAAM,cAAc,WAAY,CAAA,SAAA;AAAA,IAC9B,eAAA;AAAA,IACA,OAAO,gBAAoB,IAAA;AAAA,MACzB,WAAa,EAAA,QAAA;AAAA,MACb,gBAAkB,EAAA,KAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAEA,EAAI,IAAA,aAAA,GAAgB,KAAO,EAAA,OAAA,IAAW,MAAO,CAAA,gBAAA,CAAA;AAC7C,EAAA,IAAI,cAAc,OAAQ,CAAA,GAAG,CAAM,KAAA,aAAA,CAAc,SAAS,CAAG,EAAA;AAC3D,IAAA,aAAA,GAAgB,aAAc,CAAA,KAAA,CAAM,CAAG,EAAA,aAAA,CAAc,SAAS,CAAC,CAAA,CAAA;AAAA,GACjE;AACA,EAAA,IAAI,CAAC,aAAA,CAAc,UAAW,CAAA,GAAG,CAAG,EAAA;AAClC,IAAA,aAAA,GAAgB,IAAI,aAAa,CAAA,CAAA,CAAA;AAAA,GACnC;AAEA,EAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,cAAe,CAAA,KAAA,CAAM,eAAe,CAAA,CAAA;AACzD,EAAA,MAAM,cAAkB,GAAA,CAAA,KAAA,IAAS,EAAC,EAAG,CAAC,CAAA,CAAA;AAEtC,EAAA,IAAI,KACF,GAAA,CAAA,KAAA,EAAO,KACH,GAAA,CAAA,OAAA,EAAU,KAAM,CAAA,KAAK,CAAY,SAAA,EAAA,cAAc,CAC/C,CAAA,GAAA,MAAA,CAAO,cACX,EAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AACT,EAAA,IAAI,OAAO,UAAY,EAAA;AACrB,IAAQ,KAAA,GAAA,EAAA,CAAA;AAAA,GACV;AAEA,EAAI,IAAA,EAAE,SAAY,GAAA,MAAA,CAAA;AAClB,EAAI,IAAA,OAAA,EAAS,QAAS,CAAA,GAAG,CAAG,EAAA;AAC1B,IAAA,OAAA,IAAW,OAAQ,CAAA,KAAA,CAAM,CAAG,EAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAA;AAAA,GAChD;AAEA,EAAA,IAAI,SAAY,GAAA,CAAA,UAAA,EAAa,IAAK,CAAA,GAAA,EAAK,CAAA,CAAA,CAAA,CAAA;AACvC,EACG,IAAA,KAAA,EAAO,WAAe,IAAA,KAAA,CAAM,WAAY,CAAA,QAAA,CAAS,YAAY,CAC9D,IAAA,WAAA,EAAa,QAAS,CAAA,YAAY,CAClC,EAAA;AACA,IAAY,SAAA,GAAA,EAAA,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,WAAc,GAAA,OAAA,CAAQ,UAAW,CAAA,GAAA,EAAK,EAAE,CAAA,CAAA;AAC9C,EAAA,aAAA,GAAgB,aAAc,CAAA,KAAA;AAAA,IAC5B,IAAI,MAAA,CAAO,CAAY,SAAA,EAAA,WAAW,CAAY,UAAA,CAAA,CAAA;AAAA,MAC5C,CAAC,CAAA,CAAA;AAEL,EAAA,OAAO,CACL,EAAA,WAAA,GAAc,GAAM,GAAA,EACtB,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,aAAa,CAAI,CAAA,EAAA,SAAS,CAC1C,EAAA,CAAC,OAAO,qBAAwB,GAAA,aAAA,GAAgB,EAClD,CAAA,EAAG,KAAO,EAAA,WAAA,GAAc,CAAG,EAAA,KAAA,CAAM,WAAW,CAAM,CAAA,CAAA,GAAA,EAAE,CAClD,EAAA,WAAA,GAAc,CAAG,EAAA,WAAW,CAAM,CAAA,CAAA,GAAA,EACpC,GAAG,KAAK,CAAA,CAAA,CAAA;AACV;;;;;;;;AC7YO,MAAM,YAAiC,CAAA;AAAA,EAAvC,WAAA,GAAA;AACL,IAAAP,eAAA,CAAA,IAAA,EAAU,WAAsD,EAAA;AAAA,MAC9D,IAAI,EAAC;AAAA,MACL,MAAM,EAAC;AAAA,KACT,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAU,SAAU,EAAA,IAAA,CAAA,CAAA;AAEpB,IAAAA,eAAA,CAAA,IAAA,EAAU,WAAY,EAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EACtB,KAAA,CAAM,SAAS,IAAM,EAAA;AACnB,IAAA,IAAA,CAAK,SAAY,GAAA,MAAA,CAAA;AAAA,GACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAA,CAA6B,OAAU,IAAiB,EAAA;AACtD,IAAK,IAAA,CAAA,SAAA,CAAU,GAAG,KAAK,CAAA,EAAG,QAAQ,CAAC,OAAA,KAAY,OAAQ,CAAA,IAAI,CAAC,CAAA,CAAA;AAE5D,IAAK,IAAA,CAAA,SAAA,CAAU,KAAK,KAAK,CAAA,EAAG,QAAQ,CAAC,OAAA,KAAY,OAAQ,CAAA,IAAI,CAAC,CAAA,CAAA;AAC9D,IAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAA,GAAI,EAAC,CAAA;AAAA,GAChC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,GACd;AAAA,EAEA,GAAA,CAA4B,OAAU,EAA+B,EAAA;AACnE,IAAK,IAAA,CAAA,SAAA,CAAU,GAAG,KAAK,CAAA,GAAI,KAAK,SAAU,CAAA,EAAA,CAAG,KAAK,CAAG,EAAA,MAAA;AAAA,MACnD,CAAC,MAAM,CAAM,KAAA,EAAA;AAAA,KACf,CAAA;AACA,IAAK,IAAA,CAAA,SAAA,CAAU,KAAK,KAAK,CAAA,GAAI,KAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAG,EAAA,MAAA;AAAA,MACvD,CAAC,MAAM,CAAM,KAAA,EAAA;AAAA,KACf,CAAA;AAAA,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,EAAA,CAA2B,OAAU,EAAuC,EAAA;AAC1E,IAAA,IAAI,CAAC,IAAA,CAAK,SAAU,CAAA,EAAA,CAAG,KAAK,CAAA;AAAG,MAAA,IAAA,CAAK,SAAU,CAAA,EAAA,CAAG,KAAK,CAAA,GAAI,EAAC,CAAA;AAC3D,IAAA,IAAA,CAAK,SAAU,CAAA,EAAA,CAAG,KAAK,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAEhC,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,SAAA,CAAU,GAAG,KAAK,CAAA,GAAI,KAAK,SAAU,CAAA,EAAA,CAAG,KAAK,CAAE,CAAA,MAAA;AAAA,QAClD,CAAC,MAAM,CAAM,KAAA,EAAA;AAAA,OACf,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAA,CACE,OACA,EACc,EAAA;AACd,IAAA,IAAI,CAAC,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAA;AAAG,MAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAA,GAAI,EAAC,CAAA;AAC/D,IAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAElC,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,SAAA,CAAU,KAAK,KAAK,CAAA,GAAI,KAAK,SAAU,CAAA,IAAA,CAAK,KAAK,CAAE,CAAA,MAAA;AAAA,QACtD,CAAC,MAAM,CAAM,KAAA,EAAA;AAAA,OACf,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF;;;;;;;;ACtFO,SAAS,SAAY,IAA4C,EAAA;AACtE,EAAA,OAAO,OAAO,IAAS,KAAA,UAAA,CAAA;AACzB,CAAA;AAmBO,MAAM,wBAA4C,YAAqB,CAAA;AAAA,EAG5E,YAAY,YAAgC,EAAA;AAC1C,IAAM,KAAA,EAAA,CAAA;AAHR,IAAAA,eAAA,CAAA,IAAA,EAAU,SAAQ,EAAC,CAAA,CAAA;AAKjB,IAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,YAAY,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,IAAA,CAA6B,OAAU,IAAuB,EAAA;AAC5D,IAAK,IAAA,CAAA,KAAA,CAAM,KAAK,CAAI,GAAA,IAAA,CAAA;AACpB,IAAM,KAAA,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,GACxB;AAAA,EAEA,EAAA,CAA2B,OAAU,EAAuC,EAAA;AAC1E,IAAI,IAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAG,MAAG,EAAA,CAAA,IAAA,CAAK,KAAM,CAAA,KAAK,CAAC,CAAA,CAAA;AAE3C,IAAO,OAAA,KAAA,CAAM,EAAG,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,IAAA,CACE,OACA,EACc,EAAA;AACd,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,KAAK,CAAG,EAAA;AACrB,MAAG,EAAA,CAAA,IAAA,CAAK,KAAM,CAAA,KAAK,CAAC,CAAA,CAAA;AAKpB,MAAA,OAAO,MAAM;AAAA,OAAC,CAAA;AAAA,KAChB;AAEA,IAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAAA,GAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,SAAiC,KAAqB,EAAA;AACpD,IAAO,OAAA,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,GACzB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA,CACE,OACA,IACM,EAAA;AACN,IAAM,MAAA,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,IAAK,CAAA,QAAA,CAAS,KAAK,CAAC,CAAI,GAAA,IAAA,CAAA;AAEjE,IAAK,IAAA,CAAA,IAAA,CAAK,OAAO,UAAU,CAAA,CAAA;AAAA,GAC7B;AACF;;;;;;;;ACxEA,MAAM,UAAA,GAAa,OAAO,YAAY,CAAA,CAAA;AAwB/B,MAAM,wBAEH,eAAwB,CAAA;AAAA,EAF3B,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAAA;AAGL,IAAAA,eAAA,CAAA,IAAA,EAAU,oBAAmB,EAAC,CAAA,CAAA;AAE9B,IAAAA,eAAA,CAAA,IAAA,EAAU,eAAgB,EAAA,GAAA,CAAA,CAAA;AAkC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,eAAA,CAAA,IAAA,EAAU,gBAAe,EAAC,CAAA,CAAA;AAC1B,IAAAA,eAAA,CAAA,IAAA,EAAU,yBAAwB,EAAC,CAAA,CAAA;AAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAxBnC,QAAA,CACE,KACA,EAAA,IAAA,EACA,aACA,EAAA;AACA,IAAa,YAAA,CAAA,IAAA,CAAK,gBAAiB,CAAA,KAAK,CAAC,CAAA,CAAA;AACzC,IAAA,IAAA,CAAK,gBAAiB,CAAA,KAAK,CAAI,GAAA,UAAA,CAAW,MAAM;AAC9C,MAAK,IAAA,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,KACpB,EAAA,aAAA,EAAe,MAAU,IAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAAA,GAChD;AAAA,EAgBA,QAAA,CACE,KACA,EAAA,IAAA,EACA,aACA,EAAA;AACA,IAAA,IAAI,CAAC,IAAK,CAAA,qBAAA,CAAsB,KAAK,CAAA,IAAK,eAAe,WAAa,EAAA;AACpE,MAAK,IAAA,CAAA,qBAAA,CAAsB,KAAK,CAAI,GAAA,IAAA,CAAA;AACpC,MAAA,UAAA,CAAW,MAAM;AACf,QAAK,IAAA,CAAA,qBAAA,CAAsB,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,OACnC,EAAA,aAAA,EAAe,MAAU,IAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAC9C,MAAK,IAAA,CAAA,IAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,KACvB,MAAA,IAAW,CAAC,aAAA,EAAe,WAAa,EAAA;AACtC,MACE,IAAA,IAAA,CAAK,aAAa,KAAK,CAAA,KAAM,cAC7B,EAAE,KAAA,IAAS,KAAK,YAChB,CAAA,EAAA;AACA,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAA,CAAK,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,YAAA,CAAa,KAAK,CAAc,CAAA,CAAA;AACtD,UAAK,IAAA,CAAA,YAAA,CAAa,KAAK,CAAI,GAAA,UAAA,CAAA;AAAA,SAC1B,EAAA,aAAA,EAAe,MAAU,IAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAAA,OAChD;AACA,MAAK,IAAA,CAAA,YAAA,CAAa,KAAK,CAAI,GAAA,IAAA,CAAA;AAAA,KAC7B;AAAA,GACF;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAA,CACE,KACA,EAAA,IAAA,EACA,aACM,EAAA;AACN,IAAM,MAAA,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,IAAK,CAAA,QAAA,CAAS,KAAK,CAAC,CAAI,GAAA,IAAA,CAAA;AAEjE,IAAK,IAAA,CAAA,QAAA,CAAS,KAAO,EAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AAAA,GAChD;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAA,CACE,KACA,EAAA,IAAA,EACA,aACM,EAAA;AACN,IAAM,MAAA,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,IAAK,CAAA,QAAA,CAAS,KAAK,CAAC,CAAI,GAAA,IAAA,CAAA;AAEjE,IAAK,IAAA,CAAA,QAAA,CAAS,KAAO,EAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AAAA,GAChD;AACF;;AC3HgB,SAAA,QAAA,CACd,OACA,SAIA,EAAA;AACA,EAAM,MAAA,WAAA,GAAe,MAAe,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAKhD,EAAA,IAAI,WAAW,IAAM,EAAA;AACnB,IAAO,MAAA,CAAA,OAAA,CAAQ,UAAU,IAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACvD,MAAA,WAAA,CAAY,OAAO,WAAY,CAAA,IAAA,CAAK,WAAW,CAAI,CAAA,EAAA,GAAG,KAAK,KAAK,CAAA,CAAA;AAAA,KACjE,CAAA,CAAA;AAAA,GACH;AACA,EAAA,IAAI,WAAW,OAAS,EAAA;AACtB,IAAO,MAAA,CAAA,OAAA,CAAQ,UAAU,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AAC1D,MAAA,WAAA,CAAY,UAAU,WAAY,CAAA,OAAA,CAAQ,WAAW,CAAI,CAAA,EAAA,GAAG,KAAK,KAAK,CAAA,CAAA;AAAA,KACvE,CAAA,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,WAAA,CAAA;AACT,CAAA;AAEO,MAAM,MAAS,GAAA;AAAA,EACpB,yBAAyB,MAAM,oBAAA;AAAA,EAC/B,wBAAwB,MAAM,0CAAA;AAAA,EAC9B,mBAAmB,MAAM,wBAAA;AAAA,EACzB,oBAAoB,MAAM,yBAAA;AAAA,EAC1B,gBAAgB,MACd,kEAAA;AAAA,EACF,YAAA,EAAc,CAAC,SAAA,EAAmB,SAC/B,KAAA,MAAA,CAAe,cACZ,oEACA,GAAA,CAAA,eAAA,EAAkB,SAAS,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA;AAC3D,CAAA;;ACnCO,SAAS,oBAAuB,GAAA;AACrC,EAAM,MAAA,QAAA,GAAY,OAAO,cAAwB,EAAA,QAAA,CAAA;AAEjD,EAAI,IAAA,QAAA;AACF,IAAO,OAAA,CAAA,EAAG,QACP,CAAA,GAAA,CAAI,CAAC,CAAA,KAAO,CAAE,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA,CAAE,EAAK,GAAA,CAAA,CAAG,CACvC,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAO,CAAM,KAAA,QAAA,CAAS,CACtC,CAAA,IAAA,CAAK,GAAG,CAAC,CAAI,CAAA,EAAA,QAAA,CAAS,gBAAkB,EAAA,SAAA,IAAa,CAAC,CAAA,CAAA,CAAA;AAC7D;;ACRO,MAAM,OAAU,GAAA;AAAA,EACrB,KAAO,EAAA,+BAAA;AAAA,EACP,UAAA,EAAY,GAAG,MAAO,CAAA,OAAO,mEAAmE,oBAAqB,EAAC,CAAG,EAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAChJ,CAAA;;ACFA,MAAM,SAAY,GAAA;AAAA,EAChB,GAAGK,YAAA;AAAA,EACH,GAAGD,WAAA;AACL,CAAA,CAAA;AAEA,kBAAe,SAAA;;ACCf,eAAe,YAAe,GAAA;AAC5B,EAAQ,OAAA,CAAA,MAAM,qDAAuB,EAAA,SAAA,CAAA;AACvC,CAAA;AAEa,MAAA,mBAAA,GAAsB,OACjC,QACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,YAAa,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AACxC,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAM,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AACxC,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AACxB,IAAM,MAAA,IAAA,GAAO,MAAM,CAAC,CAAA,CAAA;AACpB,IAAA,MAAM,CAAC,SAAW,EAAA,EAAE,CAAI,GAAA,MAAA,CAAO,MAAM,GAAG,CAAA,CAAA;AACxC,IAAA,MAAM,QAAY,GAAA,CAAA,MAAM,YAAa,EAAA,EAAG,QAAS,CAAA,WAAA;AAAA,MAC/C,EAAA;AAAA,MACA,SAAA;AAAA,KACF,CAAA;AAEA,IAAA,YAAA,CAAa,IAAK,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACvC,MAAA,QAAA,EACI,yBAA0B,CAAA,MAAA,CAAO,QAAS,CAAA,MAAA,CAAO,EAAE,EAAE,CAAC,CAAC,CAAA,EACvD,aAAc,CAAA,EAAE,KAAO,EAAA,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,KACrC,CAAA,CAAA;AAGD,IAAA,MAAM,YAAe,GAAA,YAAA,CAAa,IAAK,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AACzD,IAAA,YAAA,CAAa,OAAQ,CAAA,CAAC,EAAE,EAAA,EAAAI,KAAS,KAAA;AAC/B,MAAC,QAAU,EAAA,YAAA,CAAaA,GAAE,CAAA,EAAY,OAAQ,EAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAED,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,QACrB,IAAI,mBAAoB,CAAA;AAAA,UACtB,OAAA,EAAS,gBAAgB,MAAM,CAAA,UAAA,CAAA;AAAA,SAChC,CAAA;AAAA,OACH,CAAA;AAEA,MAAA,SAAA;AAAA,KACF;AAGA,IAAA,MAAM,UAAa,GAAA,YAAA,CAAa,KAAM,CAAA,CAAC,EAAE,KAAK,CAAA,CAAA;AAC9C,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,UAAW,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AAE7C,MAAA,MAAM,WAAW,QAAU,EAAA,YAAA,CAAa,UAAW,CAAA,CAAC,EAAE,CAAC,CAAA,CAAA;AACvD,MAAA,IAAI,QAAU,EAAA;AAEZ,QAAA,IAAI,UAAW,CAAA,CAAC,CAAE,CAAA,CAAA,KAAM,KAAW,CAAA,EAAA;AACjC,UAAA,MAAM,EAAE,CAAA,EAAM,GAAA,UAAA,CAAW,CAAC,CAAA,CAAA;AAE1B,UAAA,IAAI,KAAa,GAAA,KAAA,CAAA,CAAA;AACjB,UAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AACzB,YAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,WACH,MAAA;AAIL,YAAM,MAAA,WAAA,GAAc,YAAa,CAAA,CAAA,EAAG,SAAS,CAAA,CAAA;AAC7C,YAAA,KAAA,GAAQ,WAAY,CAAA,MAAA,CAAO,CAAC,OAAA,EAAS,OAAY,KAAA;AAC/C,cAAA,OAAO,UAAU,OAAQ,CAAA,CAAA,CAAA;AAAA,eACxB,EAAE,CAAA,CAAA;AAAA,WACP;AAMA,UAAA,IAAK,SAAiB,SAAW,EAAA;AAC/B,YAAC,QAAA,CAAiB,SAAS,KAAK,CAAA,CAAA;AAAA,WAClC;AAAA,SACF;AAEA,QAAA,IAAI,UAAW,CAAA,CAAC,CAAE,CAAA,CAAA,KAAM,KAAW,CAAA,EAAA;AACjC,UAAA,MAAM,SAAY,GAAA,YAAA,CAAa,UAAW,CAAA,CAAC,EAAE,CAAC,CAAA,CAAA;AAC9C,UAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,SAAU,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AAC5C,YAAI,IAAA,SAAA,CAAU,CAAC,CAAA,EAAG,CAAG,EAAA;AACnB,cAAA,MAAM,IAAO,GAAA,YAAA,CAAa,SAAU,CAAA,CAAC,GAAG,CAAC,CAAA,CAAA;AACzC,cAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,IAAK,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AACvC,gBAAI,IAAA,IAAA,CAAK,CAAC,CAAA,EAAG,CAAG,EAAA;AACd,kBAAS,QAAA,CAAA,WAAA,CAAY,KAAK,CAAC,CAAA,EAAG,GAAG,IAAK,CAAA,CAAC,GAAG,CAAC,CAAA,CAAA;AAAA,iBAC7C;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAEA,QAAA,IAAI,UAAW,CAAA,CAAC,CAAE,CAAA,cAAA,KAAmB,KAAW,CAAA,EAAA;AAC9C,UAAA,MAAM,mBAAsB,GAAA,YAAA;AAAA,YAC1B,UAAA,CAAW,CAAC,CAAE,CAAA,cAAA;AAAA,WAChB,CAAA;AACA,UAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,mBAAoB,CAAA,CAAC,GAAG,IAAI,CAAA,CAAA;AACvD,UAAA,IAAI,KAAO,EAAA;AACT,YAAA,IACE,CAAC,UAAA,EAAY,OAAS,EAAA,QAAQ,CAAE,CAAA,QAAA;AAAA,cAC9B,SAAS,UAAW,CAAA,SAAA;AAAA,aAEtB,EAAA;AACA,cAAC,QAAoB,CAAA,WAAA;AAAA,gBACnB,eAAA;AAAA,gBACA,KAAA,CAAM,GAAI,CAAA,CAAC,OAAa,MAAA;AAAA,kBACtB,OAAO,OAAQ,CAAA,CAAA;AAAA,kBACf,MAAM,OAAQ,CAAA,IAAA;AAAA,iBACd,CAAA,CAAA;AAAA,eACJ,CAAA;AAAA,aACF;AAAA,WACF;AAAA,SACF;AACA,QAAA,IACE,CAAC,MAAA,EAAQ,MAAM,CAAA,CAAE,QAAS,CAAA,QAAA,CAAS,UAAW,CAAA,SAAS,CACvD,IAAA,UAAA,CAAW,CAAC,CAAA,CAAE,KACd,EAAA;AACA,UAAA,MAAM,cAAiB,GAAA,YAAA;AAAA,YACrB,UAAA,CAAW,CAAC,CAAA,EAAG,KAAO,EAAA,aAAA;AAAA,WACxB,CAAA;AACA,UAAS,QAAA,CAAA,WAAA,CAAY,iBAAiB,cAAc,CAAA,CAAA;AAEpD,UAAA,MAAM,aAAgB,GAAA,IAAA;AAAA,YACpB,GAAM,GAAA,UAAA,CAAW,CAAC,CAAA,EAAG,OAAO,UAAa,GAAA,GAAA;AAAA,WAC3C,CAAA;AAEA,UAAA,MAAA,CAAO,IAAK,CAAA,aAAa,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC1C,YAAI,IAAA,KAAA,GAAQ,cAAc,GAAG,CAAA,CAAA;AAE7B,YAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,cAAM,MAAA,UAAA,GAAa,MAAM,WAAY,EAAA,CAAA;AACrC,cAAI,IAAA,UAAA,KAAe,GAAO,IAAA,UAAA,KAAe,MAAQ,EAAA;AAC/C,gBAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,eACC,MAAA,IAAA,UAAA,KAAe,GAAO,IAAA,UAAA,KAAe,OAAS,EAAA;AACvD,gBAAQ,KAAA,GAAA,KAAA,CAAA;AAAA,eACV;AAAA,aACF;AAEA,YAAS,QAAA,CAAA,WAAA,CAAY,KAAK,KAAK,CAAA,CAAA;AAAA,WAChC,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,KACF;AAGA,IACE,IAAA,IAAA,CAAK,CAAM,KAAA,GAAA,IACX,MAAO,CAAA,QAAA,CAAS,WAAWV,WAAU,CAAA,oBAAoB,CAAC,CAAA,KAAM,MAChE,EAAA;AACA,MAAS,QAAA,CAAA,WAAA,CAAYA,WAAU,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,KAC3D,MAAA,IACE,IAAK,CAAA,CAAA,KAAM,GACX,IAAA,MAAA,CAAO,QAAS,CAAA,WAAA,CAAYA,WAAU,CAAA,oBAAoB,CAAC,CAAA,KAAM,MACjE,EAAA;AACA,MAAS,QAAA,CAAA,WAAA,CAAYA,WAAU,CAAA,oBAAA,EAAsB,KAAK,CAAA,CAAA;AAAA,KAC5D;AAGA,IACE,IAAA,IAAA,CAAK,CAAM,KAAA,GAAA,IACX,MAAO,CAAA,QAAA,CAAS,YAAYA,WAAU,CAAA,oBAAoB,CAAC,CAAA,KAAM,MACjE,EAAA;AACA,MAAA,QAAA,CAAS,SAAU,EAAA,CAAA;AAAA,KACrB,MAAA,IACE,IAAK,CAAA,CAAA,KAAM,GACX,IAAA,MAAA,CAAO,QAAS,CAAA,WAAA,CAAYA,WAAU,CAAA,oBAAoB,CAAC,CAAA,KAAM,MACjE,EAAA;AACA,MAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAAA,KACpB;AAAA,GACF;AAEA,EAAI,IAAA,QAAA,CAAS,UAAU,CAAG,EAAA;AACxB,IAAC,CAAA,MAAM,cAAgB,EAAA,QAAA,CACpB,YACC,EAAA,WAAA,CAAY,QAAS,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,GACrC;AAEA,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAA,aAAA,CAAc,SAAS,IAAI,CAAA,CAAA;AAAA,GAC7B;AACF,CAAA;;ACnLO,MAAM,aAAc,CAAA;AAAA,EACzB,YAAoB,MAAiB,EAAA;AAAjB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAClB,IAAA,cAAA,CAAwC,IAAM,EAAA;AAAA,MAC5C,MAAQ,EAAA,UAAA;AAAA,KACT,CAAA,CAAA;AAAA,GACH;AAAA,EAEQ,OAAO,KAAyB,EAAA;AACtC,IAAA,IAAI,KAAK,MAAQ,EAAA;AACf,MAAA,IAAA,CAAK,SAAS,EAAE,GAAG,IAAK,CAAA,MAAA,EAAQ,GAAG,KAAM,EAAA,CAAA;AAAA,KAC3C;AAAA,GACF;AAAA,EAEA,IAAI,MAAS,GAAA;AACX,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,IAAI,QAAW,GAAA;AACb,IAAA,OAAO,KAAK,MAAO,CAAA,QAAA,CAAA;AAAA,GACrB;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,MAAM,UAAa,GAAA;AAAA,MACjB,QAAA,EAAU,KAAK,MAAO,CAAA,QAAA;AAAA,MACtB,MAAA,EAAQ,KAAK,MAAO,CAAA,MAAA;AAAA,MACpB,OAAA,EAAS,KAAK,MAAO,CAAA,SAAA;AAAA,KACvB,CAAA;AACA,IAAO,OAAA,UAAA,CAAA;AAAA,GACT;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,KAAK,MAAQ,EAAA,KAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAO,OAAA,IAAA,CAAK,QAAQ,KAAS,IAAA,EAAA,CAAA;AAAA,GAC/B;AAAA,EAEA,IAAI,OAAU,GAAA;AACZ,IAAO,OAAA,IAAA,CAAK,QAAQ,OAAW,IAAA,EAAA,CAAA;AAAA,GACjC;AAAA,EAEA,IAAI,MAAM,KAAe,EAAA;AACvB,IAAK,IAAA,CAAA,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,CAAA;AAAA,GACvB;AAAA,EAEA,IAAI,QAAQ,OAAiB,EAAA;AAC3B,IAAK,IAAA,CAAA,MAAA,CAAO,EAAE,OAAA,EAAS,CAAA,CAAA;AAAA,GACzB;AAAA,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,MAAO,CAAA,EAAE,QAAU,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GAChC;AAAA,EAEO,MAAS,GAAA;AACd,IAAA,IAAA,CAAK,MAAO,CAAA,EAAE,QAAU,EAAA,KAAA,EAAO,CAAA,CAAA;AAAA,GACjC;AAAA,EAEO,IAAO,GAAA;AACZ,IAAA,IAAA,CAAK,MAAO,CAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEO,IAAO,GAAA;AACZ,IAAA,IAAA,CAAK,MAAO,CAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,CAAA,CAAA;AAAA,GAC/B;AACF;;;;;;;;ACjEO,MAAM,kBAAA,GAAN,MAAM,kBAAkB,CAAA;AAAA,EAAxB,WAAA,GAAA;AAqBL,IAAQE,eAAA,CAAA,IAAA,EAAA,SAAA,sBAAc,GAAmC,EAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAPzD,WAAkB,QAA8B,GAAA;AAC9C,IAAI,IAAA,CAAC,mBAAkB,SAAW,EAAA;AAChC,MAAkB,kBAAA,CAAA,SAAA,GAAY,IAAI,kBAAkB,EAAA,CAAA;AAAA,KACtD;AACA,IAAA,OAAO,kBAAkB,CAAA,SAAA,CAAA;AAAA,GAC3B;AAAA,EAIO,UAAU,MAAiB,EAAA;AAChC,IAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,GAAI,CAAA,MAAA,CAAO,EAAE,CAAA;AAAG,MAAA,OAAA;AACjC,IAAA,IAAA,CAAK,OAAQ,CAAA,GAAA;AAAA,MACX,MAAO,CAAA,EAAA;AAAA,MACP,IAAI,aAAc,CAAA;AAAA,QAChB,GAAG;AAAA,UACD,SAAW,EAAA,KAAA;AAAA,UACX,QAAU,EAAA,KAAA;AAAA,UACV,MAAQ,EAAA,KAAA;AAAA,SACV;AAAA,QACA,GAAG,MAAA;AAAA,OACJ,CAAA;AAAA,KACH,CAAA;AAAA,GACF;AAAA,EAEO,UAAU,EAAoB,EAAA;AACnC,IAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,GAAI,CAAA,EAAE,CAAG,EAAA;AACxB,MAAO,OAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAAA,KAC5B;AACA,IAAA,MAAM,MAAM,uBAAuB,CAAA,CAAA;AAAA,GACrC;AACF,CAAA,CAAA;AA3CEA,eAAA,CADW,oBACJ,SAAU,EAAA,CAAA,CAAA,CAAA;AACjBA,eAAA,CAFW,oBAEJ,MAAO,EAAA,CAAA,CAAA,CAAA;AACdA,eAAA,CAHW,oBAGJ,UAAW,EAAA,CAAA,CAAA,CAAA;AAClBA,eAAA,CAJW,oBAIJ,MAAO,EAAA,CAAA,CAAA,CAAA;AACdA,eAAA,CALW,oBAKJ,MAAO,EAAA,CAAA,CAAA,CAAA;AACdA,eAAA,CANW,oBAMJ,SAAU,EAAA,CAAA,CAAA,CAAA;AACjBA,eAAA,CAPW,oBAOJ,UAAW,EAAA,CAAA,CAAA,CAAA;AAClBA,eAAA,CARW,oBAQJ,OAAQ,EAAA,CAAA,CAAA,CAAA;AACfA,eAAA,CATW,oBASJ,OAAQ,EAAA,CAAA,CAAA,CAAA;AACfA,eAAA,CAVW,oBAUJ,WAAY,EAAA,CAAA,CAAA,CAAA;AACnBA,eAAA,CAXW,oBAWJ,OAAQ,EAAA,EAAA,CAAA,CAAA;AAEfA,eAAA,CAbW,kBAaI,EAAA,WAAA,CAAA,CAAA;AAbV,IAAM,iBAAN,GAAA;;;;;;;;;;;;;;;;;;;;ACHP,IAAAS,QAAA,CAAA;AAIA,MAA8B,SAAgC,CAAA;AAAA,EAG5D,YAAY,KAAc,EAAA;AAF1B,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,OAAU,GAAA;AACZ,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,CAAA,SAAA,CAAA;AAAA,GAChC;AAAA,EACA,IAAI,KAAQ,GAAA;AAEV,IAAA,OAAc,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,WAAA,CACE,MACA,KACA,EAAA;AACA,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAY,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,GACrC;AAAA,EACA,YACE,IAC+B,EAAA;AAC/B,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,QAA8B,GAAA;AAC5B,IAAM,MAAA,IAAI,MAAM,0BAA0B,CAAA,CAAA;AAAA,GAC5C;AAAA,EACA,QAAoB,GAAA;AAClB,IAAA,OAAO,CAAC,CAACR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,MAAA,CAAA;AAAA,GAClC;AACF,CAAA;AAhCEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACLF,IAAAA,QAAA,CAAA;AASA,MAAqB,oBAAoB,SAAkC,CAAA;AAAA,EAGzE,YAAY,KAAe,EAAA;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAHb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,cAAuB,GAAA;AACrB,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAU,SAAS,CAAA,CAAA;AAAA,KACjC;AAAA,GACF;AAAA,EAEA,QAA0B,GAAA;AACxB,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,KAAS,IAAA,EAAA,CAAA;AAAA,KACzC;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,UAAmB,GAAA;AACjB,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,KAAQ,GAAA,EAAA,CAAA;AAAA,GACjC;AACF,CAAA;AAvBEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACJF,MAAqB,oBAAoB,SAAkC,CAAA;AAAA,EACzE,YAAY,KAAe,EAAA;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACb;AACF;;;;;;;;;;;;;;;;;;;;ACVA,IAAAA,QAAA,CAAA;AAGO,MAAM,+BAAqD,SAAU,CAAA;AAAA,EAE1E,YAAY,KAA2B,EAAA;AACrC,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,UAAa,GAAA;AACX,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,SAAS,EAAE,CAAA,CAAA;AAAA,GACzB;AAAA,EAEA,QAAW,GAAA;AACT,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,QAAS,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,SAAS,CAAM,EAAA;AACb,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,SAAS,CAAC,CAAA,CAAA;AAAA,GACxB;AAAA,EAEA,QAAiC,GAAA;AAC/B,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,SAAU,CAAA,KAAA,CAAA;AAAA,GAC/B;AACF,CAAA;AArBEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACJF,IAAAA,QAAA,CAAA;AASA,MAAqB,oBAAoB,sBAEvC,CAAA;AAAA,EAEA,YAAY,KAAe,EAAA;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA;AAAA,EAGA,WAAW,QAAyD,EAAA;AAClE,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,OAAU,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AACjE,MAAM,MAAA,GAAA,uBAAU,GAA2B,EAAA,CAAA;AAC3C,MAAA,IAAI,QAAU,EAAA;AACZ,QAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,CAAI,OAAO,CAAE,CAAA,KAAK,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA;AAClD,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAEA,MAAA,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA,CAAA;AAAA,KACnC;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA,EAGA,SAAA,CACE,WACA,EAAA,SAAA,EACA,kBACM,EAAA;AACN,IAAA,IAAI,eAAkB,GAAA,KAAA,CAAA;AACtB,IAAA,IAAIR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,EAAA,KAAO,IAAM,EAAA;AACtC,MAAA,IACEC,cAAa,CAAAT,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,aAAa,CAAE,CAAA,IAAA;AAAA,QACjD,CAAC,CAAM,KAAA,CAAA,CAAE,KAAU,KAAA,WAAA;AAAA,WAErB,kBACA,EAAA;AACA,QAAkB,eAAA,GAAA,IAAA,CAAA;AAAA,OACb,MAAA;AACL,QAAkB,eAAA,GAAA,KAAA,CAAA;AAAA,OACpB;AAEA,MAAI,IAAA,kBAAA,IAAuB,CAAC,eAAA,IAAmB,CAAC,kBAAA;AAC9C,QAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,EAAE,IAAK,CAAA;AAAA,UACtD,KAAO,EAAA,WAAA;AAAA,UACP,IAAM,EAAA,SAAA;AAAA,SACP,CAAA,CAAA;AAAA,KACL;AAAA,GACF;AAAA;AAAA,EAGA,WAAW,YAAqD,EAAA;AAC9D,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAgB,GAAA,YAAA,CAAA;AAAA,KACzC;AAAA,GACF;AAAA,EAEA,aAAa,WAAoC,EAAA;AAC/C,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,CAAE,CAAA,MAAA;AAAA,QACjD,CAAC,CAAM,KAAA,CAAA,CAAE,KAAU,KAAA,WAAA;AAAA,OACrB,CAAA;AAAA,KACF;AAAA,GACF;AAAA;AAAA,EAGA,kBAAkB,QAAyD,EAAA;AACzE,IAAA,MAAM,GAAM,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AAC7D,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAI,GAAM,GAAA,IAAA,CAAA;AACV,QAAI,GAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACjB,UAAA,IAAI,EAAE,QAAU,EAAA;AACd,YAAM,GAAA,GAAA,CAAA,CAAA;AAAA,WACR;AAAA,SACD,CAAA,CAAA;AACD,QAAO,OAAA,GAAA,CAAA;AAAA,OACF,MAAA;AACL,QAAA,OAAOC,eAAa,GAAI,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AAAA,OACjD;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,eAAiC,GAAA;AAC/B,IAAI,IAAAT,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,OACEC,cAAa,CAAAT,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,aAAa,CAAE,CAAA,IAAA;AAAA,QACjD,CAAC,MAAM,CAAE,CAAA,QAAA;AAAA,SACR,IAAQ,IAAA,qBAAA,CAAA;AAAA,KAEf;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA,EAGA,YAAqB,GAAA;AACnB,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,CAAE,CAAA,OAAA;AAAA,QACjD,CAAC,CAAO,KAAA,CAAA,CAAE,QAAW,GAAA,KAAA;AAAA,OACvB,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAA;AAtGEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACZF,IAAAA,QAAA,CAAA;AAGA,MAAqB,mBAAmB,sBAAuB,CAAA;AAAA,EAE7D,YAAY,KAAc,EAAA;AACxB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,cAAmD,GAAA;AACjD,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,QAAS,EAAA,CAAA;AAAA,GAC9B;AACF,CAAA;AATEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACJF,IAAAA,QAAA,CAAA;AAGA,MAAqB,kBAAkB,sBAErC,CAAA;AAAA,EAEA,YAAY,KAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,SAAS,CAAgD,EAAA;AACvD,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,SAAS,CAAC,CAAA,CAAA;AAAA,GACxB;AACF,CAAA;AATEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACFF,MAAqB,mBAAmB,sBAAuB,CAAA;AAAA,EAC7D,YAAY,KAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACb;AAAA,EAEA,UAAmB,GAAA;AACjB,IAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,GACrB;AAAA,EAEA,SAAS,KAAwC,EAAA;AAE/C,IAAI,IAAA,GAAA,CAAA;AACJ,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,QAAA,CAAS,OAAQ,CAAA,SAAA;AAAA,MACvC,KAAA;AAAA,KACF,CAAA;AACA,IAAI,IAAA,MAAA,KAAW,IAAQ,IAAA,MAAA,KAAW,KAAO,EAAA;AACvC,MAAM,GAAA,GAAA,MAAA,CAAA;AAAA,KACD,MAAA;AACL,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,uHAAA;AAAA,OACF,CAAA;AAAA,KACF;AACA,IAAA,KAAA,CAAM,SAAS,GAAG,CAAA,CAAA;AAAA,GACpB;AACF;;;;;;;;;;;;;;;;;;;;AC5BA,IAAAA,QAAA,CAAA;AAOA,MAAqB,mBAAmB,sBAAuB,CAAA;AAAA,EAE7D,YAAY,KAAc,EAAA;AACxB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,WAAW,QAAkD,EAAA;AAC3D,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,WAAc,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AAErE,MAAA,IAAI,QAAU,EAAA;AACZ,QAAM,MAAA,OAAA,uBAAc,GAA2B,EAAA,CAAA;AAC/C,QAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAE,CAAA,KAAK,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA;AAE1D,QAAO,OAAA,OAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,gBAAgB,EAAC,CAAA;AACrB,MAAA,aAAA,GAAgB,YAAY,GAAI,CAAA,CAAC,MAAM,MAAO,CAAA,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA;AACtD,MAAO,OAAA,aAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,YAA4B,GAAA;AAC1B,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAA,GAAgB,EAAC,CAAA;AAAA,KAC1C;AAAA,GACF;AAAA,EAEA,SAAA,CACE,UACA,EAAA,SAAA,EACA,kBACM,EAAA;AACN,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,WAAc,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AACrE,MAAA,MAAM,iBAAoB,GAAA,WAAA,CAAY,IAAK,CAAA,CAAC,CAAM,KAAA;AAChD,QAAO,OAAA,CAAA,CAAE,KAAU,KAAA,UAAA,CAAW,QAAS,EAAA,CAAA;AAAA,OACxC,CAAA,CAAA;AAED,MAAI,IAAA,kBAAA,IAAsB,CAAC,iBAAmB,EAAA;AAC5C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,KAAA,EAAO,WAAW,QAAS,EAAA;AAAA,UAC3B,IAAM,EAAA,SAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACF;AAAA,EAEA,WAAW,OAAgC,EAAA;AACzC,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAgB,GAAA,OAAA,CAAA;AAAA,KACzC;AAAA,GACF;AAAA,EAEA,aAAa,UAAmC,EAAA;AAC9C,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,CAAE,CAAA,MAAA;AAAA,QACjD,CAAC,CAAM,KAAA,CAAA,CAAE,KAAU,KAAA,UAAA;AAAA,OACrB,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEA,kBAAkB,QAAuD,EAAA;AACvE,IAAA,MAAM,WAAc,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AAErE,IAAA,MAAM,WAAW,WAAY,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA,CAAA;AACnD,IAAA,IAAI,CAAC,QAAA;AAAU,MAAO,OAAA,IAAA,CAAA;AACtB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAM,MAAA,OAAA,uBAAc,GAA2B,EAAA,CAAA;AAC/C,MAAA,OAAA,CAAQ,GAAI,CAAA,MAAA,CAAO,QAAU,EAAA,KAAK,GAAG,QAAQ,CAAA,CAAA;AAC7C,MAAO,OAAA,OAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA,QAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEA,eAA6C,GAAA;AAC3C,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,aAAgB,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AACvE,MAAA,IAAI,aAAe,EAAA;AACjB,QAAA,OAAO,cAAc,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,QAAQ,CAAG,EAAA,IAAA,CAAA;AAAA,OAChD;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AAtFEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACRF,IAAAA,QAAA,CAAA;AAQA,MAAqB,sBAAsB,sBAAiC,CAAA;AAAA,EAE1E,YAAY,KAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,SAAA,CACE,WACA,EAAA,SAAA,EACA,kBACM,EAAA;AACN,IAAA,IAAI,eAAkB,GAAA,KAAA,CAAA;AACtB,IAAA,IAAIR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,EAAA,KAAO,IAAM,EAAA;AACtC,MAAA,IACEC,cAAa,CAAAT,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,aAAa,CAAE,CAAA,IAAA;AAAA,QACjD,CAAC,CAAM,KAAA,CAAA,CAAE,KAAU,KAAA,WAAA;AAAA,WAErB,kBACA,EAAA;AACA,QAAkB,eAAA,GAAA,IAAA,CAAA;AAAA,OACb,MAAA;AACL,QAAkB,eAAA,GAAA,KAAA,CAAA;AAAA,OACpB;AAEA,MAAI,IAAA,kBAAA,IAAuB,CAAC,eAAA,IAAmB,CAAC,kBAAA;AAC9C,QAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,EAAE,IAAK,CAAA;AAAA,UACtD,KAAO,EAAA,WAAA;AAAA,UACP,IAAM,EAAA,SAAA;AAAA,SACP,CAAA,CAAA;AAAA,KACL;AAAA,GACF;AAAA,EACA,SAAS,KAAuB,EAAA;AAC9B,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,SAAS,KAAK,CAAA,CAAA;AAAA,KAC5B;AAAA,GACF;AAAA,EACA,YAAqB,GAAA;AACnB,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,CAAE,CAAA,OAAA;AAAA,QACjD,CAAC,CAAO,KAAA,CAAA,CAAE,QAAW,GAAA,KAAA;AAAA,OACvB,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EACA,kBAAkB,QAAyD,EAAA;AACzE,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,QAAW,GAAAC,cAAA;AAAA,QACfT,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,CAAA,aAAA;AAAA,OACvB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA,CAAA;AAE1B,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAI,QAAU,EAAA;AACZ,UAAM,MAAA,OAAA,uBAAc,GAA2B,EAAA,CAAA;AAC/C,UAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAE,CAAA,KAAK,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA;AACvD,UAAO,OAAA,OAAA,CAAA;AAAA,SACT;AAEA,QAAO,OAAA,QAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EACA,WAAW,QAAyD,EAAA;AAClE,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,OAAU,GAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA,CAAA;AACjE,MAAM,MAAA,GAAA,uBAAU,GAA2B,EAAA,CAAA;AAC3C,MAAA,IAAI,QAAU,EAAA;AACZ,QAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,CAAI,OAAO,CAAE,CAAA,KAAK,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA;AAClD,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAEA,MAAA,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA,CAAA;AAAA,KACnC;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EACA,WAAW,YAAqD,EAAA;AAC9D,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,aAAgB,GAAA,YAAA,CAAA;AAAA,KACzC;AAAA,GACF;AAAA,EACA,aAAa,WAAoC,EAAA;AAC/C,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAAC,cAAA,CAAaT,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAW,CAAA,aAAa,CAAE,CAAA,MAAA;AAAA,QACjD,CAAC,CAAM,KAAA,CAAA,CAAE,KAAU,KAAA,WAAA;AAAA,OACrB,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAA;AAtFEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACNF,MAAqB,oBAAoB,SAAU,CAAA;AAAA,EACjD,YAAY,KAAe,EAAA;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACb;AACF;;ACJA,MAAqB,kBAAkB,sBAAuB,CAAA;AAAA,EAC5D,YAAY,KAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACb;AACF;;;;;;;;;;;;;;;;;;;;ACPA,IAAAA,QAAA,CAAA;AAWA,MAAqB,mBAAmB,SAAiC,CAAA;AAAA,EAEvE,YAAY,KAAc,EAAA;AACxB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,UAAmB,GAAA;AACjB,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAA+B,4BAAA,EAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,+BAAA,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,QAAiB,GAAA;AACf,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAA+B,4BAAA,EAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,qBAAA,CAAA;AAAA,KACjE,CAAA;AAAA,GACF;AAAA,EAEA,QAAiB,GAAA;AACf,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAA+B,4BAAA,EAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,+BAAA,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,QAAiB,GAAA;AACf,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,EAAI,EAAA;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAA+B,4BAAA,EAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,+BAAA,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AAtCEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACZF,IAAAA,QAAA,CAAA;AAQA,MAAqB,kBAAkB,SAAgC,CAAA;AAAA,EAErE,YAAY,KAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,QAAiB,GAAA;AACf,IAAI,IAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAW,EAAA;AACpC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAA+B,4BAAA,EAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,qBAAA,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAA;AAbEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACTF,IAAAA,QAAA,CAAA;AAQA,MAAqB,kBAAkB,SAAgC,CAAA;AAAA,EAErE,YAAY,KAAc,EAAA;AACxB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,QAAiB,GAAA;AACf,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAA+B,4BAAA,EAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,qBAAA,CAAA;AAAA,KACjE,CAAA;AAAA,GACF;AACF,CAAA;AAXEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACTF,IAAAA,QAAA,CAAA;AAIO,MAAM,oBAA2C,CAAA;AAAA,EAEtD,YAAY,KAAwB,EAAA;AADpC,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,UAAU,IAAc,EAAA;AACtB,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAU,IAAI,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,YAAY,IAAmB,EAAA;AAC7B,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAAA,GACrC;AAAA,EACA,QAAiB,GAAA;AACf,IAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA,CAAA;AAAA,GAC3C;AAAA,EACA,QAAoB,GAAA;AAClB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACA,eAAe,OAAiB,EAAA;AAC9B,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,cAAA,CAAe,OAAO,CAAA,CAAA;AAAA,GAC3C;AAAA,EACA,QAAA,CAAS,OAAiB,EAAA,KAAA,GAAQ,CAAG,EAAA;AACnC,IAAA,OAAOR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,QAAS,CAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AAAA,GAC5C;AAAA,EACA,WAAA,CACE,MACA,KACM,EAAA;AACN,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAY,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,GACrC;AAAA,EACA,cAAA,CAAe,SAAiB,KAAe,EAAA;AAC7C,IAAA,OAAOR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,cAAe,CAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AAAA,GAClD;AAAA,EACA,QAAS,CAAA,OAAA,EAAiB,KAAY,EAAA,KAAA,GAAQ,CAAG,EAAA;AAC/C,IAAA,OAAOR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,QAAS,CAAA,OAAA,EAAS,OAAO,KAAK,CAAA,CAAA;AAAA,GACnD;AACF,CAAA;AAnCEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACyCW,MAAA,cAAA,GAAiB,CAC5B,KACsB,KAAA;AACtB,EAAA,IAAI,iBAAiB,eAAiB,EAAA;AACpC,IAAO,OAAA,IAAI,qBAAqB,KAAK,CAAA,CAAA;AAAA,GAChC,MAAA;AACL,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,KAAM,CAAA,UAAA,CAAA;AAC5B,IAAA,IAAI,QAA8B,GAAA,IAAA,CAAA;AAElC,IAAA,QAAQ,SAAW;AAAA,MACjB,KAAKb,OAAM,CAAA,UAAA;AACT,QAAW,QAAA,GAAA,IAAI,WAAW,KAAc,CAAA,CAAA;AACxC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,aAAA;AACT,QAAW,QAAA,GAAA,IAAI,cAAc,KAAiB,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,WAAA;AACT,QAAW,QAAA,GAAA,IAAI,YAAY,KAAe,CAAA,CAAA;AAC1C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,UAAA;AACT,QAAW,QAAA,GAAA,IAAI,WAAW,KAAc,CAAA,CAAA;AACxC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,UAAA;AACT,QAAW,QAAA,GAAA,IAAI,WAAW,KAAiB,CAAA,CAAA;AAC3C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,WAAA;AACT,QAAW,QAAA,GAAA,IAAI,YAAY,KAAe,CAAA,CAAA;AAC1C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,aAAA;AACT,QAAW,QAAA,GAAA,IAAI,cAAc,KAAiB,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,WAAA;AACT,QAAW,QAAA,GAAA,IAAI,YAAY,KAAe,CAAA,CAAA;AAC1C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,SAAA;AACT,QAAW,QAAA,GAAA,IAAIe,UAAc,KAAiB,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACF,KAAKf,OAAM,CAAA,SAAA;AACT,QAAW,QAAA,GAAA,IAAI,UAAU,KAAa,CAAA,CAAA;AACtC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,UAAA;AACT,QAAW,QAAA,GAAA,IAAI,WAAW,KAAc,CAAA,CAAA;AACxC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,SAAA;AACT,QAAW,QAAA,GAAA,IAAI,UAAU,KAAa,CAAA,CAAA;AACtC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,UAAA;AACT,QAAW,QAAA,GAAA,IAAI,UAAU,KAAc,CAAA,CAAA;AACvC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,UAAA;AACT,QAAW,QAAA,GAAA,IAAI,UAAU,KAAc,CAAA,CAAA;AACvC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,SAAA;AACT,QAAW,QAAA,GAAA,IAAI,kBAAkB,KAAa,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,YAAA;AACT,QAAW,QAAA,GAAA,IAAI,aAAa,KAAgB,CAAA,CAAA;AAC5C,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,SAAA;AACT,QAAW,QAAA,GAAA,IAAI,UAAU,KAAa,CAAA,CAAA;AACtC,QAAA,MAAA;AAAA,MACF,KAAKA,OAAM,CAAA,WAAA;AACT,QAAW,QAAA,GAAA,IAAI,YAAY,KAAe,CAAA,CAAA;AAC1C,QAAA,MAAA;AAEA,KACJ;AAEA,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AACF,CAAA;;;;;;;;ACjHO,MAAM,cAAkD,CAAA;AAAA,EAG7D,YAAY,YAAsB,EAAA;AAFlC,IAAAI,eAAA,CAAA,IAAA,EAAA,YAAA,EAAoB,EAAC,CAAA,CAAA;AAGnB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,IAAA,CAAK,UAAa,GAAA,YAAA,CAAA;AAAA,KACpB;AACA,IAAA,cAAA,CAAe,MAAM,EAAE,UAAA,EAAY,UAAY,EAAA,WAAA,EAAa,QAAQ,CAAA,CAAA;AAAA,GACtE;AAAA,EAEA,YAAmC,QAAuB,EAAA;AACxD,IAAO,OAAA,IAAA,CAAK,WAAW,QAAQ,CAAA,CAAA;AAAA,GACjC;AAAA,EACA,WAAA,CACE,UACA,SACA,EAAA;AACA,IAAM,MAAA,KAAA,GACJ,qBAAqB,QACjB,GAAA,SAAA,CAAU,KAAK,UAAW,CAAA,QAAQ,CAAC,CACnC,GAAA,SAAA,CAAA;AAEN,IAAK,IAAA,CAAA,UAAA,CAAW,QAAQ,CAAI,GAAA,KAAA,CAAA;AAAA,GAC9B;AACF;;AC3BO,MAAM,UAAa,GAAA;AAAA,EACxB,kBAAoB,EAAA,CAAA;AAAA,EACpB,iBAAmB,EAAA,CAAA;AAAA,EACnB,kBAAoB,EAAA,CAAA;AAAA,EACpB,uBAAyB,EAAA,EAAA;AAAA,EACzB,uBAAyB,EAAA,EAAA;AAAA;AAAA,EAGzB,kBAAoB,EAAA,EAAA;AAAA,EACpB,kBAAoB,EAAA,EAAA;AAAA,EACpB,mBAAqB,EAAA,EAAA;AAAA,EACrB,4BAA8B,EAAA,EAAA;AAAA;AAAA,EAG9B,wBAA0B,EAAA,EAAA;AAAA,EAC1B,uBAAyB,EAAA,EAAA;AAC3B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AChBA,IAAAY,YAAA,CAAA;AA6BA,IAAI,EAA2B,GAAA,IAAA,CAAA;AAC/B,eAAe,gBAAmB,GAAA;AAChC,EAAA,IAAI,CAAC,EAAI,EAAA;AACP,IAAM,MAAA,+DAA6C,CAAA,IAAA;AAAA,MACjD,CAAC,EAAE,aAAA,EAAAC,cAAc,EAAA,KAAO,KAAKA,cAAc,CAAA,QAAA;AAAA,KAC7C,CAAA;AAAA,GACF;AACA,EAAO,OAAA,EAAA,CAAA;AACT,CAAA;AAEO,MAAe,cASZ,cAA2B,CAAA;AAAA,EAYnC,WAAY,CAAA,EAAE,UAAY,EAAA,GAAG,YAA+B,EAAA;AAC1D,IAAM,KAAA,EAAA,CAAA;AAZR,IAAAb,eAAA,CAAA,IAAA,EAAU,QAAa,EAAC,CAAA,CAAA;AAExB,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AACA,IAEIA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA;AAAA,MACF,YAAY,EAAE,KAAA,EAAO,OAAO,YAAc,EAAA,EAAA,EAAI,eAAe,KAAM,EAAA;AAAA,KACrE,CAAA,CAAA;AAuMA,IAAaG,cAAA,CAAA,IAAA,EAAAS,YAAA,EAAA,KAAA,CAAA,CAAA;AAhMX,IAAA,IAAA,CAAK,UAAa,GAAA,UAAA,CAAA;AAClB,IAAA,IAAA,CAAK,UAAa,GAAA,UAAA,CAAA;AAElB,IAAA,cAAA,CAAe,IAAM,EAAA,EAAE,KAAO,EAAA,UAAA,EAAY,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,MAAgB,qBACd,SACoB,EAAA;AACpB,IAAA,MAAM,iBAAiB,EAAC,CAAA;AACxB,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,SAAU,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AAC5C,MAAA,IAAI,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,GAAK,EAAA;AAC7B,QAAA,cAAA,CAAe,IAAK,CAAA,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,CAAA,CAAA;AAAA,OACxC,MAAA,IAAW,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,OAAO,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,GAAK,EAAA;AACjE,QAAM,MAAA,SAAA,GAAY,SAAU,CAAA,CAAC,CAAE,CAAA,KAAA,CAAA;AAC/B,QAAA,IAAI,SAAW,EAAA;AACb,UAAe,cAAA,CAAA,IAAA;AAAA,YACZ,CAAA,MAAM,kBACJ,EAAA,OAAA;AAAA,cACC,IAAA,CAAK,KAAK,UAAW,CAAA,QAAA;AAAA,cACrB,IAAA,CAAK,KAAK,UAAW,CAAA,SAAA;AAAA,aACvB,CACC,SAAS,SAAS,CAAA;AAAA,WACvB,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AACA,IAAO,OAAA,cAAA,CAAA;AAAA,GACT;AAAA,EAEU,oBAAA,CACR,OACA,gBACkB,EAAA;AAClB,IAAI,IAAA,GAAA,CAAA;AACJ,IAAA,IAAI,OAAO,kBAAoB,EAAA;AAC7B,MAAA,GAAA,GAAM,MAAO,CAAA,WAAA,CAAA;AAAA,KACR,MAAA;AACL,MAAM,GAAA,GAAA,IAAA,CAAK,YAAY,KAAS,IAAA,CAAA,CAAA;AAAA,KAClC;AACA,IAAO,OAAA;AAAA,MACL,SAAS,OAAQ,CAAA,KAAA;AAAA,MACjB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAS,EAAA;AAAA,MAC1C,MAAQ,EAAA,gBAAA;AAAA,MACR,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,MAChC,KAAA,EAAO,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,EAAA;AAAA,MAC5B,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,MACvB,KAAO,EAAA,GAAA;AAAA,MACP,KAAA;AAAA,MACA,KAAO,EAAA,IAAA;AAAA,MACP,qBAAuB,EAAA,IAAA;AAAA,MACvB,GAAG,gBAAA;AAAA,KACL,CAAA;AAAA,GACF;AAAA,EAEA,MAAgB,gBAAgB,SAAqC,EAAA;AACnE,IAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,UAAA,CAAW,YAAc,EAAA,IAAA;AAAA,MAC1C,CAAC,CAAM,KAAA,CAAA,CAAE,OAAY,KAAA,SAAA;AAAA,KACvB,CAAA;AACA,IAAA,IAAI,KAAO,EAAA;AACT,MAAI,IAAA;AACF,QAAM,MAAA,EAAA,GAAM,MAAe,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAIxC,QAAA,MAAM,SAAS,MAAM,EAAA;AAAA,UACnB,IAAA;AAAA,UACA,GAAI,MAAM,IAAK,CAAA,oBAAA,CAAqB,MAAM,SAAS,CAAA;AAAA,SACrD,CAAA;AACA,QAAO,OAAA,MAAA,CAAA;AAAA,eACA,CAAG,EAAA;AACV,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AACf,QAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,UACrB,IAAI,mBAAoB,CAAA;AAAA,YACtB,OAAS,EAAA,MAAA,CAAO,YAAa,CAAA,SAAA,EAAW,MAAM,OAAO,CAAA;AAAA,WACtD,CAAA;AAAA,SACH,CAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAgB,mBACd,CAAA,KAAA,EACA,MACkB,EAAA;AAClB,IAAI,IAAA;AACF,MAAA,MAAM,WAAW,MAAM,IAAA;AAAA,QACrB,MAAM,WAAA;AAAA,UACJ,IAAA,CAAK,oBAAqB,CAAA,KAAA,CAAM,KAAO,EAAA;AAAA,YACrC,MAAQ,EAAA,IAAA;AAAA,WACT,CAAA;AAAA,SACH;AAAA,QACA;AAAA,UACE,QAAU,EAAA,MAAA;AAAA,UACV,iBAAmB,EAAA,WAAA;AAAA,UACnB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAS,EAAA;AAAA,SAC5C;AAAA,OACF,CAAA;AAEA,MAAI,IAAA,QAAA,EAAU,MAAM,OAAS,EAAA;AAC3B,QAAM,MAAA,mBAAA,CAAoB,SAAS,IAAI,CAAA,CAAA;AACvC,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,aACO,aAAe,EAAA;AACtB,MAAA,OAAA,CAAQ,MAAM,aAAa,CAAA,CAAA;AAC3B,MAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,QACrB,IAAI,mBAAoB,CAAA;AAAA,UACtB,OAAA,EAAS,OAAO,aAAa,CAAA;AAAA,SAC9B,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAgB,qBACd,CAAA,KAAA,EACA,MACkB,EAAA;AAClB,IAAA,MAAM,CAAI,GAAA,IAAA,CAAK,oBAAqB,CAAA,KAAA,CAAM,OAAO,MAAM,CAAA,CAAA;AACvD,IAAK,IAAA,MAAA,CAAO,MAAe,CAAA,SAAA,CAAU,oBAAsB,EAAA;AACzD,MAAA,MAAA,CAAO,QAAS,CAAA,MAAA;AAAA,QACd,MAAM,WAAY,CAAA;AAAA,UAChB,GAAG,CAAA;AAAA,UACH,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAS,EAAA;AAAA,SAC3C,CAAA;AAAA,OACH,CAAA;AAAA,KACK,MAAA;AACL,MAAA,MAAA,CAAO,QAAS,CAAA,MAAA;AAAA,QACd,MAAM,WAAY,CAAA;AAAA,UAChB,GAAG,CAAA;AAAA,UACH,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAS,EAAA;AAAA,SAC3C,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAgB,eACd,CAAA,SAAA,EACA,MACkB,EAAA;AAClB,IAAI,IAAA,KAAA,GAAQ,IAAK,CAAA,UAAA,CAAW,YAAc,EAAA,IAAA;AAAA,MACxC,CAAC,CAAM,KAAA,CAAA,CAAE,OAAY,KAAA,SAAA;AAAA,KACvB,CAAA;AACA,IAAM,MAAA,UAAA,GAAa,KAAK,UAAW,CAAA,UAAA,CAAA;AACnC,IAAI,IAAA,CAAC,SAAS,UAAY,EAAA;AACxB,MAAQ,KAAA,GAAA;AAAA,QACN,OAAO,UAAW,CAAA,kBAAA;AAAA,QAClB,MAAQ,EAAA,IAAA;AAAA,QACR,OAAS,EAAA,UAAA;AAAA,OACX,CAAA;AAAA,KACF;AAEA,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AAErB,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,OAAA,IAAA,CAAK,mBAAoB,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,OACxC,MAAA;AACL,QAAO,OAAA,IAAA,CAAK,qBAAsB,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,OACjD;AAAA,KACF;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAM,SACJ,CAAA,SAAA,EACA,MACkB,EAAA;AAClB,IAAA,IAAI,MAAS,GAAA,MAAM,IAAK,CAAA,eAAA,CAAgB,SAAS,CAAA,CAAA;AACjD,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,MAAA,GAAS,MAAM,IAAA,CAAK,eAAgB,CAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,KACvD;AAMA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAU,GAAA;AACR,IAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,GACd;AAAA,EAEU,gBAAgB,SAAmB,EAAA;AAC3C,IAAA,OACE,KAAK,UAAW,CAAA,YAAA,EAAc,KAAK,CAAC,CAAA,KAAM,EAAE,OAAY,KAAA,SAAS,CACjE,IAAA,IAAA,CAAK,WAAW,YAAc,EAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,YAAY,SAAS,CAAA,CAAA;AAAA,GAErE;AAAA,EAGA,MAAM,KAAK,IAAY,EAAA;AACrB,IAAA,IAAIX,cAAK,CAAA,IAAA,EAAAW,YAAA,CAAA;AAAY,MAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA,CAAA;AAC9D,IAAAV,cAAA,CAAA,IAAA,EAAKU,YAAa,EAAA,IAAA,CAAA,CAAA;AAClB,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AAAA,GACd;AAAA,EACA,MAAa,QAAqC,GAAA;AAChD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,cAAiB,GAAA;AACf,IAAA,IAAA,CAAK,SAAU,CAAA,mBAAA;AAAA,MACb,KAAK,UAAW,CAAA,EAAA;AAAA,MAChB,KAAK,UAAW,CAAA,KAAA;AAAA,KAClB,CAAA;AAAA,GACF;AACF,CAAA;AAhBEA,YAAA,GAAA,IAAA,OAAA,EAAA;;AC1PK,MAAM,gCAAgC,KAAM,CAAA;AAAC,CAAA;AAEpD,SAAS,QAAQ,EAAY,EAAA;AAC3B,EAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC9B,IAAA,UAAA,CAAW,SAAS,EAAE,CAAA,CAAA;AAAA,GACvB,CAAA,CAAA;AACH,CAAA;AAQsB,eAAA,UAAA,CACpB,EACA,EAAA,YAAA,EACA,aAAoC,GAAA;AAAA,EAClC,OAAS,EAAA,CAAA;AAAA,EACT,OAAS,EAAA,GAAA;AACX,CACqB,EAAA;AACrB,EAAA,OAAO,IAAI,OAAA,CAAoB,CAAC,OAAA,EAAS,MAAW,KAAA;AAClD,IAAA,CAAC,YAAY;AACX,MAAA,MAAM,QAAQ,YAAY;AACxB,QAAM,MAAA,GAAA,GAAM,MAAM,EAAG,EAAA,CAAA;AACrB,QAAO,OAAA,YAAA,CAAa,GAAG,CAAA,GAAI,GAAM,GAAA,IAAA,CAAA;AAAA,OACnC,CAAA;AAEA,MAAA,WAAA,MAAiB,CAAK,IAAA,IAAI,KAAM,CAAA,aAAA,CAAc,OAAO,CAAG,EAAA;AACtD,QAAM,MAAA,GAAA,GAAM,MAAM,KAAM,EAAA,CAAA;AACxB,QAAA,IAAI,GAAK,EAAA;AACP,UAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACX,UAAA,OAAA;AAAA,SACF;AACA,QAAM,MAAA,OAAA,CAAQ,cAAc,OAAO,CAAA,CAAA;AAAA,OACrC;AAEA,MAAO,MAAA,CAAA,IAAI,yBAAyB,CAAA,CAAA;AAAA,KACnC,GAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AACH;;AC5Ca,MAAA,YAAA,GAAgC,CAAC,CAAA,EAAQ,CAAW,KAAA;AAC/D,EAAI,IAAA,MAAA,CAAO,EAAG,CAAA,CAAA,EAAG,CAAC,CAAA;AAAG,IAAO,OAAA,IAAA,CAAA;AAE5B,EAAI,IAAA,CAAC,OAAO,EAAG,CAAA,CAAA,EAAG,CAAC,CAAK,IAAA,OAAO,CAAM,KAAA,OAAO,CAAG,EAAA;AAC7C,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AACzB,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACpB,MAAI,IAAA,CAAC,MAAM,OAAQ,CAAA,CAAC,KAAK,CAAE,CAAA,MAAA,KAAW,EAAE,MAAQ,EAAA;AAC9C,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,CAAA,CAAE,QAAQ,CAAK,EAAA,EAAA;AACjC,QAAI,IAAA,CAAC,OAAO,EAAG,CAAA,CAAA,CAAE,CAAC,CAAG,EAAA,CAAA,CAAE,CAAC,CAAC,CAAG,EAAA;AAC1B,UAAO,OAAA,KAAA,CAAA;AAAA,SACT;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,MAAA,IAAW,KAAK,CAAG,EAAA;AACjB,MAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAO,CAAA,EAAA,CAAG,OAAO,CAAE,CAAA,GAAG,CAAC,CAAG,EAAA;AAC7B,UAAO,OAAA,KAAA,CAAA;AAAA,SACT;AAAA,OACF;AACA,MAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAO,CAAA,EAAA,CAAG,OAAO,CAAE,CAAA,GAAG,CAAC,CAAG,EAAA;AAC7B,UAAO,OAAA,KAAA,CAAA;AAAA,SACT;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,eACG,CAAK,IAAA,CAAC,CAAO,IAAA,CAAC,KAAK,CAAI,EAAA;AACjC,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAA,OAAO,CAAM,KAAA,CAAA,CAAA;AACf;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA,IAAA,kBAAA,CAAA;AAqBO,MAAM,SAAU,CAAA;AAAA,EACrB,WACkB,CAAA,EAAA,EACA,IACA,EAAA,KAAA,EACA,SAChB,EAAA;AAJgB,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA,CAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AACA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA;AAAA,GACf;AACL,CAAA;AAEO,MAAe,2BAMZ,KAIR,CAAA;AAAA,EAMA,WAAY,CAAA;AAAA,IACV,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG,UAAA;AAAA,GAC4C,EAAA;AAC/C,IAAA,KAAA,CAAM,UAA6B,CAAA,CAAA;AAbrC,IAAuCT,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AACvC,IAAAH,eAAA,CAAA,IAAA,EAAU,0BAA6C,EAAA,IAAA,CAAA,CAAA;AAEvD,IAAgBA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAYd,IAAA,IAAA,CAAK,YAAY,IAAI,SAAA,CAAU,KAAO,EAAA,OAAA,EAAS,UAAU,SAAS,CAAA,CAAA;AAElE,IAAM,MAAA,YAAA,GAAe,KAAK,eAAgB,CAAA;AAAA,MACxC,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG,UAAA;AAAA,KACJ,CAAA,CAAA;AACD,IAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,MAAA,IAAA,CAAK,YAAY,YAAY,CAAA,CAAA;AAAA,KAC/B;AACA,IAAK,IAAA,CAAA,KAAA,CAAM,QAAQ,YAAiB,IAAA,EAAA,CAAA;AACpC,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA;AAAA,MACtB,KAAO,EAAA,KAAA;AAAA,MACP,YAAc,EAAA,IAAA;AAAA,MACd,aAAe,EAAA,KAAA;AAAA,KACjB,CAAA;AAEA,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,SAAW,EAAA,UAAA;AAAA,KACZ,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,UAAU,SAAqC,EAAA;AACnD,IAAI,IAAA,IAAA,CAAK,kBAAmB,EAAA,CAAE,KAAO,EAAA;AACnC,MAAO,OAAA,OAAA,CAAQ,QAAQ,KAAK,CAAA,CAAA;AAAA,KAC9B;AAEA,IAAA,IAAI,cAAc,UAAY,EAAA;AAC5B,MAAA,IAAI,IAAK,CAAA,QAAA,EAAe,KAAAC,cAAA,CAAA,IAAA,EAAK,kBAAoB,CAAA,EAAA;AAC/C,QAAO,OAAA,IAAA,CAAA;AAAA,OACF,MAAA;AACL,QAAA,MAAM,GAAM,GAAA,MAAM,KAAM,CAAA,SAAA,CAAU,SAAS,CAAA,CAAA;AAC3C,QAAA,IAAI,GAAK,EAAA;AACP,UAAKC,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAqB,KAAK,QAAS,EAAA,CAAA,CAAA;AACxC,UAAO,OAAA,IAAA,CAAA;AAAA,SACF,MAAA;AACL,UAAO,OAAA,KAAA,CAAA;AAAA,SACT;AAAA,OACF;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AAAA,EACU,eAAgB,CAAA;AAAA,IACxB,KAAA;AAAA,GAC0D,EAAA;AAC1D,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACO,kBAAqB,GAAA;AAC1B,IAAA,OAAO,KAAK,KAAM,CAAA,UAAA,CAAA;AAAA,GACpB;AAAA,EACO,QAAW,GAAA;AAChB,IAAA,OAAO,KAAK,KAAM,CAAA,KAAA,CAAA;AAAA,GACpB;AAAA,EACO,QAAA,CAAS,UAAqB,OAA2B,EAAA;AAC9D,IAAA,IACE,IAAK,CAAA,UAAA,CAAW,QAChB,IAAA,IAAA,CAAK,KAAK,UAAW,CAAA,QAAA,IACrB,IAAK,CAAA,IAAA,CAAK,WAAW,QACrB,IAAA,YAAA,CAAa,QAAU,EAAA,IAAA,CAAK,UAAU,CAAA;AAEtC,MAAO,OAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAE7B,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,QAAA,CAAA;AACnB,IAAK,IAAA,CAAA,KAAA,CAAM,WAAW,YAAe,GAAA,IAAA,CAAA;AAErC,IAAI,IAAA,OAAA,EAAS,gBAAgB,KAAO,EAAA;AAClC,MAAA,IAAA,CAAK,wBAA2B,GAAA,QAAA,CAAA;AAChC,MAAO,OAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,KAC7B;AAEA,IAAA,OAAO,KAAK,WAAY,CAAA,QAAQ,CAAE,CAAA,IAAA,CAAK,CAAC,GAAQ,KAAA;AAC9C,MAAA,IAAI,GAAK,EAAA;AACP,QAAO,OAAA,IAAA,CAAK,UAAU,UAAU,CAAA,CAAA;AAAA,OAClC;AACA,MAAO,OAAA,OAAA,CAAQ,QAAQ,KAAK,CAAA,CAAA;AAAA,KAC7B,CAAA,CAAA;AAAA,GACH;AAAA,EAEU,gCACR,KACyB,EAAA;AACzB,IAAO,OAAA;AAAA,MACL,QAAU,EAAA;AAAA,QACR,KAAA;AAAA,OACF;AAAA,MACA,iBAAmB,EAAA,WAAA;AAAA,MACnB,gBAAkB,EAAA;AAAA,QAChB,WAAa,EAAA,QAAA;AAAA,OACf;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EACU,kBAAkB,MAAkC,EAAA;AAC5D,IAAA,OAAO,WAAY,CAAA;AAAA,MACjB,SAAS,OAAQ,CAAA,KAAA;AAAA,MACjB,MAAQ,EAAA,oBAAA;AAAA,MACR,KAAA,EAAO,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,EAAA;AAAA,MAC5B,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,MAChC,KAAA,EAAO,KAAK,SAAU,CAAA,EAAA;AAAA,MACtB,KAAA,EAAO,IAAK,CAAA,UAAA,CAAW,KAAS,IAAA,CAAA;AAAA,MAChC,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,MACpB,MAAQ,EAAA,IAAA;AAAA,MACR,GAAG,MAAA;AAAA,KACJ,CAAA,CAAA;AAAA,GACH;AAAA,EACU,wBAAwB,CAAY,EAAA;AAC5C,IAAA,IAAI,aAAa,uBAAyB,EAAA;AACxC,MAAK,IAAA,CAAA,KAAA,CAAM,WAAW,KAAQ,GAAA,IAAA,CAAA;AAAA,KACzB,MAAA;AACL,MAAM,MAAA,CAAA,CAAA;AAAA,KACR;AAAA,GACF;AAAA,EACA,MAAgB,YAAY,QAAqB,EAAA;AAC/C,IAAA,IAAI,aAAa,IAAK,CAAA,wBAAA;AAA0B,MAAO,OAAA,IAAA,CAAA;AAEvD,IAAI,IAAA;AACF,MAAM,MAAA,QAAA,GAAW,IAAK,CAAA,+BAAA,CAAgC,QAAQ,CAAA,CAAA;AAC9D,MAAA,MAAM,UAEF,MAAM,UAAA;AAAA,QACJ,YAAY;AACV,UAAI,IAAA;AACF,YAAA,OAAO,MAAM,IAAA;AAAA,cACX,MAAM,KAAK,iBAAkB,EAAA;AAAA,cAC7B,QAAA;AAAA,aACF,CAAA;AAAA,mBACO,CAAG,EAAA;AACV,YAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,cACrB,IAAI,mBAAoB,CAAA,EAAE,SAAS,MAAO,CAAA,CAAC,GAAG,CAAA;AAAA,aAChD,CAAA;AACA,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AAAA,SACF;AAAA,QACA,CAACY,OAAAA,KAAW,CAAC,CAACA,SAAQ,IAAM,EAAA,OAAA;AAAA,QAC5B,EAAE,OAAA,EAAS,EAAI,EAAA,OAAA,EAAS,GAAI,EAAA;AAAA,OAC9B,GACC,MAAM,OAAW,IAAA,KAAA,CAAA;AAEtB,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,IAAA,CAAK,wBAA2B,GAAA,QAAA,CAAA;AAChC,QAAK,IAAA,CAAA,KAAA,CAAM,WAAW,KAAQ,GAAA,KAAA,CAAA;AAC9B,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,aACO,CAAG,EAAA;AACV,MAAA,IAAA,CAAK,wBAAwB,CAAC,CAAA,CAAA;AAAA,KAChC;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAa,QAA6B,GAAA;AACxC,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,KAAO,EAAA;AAC/B,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,YAAY,IAAK,CAAA,KAAA,CAAM,KAAK,CAAI,EAAA;AAC/C,QAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,YAAe,GAAA,MAAA,CAAO,iBAAkB,EAAA,CAAA;AAC9D,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAM,MAAA,OAAA,GAAU,CAAC,CAAC,IAAA,CAAK,UAAc,IAAA,CAAC,KAAK,UAAW,CAAA,QAAA,CAAA;AACtD,IAAA,IAAA,CAAK,MAAM,UAAW,CAAA,YAAA,GAAe,OACjC,GAAA,IAAA,GACA,OAAO,kBAAmB,EAAA,CAAA;AAE9B,IAAO,OAAA,CAAC,IAAK,CAAA,KAAA,CAAM,UAAW,CAAA,YAAA,CAAA;AAAA,GAChC;AAAA,EAEU,oBAAA,CACR,OACA,gBACkB,EAAA;AAClB,IAAO,OAAA;AAAA,MACL,GAAG,KAAA,CAAM,oBAAqB,CAAA,KAAA,EAAO,gBAAgB,CAAA;AAAA,MACrD,KAAA,EAAO,KAAK,SAAU,CAAA,EAAA;AAAA,KACxB,CAAA;AAAA,GACF;AACF,CAAA;AAjME,kBAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACzCF,IAAAL,QAAA,CAAA;AAMA,MAAqB,kBAAkB,SAAU,CAAA;AAAA,EAG/C,YAAsB,KAAa,EAAA;AACjC,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AADS,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAFtB,IAAAN,cAAA,CAAA,IAAA,EAAAM,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIE,IAAAP,cAAA,CAAA,IAAA,EAAKO,QAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,MAAS,GAAA;AACP,IAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,MAAO,EAAA,CAAA;AAAA,GACrB;AAAA,EAEA,SAAY,GAAA;AACV,IAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,SAAU,EAAA,CAAA;AAAA,GACxB;AAAA,EAEA,UAAU,UAAoB,EAAA;AAC5B,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAU,UAAU,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,SAAS,KAAe,EAAA;AACtB,IAAA,MAAM,GAAM,GAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACpC,IAAI,GAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACjB,MAAA,IAAI,CAAa,YAAA,kBAAA;AAAoB,QAAA,CAAA,CAAE,MAAM,KAAQ,GAAA,EAAA,CAAA;AAAA,KACtD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,UAAa,GAAA;AACX,IAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,EAAA,CAAA;AAAA,GACzB;AAAA,EAEA,WAAW,UAAoB,EAAA;AAC7B,IAAM,MAAA,KAAA,GAAQR,qBAAKQ,QAAO,CAAA,CAAA,UAAA,CAAA;AAC1B,IAAA,IAAI,MAAM,KAAO,EAAA;AACf,MAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,WAAW,UAAU,CAAA,CAAA;AAAA,KACnC;AAAA,GACF;AAAA,EAEA,UAAU,KAAe,EAAA;AACvB,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAAU,KAAK,CAAA,CAAA;AAAA,GAC7B;AAAA,EAEA,QAAQ,KAAe,EAAA;AACrB,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,cAAe,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEA,aAAgB,GAAA;AACd,IAAA,OAAOR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CACT,aAAc,EAAA,CACd,IAAI,CAAC,CAAA,KAAM,CAAE,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,cAAe,CAAA,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,UAAU,SAAmB,EAAA;AAC3B,IAAA,MAAM,MAAS,GAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,SAAA,CAAU,SAAS,CAAA,CAAA;AAC9C,IAAI,IAAA,MAAA;AAAQ,MAAAC,cAAA,CAAa,MAAM,CAAE,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,cAAA,CAAe,CAAE,CAAC,CAAA,CAAA;AAAA,GAChE;AAAA,EAEA,cAAiB,GAAA;AACf,IAAO,OAAAT,cAAA,CAAA,IAAA,EAAKQ,UAAO,cAAe,EAAA,CAAA;AAAA,GACpC;AAAA,EAEA,QAAA,CAAS,SAAmB,EAAA,UAAA,GAAa,CAAG,EAAA;AAC1C,IAAA,MAAM,MAAS,GAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,QAAA,CAAS,WAAW,UAAU,CAAA,CAAA;AAEzD,IAAI,IAAA,MAAA;AAAQ,MAAO,OAAAC,cAAA,CAAa,MAAM,CAAE,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,cAAA,CAAe,CAAE,CAAC,CAAA,CAAA;AACrE,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,YAAe,GAAA;AACb,IAAO,OAAAT,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,CAAA,KAAA,CAAA;AAAA,GAChC;AAAA,EAEA,WAAc,GAAA;AACZ,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,CAAA,QAAA,CAAA;AAAA,GAChC;AAAA,EAEA,OAAO,KAAe,EAAA;AACpB,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,cAAe,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEA,mBAAmB,gBAA4B,EAAA;AAC7C,IAAA,OAAOR,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,UAChB,CAAA,YAAA,EACA,CAAA,GAAA;AAAA,MACC,CAAC,MAAM,CAAK,IAAA,gBAAA,GAAmBM,QAAMd,cAAK,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,aAAc,EAAC,CAAI,GAAA,CAAA,CAAA;AAAA,KACtE,CAAA;AAAA,GACJ;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAO,OAAA,IAAA,CAAK,oBAAqB,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA,IAAA,CAAK,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,GACpE;AAAA,EAEA,IAAI,EAAK,GAAA;AACP,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,CAAA,EAAA,CAAA;AAAA,GAChC;AAAA,EAEA,OAAU,GAAA;AACR,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,UAAO,UAAW,CAAA,KAAA,CAAA;AAAA,GAChC;AAAA,EAEA,IAAI,SAAY,GAAA;AACd,IAAO,OAAAR,cAAA,CAAA,IAAA,EAAKQ,QAAO,CAAA,CAAA,cAAA,EAAiB,CAAA,MAAA,CAAA;AAAA,GACtC;AAAA,EAEA,IAAI,kBAAqB,GAAA;AAEvB,IAAA,OAAOR,qBAAKQ,QAAO,CAAA,CAAA,UAAA,CAAA;AAAA,GACrB;AAAA,EAEA,sBAAA,CAAuB,WAAmB,OAAmB,EAAA;AAC3D,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,sBAAuB,CAAA,SAAA,EAAW,OAAO,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,kBAAA,CAAmB,OAAe,OAAmB,EAAA;AACnD,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,kBAAmB,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,oBAAA,CAAqB,UAAkB,OAAmB,EAAA;AACxD,IAAKR,cAAA,CAAA,IAAA,EAAAQ,QAAA,CAAA,CAAO,oBAAqB,CAAA,QAAA,EAAU,OAAO,CAAA,CAAA;AAAA,GACpD;AACF,CAAA;AAvHEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACDF,MAAqB,qBAAqB,SAAmC,CAAA;AAAA,EAC3E,YAAY,KAAgB,EAAA;AAC1B,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACb;AACF;;;;;;;;;;;;;;;;;;;;ACVA,IAAA,MAAA,CAAA;AAIA,MAAqB,0BAA0B,sBAAuB,CAAA;AAAA,EAEpE,YAAY,KAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFb,IAAAN,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAD,cAAA,CAAA,IAAA,EAAK,MAAS,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,SAAS,EAAoC,EAAA;AAC3C,IAAA,QAAA;AAAA,MACE,MAAM;AACJ,QAAAD,cAAA,CAAA,IAAA,EAAK,QAAO,QAAS,EAAA,CAAA;AAAA,OACvB;AAAA,MACA,MAAM;AACJ,QAAG,EAAA,CAAAA,cAAA,CAAA,IAAA,EAAK,MAAO,CAAA,CAAA,QAAA,EAAU,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,EAAE,iBAAiB,KAAM,EAAA;AAAA,KAC3B,CAAA;AAAA,GACF;AAAA,EAEA,QAAiB,GAAA;AACf,IAAA,IAAIA,qBAAK,MAAO,CAAA,CAAA,UAAA,CAAW,MAAMA,cAAK,CAAA,IAAA,EAAA,MAAA,CAAA,CAAO,WAAW,SAAW,EAAA;AACjE,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAA+B,4BAAA,EAAAA,cAAA,CAAA,IAAA,EAAK,MAAO,CAAA,CAAA,UAAA,CAAW,SAAS,CAAA,+BAAA,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AA1BE,MAAA,GAAA,IAAA,OAAA,EAAA;;ACFF,MAAqB,sBAAsB,SAAU,CAAA;AAAA,EACnD,YAAY,KAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACb;AACF;;;;;;;;;;;;;;;;;;;;ACPA,IAAA,KAAA,CAAA;AASA,MAAqB,QAA8B,CAAA;AAAA,EAGjD,YAAY,IAAY,EAAA;AAFxB,IAAAE,cAAA,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGE,IAAAD,cAAA,CAAA,IAAA,EAAK,KAAQ,EAAA,IAAA,CAAA,CAAA;AAAA,GACf;AAAA,EAEA,WAAsB,GAAA;AACpB,IAAO,OAAAD,cAAA,CAAA,IAAA,EAAK,OAAM,UAAW,CAAA,QAAA,CAAA;AAAA,GAC/B;AAAA,EACA,YAAuB,GAAA;AACrB,IAAO,OAAAA,cAAA,CAAA,IAAA,EAAK,OAAM,UAAW,CAAA,SAAA,CAAA;AAAA,GAC/B;AAAA,EACA,QAAiB,GAAA;AACf,IAAKA,cAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAM,WAAY,CAAA,cAAA,EAAgB,KAAK,CAAA,CAAA;AAAA,GAC9C;AAAA,EACA,SAAkB,GAAA;AAChB,IAAKA,cAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAM,WAAY,CAAA,cAAA,EAAgB,IAAI,CAAA,CAAA;AAAA,GAC7C;AAAA,EACA,YACE,IACwB,EAAA;AACxB,IAAO,OAAAA,cAAA,CAAA,IAAA,EAAK,KAAM,CAAA,CAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAAA,GACpC;AAAA,EACA,WAAA,CACE,MACA,KACM,EAAA;AACN,IAAKA,cAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAM,WAAY,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,GACpC;AAAA,EACA,mBAAmB,OAAiB,EAAA;AAClC,IAAO,OAAAA,cAAA,CAAA,IAAA,EAAK,KAAM,CAAA,CAAA,2BAAA,CAA4B,OAAO,CAAA,CAAA;AAAA,GACvD;AAAA,EACA,QAAA,CAAS,KAAsB,KAAwC,EAAA;AACrE,IAAA,MAAM,KAAQ,GAAAA,cAAA,CAAA,IAAA,EAAK,KAAM,CAAA,CAAA,QAAA,CAAS,KAAe,KAAK,CAAA,CAAA;AAEtD,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,OAAO,eAAe,KAA2B,CAAA,CAAA;AAAA,KACnD;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EACA,eAAe,IAA4B,EAAA;AACzC,IAAA,OAAOS,eAAaT,cAAK,CAAA,IAAA,EAAA,KAAA,CAAA,CAAM,eAAe,IAAI,CAAC,EAChD,GAAI,CAAA,CAAC,MAAM,cAAe,CAAA,CAAC,CAAC,CAC5B,CAAA,MAAA,CAAO,CAAC,CAAuB,KAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,GAC9C;AAAA,EACA,YAA6B,GAAA;AAC3B,IAAA,OAAOA,qBAAK,KACT,CAAA,CAAA,YAAA,EACA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,cAAA,CAAe,CAAC,CAAC,EAC5B,MAAO,CAAA,CAAC,CAAuB,KAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,GAC9C;AAAA,EACA,SAAA,CAAU,qBAA8B,eAAgC,EAAA;AACtE,IAAA,IAAA,CAAK,YAAa,EAAA,CAAE,OAAQ,CAAA,CAAC,CAAM,KAAA;AACjC,MAAI,IAAA,eAAA,IAAmB,aAAa,SAAW,EAAA;AAC7C,QAAA,CAAA,CAAE,SAAU,EAAA,CAAA;AAAA,OACd;AAEA,MAAA,IAAI,aAAa,sBAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,CAAA,CAAE,WAAY,CAAA,UAAU,KAAK,mBAAqB,EAAA;AACrD,UAAA,CAAA,CAAE,SAAS,EAAE,CAAA,CAAA;AAAA,SACf;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF,CAAA;AAjEE,KAAA,GAAA,IAAA,OAAA,EAAA;;ACPF,SAAS,mBAAmB,YAAsB,EAAA;AAChD,EAAM,MAAA,YAAA,GAAe,KAAK,YAAY,CAAA,CAAA;AACtC,EAAM,MAAA,KAAA,GAAQ,WAAW,IAAK,CAAA,YAAA,EAAc,CAAC,IAAS,KAAA,IAAA,CAAK,UAAW,CAAA,CAAC,CAAC,CAAA,CAAA;AACxE,EAAA,OAAO,IAAI,WAAA,CAAY,OAAO,CAAA,CAAE,OAAO,KAAK,CAAA,CAAA;AAC9C,CAAA;AAEA,eAAe,oBACb,OAC2B,EAAA;AAC3B,EAAI,IAAA,OAAA,CAAQ,QAAQ,GAAK,EAAA;AACvB,IAAA,MAAM,WAAY,MAAM,QAAA;AAAA,MACtB,kBAAA,CAAmB,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,KACxC,CAAA;AACA,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,eAAsB,mBAAsB,GAAA;AAC1C,EAAA,MAAM,WAAW,CAAC,GAAG,QAAS,CAAA,gBAAA,CAAiB,gBAAgB,CAAC,CAAA,CAAA;AAChE,EAAA,MAAM,QAAqB,EAAC,CAAA;AAE5B,EAAA,WAAA,MAAiB,QAAQ,QAAU,EAAA;AACjC,IAAM,MAAA,GAAA,GAAM,MAAM,mBAAA,CAAoB,IAAmB,CAAA,CAAA;AACzD,IAAI,IAAA,GAAA;AAAK,MAAA,KAAA,CAAM,KAAK,GAAG,CAAA,CAAA;AAAA,GACzB;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;AC/BA,IAAAF,WAAA,CAAA;AAEO,MAAM,YAAA,GAAN,MAAM,YAAY,CAAA;AAAA,EAEvB,WAAkB,QAAW,GAAA;AAC3B,IAAA,IAAI,CAACE,cAAK,CAAA,IAAA,EAAAF,WAAA,CAAA;AAAW,MAAKG,cAAA,CAAA,IAAA,EAAAH,WAAA,EAAY,IAAI,YAAY,EAAA,CAAA,CAAA;AAEtD,IAAA,OAAOE,cAAK,CAAA,IAAA,EAAAF,WAAA,CAAA,CAAA;AAAA,GACd;AAAA,EACQ,WAAc,GAAA;AAAA,GAAC;AAAA,EAEvB,kBAAqB,GAAA;AACnB,IAAA,OAAO,mBAAoB,EAAA,CAAA;AAAA,GAC7B;AACF,CAAA,CAAA;AAXSA,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAPI,cAAA,CADW,cACJJ,WAAgC,EAAA,IAAA,CAAA,CAAA;AADlC,IAAM,WAAN,GAAA,YAAA;;ACAP,MAAM,QAAqB,GAAA;AAAA,EACzBM,YAAW,CAAA,aAAA;AAAA,EACXA,YAAW,CAAA,aAAA;AAAA,EACXA,YAAW,CAAA,gBAAA;AAAA,EACXA,YAAW,CAAA,gBAAA;AAAA,EACXA,YAAW,CAAA,wBAAA;AAAA,EACXA,YAAW,CAAA,oBAAA;AAAA,EACXA,YAAW,CAAA,qBAAA;AACb,CAAA;;ACNA,MAAM,YAIuC,GAAA;AAAA,EAC3C,CAAC,GAAK,EAAA,KAAA,EAAO,IAAS,KAAA;AACpB,IAAI,IAAA,SAAA,CAAU,QAAQ,GAAG,CAAA,KAAM,MAAM,QAAS,CAAA,OAAA,CAAQ,GAAG,CAAA,KAAM,CAAI,CAAA,EAAA;AACjE,MAAA,OAAO,IAAK,EAAA,CAAA;AAAA,KACd,MAAA,IAAW,OAAO,KAAA,KAAU,QAAU,EAAA;AACpC,MAAA,OAAO,IAAK,EAAA,CAAA;AAAA,KACH,MAAA,IAAA,SAAA,CAAU,OAAQ,CAAA,GAAG,MAAM,CAAI,CAAA,EAAA;AACxC,MAAA,OAAO,EAAE,GAAA,EAAK,KAAO,EAAA,YAAA,CAAa,KAAe,CAAE,EAAA,CAAA;AAAA,KAC1C,MAAA,IAAA,QAAA,CAAS,OAAQ,CAAA,GAAG,MAAM,CAAI,CAAA,EAAA;AACvC,MAAA,OAAO,EAAE,GAAK,EAAA,KAAA,EAAO,SAAU,KAAoB,IAAA,EAAA,EAAI,EAAE,CAAE,EAAA,CAAA;AAAA,KAC7D;AACA,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AACF,CAAA,CAAA;AAEO,SAASW,gBAAiD,GAAa,EAAA;AAC5E,EAAA,MAAM,MAAM,IAAI,QAAA,CAAS,CAAgB,aAAA,EAAA,GAAG,gBAAgB,CAAE,EAAA,CAAA;AAE9D,EAAA,MAAM,MAAS,EAAC,CAAA;AAEhB,EAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AAC9C,IAAA,KAAA,MAAW,KAAK,YAAc,EAAA;AAC5B,MAAA,IAAI,IAAO,GAAA,KAAA,CAAA;AACX,MAAA,MAAM,CAAI,GAAA,CAAA,CAAE,GAAK,EAAA,KAAA,EAAO,MAAM;AAC5B,QAAO,IAAA,GAAA,IAAA,CAAA;AAAA,OACR,CAAA,CAAA;AACD,MAAI,IAAA,CAAC,QAAQ,CAAG,EAAA;AACd,QAAC,GAAY,CAAA,CAAA,CAAE,GAAG,CAAA,GAAI,CAAE,CAAA,KAAA,CAAA;AAAA,OACnB,MAAA;AACL,QAAC,GAAA,CAAY,GAAG,CAAI,GAAA,KAAA,CAAA;AAAA,OACtB;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,GAAA,CAAA;AACT;;;;;;;;ACrBO,MAAM,WAAY,CAAA;AAAA,EACvB,YACY,MACV,EAAA;AADU,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAGZ,IAAUhB,eAAA,CAAA,IAAA,EAAA,YAAA,sBAAiB,GAYzB,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,cAAA,sBAAmB,GAY3B,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,qBAAA,sBAA0B,GAOlC,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,uBAAA,sBAA4B,GAOpC,EAAA,CAAA,CAAA;AAAA,GA3CC;AAAA,EA6CH,YAAe,GAAA;AACb,IAAA,OAAO,CAAC,GAAG,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAA,CAAA;AAAA,GACrC;AAAA,EACA,SAAS,KAAe,EAAA;AACtB,IACE,OAAA,IAAA,CAAK,YAAa,CAAA,KAAK,CACvB,IAAA,IAAA,CAAK,eAAe,KAAK,CAAA,IACzB,IAAK,CAAA,uBAAA,CAAwB,KAAK,CAAA,CAAA;AAAA,GAEtC;AAAA,EACA,sBAAsB,KAAwB,EAAA;AAC5C,IAAA,OAAO,IAAK,CAAA,mBAAA,CAAoB,GAAI,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,GACnD;AAAA,EACA,wBAAwB,OAAiB,EAAA;AACvC,IAAO,OAAA,IAAA,CAAK,qBAAsB,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GAC/C;AAAA,EACA,aAAa,EAAqB,EAAA;AAChC,IAAA,OAAO,IAAK,CAAA,UAAA,CAAW,GAAI,CAAA,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA;AAAA,GACvC;AAAA,EACA,eAAe,IAAc,EAAA;AAC3B,IAAO,OAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAI,IAAI,CAAA,CAAA;AAAA,GACnC;AAAA,EACA,MAAM,IAAK,CAAA,IAAA,EAAY,KAAe,EAAA;AACpC,IAAA,WAAA,MAAiB,KAAS,IAAA,YAAA,CAAa,IAAK,CAAA,MAAM,CAAG,EAAA;AAInD,MAAM,KAAA,CAAA,UAAA,GAAagB,eAAc,CAAA,KAAA,CAAM,UAAiB,CAAA,CAAA;AAExD,MAAA,MAAM,mBACJ,SAAU,CAAA,QAAA,CAAS,cAAc,KAAM,CAAA,SAAS,EAAE,KAAK,CAAA,CAAA;AAEzD,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAA,MAAM,WAAW,IAAI,gBAAA,CAAiB,EAAE,GAAG,KAAA,EAAO,OAAO,CAAA,CAAA;AACzD,QAAM,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA,CAAA;AAExB,QAAA,IAAA,CAAK,UAAW,CAAA,GAAA;AAAA,UACd,MAAA,CAAO,QAAS,CAAA,UAAA,CAAW,EAAE,CAAA;AAAA,UAC7B,QAAA;AAAA,SACF,CAAA;AACA,QAAI,IAAA,QAAA,CAAS,WAAW,IAAM,EAAA;AAC5B,UAAA,IAAA,CAAK,YAAa,CAAA,GAAA;AAAA,YAChB,SAAS,UAAW,CAAA,IAAA;AAAA,YACpB,QAAA;AAAA,WACF,CAAA;AAAA,SACF;AACA,QAAA,QAAA,CAAS,WAAW,MAAS,GAAA,IAAA,CAAA;AAC7B,QAAA,IAAK,MAAgD,OAAS,EAAA;AAC5D,UAAA,IAAA,CAAK,mBAAoB,CAAA,GAAA;AAAA,YACvB,MAAA,CAAQ,MAAgD,KAAK,CAAA;AAAA,YAC7D,QAAA;AAAA,WACF,CAAA;AACA,UAAA,IAAA,CAAK,qBAAsB,CAAA,GAAA;AAAA,YACxB,KAAgD,CAAA,OAAA;AAAA,YACjD,QAAA;AAAA,WACF,CAAA;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,2BAAA,EAA8B,MAAM,SAAS,CAAA,oCAAA,CAAA;AAAA,SAC/C,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AACF;;ACtIgB,SAAA,KAAA,CAAM,MAAiB,EAAA,aAAA,GAAgB,CAAG,EAAA;AACxD,EAAM,MAAA,YAAA,GAAe,OAAO,MAAM,CAAA,CAAA;AAClC,EAAA,IAAI,MAAW,KAAA,IAAA,IAAQ,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA;AAAG,IAAO,OAAA,aAAA,CAAA;AAC1D,EAAO,OAAA,YAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA,IAAAJ,YAAA,CAAA;AAQO,MAAe,+BAKZ,KAOR,CAAA;AAAA,EAMA,WAAA,CACE,UACU,EAAA,iBAAA,EAIA,YACV,EAAA;AACA,IAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AANN,IAAA,IAAA,CAAA,iBAAA,GAAA,iBAAA,CAAA;AAIA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA,CAAA;AAXZ,IAAUZ,eAAA,CAAA,IAAA,EAAA,eAAA,sBAAoB,GAAqB,EAAA,CAAA,CAAA;AACnD,IAAUA,eAAA,CAAA,IAAA,EAAA,iBAAA,sBAAsB,GAAY,EAAA,CAAA,CAAA;AAC5C,IAAUA,eAAA,CAAA,IAAA,EAAA,iBAAA,sBAAsB,GAAqB,EAAA,CAAA,CAAA;AACrD,IAAUA,eAAA,CAAA,IAAA,EAAA,oBAAA,sBAAyB,GAAY,EAAA,CAAA,CAAA;AAgC/C,IAAAA,eAAA,CAAA,IAAA,EAAU,gBAA8B,EAAC,CAAA,CAAA;AACzC,IAAAA,eAAA,CAAA,IAAA,EAAO,aAAc,EAAA,KAAA,CAAA,CAAA;AA8BrB,IAAaG,cAAA,CAAA,IAAA,EAAAS,YAAA,EAAA,KAAA,CAAA,CAAA;AAnDX,IAAkB,iBAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACrC,MAAK,IAAA,CAAA,eAAA,CAAgB,GAAI,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AACnC,MAAA,IAAK,QAAgB,IAAM,EAAA;AACzB,QAAK,IAAA,CAAA,kBAAA,CAAmB,GAAK,CAAA,OAAA,CAAgB,IAAI,CAAA,CAAA;AAAA,OACnD;AACA,MAAA,IAAK,QAAgB,OAAS,EAAA;AAC5B,QAAK,IAAA,CAAA,eAAA,CAAgB,GAAK,CAAA,OAAA,CAAgB,OAAO,CAAA,CAAA;AAAA,OACnD;AACA,MAAA,IAAK,QAAgB,KAAO,EAAA;AAC1B,QAAK,IAAA,CAAA,aAAA,CAAc,GAAK,CAAA,OAAA,CAAgB,KAAK,CAAA,CAAA;AAAA,OAC/C;AAAA,KACD,CAAA,CAAA;AAED,IAAA,cAAA,CAAe,IAAa,EAAA;AAAA,MAC1B,YAAc,EAAA,UAAA;AAAA,MACd,WAAa,EAAA,UAAA;AAAA,MACb,QAAU,EAAA,MAAA;AAAA,KACX,CAAA,CAAA;AAAA,GACH;AAAA,EAIU,sBAAsB,KAAe,EAAA;AAC7C,IAAM,MAAA,QAAA,GACJ,IAAK,CAAA,UAAA,CAAW,QAAa,KAAA,QAAA,IAAY,CAAC,IAAA,CAAK,UAAW,CAAA,KAAA,GACtD,CACA,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAA;AAEtB,IAAA,MAAM,aAAa,KAAM,CAAA,QAAA,IAAY,KAAK,UAAW,CAAA,WAAA,GAAc,IAAI,CAAC,CAAA,CAAA;AAExE,IAAA,OAAO,KAAK,YAAa,CAAA,IAAA,CAAK,GAAI,CAAA,KAAA,GAAQ,UAAU,CAAC,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,MAAgB,SAAS,KAAoB,EAAA;AAE3C,IAAM,MAAA,QAAA,GAAW,KAAK,UAAW,CAAA,QAAA,CAAA;AACjC,IAAM,MAAA,MAAA,GAAS,OAAO,QAAS,CAAA,QAAQ,KAClC,IAAK,CAAA,UAAA,CAAW,WAAc,GAAA,CAAA,IAAK,QACpC,GAAA,CAAA,CAAA;AAEJ,IAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,YAAA,CAAa,MAAS,GAAA,MAAA,CAAA;AAEzC,IAAA,MAAM,KAAM,CAAA,IAAA,CAAK,IAAK,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEjC,IAAK,IAAA,CAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,UAAW,CAAA,SAAA,GAAA,CACb,MAAO,CAAA,QAAA,CAAS,QAAQ,CAAA,GAAA,CACpB,IAAK,CAAA,UAAA,CAAW,WAAc,GAAA,CAAA,IAAK,QACpC,GAAA,CAAA,IAAK,KAAK,YAAa,CAAA,MAAA,CAAA;AAAA,GAC/B;AAAA,EAGA,MAAM,KAAK,IAA2B,EAAA;AACpC,IAAI,IAAA,CAACX,qBAAKW,YAAY,CAAA,EAAA;AACpB,MAAAV,cAAA,CAAA,IAAA,EAAKU,YAAa,EAAA,IAAA,CAAA,CAAA;AAClB,MAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AAAA,KACvB;AAEA,IAAA,MAAM,UAAU,IAAI,KAAA,CAAM,IAAK,CAAA,YAAA,CAAa,CAAC,CAAG,EAAA,MAAA,IAAU,CAAC,CAAA,CACxD,KAAK,CAAC,CAAA,CACN,IAAI,CAAC,CAAA,EAAG,MAAM,CAAC,CAAA,CAAA;AAClB,IAAA,MAAM,UAAyB,EAAC,CAAA;AAEhC,IAAA,WAAA,MAAiB,SAAS,OAAS,EAAA;AACjC,MAAA,MAAM,QAAQ,IAAI,WAAA;AAAA,QAChB,IAAK,CAAA,iBAAA,CAAkB,GAAI,CAAA,CAAC,SAAS,WAAgB,KAAA;AACnD,UAAK,IAAA,CAAA,gBAAA,CAAiB,OAAQ,CAAA,EAAA,EAAI,KAAK,CAAA,CAAA;AAEvC,UAAO,OAAA;AAAA,YACL,GAAG,OAAA;AAAA,YACH,GAAG,IAAA,CAAK,YAAa,CAAA,WAAW,EAAE,KAAK,CAAA;AAAA,WACzC,CAAA;AAAA,SACD,CAAA;AAAA,OACH,CAAA;AAEA,MAAM,MAAA,KAAA,CAAM,IAAK,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAC5B,MAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,KACnB;AAEA,IAAA,IAAA,CAAK,YAAe,GAAA,OAAA,CAAA;AAAA,GACtB;AAAA,EAEA,aAAgB,GAAA;AACd,IAAA,OAAO,CAAC,GAAG,MAAO,CAAA,MAAA,CAAO,IAAK,CAAA,YAAY,CAAC,CAAA,CAAE,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,cAAc,CAAA,CAAA;AAAA,GAC1E;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU,KAAe,EAAA;AACvB,IAAO,OAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,GAC5B;AAAA;AAAA;AAAA;AAAA,EAIA,QAAA,CAAS,OAAe,KAAgB,EAAA;AACtC,IAAI,IAAA,IAAA,CAAK,mBAAmB,GAAI,CAAA,KAAK,KAAK,IAAK,CAAA,eAAA,CAAgB,GAAI,CAAA,KAAK,CAAG,EAAA;AACzE,MAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,QAAA,OAAO,IAAK,CAAA,qBAAA,CAAsB,KAAK,CAAA,EAAG,SAAS,KAAK,CAAA,CAAA;AAAA,OACnD,MAAA;AACL,QAAA,OAAO,CAAC,GAAG,IAAA,CAAK,YAAa,CAAA,MAAA,EAAQ,CAAE,CAAA,GAAA;AAAA,UAAI,CAAC,OAAA,KAC1C,OAAQ,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA,SACxB,CAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EACA,qBAAA,CAAsB,OAAwB,KAAgB,EAAA;AAC5D,IAAA,IAAI,IAAK,CAAA,aAAA,CAAc,GAAI,CAAA,KAAK,CAAG,EAAA;AACjC,MAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,QAAA,OAAO,IAAK,CAAA,qBAAA,CAAsB,KAAK,CAAA,EAAG,sBAAsB,KAAK,CAAA,CAAA;AAAA,OAChE,MAAA;AACL,QAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAO,IAAK,CAAA,YAAY,CAAC,CAAE,CAAA,GAAA;AAAA,UAAI,CAAC,KAAA,KAChD,KAAM,CAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,SACnC,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EACA,uBAAA,CAAwB,SAAiB,KAAgB,EAAA;AACvD,IAAA,IAAI,IAAK,CAAA,eAAA,CAAgB,GAAI,CAAA,OAAO,CAAG,EAAA;AACrC,MAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,QAAO,OAAA,IAAA,CAAK,qBAAsB,CAAA,KAAK,CAAG,EAAA,uBAAA;AAAA,UACxC,OAAA;AAAA,SACF,CAAA;AAAA,OACK,MAAA;AACL,QAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAO,IAAK,CAAA,YAAY,CAAC,CAAE,CAAA,GAAA;AAAA,UAAI,CAAC,KAAA,KAChD,KAAM,CAAA,uBAAA,CAAwB,OAAO,CAAA;AAAA,SACvC,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EACA,YAAA,CAAa,IAAqB,KAAgB,EAAA;AAChD,IAAA,IAAI,IAAK,CAAA,eAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAChC,MAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,QAAA,OAAO,IAAK,CAAA,qBAAA,CAAsB,KAAK,CAAA,EAAG,aAAa,EAAE,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAO,IAAK,CAAA,YAAY,CAAC,CAAE,CAAA,GAAA;AAAA,UAAI,CAAC,KAAA,KAChD,KAAM,CAAA,YAAA,CAAa,EAAE,CAAA;AAAA,SACvB,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EACA,cAAA,CAAe,MAAc,KAAgB,EAAA;AAC3C,IAAA,IAAI,IAAK,CAAA,kBAAA,CAAmB,GAAI,CAAA,IAAI,CAAG,EAAA;AACrC,MAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,QAAA,OAAO,IAAK,CAAA,qBAAA,CAAsB,KAAK,CAAA,EAAG,eAAe,IAAI,CAAA,CAAA;AAAA,OACxD,MAAA;AACL,QAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAO,IAAK,CAAA,YAAY,CAAC,CAAE,CAAA,GAAA;AAAA,UAAI,CAAC,KAAA,KAChD,KAAM,CAAA,cAAA,CAAe,IAAI,CAAA;AAAA,SAC3B,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EACA,OAAO,KAAe,EAAA;AACpB,IAAA,OAAO,IAAK,CAAA,qBAAA,CAAsB,KAAK,CAAA,EAAG,YAAa,EAAA,CAAA;AAAA,GACzD;AAAA,EAEA,aAAgB,GAAA;AACd,IAAM,MAAA,QAAA,GAAW,KAAK,UAAW,CAAA,QAAA,CAAA;AACjC,IAAA,OAAO,OAAO,IAAK,CAAA,UAAA,CAAW,WAAc,GAAA,CAAA,IAAK,UAAU,CAAC,CAAA,CAAA;AAAA,GAC9D;AAAA,EACA,cAA2B,GAAA;AACzB,IAAM,MAAA,QAAA,GAAW,KAAK,aAAc,EAAA,CAAA;AACpC,IAAM,MAAA,QAAA,GAAW,QAAW,GAAA,IAAA,CAAK,YAAa,CAAA,MAAA,CAAA;AAC9C,IAAA,MAAM,OAAO,QAAW,GAAA,QAAA,CAAA;AAExB,IAAA,OAAO,IAAI,KAAA,CAAM,IAAI,CAAA,CAAE,IAAK,CAAA,CAAC,CAAE,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,GAAI,QAAQ,CAAA,CAAA;AAAA,GAC3D;AAAA,EAEA,MAAM,QAAkC,GAAA;AACtC,IAAA,IAAI,OAAU,GAAA,IAAA,CAAA;AACd,IAAA,IAAI,YAA6B,GAAA,IAAA,CAAA;AAEjC,IAAiB,WAAA,MAAA,EAAA,IAAM,KAAK,YAAc,EAAA;AACxC,MAAiB,WAAA,MAAA,KAAA,IAAS,EAAG,CAAA,YAAA,EAAgB,EAAA;AAC3C,QAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,UAAM,MAAA,MAAA,GAAS,MAAM,KAAA,CAAM,QAAS,EAAA,CAAA;AACpC,UAAA,IAAI,CAAC,MAAA,IAAU,OAAW,IAAA,CAAC,YAAc,EAAA;AACvC,YAAU,OAAA,GAAA,KAAA,CAAA;AACV,YAAe,YAAA,GAAA,KAAA,CAAA;AAAA,WACjB;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEA,IAAA,OAAO,OAAW,IAAA,YAAA,CAAA;AAAA,GACpB;AACF,CAAA;AAxIEA,YAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;AClEK,MAAM,aAAa,cAAoC,CAAA;AAAA,EAiD5D,YAAY,UAAuB,EAAA;AACjC,IAAM,MAAA,KAAA,GAAQI,eAAmC,CAAA,UAAA,CAAW,UAAU,CAAA,CAAA;AACtE,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAlDb,IAAAhB,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACA,IAAQA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,EAAE,gBAAgB,KAAM,EAAA,CAAA,CAAA;AAChC,IAAUA,eAAA,CAAA,IAAA,EAAA,kBAAA,sBAAqD,GAAI,EAAA,CAAA,CAAA;AACnE,IAAUA,eAAA,CAAA,IAAA,EAAA,YAAA,sBAAiB,GAYzB,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,cAAA,sBAAmB,GAY3B,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,qBAAA,sBAA0B,GAOlC,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,uBAAA,sBAA4B,GAOpC,EAAA,CAAA,CAAA;AACF,IAAUA,eAAA,CAAA,IAAA,EAAA,cAAA,sBAAmB,GAAoC,EAAA,CAAA,CAAA;AACjE,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAwB,EAAC,CAAA,CAAA;AAkJzB,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,sBAAoB,GAA6B,EAAA,CAAA,CAAA;AACzD,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,sBAAoB,GAA6B,EAAA,CAAA,CAAA;AACzD,IAAQA,eAAA,CAAA,IAAA,EAAA,iBAAA,sBAAsB,GAA6B,EAAA,CAAA,CAAA;AAc3D,IAAAA,eAAA,CAAA,IAAA,EAAQ,oBAA6B,EAAC,CAAA,CAAA;AA7JpC,IAAA,cAAA,CAA8B,IAAM,EAAA;AAAA,MAClC,KAAO,EAAA,UAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,UAAa,GAAA,UAAA,CAAA;AAClB,IAAK,IAAA,CAAA,MAAA,GAAS,aAAa,UAAW,CAAA,KAAK,EAAE,IAAK,CAAA,CAAC,GAAG,CAAM,KAAA;AAC1D,MAAI,IAAA,CAAA,CAAE,IAAI,CAAE,CAAA,CAAA;AAAG,QAAO,OAAA,CAAA,CAAA,CAAA;AACtB,MAAI,IAAA,CAAA,CAAE,IAAI,CAAE,CAAA,CAAA;AAAG,QAAO,OAAA,CAAA,CAAA;AAEtB,MAAI,IAAA,CAAA,CAAE,IAAI,CAAE,CAAA,CAAA;AAAG,QAAO,OAAA,CAAA,CAAA,CAAA;AACtB,MAAI,IAAA,CAAA,CAAE,IAAI,CAAE,CAAA,CAAA;AAAG,QAAO,OAAA,CAAA,CAAA;AAEtB,MAAO,OAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,KAAA,CAAM,cAAiB,GAAA,IAAA,CAAK,UAAW,CAAA,YAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,SAAY,GAAA;AACV,IAAA,IAAA,CAAK,WAAW,YAAe,GAAA,IAAA,CAAA;AAAA,GACjC;AAAA,EACA,QAAW,GAAA;AACT,IAAA,IAAA,CAAK,WAAW,YAAe,GAAA,KAAA,CAAA;AAAA,GACjC;AAAA,EAEA,YAAe,GAAA;AACb,IAAA,OAAO,CAAC,GAAG,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,mBAAsB,GAAA;AACpB,IAAA,OAAO,CAAC,GAAG,IAAK,CAAA,gBAAA,CAAiB,QAAQ,CAAA,CAAA;AAAA,GAC3C;AAAA,EAEA,QAAA,CAAS,OAAe,KAAgB,EAAA;AACtC,IAAA,MAAM,KACJ,GAAA,IAAA,CAAK,YAAa,CAAA,KAAK,KACvB,IAAK,CAAA,cAAA,CAAe,KAAK,CAAA,IACzB,KAAK,qBAAsB,CAAA,KAAK,CAChC,IAAA,IAAA,CAAK,wBAAwB,KAAK,CAAA,CAAA;AAEpC,IAAA,IAAI,KAAO,EAAA;AACT,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,KAAA,MAAW,KAAS,IAAA,IAAA,CAAK,YAAa,CAAA,MAAA,EAAU,EAAA;AAC9C,MAAA,MAAM,GAAM,GAAA,KAAA,CAAM,QAAS,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AACvC,MAAA,IAAI,GAAK,EAAA;AACP,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EACA,qBAAA,CAAsB,OAAwB,KAAgB,EAAA;AAC5D,IAAA,MAAM,QAAQ,IAAK,CAAA,mBAAA,CAAoB,GAAI,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AACxD,IAAA,IAAI,KAAO,EAAA;AACT,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,KAAA,MAAW,KAAS,IAAA,IAAA,CAAK,YAAa,CAAA,MAAA,EAAU,EAAA;AAC9C,MAAA,MAAM,GAAM,GAAA,KAAA,CAAM,qBAAsB,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AACpD,MAAA,IAAI,GAAK,EAAA;AACP,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EACA,uBAAA,CAAwB,SAAiB,KAAgB,EAAA;AACvD,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,qBAAsB,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AACpD,IAAA,IAAI,KAAO,EAAA;AACT,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,KAAA,MAAW,KAAS,IAAA,IAAA,CAAK,YAAa,CAAA,MAAA,EAAU,EAAA;AAC9C,MAAA,MAAM,GAAM,GAAA,KAAA,CAAM,uBAAwB,CAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AACxD,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EACA,YAAA,CAAa,IAAqB,KAAgB,EAAA;AAChD,IAAA,MAAM,QAAQ,IAAK,CAAA,UAAA,CAAW,GAAI,CAAA,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA;AAC5C,IAAI,IAAA,KAAA;AAAO,MAAO,OAAA,KAAA,CAAA;AAElB,IAAA,KAAA,MAAW,KAAS,IAAA,IAAA,CAAK,YAAa,CAAA,MAAA,EAAU,EAAA;AAC9C,MAAA,MAAM,GAAM,GAAA,KAAA,CAAM,YAAa,CAAA,EAAA,EAAI,KAAK,CAAA,CAAA;AACxC,MAAA,IAAI,GAAK,EAAA;AACP,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EAIA,cAAA,CAAe,MAAc,KAAgB,EAAA;AAC3C,IAAA,MAAM,QAAQ,IAAK,CAAA,YAAA,CAAa,GAAI,CAAA,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA;AAChD,IAAI,IAAA,KAAA;AAAO,MAAO,OAAA,KAAA,CAAA;AAElB,IAAA,KAAA,MAAW,KAAS,IAAA,IAAA,CAAK,YAAa,CAAA,MAAA,EAAU,EAAA;AAC9C,MAAA,MAAM,GAAM,GAAA,KAAA,CAAM,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAC5C,MAAA,IAAI,GAAK,EAAA;AACP,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAM,cAAiB,GAAA;AACrB,IAAK,KAAA,IAAA;AAAA,MACH,WAAY,CAAA;AAAA,QACV,OAAS,EAAA,gCAAA;AAAA,QACT,MAAQ,EAAA,gBAAA;AAAA,QACR,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,QACvB,SAAA,EAAW,KAAK,UAAW,CAAA,SAAA;AAAA,QAC3B,IAAA,EAAM,CAAC,IAAA,CAAK,KAAM,CAAA,cAAA;AAAA,QAClB,KAAO,EAAA,IAAA;AAAA,OACR,CAAA;AAAA,KACH,CAAE,IAAK,CAAA,CAAC,GAAQ,KAAA;AACd,MAAA,IAAI,GAAK,EAAA,IAAA,IAAQ,GAAI,CAAA,IAAA,CAAK,OAAS,EAAA;AACjC,QAAA,IAAA,CAAK,KAAM,CAAA,cAAA,GAAiB,CAAC,IAAA,CAAK,KAAM,CAAA,cAAA,CAAA;AAAA,OAC1C;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,SAAkD,GAAA;AACtD,IAAA,MAAM,MAAM,MAAM,GAAA;AAAA,MAChB,WAAY,CAAA;AAAA,QACV,OAAS,EAAA,gCAAA;AAAA,QACT,MAAQ,EAAA,WAAA;AAAA,QACR,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,QACvB,SAAA,EAAW,KAAK,UAAW,CAAA,SAAA;AAAA,QAC3B,KAAO,EAAA,IAAA;AAAA,OACR,CAAA;AAAA,KACH,CAAA;AACA,IAAA,IAAI,KAAK,IAAM,EAAA;AACb,MAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,KACb;AAAA,GACF;AAAA,EAMA,0BAA0B,KAAe,EAAA;AACvC,IAAO,OAAA,IAAA,CAAK,aAAc,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,0BAA0B,KAAe,EAAA;AACvC,IAAO,OAAA,IAAA,CAAK,aAAc,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,4BAA4B,OAAiB,EAAA;AAC3C,IAAO,OAAA,IAAA,CAAK,eAAgB,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GACzC;AAAA,EAIO,gBAAA,CAAiB,KAAe,EAAA,QAAA,GAAmB,CAAG,EAAA;AAC3D,IAAA,IAAA,CAAK,gBAAiB,CAAA,IAAA,CAAK,KAAQ,GAAA,GAAA,GAAM,QAAQ,CAAA,CAAA;AAAA,GACnD;AAAA,EAEO,mBAAA,CAAoB,KAAe,EAAA,QAAA,GAAmB,CAAG,EAAA;AAC9D,IAAK,IAAA,CAAA,gBAAA,GAAmB,KAAK,gBAAiB,CAAA,MAAA;AAAA,MAC5C,CAAC,CAAA,KAAM,CAAM,KAAA,KAAA,GAAQ,GAAM,GAAA,QAAA;AAAA,KAC7B,CAAA;AACA,IAAI,IAAA,IAAA,CAAK,gBAAiB,CAAA,MAAA,KAAW,CAAG,EAAA;AACtC,MAAA,SAAA,CAAU,QAAS,CAAA,kBAAA;AAAA,QACjB,KAAK,UAAW,CAAA,SAAA;AAAA,QAChB,KAAK,UAAW,CAAA,QAAA;AAAA,OAClB,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,IAAO,GAAA;AACX,IAAA,MAAM,SAAY,GAAA,YAAA,CAAa,IAAK,CAAA,UAAA,CAAW,WAAW,CAAA,CAAA;AAE1D,IAAA,WAAA,MAAiB,KAAS,IAAA,YAAA,CAAa,IAAK,CAAA,MAAM,CAAG,EAAA;AACnD,MAAA,IAAA,CAAK,iBAAiB,IAAK,CAAA,KAAA,CAAM,KAAK,GAAO,IAAA,KAAA,CAAM,SAAS,CAAE,CAAA,CAAA,CAAA;AAAA,KAChE;AACA,IAAA,WAAA,MAAiB,mBAAmB,SAAW,EAAA;AAC7C,MAAA,IAAA,CAAK,gBAAiB,CAAA,IAAA,CAAK,eAAgB,CAAA,EAAA,GAAK,IAAO,CAAA,CAAA;AAAA,KACzD;AACA,IAAA,WAAA,MAAiB,mBAAmB,SAAW,EAAA;AAC7C,MAAM,MAAA,EAAA,GAAK,IAAI,eAAA,CAAgB,eAAe,CAAA,CAAA;AAC9C,MAAM,MAAA,EAAA,CAAG,KAAK,IAAI,CAAA,CAAA;AAClB,MAAA,IAAA,CAAK,gBAAiB,CAAA,GAAA,CAAI,eAAgB,CAAA,EAAA,EAAI,EAAE,CAAA,CAAA;AAChD,MAAA,YAAA,CAAa,gBAAgB,KAAM,CAAA,KAAA,CAAM,SAAS,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACjE,QAAK,IAAA,CAAA,aAAA,CAAc,IAAI,MAAO,CAAA,QAAA,CAAS,OAAO,CAAE,CAAA,KAAK,CAAC,CAAA,EAAG,EAAE,CAAA,CAAA;AAC3D,QAAA,IAAA,CAAK,eAAgB,CAAA,GAAA,CAAI,CAAE,CAAA,OAAA,EAAS,EAAE,CAAA,CAAA;AACtC,QAAK,IAAA,CAAA,aAAA,CAAc,IAAI,MAAO,CAAA,QAAA,CAAS,OAAO,eAAgB,CAAA,EAAE,CAAC,CAAA,EAAG,EAAE,CAAA,CAAA;AAAA,OACvE,CAAA,CAAA;AAAA,KACH;AAEA,IAAA,WAAA,MAAiB,KAAS,IAAA,YAAA,CAAa,IAAK,CAAA,MAAM,CAAG,EAAA;AAInD,MAAM,KAAA,CAAA,UAAA,GAAagB,eAAc,CAAA,KAAA,CAAM,UAAiB,CAAA,CAAA;AAExD,MAAA,MAAM,mBACJ,SAAU,CAAA,QAAA,CAAS,cAAc,KAAM,CAAA,SAAS,EAAE,KAAK,CAAA,CAAA;AAEzD,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAM,MAAA,QAAA,GAAW,IAAI,gBAAA,CAAiB,KAAK,CAAA,CAAA;AAC3C,QAAM,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA,CAAA;AAExB,QAAA,IAAA,CAAK,UAAW,CAAA,GAAA;AAAA,UACd,MAAA,CAAO,QAAS,CAAA,UAAA,CAAW,EAAE,CAAA;AAAA,UAC7B,QAAA;AAAA,SACF,CAAA;AACA,QAAI,IAAA,QAAA,CAAS,YAAY,IAAM,EAAA;AAC7B,UAAA,IAAA,CAAK,YAAa,CAAA,GAAA;AAAA,YAChB,MAAA,CAAO,QAAS,CAAA,UAAA,EAAY,IAAI,CAAA;AAAA,YAChC,QAAA;AAAA,WACF,CAAA;AAAA,SACF;AACA,QAAA,IAAK,MAAgD,OAAS,EAAA;AAC5D,UAAA,IAAA,CAAK,mBAAoB,CAAA,GAAA;AAAA,YACvB,MAAA,CAAQ,MAAgD,KAAK,CAAA;AAAA,YAC7D,QAAA;AAAA,WACF,CAAA;AACA,UAAA,IAAA,CAAK,qBAAsB,CAAA,GAAA;AAAA,YACxB,KAAgD,CAAA,OAAA;AAAA,YACjD,QAAA;AAAA,WACF,CAAA;AAAA,SACF;AAEA,QAAA,IAAI,oBAAoB,sBAAwB,EAAA;AAC9C,UAAA,IAAA,CAAK,aAAa,GAAI,CAAA,MAAA,CAAO,SAAS,UAAW,CAAA,EAAE,GAAG,QAAQ,CAAA,CAAA;AAAA,SAChE;AAAA,OACK,MAAA;AACL,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,2BAAA,EAA8B,MAAM,SAAS,CAAA,oCAAA,CAAA;AAAA,SAC/C,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,SAAS,SAA2B,EAAA;AAIxC,GACF;AAAA,EAEA,MAAM,QAAkC,GAAA;AACtC,IAAA,IAAI,OAAU,GAAA,IAAA,CAAA;AACd,IAAA,IAAI,YAA6B,GAAA,IAAA,CAAA;AAEjC,IAAiB,WAAA,MAAA,KAAA,IAAS,IAAK,CAAA,YAAA,EAAgB,EAAA;AAC7C,MAAA,IAAI,iBAAiB,sBAAwB,EAAA;AAC3C,QAAM,MAAA,MAAA,GAAS,MAAM,KAAA,CAAM,QAAS,EAAA,CAAA;AACpC,QAAI,IAAA,MAAA,KAAW,IAAQ,IAAA,CAAC,YAAc,EAAA;AACpC,UAAe,YAAA,GAAA,MAAA,CAAA;AACf,UAAU,OAAA,GAAA,KAAA,CAAA;AAAA,SACL,MAAA;AACL,UAAA,OAAA,GAAU,WAAW,MAAW,KAAA,IAAA,CAAA;AAAA,SAClC;AAAA,OACF,MAAA,IAAW,iBAAiB,KAAO,EAAA;AACjC,QAAW,OAAA,GAAA,MAAM,KAAM,CAAA,QAAA,EAAe,IAAA,OAAA,CAAA;AACtC,QAAI,IAAA,CAAC,OAAW,IAAA,CAAC,YAAc,EAAA;AAC7B,UAAe,YAAA,GAAA,KAAA,CAAA;AAAA,SACjB;AAAA,OACF;AAAA,KACF;AAEA,IAAA,OAAO,OAAW,IAAA,YAAA,CAAA;AAAA,GACpB;AACF;;AClVO,MAAM,eAAe,KAA6B,CAAA;AAAA,EACvD,UAAU,SAA2C,EAAA;AACnD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AACF;;;;;;;;ACFO,MAAM,QAAA,GAAN,MAAM,QAAA,SAAgB,KAW3B,CAAA;AAAA,EAaA,YAAY,UAAoC,EAAA;AAC9C,IAAA,KAAA,CAAM,UAA8D,CAAA,CAAA;AARtE,IAAAhB,eAAA,CAAA,IAAA,EAAQ,IAAa,EAAA,EAAA,CAAA,CAAA;AASnB,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,EAAA,CAAA;AACnB,IAAA,IAAA,CAAK,WAAW,IAAO,GAAA,aAAA,CAAA;AAEvB,IAAQ,QAAA,CAAA,OAAA,CAAQ,EAAG,CAAA,SAAA,EAAW,MAAM;AAClC,MAAA,IAAA,CAAK,cAAe,EAAA,CAAA;AAAA,KACrB,CAAA,CAAA;AAAA,GACH;AAAA,EAnBA,OAAc,MAAS,GAAA;AACrB,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AAAA,GACnC;AAAA,EAKA,OAAc,gBAAmB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EAYA,MAAM,KAAK,IAA2B,EAAA;AACpC,IAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AAErB,IAAK,IAAA,CAAA,EAAA,GAAK,KAAK,YAAa,EAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,cAAe,EAAA,CAAA;AAAA,GACtB;AAAA,EAEQ,YAAe,GAAA;AACrB,IAAA,OAAO,CAAG,EAAA,MAAA,CAAO,MAAM,CAAA,EAAG,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAS,CAAI,CAAA,EAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,EAAE,CAAA,CAAA,CAAA;AAAA,GACrF;AAAA,EACO,MAAS,GAAA;AACd,IAAA,OAAO,KAAK,KAAM,CAAA,GAAA,CAAA;AAAA,GACpB;AAAA,EAEO,cAAiB,GAAA;AACtB,IAAA,IAAA,CAAK,KAAM,CAAA,GAAA,GAAM,CAAG,EAAA,MAAA,CAAO,OAAO,CAA2B,wBAAA,EAAA,IAAA,CAAK,KAAM,EAAC,CAAM,GAAA,EAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,SAAS,CAAA,CAAA,CAAA;AAAA,GACrG;AAAA,EAEO,gBAAmB,GAAA;AACxB,IAAA,OAAO,CAAG,EAAA,MAAA,CAAO,OAAO,CAAA,0BAAA,EAA6B,KAAK,KAAM,EAAC,CAAM,GAAA,EAAA,iBAAA,IAAI,MAAO,EAAA,OAAA,EAAS,CAAA,UAAA,EAAa,OAAO,SAAS,CAAA,CAAA,CAAA;AAAA,GAC1H;AAAA,EAEO,KAAQ,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,EAAA,CAAA;AAAA,GACd;AAAA,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,KAAA,CAAA;AACnB,IAAK,IAAA,CAAA,KAAA,CAAM,WAAW,YAAe,GAAA,EAAA,CAAA;AACrC,IAAA,QAAA,CAAQ,gBAAgB,EAAE,CAAC,IAAK,CAAA,EAAE,GAAG,KAAM,EAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,MAAa,QAA6B,GAAA;AACxC,IAAK,IAAA,CAAA,EAAA,GAAK,KAAK,YAAa,EAAA,CAAA;AAC5B,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,KAAA,KAAU,EAAI,EAAA;AAC3B,MAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,YAAe,GAAA,MAAA,CAAO,kBAAmB,EAAA,CAAA;AAC/D,MAAO,OAAA,KAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAK,IAAA,CAAA,KAAA,CAAM,WAAW,YAAe,GAAA,EAAA,CAAA;AACrC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AACF,CAAA,CAAA;AAhEEA,eAZW,CAAA,QAAA,EAYI,SAAU,EAAA,IAAIiB,cAAgC,EAAA,CAAA,CAAA;AAO7DjB,eAnBW,CAAA,QAAA,EAmBI,iBAAwC,EAAC,CAAA,CAAA;AAnBnD,IAAM,OAAN,GAAA;;ACDA,MAAM,iBAAiB,kBAG5B,CAAA;AAAA,EACA,UAAU,SAA6C,EAAA;AACrD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AAAA,EAEU,eAAgB,CAAA;AAAA,IACxB,KAAA;AAAA,IACA,UAAA;AAAA,GACqE,EAAA;AACrE,IAAA,OAAO,UAAU,KAAa,CAAA,IAAA,KAAA,KAAU,EACpC,GAAA,UAAA,CAAW,WAAW,KACtB,GAAA,KAAA,CAAA;AAAA,GACN;AACF;;;;;;;;AClBO,MAAM,WAAY,CAAA;AAAA,EAGvB,YAAY,KAAiE,EAAA;AAF7E,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAGE,IAAA,IAAA,CAAK,KAAQ,GAAA;AAAA,MACX,GAAG,KAAA;AAAA,MACH,UAAY,EAAA,KAAA;AAAA,MACZ,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,SAAW,EAAA,EAAA;AAAA,KACb,CAAA;AACA,IAAA,cAAA,CAAe,IAAM,EAAA,EAAE,KAAO,EAAA,UAAA,EAAY,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,iBAAoB,GAAA;AAClB,IAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AAAA,GACb;AAAA,EAEA,MAAM,iBAAiB,GAAa,EAAA;AAClC,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,WAAA,KAAgB,KAAW,CAAA,EAAA;AACxC,MAAM,MAAA,MAAA,GAAS,MAAM,IAAA,CAA8C,GAAG,CAAA,CAAA;AAEtE,MAAA,MAAM,QAAW,GAAA,MAAA,EAAQ,IAAM,EAAA,MAAA,EAAQ,KAAO,EAAA,IAAA,CAAA;AAC9C,MAAK,IAAA,CAAA,KAAA,CAAM,YACT,QAAa,KAAA,MAAA,GAAS,QAAQ,IAAM,EAAA,MAAA,EAAQ,KAAO,EAAA,IAAA,IAAQ,EAAK,GAAA,EAAA,CAAA;AAClE,MAAK,IAAA,CAAA,KAAA,CAAM,WAAc,GAAA,IAAA,CAAK,KAAM,CAAA,SAAA,CAAA;AAAA,KACtC;AAAA,GACF;AAAA,EAEA,KAAQ,GAAA;AACN,IAAA,OAAO,KAAK,KAAM,CAAA,WAAA,CAAA;AAClB,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,EAAA,CAAA;AACvB,IAAA,IAAA,CAAK,MAAM,UAAa,GAAA,KAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,aAAa,GAAa,EAAA;AACxB,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,GAAA,CAAA;AACvB,IAAA,IAAA,CAAK,KAAM,CAAA,UAAA,GAAa,GAAQ,KAAA,IAAA,CAAK,KAAM,CAAA,WAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,iBAAA,CAAkB,OAAe,GAAa,EAAA;AAC5C,IAAI,IAAA,IAAA,CAAK,MAAM,UAAY,EAAA;AACzB,MAAA,IAAA,CAAK,GAAK,EAAA;AAAA,QACR,QAAA,EAAU,EAAE,KAAM,EAAA;AAAA,QAClB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAS,EAAA;AAAA,QAC1C,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACH;AAEA,IAAK,IAAA,CAAA,KAAA,CAAM,YAAe,GAAA,IAAA,CAAK,KAAU,KAAA,EAAA,CAAA;AACzC,IAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AAAA,GACb;AAAA,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,KAAK,KAAM,CAAA,EAAA,CAAA;AAAA,GACpB;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,KAAK,KAAM,CAAA,SAAA,CAAA;AAAA,GACpB;AACF;;AC/DO,SAAS,cAAc,QAAkB,EAAA;AAC9C,EAAA,OAAO,CAAC,GAAG,QAAS,CAAA,QAAA,CAAS,qBAAqB,CAAC,CAAE,CAAA,GAAA,CAAI,CAAC,GAAG,CAAA,EAAG,CAAC,CAAO,MAAA;AAAA,IACtE,EAAI,EAAA,CAAA;AAAA,IACJ,KAAO,EAAA,CAAA;AAAA,GACP,CAAA,CAAA,CAAA;AACJ;;;;;;;;ACSO,MAAe,0BAMZ,kBAA2D,CAAA;AAAA,EAMnE,YAAY,KAAqD,EAAA;AAC/D,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AANb,IAAAA,eAAA,CAAA,IAAA,EAAA,cAAA,sBAAmB,GAAyB,EAAA,CAAA,CAAA;AAC5C,IAAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAqB,IAAK,CAAA,YAAA,EAAe,CAAA,CAAC,CAAG,EAAA,EAAA,CAAA,CAAA;AAC7C,IAAgBA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;AAChB,IAAAA,eAAA,CAAA,IAAA,EAAA,sBAAA,EAAuC,EAAC,CAAA,CAAA;AAItC,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,YAAc,EAAA,UAAA;AAAA,MACd,kBAAoB,EAAA,UAAA;AAAA,MACpB,aAAe,EAAA,UAAA;AAAA,KAChB,CAAA,CAAA;AAAA,GACH;AAAA,EAEQ,WAAc,GAAA;AACpB,IAAA,MAAM,UAA0B,EAAC,CAAA;AACjC,IAAA,MAAM,KAAQ,GAAA,2BAAA,CAAA;AACd,IAAI,IAAA,KAAA,CAAA;AAEJ,IAAQ,OAAA,CAAA,KAAA,GAAQ,MAAM,IAAK,CAAA,IAAA,CAAK,WAAW,IAAQ,IAAA,IAAI,OAAO,IAAM,EAAA;AAClE,MAAM,MAAA,GAAA,GAAM,MAAM,CAAC,CAAA,CAAA;AACnB,MAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,CAAC,CAAM,KAAA,MAAA,CAAA;AAC3B,MAAA,OAAA,CAAQ,GAAG,CAAI,GAAA,KAAA,CAAA;AAAA,KACjB;AAEA,IAAA,IAAA,CAAK,oBAAuB,GAAA,OAAA,CAAA;AAAA,GAC9B;AAAA,EAEQ,YAAe,GAAA;AACrB,IAAO,OAAAU,cAAA,CAAa,cAAc,IAAK,CAAA,OAAA,GAAU,UAAY,EAAA,KAAA,IAAS,EAAE,CAAC,CAAA,CAAA;AAAA,GAC3E;AAAA,EAEA,MAAM,KAAK,IAA2B,EAAA;AACpC,IAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AACrB,IAAA,IAAI,IAAK,CAAA,YAAA,EAAe,CAAA,MAAA,GAAS,CAAG,EAAA;AAClC,MAAA,IAAA,CAAK,WAAY,EAAA,CAAA;AACjB,MAAA,IAAA,CAAK,YAAa,EAAA,CAAE,OAAQ,CAAA,CAAC,IAAS,KAAA;AACpC,QAAA,MAAM,YAAe,GAAA,IAAA,CAAK,oBAAqB,CAAA,IAAA,CAAK,EAAE,CAAK,IAAA,KAAA,CAAA;AAC3D,QAAA,IAAA,CAAK,YAAa,CAAA,GAAA;AAAA,UAChB,IAAK,CAAA,EAAA;AAAA,UACL,IAAI,WAAY,CAAA;AAAA,YACd,IAAI,IAAK,CAAA,EAAA;AAAA,YACT,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,YAAA;AAAA,WACD,CAAA;AAAA,SACH,CAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAA,IAAA,CAAK,kBAAqB,GAAA,IAAA,CAAK,YAAa,EAAA,CAAE,CAAC,CAAE,CAAA,EAAA,CAAA;AAAA,KACnD;AAAA,GACF;AAAA,EAEO,kBAAqB,GAAA;AAC1B,IAAA,IAAA,CAAK,eAAgB,EAAA,CAAE,OAAQ,CAAA,CAAC,CAAM,KAAA;AACpC,MAAA,CAAA,CAAE,KAAM,EAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAa,eAAe,MAAgB,EAAA;AAC1C,IAAA,IAAA,CAAK,kBAAqB,GAAA,MAAA,CAAA;AAC1B,IAAA,IAAA,CAAK,eAAgB,EAAA,CAAA;AAAA,GACvB;AAAA,EAEO,eAAe,EAAY,EAAA;AAChC,IAAO,OAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAAA,GACjC;AAAA,EAEO,qBAAwB,GAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,YAAA,CAAa,GAAI,CAAA,IAAA,CAAK,kBAAkB,CAAA,CAAA;AAAA,GACtD;AAAA,EAEO,eAAkB,GAAA;AACvB,IAAA,OAAO,IAAK,CAAA,YAAA,CAAA;AAAA,GACd;AAAA,EAEO,kBAAqB,GAAA;AAC1B,IAAA,CAAC,GAAG,IAAK,CAAA,eAAA,EAAkB,CAAA,MAAA,EAAQ,CAChC,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,KAAM,CAAA,UAAU,CAChC,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACd,MAAE,CAAA,CAAA,iBAAA;AAAA,QACA,CAAE,CAAA,KAAA;AAAA,QACF,KAAK,iBAAkB,CAAA;AAAA,UACrB,KAAO,EAAA,IAAA;AAAA,UACP,qBAAuB,EAAA,IAAA;AAAA,UACvB,QAAQ,CAAE,CAAA,MAAA;AAAA,SACX,CAAA;AAAA,OACH,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,MAAa,eAAkB,GAAA;AAC7B,IAAA,MAAM,SAAS,IAAK,CAAA,kBAAA,CAAA;AACpB,IAAA,IAAA,CAAK,aAAgB,GAAA,IAAA,CAAA;AAErB,IAAM,MAAA,IAAA,CAAK,cAAe,CAAA,MAAM,CAAG,EAAA,gBAAA;AAAA,MACjC,MAAM,WAAY,CAAA;AAAA,QAChB,OAAS,EAAA,gCAAA;AAAA,QACT,MAAQ,EAAA,sBAAA;AAAA,QACR,KAAO,EAAA,IAAA,CAAK,OAAQ,EAAA,CAAE,UAAW,CAAA,EAAA;AAAA,QACjC,SAAW,EAAA,IAAA,CAAK,OAAQ,EAAA,CAAE,UAAW,CAAA,SAAA;AAAA,QACrC,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,QACvB,KAAA,EAAO,KAAK,SAAU,CAAA,EAAA;AAAA,QACtB,MAAA;AAAA,QACA,KAAO,EAAA,IAAA;AAAA,OACR,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,IAAA,CAAK,aAAgB,GAAA,KAAA,CAAA;AAAA,GACvB;AAAA,EAEA,MAAa,QAA6B,GAAA;AACxC,IAAM,MAAA,YAAA,GAAe,MAAM,KAAA,CAAM,QAAS,EAAA,CAAA;AAC1C,IAAA,IAAI,OAAU,GAAA,YAAA,CAAA;AAEd,IAAI,IAAA,YAAA,IAAgB,IAAK,CAAA,UAAA,CAAW,OAAS,EAAA;AAC3C,MAAA,MAAM,eAAe,CAAC,GAAG,KAAK,eAAgB,EAAA,CAAE,QAAQ,CAAA,CAAA;AAExD,MAAM,MAAA,gBAAA,GAAmB,aAAa,IAAK,CAAA,CAAC,MAAM,CAAC,CAAA,CAAE,MAAM,YAAY,CAAA,CAAA;AAEvE,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAA,IAAA,CAAK,MAAM,UAAW,CAAA,YAAA,GAAe,CAAa,UAAA,EAAA,gBAAA,CAAiB,MAAM,KAAK,CAAA,aAAA,CAAA,CAAA;AAC9E,QAAU,OAAA,GAAA,KAAA,CAAA;AAAA,OACL,MAAA;AACL,QAAK,IAAA,CAAA,KAAA,CAAM,WAAW,YAAe,GAAA,IAAA,CAAA;AAAA,OACvC;AAAA,KACF;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF;;AChJO,MAAM,eAAe,iBAAiD,CAAA;AAAA,EAC3E,UAAU,SAA2C,EAAA;AACnD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AACF;;;;;;;;ACEA,SAAS,iBAAiB,QAA0B,EAAA;AAClD,EAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAChC,EAAA,OAAO,MAAM,MAAS,GAAA,CAAA,GAAI,MAAM,GAAI,EAAA,CAAG,aAAgB,GAAA,EAAA,CAAA;AACzD,CAAA;AAEA,MAAM,YAAA,GAA6C,OAAO,MAAO,CAAA;AAAA,EAC/D,QAAU,EAAA;AAAA,IACR,eAAe,EAAC;AAAA,IAChB,mBAAmB,EAAC;AAAA,IACpB,cAAgB,EAAA,KAAA;AAAA,GAClB;AAAA,EACA,SAAW,EAAA,KAAA,CAAA;AAAA,EACX,UAAY,EAAA,KAAA,CAAA;AAAA,EACZ,WAAa,EAAA,EAAA;AAAA,EACb,WAAa,EAAA;AAAA,IACX,OAAO,EAAC;AAAA,IACR,KAAA,EAAO,OAAO,yBACV,GAAA;AAAA,MACE;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,QACX,QAAQ,MAAO,CAAA,kBAAA;AAAA,QACf,WAAW,MAAO,CAAA,kBAAA;AAAA,OACpB;AAAA,QAEF,EAAC;AAAA,IACL,YAAgB,EAAA,MAAA,CAAO,4BACvB,KAAA,KAAA,GACI,GACA,GAAA,EAAA;AAAA,GACN;AAAA,EACA,YAAc,EAAA,KAAA;AAChB,CAAC,CAAA,CAAA;AAEM,MAAM,uBAAwB,CAAA;AAAA,EAGnC,WAAA,CACS,KACA,WACP,EAAA;AAFO,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA,CAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AAJT,IAAOV,eAAA,CAAA,IAAA,EAAA,OAAA,EAA4B,UAAU,YAAY,CAAA,CAAA,CAAA;AAMvD,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,KAAO,EAAA,UAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,IAAW,WAAc,GAAA;AACvB,IAAO,OAAA;AAAA,MACL,GAAG,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,aAAA;AAAA,MACvB,GAAG,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,iBAAA;AAAA,KACzB,CAAA;AAAA,GACF;AAAA,EAEA,IAAW,YAAe,GAAA;AACxB,IAAO,OAAA,IAAA,CAAK,MAAM,WAAY,CAAA,YAAA,CAAA;AAAA,GAChC;AAAA,EAEA,IAAW,WAAc,GAAA;AACvB,IAAA,OAAO,KAAK,KAAM,CAAA,WAAA,CAAA;AAAA,GACpB;AAAA,EAEA,IAAW,SAAY,GAAA;AACrB,IAAA,OAAO,KAAK,KAAM,CAAA,SAAA,CAAA;AAAA,GACpB;AAAA,EAEA,IAAW,UAAa,GAAA;AACtB,IAAA,OAAO,KAAK,KAAM,CAAA,UAAA,CAAA;AAAA,GACpB;AAAA,EAEA,IAAW,QAAW,GAAA;AACpB,IAAO,OAAA,IAAA,CAAK,IAAI,WAAY,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,IAAW,YAAe,GAAA;AACxB,IAAO,OAAA,IAAA,CAAK,MAAM,QAAS,CAAA,iBAAA,CAAA;AAAA,GAC7B;AAAA,EAEA,IAAW,YAAe,GAAA;AACxB,IAAO,OAAA,IAAA,CAAK,IAAI,gBAAiB,EAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAW,eAAkB,GAAA;AAC3B,IAAO,OAAA,IAAA,CAAK,IAAI,kBAAmB,EAAA,CAAA;AAAA,GACrC;AAAA,EAEA,IAAW,WAAc,GAAA;AACvB,IAAO,OAAA,IAAA,CAAK,IAAI,cAAe,EAAA,CAAA;AAAA,GACjC;AAAA,EAEA,IAAW,QAAW,GAAA;AACpB,IAAO,OAAA,IAAA,CAAK,IAAI,WAAY,EAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,IAAW,QAAW,GAAA;AACpB,IAAO,OAAA,IAAA,CAAK,MAAM,QAAS,CAAA,aAAA,CAAA;AAAA,GAC7B;AAAA,EAEA,IAAW,iBAAoB,GAAA;AAC7B,IAAO,OAAA,IAAA,CAAK,IAAI,mBAAoB,EAAA,CAAA;AAAA,GACtC;AAAA,EAEA,IAAW,eAAkB,GAAA;AAC3B,IAAO,OAAA,IAAA,CAAK,IAAI,iBAAkB,EAAA,CAAA;AAAA,GACpC;AAAA,EAEO,WAAc,GAAA;AACnB,IAAK,IAAA,CAAA,KAAA,CAAM,QAAS,CAAA,iBAAA,CAAkB,IAAK,CAAA;AAAA,MACzC,IAAM,EAAA,GAAA;AAAA,MACN,EAAI,EAAA,MAAA,CAAO,IAAK,CAAA,MAAA,EAAQ,CAAA;AAAA,MACxB,IAAM,EAAA,EAAA;AAAA,MACN,QAAU,EAAA,GAAA;AAAA,MACV,KAAO,EAAA,EAAA;AAAA,MACP,IAAM,EAAA,GAAA;AAAA,MACN,KAAO,EAAA,EAAA;AAAA,MACP,YAAc,EAAA,EAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACH;AAAA,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAA,IAAA,CAAK,MAAM,YAAe,GAAA,KAAA,CAAA;AAC1B,IAAK,IAAA,CAAA,GAAA,CAAI,SAAS,KAAK,CAAA,CAAA;AAAA,GACzB;AAAA,EAEA,MAAa,cAAc,SAAmB,EAAA;AAC5C,IAAA,IAAA,CAAK,aAAc,EAAA,CAAA;AACnB,IAAK,IAAA,CAAA,GAAA,CAAI,oBAAoB,SAAS,CAAA,CAAA;AACtC,IAAA,IAAA,CAAK,iBAAkB,EAAA,CAAA;AACvB,IAAA,IAAA,CAAK,GAAI,CAAA,cAAA,CAAe,EAAE,SAAA,EAAW,CAAA,CAAA;AAAA,GACvC;AAAA,EAEO,UAAU,IAAc,EAAA;AAC7B,IAAK,IAAA,CAAA,GAAA,CAAI,UAAU,IAAI,CAAA,CAAA;AAAA,GACzB;AAAA,EAEO,UAAa,GAAA;AAClB,IAAA,IAAA,CAAK,IAAI,UAAW,EAAA,CAAA;AAAA,GACtB;AAAA,EAEO,UAAa,GAAA;AAClB,IAAK,IAAA,CAAA,KAAA,GAAQ,UAAU,YAAY,CAAA,CAAA;AACnC,IAAA,IAAA,CAAK,IAAI,UAAW,EAAA,CAAA;AAAA,GACtB;AAAA,EAEA,MAAa,OAAU,GAAA;AACrB,IAAI,IAAA,OAAA,GAAU,KAAK,QAAS,EAAA,CAAA;AAC5B,IAAI,IAAA,OAAA;AAAS,MAAU,OAAA,GAAA,MAAM,IAAK,CAAA,GAAA,CAAI,gBAAiB,EAAA,CAAA;AACvD,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEO,eAAe,OAAmB,EAAA;AACvC,IAAM,MAAA,SAAA,GAAY,IAAI,GAAA,CAAI,OAAO,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,MAAM,QAAS,CAAA,iBAAA,GAClB,IAAK,CAAA,KAAA,CAAM,SAAS,iBAAkB,CAAA,MAAA;AAAA,MACpC,CAAC,GAAG,KAAU,KAAA,CAAA,CAAE,SAAS,GAAO,IAAA,CAAC,SAAU,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,KACtD,CAAA;AAAA,GACJ;AAAA,EAEO,iBAAiB,IAA6C,EAAA;AACnE,IAAI,IAAA,IAAA,IAAQ,YAAY,IAAM,EAAA;AAC5B,MAAA,IAAA,CAAK,MAAM,WAAY,CAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,YAAY,KAAM,CAAA,MAAA;AAAA,QAC1D,CAAC,CAAA,KAAM,CAAE,CAAA,MAAA,KAAW,IAAK,CAAA,MAAA;AAAA,OAC3B,CAAA;AAAA,KACK,MAAA;AACL,MAAA,IAAA,CAAK,MAAM,WAAY,CAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,YAAY,KAAM,CAAA,MAAA;AAAA,QAC1D,CAAC,CAAA,KAAM,CAAE,CAAA,MAAA,KAAW,IAAK,CAAA,MAAA;AAAA,OAC3B,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEU,iBAA0B,GAAA;AAClC,IAAA,MAAM,UAAa,GAAA,IAAA,CAAK,GAAI,CAAA,iBAAA,IAAqB,OAAW,IAAA,EAAA,CAAA;AAC5D,IAAA,IAAI,aAAgB,GAAA,EAAA,CAAA;AACpB,IAAA,MAAM,oBAAoB,UACvB,CAAA,KAAA,CAAM,GAAG,CAAA,CACT,IAAI,CAAC,GAAA,KAAQ,GAAI,CAAA,IAAA,EAAM,CACvB,CAAA,MAAA,CAAO,CAAC,GAAA,KAAQ,QAAQ,EAAE,CAAA,CAAA;AAE7B,IAAA,IAAI,eAAe,EAAI,EAAA;AACrB,MAAA,MAAM,WAAW,CAAC,GAAG,KAAK,eAAiB,EAAA,GAAG,KAAK,WAAW,CAAA,CAAA;AAC9D,MAAA,MAAM,eAAe,KAAM,CAAA,IAAA;AAAA,QACzB,IAAI,GAAA,CAAI,QAAS,CAAA,GAAA,CAAI,CAAC,IAAA,KAAe,CAAC,IAAA,CAAK,IAAM,EAAA,IAAI,CAAC,CAAC,EAAE,MAAO,EAAA;AAAA,OAClE,CAAA;AACA,MAAK,IAAA,CAAA,GAAA,CAAI,MAAM,eAAkB,GAAA,YAAA,CAAA;AACjC,MAAK,IAAA,CAAA,GAAA,CAAI,KAAM,CAAA,WAAA,GAAc,EAAC,CAAA;AAC9B,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,MAAM,oBAA4B,EAAC,CAAA;AACnC,IAAA,MAAM,SAAiB,EAAC,CAAA;AACxB,IAAK,IAAA,CAAA,eAAA,CAAgB,OAAQ,CAAA,CAAC,IAAe,KAAA;AAC3C,MAAM,MAAA,GAAA,GAAM,gBAAiB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AACtC,MAAI,IAAA,iBAAA,CAAkB,QAAS,CAAA,GAAG,CAAG,EAAA;AACnC,QAAA,iBAAA,CAAkB,KAAK,IAAI,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAA,MAAA,CAAO,KAAK,IAAI,CAAA,CAAA;AAChB,QAAiB,aAAA,IAAA,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA,CAAA,CAAA;AAAA,OAChC;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,gBAAwB,EAAC,CAAA;AAC/B,IAAA,MAAM,cAAsB,EAAC,CAAA;AAC7B,IAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAM,WAAY,CAAA,OAAA,CAAQ,CAAC,IAAe,KAAA;AACjD,MAAM,MAAA,GAAA,GAAM,gBAAiB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AACtC,MAAI,IAAA,iBAAA,CAAkB,QAAS,CAAA,GAAG,CAAG,EAAA;AACnC,QAAA,aAAA,CAAc,KAAK,IAAI,CAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAA,WAAA,CAAY,KAAK,IAAI,CAAA,CAAA;AAAA,OACvB;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,kBAAqB,GAAA,CAAC,GAAG,iBAAA,EAAmB,GAAG,aAAa,CAAA,CAAA;AAClE,IAAA,MAAM,oBAAoB,KAAM,CAAA,IAAA;AAAA,MAC9B,IAAI,GAAA;AAAA,QACF,kBAAA,CAAmB,IAAI,CAAC,IAAA,KAAe,CAAC,IAAK,CAAA,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,QACxD,MAAO,EAAA;AAAA,KACX,CAAA;AACA,IAAA,MAAM,cAAiB,GAAA,CAAC,GAAG,MAAA,EAAQ,GAAG,WAAW,CAAA,CAAA;AACjD,IAAA,MAAM,gBAAgB,KAAM,CAAA,IAAA;AAAA,MAC1B,IAAI,GAAA,CAAI,cAAe,CAAA,GAAA,CAAI,CAAC,IAAA,KAAe,CAAC,IAAA,CAAK,IAAM,EAAA,IAAI,CAAC,CAAC,EAAE,MAAO,EAAA;AAAA,KACxE,CAAA;AAEA,IAAK,IAAA,CAAA,GAAA,CAAI,MAAM,eAAkB,GAAA,iBAAA,CAAA;AACjC,IAAK,IAAA,CAAA,GAAA,CAAI,MAAM,WAAc,GAAA,aAAA,CAAA;AAC7B,IAAI,IAAA,aAAA;AACF,MAAA,IAAA,CAAK,IAAI,MAAO,CAAA;AAAA,QACd,KAAA,EAAOkB,UAAS,CAAA,gBAAgB,CAAE,CAAA,IAAA;AAAA,QAClC,OAAS,EAAA,aAAA;AAAA,QACT,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,MAAa,SAAY,GAAA;AACvB,IAAA,MAAM,CAAI,GAAA,mBAAA,CAAA;AACV,IAAA;AAAA;AAAA,MAEE,sBAAsB,CAAC,CAAA,CAAA;AAAA,KACvB,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACZ,MAAC,CAAA,CAAsC,QAAQ,IAAI,CAAA,CAAA;AAAA,KACpD,CAAA,CAAA;AAAA,GACH;AAAA,EAEO,eAAe,IAAc,EAAA;AAClC,IAAA,IAAA,CAAK,MAAM,WAAc,GAAA,IAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,MAAgB,aAAgB,GAAA;AAC9B,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA;AAAA,MACpB,mBAAmB,EAAC;AAAA,MACpB,eAAe,EAAC;AAAA,MAChB,cAAgB,EAAA,KAAA;AAAA,KAClB,CAAA;AAAA,GACF;AAAA,EAEO,QAAoB,GAAA;AACzB,IAAA,IAAI,OAAU,GAAA,IAAA,CAAA;AACd,IAAA,IAAA,CAAK,MAAM,YAAe,GAAA,KAAA,CAAA;AAC1B,IAAA,IAAI,IAAK,CAAA,GAAA,CAAI,kBAAmB,EAAA,CAAE,WAAW,CAAG,EAAA;AAC9C,MAAA,IAAA,CAAK,MAAM,YAAe,GAAA,IAAA,CAAA;AAC1B,MAAU,OAAA,GAAA,KAAA,CAAA;AAAA,KACZ;AAEA,IAAK,IAAA,CAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA;AAC9B,MAAI,IAAA,CAAA,CAAE,aAAa,GAAK,EAAA;AACtB,QAAI,IAAA,CAAA,CAAE,MAAM,IAAK,EAAA,KAAM,MAAM,CAAE,CAAA,IAAA,CAAK,IAAK,EAAA,KAAM,EAAI,EAAA;AACjD,UAAE,CAAA,CAAA,YAAA,GAAeA,UAAS,CAAA,aAAa,CAAE,CAAA,IAAA,CAAA;AACzC,UAAU,OAAA,GAAA,KAAA,CAAA;AAAA,SACL,MAAA;AACL,UAAA,CAAA,CAAE,YAAe,GAAA,EAAA,CAAA;AAAA,SACnB;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF;;;;;;;;AC/OO,SAAS,qBACd,iBACyB,EAAA;AACzB,EAAO,OAAA,iBAAA,CAAA;AACT,CAAA;AAEa,MAAA,mBAAA,GAAsB,CACjC,cAAA,EACA,cACsB,KAAA;AACtB,EAAA,MAAM,EAAE,IAAM,EAAA,MAAA,EAAQ,UAAU,WAAa,EAAA,GAAG,MAC9C,GAAA,cAAA,CAAA;AAEF,EAAO,OAAA;AAAA,IACL,GAAG,IAAA;AAAA,IACH,UAAU,CAAC,CAAC,YAAY,MAAO,CAAA,IAAA,IAAQ,MAAM,CAAM,KAAA,MAAA;AAAA,IACnD,YAAA,EAAA,CAAe,QAAY,IAAA,WAAA,MAAiB,MAAO,CAAA,kBAAA;AAAA,IACnD,gBAAgB,IAAK,CAAA,YAAA,IAAgB,SAAU,CAAA,IAAA,CAAK,IAAI,CAAK,IAAA,cAAA;AAAA,IAC7D,SAAA,EAAW,KAAK,UAAc,IAAA,KAAA;AAAA,IAC9B,aAAa,QAAY,IAAA,WAAA;AAAA,GAC3B,CAAA;AACF,EAAA;AAEO,MAAM,WAAY,CAAA;AAAA,EAuBvB,WAAA,CACS,EACG,EAAA,IAAA,EACH,WACP,EAAA;AAHO,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA,CAAA;AACG,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AACH,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AAzBT,IAAWlB,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,QAAA,CAAA,CAAA;AACX,IAAkDA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAClD,IAAoBA,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA;AACpB,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,uBAAA,CAAA,CAAA;AACA,IAAuBA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA;AAAA,MACrB,QAAU,EAAA,CAAA;AAAA,MACV,cAAc,EAAC;AAAA,MACf,iBAAmB,EAAA,GAAA;AAAA,MACnB,cAAgB,EAAA,IAAA;AAAA,MAChB,iBAAiB,EAAC;AAAA,MAClB,OAAO,EAAC;AAAA,MACR,eAAe,EAAC;AAAA,MAChB,aAAa,EAAC;AAAA,MACd,eAAA,sBAAqB,GAAI,EAAA;AAAA,MACzB,cAAgB,EAAA,KAAA;AAAA,KAClB,CAAA,CAAA;AA48BA,IAAAA,eAAA,CAAA,IAAA,EAAU,mCAAoC,EAAA,oBAAA,CAAA,CAAA;AAE9C,IAAAA,eAAA,CAAA,IAAA,EAAU,8BAA+B,EAAA,oBAAA,CAAA,CAAA;AAEzC,IAAAA,eAAA,CAAA,IAAA,EAAU,+BAAgC,EAAA,oBAAA,CAAA,CAAA;AAE1C,IAAAA,eAAA,CAAA,IAAA,EAAU,gCAAiC,EAAA,oBAAA,CAAA,CAAA;AAE3C,IAAAA,eAAA,CAAA,IAAA,EAAU,8BAA+B,EAAA,oBAAA,CAAA,CAAA;AAEzC,IAAAA,eAAA,CAAA,IAAA,EAAU,6BAA8B,EAAA,oBAAA,CAAA,CAAA;AAExC,IAAAA,eAAA,CAAA,IAAA,EAAU,qCAAoC,CAAC;AAAA,MAC7C,QAAA;AAAA,KAGI,KAAA;AACJ,MACE,OAAA,QAAA,EACI,MAAS,GAAA,CAAC,OAAY,KAAA,CAAC,CAAC,OAAA,CAAQ,KAAK,CAAA,CACtC,GAAI,CAAA,CAAC,OAAY,KAAA,CAAA,EAAG,QAAQ,EAAE,CAAA,CAAA,EAAI,OAAQ,CAAA,IAAI,CAAI,CAAA,EAAA,OAAA,CAAQ,KAAK,CAAA,CAAE,CACjE,CAAA,IAAA,CAAK,GAAG,CAAA,IAAK,EAAC,CAAA;AAAA,KAErB,CAAA,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAU,wCAAuC,CAAC;AAAA,MAChD,gBAAA;AAAA,MACA,gBAAA;AAAA,KAII,KAAA;AACJ,MAAA,IAAI,YAAe,GAAA,EAAA,CAAA;AAEnB,MAAiB,gBAAA,CAAA,OAAA;AAAA,QACf,CAAC,OACE,KAAA,YAAA,GAAe,CAAG,EAAA,YAAY,GAC7B,YAAa,CAAA,MAAA,GAAS,CAAI,GAAA,GAAA,GAAM,EAClC,CAAA,UAAA,EAAa,QAAQ,MAAM,CAAA,aAAA,EACzB,OAAQ,CAAA,QACV,CAAe,YAAA,EAAA,OAAA,CAAQ,MAAM,CAAI,CAAA,EAAA,MAAA,CAAO,OAAQ,CAAA,SAAS,CAAC,CAAA,CAAA;AAAA,OAC9D,CAAA;AAEA,MAAiB,gBAAA,CAAA,OAAA;AAAA,QACf,CAAC,OACE,KAAA,YAAA,GAAe,CAAG,EAAA,YAAY,GAC7B,YAAa,CAAA,MAAA,GAAS,CAAI,GAAA,GAAA,GAAM,EAClC,CAAA,UAAA,EAAa,QAAQ,MAAM,CAAA,aAAA,EACzB,OAAQ,CAAA,SACV,CAAe,YAAA,EAAA,OAAA,CAAQ,MAAM,CAAI,CAAA,EAAA,MAAA,CAAO,OAAQ,CAAA,SAAS,CAAC,CAAA,CAAA;AAAA,OAC9D,CAAA;AAEA,MAAO,OAAA,YAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAEA,IAAUA,eAAA,CAAA,IAAA,EAAA,6CAAA,EAA8C,CACtD,kBACG,KAAA;AACH,MAAO,OAAA,MAAA,CAAO,MAAO,CAAA,kBAAkB,CACpC,CAAA,MAAA,CAAO,CAAC,OAAY,KAAA,CAAC,CAAC,OAAA,EAAS,KAAK,CAAA,CACpC,IAAI,CAAC,OAAA,KAAY,CAAG,EAAA,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI,QAAQ,KAAK,CAAA,CAAE,CACnD,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,KACb,CAAA,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAU,6BAA8B,EAAA,oBAAA,CAAA,CAAA;AAExC,IAAAA,eAAA,CAAA,IAAA,EAAU,6BAA8B,EAAA,oBAAA,CAAA,CAAA;AAExC,IAAAA,eAAA,CAAA,IAAA,EAAU,2BAA4B,EAAA,oBAAA,CAAA,CAAA;AAEtC,IAAAA,eAAA,CAAA,IAAA,EAAU,wCAAyC,EAAA,oBAAA,CAAA,CAAA;AAEnD,IAAAA,eAAA,CAAA,IAAA,EAAU,2BAA4B,EAAA,oBAAA,CAAA,CAAA;AAEtC,IAAAA,eAAA,CAAA,IAAA,EAAU,2BAA4B,EAAA,oBAAA,CAAA,CAAA;AAEtC,IAAAA,eAAA,CAAA,IAAA,EAAU,6BAA8B,EAAA,oBAAA,CAAA,CAAA;AAExC,IAAAA,eAAA,CAAA,IAAA,EAAU,kCAAmC,EAAA,oBAAA,CAAA,CAAA;AAE7C,IAAAA,eAAA,CAAA,IAAA,EAAU,gCAAiC,EAAA,oBAAA,CAAA,CAAA;AAE3C,IAAAA,eAAA,CAAA,IAAA,EAAU,6BAA8B,EAAA,oBAAA,CAAA,CAAA;AAExC,IAAAA,eAAA,CAAA,IAAA,EAAU,+BAAgC,EAAA,oBAAA,CAAA,CAAA;AA8N1C,IAAOA,eAAA,CAAA,IAAA,EAAA,qBAAA,EAAsB,CAAC,IAA2C,KAAA;AACvE,MAAO,OAAA;AAAA,QACL,GAAG,mBAAoB,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,QAClC,OAAA,EAAS,IAAK,CAAA,OAAA,IAAW,IAAK,CAAA,QAAA;AAAA,QAC9B,SAAS,IAAK,CAAA,OAAA;AAAA,OAChB,CAAA;AAAA,KACF,CAAA,CAAA;AA1vCE,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,KAAO,EAAA,UAAA;AAAA,KACR,CAAA,CAAA;AACD,IAAA,IAAA,CAAK,iBAAoB,GAAA,IAAA,KAAS,GAAO,IAAA,CAAC,CAAC,MAAO,CAAA,SAAA,CAAA;AAClD,IAAA,IAAA,CAAK,QAAQ,MAAO,CAAA,SAAA,CAAA;AACpB,IAAI,IAAA;AACF,MAAA,IAAA,CAAK,qBACH,GAAA,IAAA,KAAS,GAAM,GAAA,MAAA,CAAO,kBAAkB,MAAO,CAAA,eAAA,CAAA;AAAA,aAC1C,CAAG,EAAA;AACV,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA;AAAA,KAChB;AAGA,IAAA,MAAA,CAAO,OAAU,GAAA,IAAA,CAAA;AAAA,GACnB;AAAA,EAvBA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,MAAO,CAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACvC;AAAA,EAsBA,MAAM,MAAS,GAAA;AACb,IAAA,MAAM,KAAK,eAAgB,EAAA,CAAA;AAC3B,IAAA,MAAM,KAAK,cAAe,CAAA;AAAA,MACxB,SAAA,EAAW,KAAK,KAAM,CAAA,iBAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,MAAM,KAAK,oBAAqB,EAAA,CAAA;AAAA,GAClC;AAAA,EAEA,MAAM,aAAgB,GAAA;AACpB,IAAA,IAAI,OAAO,qBAAuB,EAAA;AAChC,MAAA,OAAA,CAAQ,KAAK,wBAAwB,CAAA,CAAA;AAAA,KAChC,MAAA;AACL,MAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AACZ,MAAA,IAAA,CAAK,kBAAkB,IAAI,uBAAA;AAAA,QACzB,IAAA;AAAA,QACA,IAAK,CAAA,WAAA;AAAA,OACP,CAAA;AACA,MAAA,IAAA,CAAK,gBAAgB,SAAU,EAAA,CAAA;AAAA,KACjC;AAAA,GACF;AAAA,EAEA,MAAM,QAA6B,GAAA;AACjC,IAAO,OAAA,IAAI,OAAiB,CAAA,CAAC,OAAY,KAAA;AACvC,MAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AAAA,EAEO,OAAO,YAAsC,EAAA;AAClD,IAAA,aAAA,CAAc,QAAS,CAAA,GAAA,CAAI,IAAI,mBAAA,CAAoB,YAAY,CAAC,CAAA,CAAA;AAAA,GAClE;AAAA,EAEU,UAAqB,GAAA;AAC7B,IAAA,OAAO,MAAO,CAAA,gBAAA,CAAA;AAAA,GAChB;AAAA,EAEO,WAAc,GAAA;AACnB,IAAA,OAAO,KAAK,KAAM,CAAA,YAAA,CAAA;AAAA,GACpB;AAAA,EAEO,mBAAsB,GAAA;AAC3B,IAAA,OAAO,KAAK,KAAM,CAAA,iBAAA,CAAA;AAAA,GACpB;AAAA,EAEO,iBAAoB,GAAA;AACzB,IAAO,OAAA,IAAA,CAAK,MAAM,YAAa,CAAA,IAAA;AAAA,MAC7B,CAAC,CAAA,KAAM,CAAE,CAAA,EAAA,KAAO,KAAK,KAAM,CAAA,iBAAA;AAAA,KAC7B,CAAA;AAAA,GACF;AAAA,EAEO,kBAAqB,GAAA;AAC1B,IAAA,OAAO,KAAK,KAAM,CAAA,eAAA,CAAA;AAAA,GACpB;AAAA,EAEO,cAAiB,GAAA;AACtB,IAAA,OAAO,KAAK,KAAM,CAAA,WAAA,CAAA;AAAA,GACpB;AAAA,EAEO,gBAAmB,GAAA;AACxB,IAAA,OAAO,KAAK,KAAM,CAAA,KAAA,CAAA;AAAA,GACpB;AAAA,EAEO,WAAc,GAAA;AACnB,IAAA,OAAO,KAAK,KAAM,CAAA,QAAA,CAAA;AAAA,GACpB;AAAA,EAEO,iBAAoB,GAAA;AACzB,IAAA,OAAO,KAAK,KAAM,CAAA,cAAA,CAAA;AAAA,GACpB;AAAA,EAEA,MAAM,eACJ,CAAA;AAAA,IACE,KAAO,EAAA,KAAA;AAAA,IACP,aAAe,EAAA,KAAA;AAAA,KAEjB,OACA,EAAA;AACA,IAAA,MAAM,KAAK,KAAQ,GAAA,IAAA,CAAK,YAAa,CAAA,KAAK,EAAE,KAAQ,GAAA,KAAA,CAAA;AACpD,IAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,MAC3BmB,aAAA;AAAA,QACE,KAAK,yBAA0B,CAAA;AAAA,UAC7B,MAAQ,EAAA,iBAAA;AAAA,UACR,MAAQ,EAAA,IAAA;AAAA,UACR,KAAO,EAAA,EAAA;AAAA,UACP,OAAA;AAAA,UACA,QAAQ,IAAK,CAAA,IAAA;AAAA,UACb,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,SAC1B,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAEA,IAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,MAAA,OAAO,MAAO,CAAA,IAAA,CAAA;AAAA,KAChB;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,YAAe,GAAA;AACjB,IAAA,OAAO,IAAI,KAAM,CAAA,SAAA,CAAU,IAAK,CAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AAAA,MAC5C,GAAA,EAAK,CAAC,KAAA,EAAO,IAAS,KAAA;AACpB,QAAA,IAAI,IAAQ,IAAA,KAAA;AAAO,UAAA,OAAO,MAAM,IAAW,CAAA,CAAA;AAE3C,QAAA,MAAM,qBAAqB,KAAM,CAAA,IAAA;AAAA,UAC/B,IAAA,CAAK,KAAM,CAAA,eAAA,CAAgB,MAAO,EAAA;AAAA,SACpC,CAAA;AACA,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,kBAAA,CAAmB,QAAQ,CAAK,EAAA,EAAA;AAClD,UAAA,MAAM,eAAkB,GAAA,MAAA,CAAO,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAC,CAAA,CAAA;AAC3D,UAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,eAAA,CAAgB,QAAQ,CAAK,EAAA,EAAA;AAC/C,YAAI,IAAA,eAAA,CAAgB,CAAC,CAAA,CAAE,KAAU,KAAA,IAAA;AAAM,cAAA,OAAO,gBAAgB,CAAC,CAAA,CAAA;AAAA,WACjE;AAAA,SACF;AAEA,QAAO,OAAA,KAAA,CAAA,CAAA;AAAA,OACT;AAAA,MACA,GAAK,EAAA,CAAC,CAAG,EAAA,EAAA,EAAI,KAA6B,KAAA;AACxC,QAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,KAAM,CAAA,KAAK,CAAI,GAAA,KAAA,CAAA;AAChC,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEO,UAAU,IAAc,EAAA;AAC7B,IAAA,IAAA,CAAK,KAAM,CAAA,eAAA,GAAkB,IAAK,CAAA,KAAA,CAAM,eAAgB,CAAA,MAAA;AAAA,MACtD,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,IAAA;AAAA,KACpB,CAAA;AAAA,GACF;AAAA,EAEO,UAAa,GAAA;AAClB,IAAK,IAAA,CAAA,KAAA,CAAM,kBAAkB,EAAC,CAAA;AAC9B,IAAK,IAAA,CAAA,KAAA,CAAM,cAAc,EAAC,CAAA;AAAA,GAC5B;AAAA,EAEO,UAAa,GAAA;AAClB,IAAA,IAAA,CAAK,MAAM,iBAAoB,GAAA,GAAA,CAAA;AAC/B,IAAK,IAAA,CAAA,KAAA,CAAM,kBAAkB,EAAC,CAAA;AAAA,GAChC;AAAA,EAEA,MAAM,iBAAA,CAAkB,EAAY,EAAA,oBAAA,GAAuB,IAAM,EAAA;AAC/D,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACjC,IAAI,IAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAI,GAAA,CAAA;AAAG,MAAO,OAAA,IAAA,CAAA;AAEnC,IAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,MAI3BA,aAAA;AAAA,QACE,KAAK,8BAA+B,CAAA;AAAA,UAClC,MAAQ,EAAA,mBAAA;AAAA,UACR,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,UACzB,QAAQ,IAAK,CAAA,IAAA;AAAA,SACd,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,QAAA,GAAW,MAAQ,EAAA,IAAA,EAAM,OAAY,KAAA,IAAA,CAAA;AAC3C,IACE,IAAA,CAAC,YACD,MAAQ,EAAA,IAAA,EAAM,OACd,MAAO,CAAA,IAAA,CAAK,GAAQ,KAAA,MAAA,CAAO,kBAC3B,EAAA;AACA,MAAA,IAAA,CAAK,MAAO,CAAA;AAAA,QACV,OAAS,EAAA,CAAA,EAAG,MAAO,CAAA,qBAAA,CAAsB,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAAC,CAAA,EAAA,EACpD,MAAO,CAAA,IAAA,CAAK,GACd,CAAA,CAAA,CAAA;AAAA,QACA,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AACD,MAAA,OAAO,OAAO,IAAK,CAAA,GAAA,CAAA;AAAA,KACrB;AACA,IAAA,IAAI,CAAC,QAAY,IAAA,oBAAA,IAAwB,CAAE,MAAM,KAAK,QAAS,EAAA;AAC7D,MAAA,IAAA,CAAK,MAAO,CAAA;AAAA,QACV,SAAS,MAAO,CAAA,sBAAA;AAAA,QAChB,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AAEH,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AAAA,EAEO,oBAAoB,SAAmB,EAAA;AAC5C,IAAA,IAAA,CAAK,MAAM,iBAAoB,GAAA,SAAA,CAAA;AAAA,GACjC;AAAA,EAEA,MAAa,eAAA,CAAgB,QAAmB,GAAA,EAAI,EAAA;AAClD,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AACA,IAAM,MAAA,cAAA,GAAiB,KAAK,KAAM,CAAA,cAAA,CAAA;AAClC,IAAM,MAAA,GAAA,GAAM,MAAM,OAAQ,CAAA,IAAA;AAAA,MACxBA,aAAA;AAAA,QACE,KAAK,4BAA6B,CAAA;AAAA,UAChC,MAAQ,EAAA,iBAAA;AAAA,UACR,MAAQ,EAAA,IAAA;AAAA,UACR,OAAO,cAAgB,EAAA,KAAA;AAAA,UACvB,QAAQ,IAAK,CAAA,IAAA;AAAA,UACb,WACE,QAAS,CAAA,MAAA,KAAW,CAAI,GAAA,cAAA,EAAgB,aAAa,GAAM,GAAA,GAAA;AAAA,UAC7D,QAAQ,CAAC,cAAA;AAAA,UACT,mBAAqB,EAAA,IAAA;AAAA,UACrB,yBAAyB,IAAK,CAAA,IAAA;AAAA,UAC9B,uBAAuB,IAAK,CAAA,qBAAA;AAAA,UAC5B,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,SAC1B,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AACA,IAAA,IAAI,KAAK,IAAM,EAAA;AAIb,MAAA,MAAM,WAAWT,cAAa,CAAA,GAAA,EAAK,IAAK,CAAA,QAAA,CAAS,SAAS,OAAO,CAAA,CAAA;AACjE,MAAM,MAAA,UAAA,GAAa,CAAC,CAAC,QAAS,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,MAAO,CAAA,CAAA,CAAE,EAAE,CAAA,KAAM,GAAG,CAAA,CAAA;AAQ9D,MAAA,IAAA,CAAK,MAAM,YAAe,GAAA,QAAA,CAAA;AAC1B,MAAA,IAAA,CAAK,MAAM,iBAAoB,GAAA,UAAA,GAAa,GAAM,GAAA,QAAA,CAAS,CAAC,CAAE,CAAA,EAAA,CAAA;AAE9D,MAAI,IAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AACvB,QAAM,MAAA,IAAA,CAAK,SAAS,QAAQ,CAAA,CAAA;AAAA,OAC9B;AACA,MAAA,OAAO,GAAK,EAAA,IAAA,EAAM,QAAS,CAAA,IAAA,KAAS,+BAChC,IACA,GAAA,KAAA,CAAA;AAAA,KACC,MAAA;AACL,MAAM,MAAA,IAAI,MAAM,eAAe,CAAA,CAAA;AAAA,KACjC;AAAA,GACF;AAAA,EAEA,MAAa,cACX,CAAA,KAAA,EACA,eACA,EAAA;AACA,IAAA,IAAI,CAAC,IAAK,CAAA,eAAA;AAAiB,MAAA,OAAA;AAC3B,IAAM,MAAA,GAAA,GAAM,MAAM,OAAQ,CAAA,IAAA;AAAA,MAGxBS,aAAA;AAAA,QACE,KAAK,2BAA4B,CAAA;AAAA,UAC/B,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,UACzB,MAAQ,EAAA,gBAAA;AAAA,UACR,MAAQ,EAAA,IAAA;AAAA,UACR,OAAO,KAAO,EAAA,KAAA;AAAA,UACd,WAAW,KAAO,EAAA,SAAA;AAAA,UAClB,QAAA,EAAU,KAAK,iCAAkC,CAAA;AAAA,YAC/C,QAAA,EAAU,KAAK,eAAiB,EAAA,WAAA;AAAA,WACjC,CAAA;AAAA,UACD,QAAQ,IAAK,CAAA,IAAA;AAAA,UACb,GAAG,eAAA;AAAA,SACJ,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAEA,IAAI,IAAA,GAAA,EAAK,IAAQ,IAAA,KAAA,EAAO,SAAW,EAAA;AACjC,MAAM,MAAA,cAAA,GACJ,IAAK,CAAA,KAAA,CAAM,YAAa,CAAA,IAAA;AAAA,QACtB,CAAC,OAAA,KAAY,OAAQ,CAAA,EAAA,KAAO,KAAM,CAAA,SAAA;AAAA,SACjC,IAAQ,IAAA,KAAA,CAAA;AAEb,MAAK,IAAA,CAAA,eAAA,CAAiB,KAAM,CAAA,QAAA,CAAS,aAAgB,GAAAT,cAAA;AAAA,QACnD,IAAI,IAAK,CAAA,QAAA;AAAA,OACX,CAAA;AACA,MAAK,IAAA,CAAA,eAAA,CAAiB,KAAM,CAAA,QAAA,CAAS,cAAiB,GAAA,cAAA,CAAA;AAAA,KACxD;AAAA,GACF;AAAA,EAEA,MAAa,QACX,CAAA,gBAAA,EACA,IACA,EAAA;AACA,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA;AAAA;AAAA,MAEJ,YAAY,gBAAmB,GAAA,KAAA;AAAA;AAAA,KAEjC,GAAI,QAAQ,EAAC,CAAA;AACb,IAAA,MAAM,YAAe,GAAA,gBAAA,IAAoB,CAAC,CAAC,KAAK,KAAM,CAAA,cAAA,CAAA;AAGtD,IAAM,MAAA,OAAA,GAAU,KAAK,mBAAoB,EAAA,CAAA;AAEzC,IAAI,IAAA,CAAC,YAAgB,IAAA,CAAC,OAAS,EAAA;AAC7B,MAAA,IAAA,CAAK,MAAO,CAAA;AAAA,QACV,OAAS,EAAA,CAAA,EAAG,MAAO,CAAA,qBAAqB,KAAK,gBAC1C,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,OAAQ,CAAA,IAAI,CAC7B,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,QACb,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AACD,MAAA,OAAA;AAAA,KACF;AACA,IAAA,MAAM,eAAe,IAAK,CAAA,0BAAA;AAAA,MACxB,IAAK,CAAA,wBAAA;AAAA,QACH,IAAK,CAAA,mBAAA;AAAA,UACH,IAAK,CAAA,mBAAA;AAAA,YACH,IAAA,CAAK,qBAAsB,CAAA,gBAAA,EAAkB,IAAI,CAAA;AAAA,YACjD,IAAA;AAAA,WACF;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,SACF;AAAA,OACF;AAAA,MACA,IAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,QAAA,GAAW,IAAI,QAAS,EAAA,CAAA;AAC9B,IAAa,YAAA,CAAA,OAAA;AAAA,MAAQ,CAAC,IACpB,KAAA,QAAA,CAAS,OAAO,gBAAkB,EAAA,IAAA,EAAM,KAAK,IAAI,CAAA;AAAA,KACnD,CAAA;AAEA,IAAA,MAAM,OAAQ,CAAA,IAAA;AAAA,MACZS,aAAA;AAAA,QACE,KAAK,6BAA8B,CAAA;AAAA,UACjC,MAAQ,EAAA,kBAAA;AAAA,UACR,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA,KAAA;AAAA,UAClC,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,UACzB,UAAU,IAAK,CAAA,IAAA;AAAA,UACf,MAAA,EAAQ,CAAwB,qBAAA,EAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,UACzC,MAAA,EAAQ,CAAC,IAAK,CAAA,eAAA;AAAA,UACd,SAAA,EAAW,KAAK,KAAM,CAAA,iBAAA;AAAA,UACtB,GAAG,IAAA;AAAA,SACJ,CAAA;AAAA,OACH;AAAA,MACA;AAAA,QACE,QAAU,EAAA,QAAA;AAAA,QACV,WAAa,EAAA;AAAA,UACX,gBAAkB,EAAA,CAAC,EAChB,KAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GACT,EAAG,CAAA,MAAA,GAAS,GAAS,IAAA,CAAA,EAAA,CAAG,KAAS,IAAA,EAAA,CAAG,MAAU,IAAA,CAAA,CAAA;AAAA,SACrD;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAM,MAAA,8BAAA,GACJ,KAAK,iCAAkC,CAAA;AAAA,MACrC,MAAQ,EAAA,sBAAA;AAAA,MACR,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,MACzB,YAAc,EAAA,IAAA;AAAA,MACd,MAAQ,EAAA,IAAA;AAAA,MACR,QAAQ,IAAK,CAAA,IAAA;AAAA,KACd,CAAA,CAAA;AAEH,IAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,IAAA,MAAM,oBAAoB,YAAY;AAEpC,MAAO,OAAA,IAAI,OAAQ,CAAA,OAAO,OAAY,KAAA;AACpC,QAAS,KAAA,IAAA,CAAA,CAAA;AACT,QAAA,IAAI,UAAU,EAAI,EAAA;AAChB,UAAA,IAAA,CAAK,MAAO,CAAA;AAAA,YACV,OACE,EAAA,2DAAA;AAAA,YACF,IAAM,EAAA,OAAA;AAAA,WACP,CAAA,CAAA;AACD,UAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACb,UAAA,OAAA;AAAA,SACF;AACA,QAAM,MAAA,QAAA,GAAW,MAAM,OAAQ,CAAA,IAAA;AAAA,UAC7BA,cAAY,8BAA8B,CAAA;AAAA,SAC5C,CAAA;AACA,QAAI,IAAA,QAAA,IAAY,SAAS,IAAM,EAAA;AAC7B,UAAA,MAAM,WACJ,GAAAT,cAAA;AAAA,YACE,QAAS,CAAA,IAAA,EAAM,WAAa,EAAA,OAAA,IAC1B,SAAS,IAAM,EAAA,aAAA,EAAe,SAC9B,IAAA,QAAA,CAAS,MAAM,UAAY,EAAA,SAAA,IAC3B,QAAS,CAAA,IAAA,CAAK,SAAS,QAAU,EAAA,OAAA;AAAA,YACnC,MAAS,GAAA,CAAA,IAAK,CAAC,CAAC,QAAA,CAAS,KAAK,QAAS,CAAA,eAAA,CAAA;AAE3C,UAAA,MAAM,aAAgB,GAAAA,cAAA;AAAA,YACpB,QAAA,CAAS,IAAK,CAAA,QAAA,CAAS,QAAU,EAAA,OAAA;AAAA,YACjC,IAAK,CAAA,CAAC,OAAY,KAAA,OAAA,CAAQ,SAAS,SAAS,CAAA,CAAA;AAC9C,UAAI,IAAA,aAAA;AACF,YAAA,IAAA,CAAK,OAAO,EAAE,OAAA,EAAS,cAAc,KAAO,EAAA,IAAA,EAAM,WAAW,CAAA,CAAA;AAE/D,UAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,EAAM,QAAS,CAAA,IAAA,CAAA;AACvC,UAAA,IAAA,CAAK,MAAM,QAAW,GAAA,EAAA,CAAA;AACtB,UAAA,IAAI,WAAa,EAAA;AACf,YAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACb,YAAA,OAAA;AAAA,WACF;AAEA,UAAA,IAAI,WAAW,8BAAgC,EAAA;AAC7C,YAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACZ,YAAA,OAAA;AAAA,WACF;AACA,UAAA,IAAI,UAAU,EAAI,EAAA;AAChB,YAAA,OAAA,CAAQ,WAAW,8BAA8B,CAAA,CAAA;AAAA,WACnD;AACA,UAAA,UAAA,CAAW,MAAM;AACf,YAAkB,iBAAA,EAAA,CACf,KAAK,OAAO,CAAA,CACZ,MAAM,MAAM,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA;AAAA,aAC5B,GAAG,CAAA,CAAA;AAAA,SACD,MAAA;AACL,UAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,SACf;AAAA,OACD,CAAA,CAAA;AAAA,KACH,CAAA;AACA,IAAM,MAAA,oBAAA,GAAuB,MAAM,iBAAkB,EAAA,CAAA;AAErD,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA,EAAA,CAAA;AAEtB,IAAA,IAAI,oBAAsB,EAAA;AACxB,MAAM,MAAA,KAAA,GAAA,CAAS,IAAK,CAAA,KAAA,CAAM,eAAmB,IAAA,IAAI,GAAI,CAAA,CAAC,IAAS,KAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AACxE,MAAA,MAAM,WAAW,WAAY,CAAA,SAAA;AAAA,QAC3B,KAAK,8BAA+B,CAAA;AAAA,UAClC,mBAAqB,EAAA,IAAA;AAAA,UACrB,qBAAA,EAAuB,IAAK,CAAA,qBAAA,EAAuB,QAAS,EAAA;AAAA,UAC5D,yBAAyB,IAAK,CAAA,IAAA;AAAA,UAC9B,OAAA,EAAS,aAAa,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,IAAI,CAAE,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,UAC3D,KAAA;AAAA,SACD,CAAA;AAAA,QACD,EAAE,aAAa,QAAS,EAAA;AAAA,OAC1B,CAAA;AAEA,MAAM,MAAA,YAAA,GAAe,MAAM,OAAQ,CAAA,IAAA;AAAA,QACjCS,aAAA;AAAA,UACE,KAAK,gCAAiC,CAAA;AAAA,YACpC,MAAQ,EAAA,qBAAA;AAAA,YACR,UAAU,IAAK,CAAA,IAAA;AAAA,YACf,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA,KAAA;AAAA,YAClC,MAAA,EAAQ,CAAC,IAAK,CAAA,eAAA;AAAA,YACd,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,WAC1B,CAAA;AAAA,SACH;AAAA,QACA;AAAA,UACE,QAAA,EAAU,SAAS,QAAS,EAAA;AAAA,SAC9B;AAAA,OACF,CAAA;AAEA,MAAA,IAAA,CAAK,MAAM,QAAW,GAAA,EAAA,CAAA;AAEtB,MAAA,IAAI,YAAc,EAAA,IAAA,EAAM,QAAU,EAAA,SAAA,EAAW,OAAS,EAAA;AACpD,QAAA,MAAM,qBAAwB,GAAAT,cAAA;AAAA,UAC5B,YAAA,CAAa,IAAK,CAAA,QAAA,EAAU,SAAW,EAAA,OAAA;AAAA,SACzC,CAAA;AAEA,QAAA,IAAA,CAAK,MAAM,eAAkB,GAAA;AAAA,UAC3B,GAAI,IAAA,CAAK,KAAM,CAAA,eAAA,IAAmB,EAAC;AAAA,UACnC,GAAG,qBACA,CAAA,GAAA;AAAA,YAAI,CAAC,YACJ,CAAC,GAAG,KAAK,KAAM,CAAA,eAAA,EAAiB,GAAG,gBAAgB,CAAE,CAAA,IAAA;AAAA,cACnD,CAAC,MAAA,KAAW,MAAO,CAAA,IAAA,KAAS,OAAQ,CAAA,WAAA;AAAA,aACtC;AAAA,YAED,MAAO,CAAA,CAAC,OAA6B,KAAA,CAAC,CAAC,OAAO,CAAA;AAAA,SACnD,CAAA;AACA,QAAA,IAAA,CAAK,MAAM,QAAW,GAAA,GAAA,CAAA;AAEtB,QAAA,IAAA,CAAK,MAAO,CAAA;AAAA,UACV,IAAM,EAAA,SAAA;AAAA,UACN,SAAS,MAAO,CAAA,0BAAA;AAAA,SACjB,CAAA,CAAA;AAAA,OAYH;AAAA,KACF;AACA,IAAA,IAAA,CAAK,MAAM,QAAW,GAAA,GAAA,CAAA;AAAA,GACxB;AAAA,EAEA,MAAM,gBAAgB,KAAe,EAAA;AACnC,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC9B,MAAA,IAAI,KAAQ,GAAA,EAAA,CAAA;AACZ,MAAA,MAAM,kBAAkB,YAAY;AAClC,QAAM,MAAA,QAAA,GAAW,MAAM,OAAQ,CAAA,IAAA;AAAA,UAC7BS,aAAA;AAAA,YACE,KAAK,4BAA6B,CAAA;AAAA,cAChC,MAAQ,EAAA,wBAAA;AAAA,cACR,KAAA;AAAA,cACA,SAAS,MAAO,CAAA,gBAAA;AAAA,aACjB,CAAA;AAAA,WACH;AAAA,SACF,CAAA;AACA,QAAA,IACE,UAAU,IAAM,EAAA,MAAA,KAAW,QAC3B,QAAU,EAAA,IAAA,EAAM,WAAW,KAC3B,CAAA,EAAA;AACA,UAAI,IAAA,EAAE,QAAQ,CAAG,EAAA;AACf,YAAU,SAAA,CAAA,QAAA,CAAS,MAAM,MAAS,GAAA,IAAA,CAAA;AAClC,YAAA,UAAA,CAAW,MAAM,KAAK,eAAgB,EAAA,EAAG,GAAI,CAAA,CAAA;AAAA,WACxC,MAAA;AACL,YAAU,SAAA,CAAA,QAAA,CAAS,MAAM,MAAS,GAAA,KAAA,CAAA;AAClC,YAAA,IAAA,CAAK,MAAO,CAAA,EAAE,OAAS,EAAA,MAAA,CAAO,wBAAwB,CAAA,CAAA;AACtD,YAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,WACf;AAAA,SACK,MAAA;AACL,UAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACZ,UAAU,SAAA,CAAA,QAAA,CAAS,MAAM,MAAS,GAAA,KAAA,CAAA;AAAA,SACpC;AAAA,OACF,CAAA;AACA,MAAA,KAAK,eAAgB,EAAA,CAAA;AAAA,KACtB,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,eAAe,IAAyB,EAAA;AAC5C,IAAA,IAAI,GAAM,GAAA,IAAA,CAAA;AACV,IAAI,IAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAK,IAAA,CAAA;AACxB,MAAA,GAAA,GAAM,MAAM,OAAQ,CAAA,GAAA;AAAA,QAClBA,aAAY,CAAA;AAAA,UACV,MAAQ,EAAA,cAAA;AAAA,UACR,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,IAAM,EAAA,KAAA;AAAA,UACN,MAAQ,EAAA,IAAA;AAAA,UACR,QAAQ,IAAK,CAAA,IAAA;AAAA,UACb,KAAO,EAAA,IAAA;AAAA,SACR,CAAA;AAAA,OACH,CAAA;AACF,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,aAAa,EAAY,EAAA;AAC7B,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACjC,IAAA,IAAK,MAAM,IAAK,CAAA,iBAAA,CAAkB,IAAK,CAAA,KAAK,MAAO,IAAM,EAAA;AACvD,MAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,QAC3BA,aAAA;AAAA,UACE,KAAK,yBAA0B,CAAA;AAAA,YAC7B,MAAQ,EAAA,sBAAA;AAAA,YACR,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,QAAQ,IAAK,CAAA,IAAA;AAAA,YACb,MAAQ,EAAA,IAAA;AAAA,WACT,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AACA,MAAI,IAAA,MAAA,EAAQ,MAAM,QAAU,EAAA;AAC1B,QAAA,MAAM,eAAe,CAAG,EAAA,MAAA,CAAO,aAAa,CAAA,EAC1C,QAAQ,IAAM,EAAA,QAChB,CAAI,CAAA,EAAA,IAAA,CAAK,KAAK,CAAI,CAAA,EAAA,IAAA,CAAK,IAAQ,IAAA,IAAA,CAAK,WAAW,EAAE,CAAA,CAAA,CAAA;AAEjD,QAAA,MAAM,yBAAyB,MAAM;AACnC,UAAA,IAAA,CAAK,MAAO,CAAA;AAAA,YACV,IAAM,EAAA,SAAA;AAAA,YACN,SAAS,MAAO,CAAA,wBAAA;AAAA,YAChB,OAAO,MAAO,CAAA,QAAA;AAAA,WACf,CAAA,CAAA;AAAA,SACH,CAAA;AAEA,QAAC,OAAO,eAA0B,GAAA,IAAA,CAAA;AAClC,QAAC,MAAO,CAAA,KAAA,CAAc,MAAO,CAAA,MAAA,CAAO,aAAa,iBAC/C,GAAA,GAAA,CAAA;AAEF,QAAA,MACE,MAAO,CAAA,KAAA,CACP,MAAO,CAAA,MAAA,CAAO,UAAW,CAAA,uBAAA;AAAA,UACzB,YAAA;AAAA,UACA,MAAO,CAAA,aAAA;AAAA,UACP,sBAAA;AAAA,UACA,IAAA;AAAA,UACA,SAAA;AAAA,UACA,kBAAA;AAAA;AAAA,UACA,EAAA;AAAA;AAAA,UACA,MAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,gBAAiB,CAAA,EAAA,EAAY,OAAkB,EAAA;AACnD,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACjC,IAAA,IAAI,OAAO,UAAe,IAAA,MAAM,KAAK,eAAgB,CAAA,IAAA,CAAK,KAAK,CAAI,EAAA;AACjE,MAAM,MAAA,WAAA;AAAA,QACJA,aAAY,CAAA;AAAA,UACV,MAAQ,EAAA,kBAAA;AAAA,UACR,QAAQ,IAAK,CAAA,IAAA;AAAA,UACb,OAAO,IAAK,CAAA,aAAA;AAAA,UACZ,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,UACzB,OAAA;AAAA,SACD,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,cAAe,CAAA,EAAA,EAAY,MAAiB,EAAA;AAChD,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACjC,IAAA,IAAK,MAAM,IAAK,CAAA,iBAAA,CAAkB,IAAK,CAAA,KAAK,MAAO,IAAM,EAAA;AACvD,MAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,QAC3BA,aAAA;AAAA,UACE,KAAK,2BAA4B,CAAA;AAAA,YAC/B,MAAQ,EAAA,oBAAA;AAAA,YACR,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,MAAQ,EAAA,IAAA;AAAA,YACR,QAAQ,IAAK,CAAA,IAAA;AAAA,YACb,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,YACzB,MAAA;AAAA,WACD,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AAEA,MAAI,IAAA,IAAA,CAAK,4BAA6B,CAAA,MAAA,EAAQ,IAAI,CAAA,EAAA;AAChD,QAAI,IAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,EAAE,CAAA;AAAG,UAAO,OAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AAAA,OAAA;AAAA,KACxD;AAAA,GACF;AAAA,EAEA,MAAM,cAAe,CAAA,EAAA,EAAY,MAAiB,EAAA;AAChD,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AAEjC,IAAA,IAAK,MAAM,IAAK,CAAA,iBAAA,CAAkB,IAAK,CAAA,KAAK,MAAO,IAAM,EAAA;AACvD,MAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,QAC3BA,aAAA;AAAA,UACE,KAAK,2BAA4B,CAAA;AAAA,YAC/B,MAAQ,EAAA,eAAA;AAAA,YACR,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,MAAQ,EAAA,IAAA;AAAA,YACR,QAAQ,IAAK,CAAA,IAAA;AAAA,YACb,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,YACzB,MAAA;AAAA,WACD,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AAEA,MAAI,IAAA,MAAA,EAAQ,IAAM,EAAA,YAAA,KAAiB,KAAW,CAAA,EAAA;AAE5C,QAAA,IAAA,CAAK,MAAM,KAAM,CAAA,EAAE,CAAE,CAAA,YAAA,GAAe,OAAO,IAAK,CAAA,YAAA,CAAA;AAAA,OAElD;AAAA,KACF;AAAA,GACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,yBAA4B,GAAA;AAC1B,IAAA,MAAM,QAAQ,IAAK,CAAA,UAAA,CAAA;AACnB,IAAA,IAAI,MAAM,MAAW,KAAA,CAAA;AAAG,MAAA,OAAA;AACxB,IAAM,MAAA,MAAA,GAAS,KAAK,KAAM,CAAA,aAAA,CAAA;AAE1B,IAAA,MAAM,gBAAgB,KAAM,CAAA,MAAA;AAAA,MAAO,CAAC,YAClC,MAAO,CAAA,IAAA,CAAK,CAAC,MAAW,KAAA,MAAA,KAAW,QAAQ,KAAK,CAAA;AAAA,KAClD,CAAA;AACA,IAAA,MAAM,GAAO,GAAA,CAAA,aAAA,CAAc,MAAS,GAAA,CAAA,GAAI,aAAgB,GAAA,KAAA,EACrD,GAAI,CAAA,CAAC,OAAY,KAAA,OAAA,CAAQ,aAAa,CAAA,CACtC,KAAK,GAAG,CAAA,CAAA;AAEX,IAAK,KAAA,WAAA;AAAA,MACHA,aAAA;AAAA,QACE,KAAK,sCAAuC,CAAA;AAAA,UAC1C,MAAQ,EAAA,kBAAA;AAAA,UACR,KAAO,EAAA,GAAA;AAAA,UACP,QAAQ,IAAK,CAAA,IAAA;AAAA,SACd,CAAA;AAAA,OACH;AAAA,MACA,eAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,MAAM,iBAAiB,IAGpB,EAAA;AACD,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,EAAE,MAAA,EAAQ,eAAgB,EAAA,GAAI,QAAQ,EAAC,CAAA;AAE7C,IAAM,MAAA,UAAA,GAAa,KAAK,KAAM,CAAA,iBAAA,CAAA;AAE9B,IAAM,MAAA,OAAA,GAAU,IAAK,CAAA,eAAA,EAAiB,WAAe,IAAA,EAAA,CAAA;AACrD,IAAM,MAAA,eAAA,GAAkB,IAAK,CAAA,eAAA,EAAiB,YAAgB,IAAA,EAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GAAY,KAAK,eAAiB,EAAA,SAAA,CAAA;AACxC,IAAM,MAAA,UAAA,GAAa,KAAK,eAAiB,EAAA,UAAA,CAAA;AACzC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,eAAiB,EAAA,QAAA,IAAY,EAAC,CAAA;AACpD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,eAAiB,EAAA,YAAA,IAAgB,EAAC,CAAA;AAE5D,IAAA,MAAM,mBACJ,IAAK,CAAA,eAAA,EAAiB,KAAM,CAAA,WAAA,CAAY,SAAS,EAAC,CAAA;AAEpD,IAAA,MAAM,mBACJ,IAAK,CAAA,eAAA,EAAiB,KAAM,CAAA,WAAA,CAAY,SAAS,EAAC,CAAA;AAEpD,IAAA,IAAI,WAAW,WAAY,CAAA,SAAA;AAAA,MACzB,KAAK,2BAA4B,CAAA;AAAA,QAC/B,UAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA;AAAA,QACA,EAAA,EAAI,IAAK,CAAA,qBAAA,EAAuB,QAAS,EAAA;AAAA,QACzC,OAAA,EAAS,KAAK,KAAM,CAAA,eAAA,CAAgB,IAAI,CAAC,IAAA,KAAS,KAAK,IAAI,CAAA;AAAA,QAC3D,SAAW,EAAA,MAAA;AAAA,QACX,cAAc,eAAiB,EAAA,YAAA;AAAA,QAC/B,SAAA;AAAA,OACD,CAAA;AAAA,MACD,EAAE,aAAa,QAAS,EAAA;AAAA,KAC1B,CAAA;AAEA,IAAW,QAAA,GAAA,CAAA,EAAG,QAAQ,CAAA,EACpB,QAAS,CAAA,MAAA,GAAS,IAAI,GAAM,GAAA,EAC9B,CAAG,EAAA,IAAA,CAAK,oCAAqC,CAAA;AAAA,MAC3C,gBAAA;AAAA,MACA,gBAAA;AAAA,KACD,CAAC,CAAA,iBAAA,EAAoB,IAAK,CAAA,2CAAA;AAAA,MACzB,YAAA;AAAA,KACD,CAAgB,aAAA,EAAA,IAAA,CAAK,iCAAkC,CAAA;AAAA,MACtD,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,QAAA,IAAY,EAAE,CAAA;AAAA,KACvC,CAAC,CAAe,YAAA,EAAA,UAAA,IAAc,EAAE,CAAA,CAAA,CAAA;AAEjC,IAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,MAC3BA,aAAA;AAAA,QACE,KAAK,6BAA8B,CAAA;AAAA,UACjC,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,UACzB,OAEI,IAAA,CAAK,MAAM,cAAgB,EAAA,KAAA;AAAA,UAC/B,MAAA,EAEI,kBAAA;AAAA,UACJ,UAAU,IAAK,CAAA,IAAA;AAAA,UACf,QAAU,EAAA,IAAA;AAAA,UACV,GAMI,IAAA;AAAA,SACL,CAAA;AAAA,OACH;AAAA,MACA;AAAA,QACE,QAAA,EAAU,SAAS,QAAS,EAAA;AAAA,OAC9B;AAAA,KACF,CAAA;AAEA,IAAI,IAAA,MAAA,EAAQ,MAAM,QAAU,EAAA;AAC1B,MAAA,MAAM,YAAe,GAAA,EAAE,GAAG,IAAA,CAAK,MAAM,KAAM,EAAA,CAAA;AAC3C,MAAM,MAAA,cAAA,GAAiB,KAAK,KAAM,CAAA,cAAA,CAAA;AAElC,MAAI,IAAA,cAAA,IAAkB,eAAe,IAAM,EAAA;AACzC,QAAO,OAAA,YAAA,CAAa,eAAe,IAAI,CAAA,CAAA;AAAA,OACzC;AACA,MAAA,MAAM,QAA8C,GAAAT,cAAA;AAAA,QAClD,MAAA,CAAO,KAAK,QAAS,CAAA,OAAA;AAAA,OAEpB,CAAA,GAAA;AAAA,QAAI,CAAC,OACJ,KAAA,IAAA,CAAK,mBAAoB,CAAA;AAAA,UACvB,GAAG,OAAA;AAAA,UACH,QAAU,EAAA,IAAA;AAAA,UACV,OAAS,EAAA,IAAA;AAAA,UACT,OAAS,EAAA,IAAA;AAAA,SACV,CAAA;AAAA,OACH,CACC,MAAO,CAAA,CAAC,OAAY,KAAA,CAAC,aAAa,OAAQ,CAAA,KAAK,CAAC,CAAA,CAChD,MAAO,CAAA,CAAC,KAAK,OAAa,MAAA,EAAE,GAAG,GAAA,EAAK,CAAC,OAAA,CAAQ,KAAK,GAAG,OAAA,EAAY,CAAA,EAAA,EAAE,CAAA,CAAA;AAEtE,MAAA,IAAI,UAAU,eAAiB,EAAA;AAC7B,QAAA,MAAM,QAAQ,eAAgB,CAAA,KAAA,CAAA;AAC9B,QAAA,IAAI,QAAW,GAAA,IAAA,CAAK,KAAM,CAAA,eAAA,CAAgB,IAAI,KAAK,CAAA,CAAA;AAEnD,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAA,QAAA,uBAAe,GAA+B,EAAA,CAAA;AAAA,SAChD;AACA,QAAA,QAAA,CAAS,GAAI,CAAA,MAAA,EAAQ,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA;AACpC,QAAA,IAAA,CAAK,KAAM,CAAA,eAAA,CAAgB,GAAI,CAAA,KAAA,EAAO,QAAQ,CAAA,CAAA;AAAA,OACzC,MAAA;AACL,QAAA,IAAA,CAAK,MAAM,KAAQ,GAAA,EAAE,GAAG,YAAA,EAAc,GAAG,QAAS,EAAA,CAAA;AAAA,OACpD;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,oBAAuB,GAAA;AAC3B,IAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,MAG3BS,aAAY,CAAA;AAAA,QACV,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,QACzB,MAAQ,EAAA,iBAAA;AAAA,QACR,MAAQ,EAAA,IAAA;AAAA,QACR,UAAU,MAAO,CAAA,WAAA;AAAA,QACjB,SAAW,EAAA,IAAA;AAAA,QACX,SAAW,EAAA,IAAA;AAAA,QACX,aAAe,EAAA,IAAA;AAAA,QACf,QAAQ,IAAK,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,MACD,EAAC;AAAA,KACH,CAAA;AAEA,IAAI,IAAA,MAAA,IAAU,OAAO,IAAM,EAAA;AACzB,MAAA,MAAM,uBACJT,cAAa,CAAA,MAAA,CAAO,KAAK,QAAS,CAAA,QAAA,CAAS,OAAO,CAAE,CAAA,MAAA;AAAA,QAClD,CAAC,IAAA,EAAM,EAAE,IAAA,EAAM,OAAa,MAAA,EAAE,GAAG,IAAA,EAAM,CAAC,IAAI,GAAG,OAAA,CAAQ,KAAK,CAAE,EAAA,CAAA;AAAA,QAC9D,EAAC;AAAA,OACH,CAAA;AAEF,MAAM,MAAA,YAAA,GAAoC,MAAO,CAAA,IAAA,CAAK,QAAS,CAAA,OAAA,GAC3DA,eAAa,MAAO,CAAA,IAAA,CAAK,QAAS,CAAA,OAAO,CAAE,CAAA,GAAA;AAAA,QACzC,IAAK,CAAA,mBAAA;AAAA,UAEP,EAAC,CAAA;AAEL,MAAA,IAAA,CAAK,oBAAuB,GAAA,oBAAA,CAAA;AAC5B,MAAA,MAAM,sBAA2C,EAAC,CAAA;AAClD,MAAA,MAAM,mBAAwC,EAAC,CAAA;AAC/C,MAAa,YAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AAChC,QAAA,IAAI,QAAQ,OAAY,KAAA,KAAA,CAAA;AAAW,UAAA,mBAAA,CAAoB,KAAK,OAAO,CAAA,CAAA;AAAA;AAC9D,UAAA,gBAAA,CAAiB,KAAK,OAAO,CAAA,CAAA;AAAA,OACnC,CAAA,CAAA;AAED,MAAoB,mBAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACjC,QAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,CAAE,CAAA,KAAK,CAAI,GAAA,CAAA,CAAA;AAAA,OAC7B,CAAA,CAAA;AACD,MAAiB,gBAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpC,QAAA,MAAM,eAAe,mBAAoB,CAAA,IAAA;AAAA,UACvC,CAAC,MAAA,KAAW,MAAO,CAAA,YAAA,KAAiB,OAAQ,CAAA,YAAA;AAAA,SAC9C,CAAA;AACA,QAAI,IAAA,YAAA,IAAgB,OAAQ,CAAA,OAAA,KAAY,KAAW,CAAA,EAAA;AAEjD,UAAK,IAAA,CAAA,kBAAA;AAAA,YACH,OAAA;AAAA,YACA,YAAa,CAAA,KAAA;AAAA,YACb,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,WACxB,CAAA;AAAA,SACF;AACE,UAAQ,OAAA,CAAA,IAAA;AAAA,YACN,CAAA,wDAAA,CAAA;AAAA,YACA,OAAA;AAAA,YACA,mBAAA;AAAA,WACF,CAAA;AAAA,OACH,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEA,MAAM,aAAa,EAAY,EAAA;AAC7B,IAAA,IAAI,OAAO,UAAY,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACjC,IAAA,IAAI,KAAK,cAAgB,EAAA;AACvB,MAAA,IAAA,CAAK,MAAO,CAAA;AAAA,QACV,SAAS,MAAO,CAAA,0BAAA;AAAA,QAChB,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AACD,MAAA,OAAA;AAAA,KACF;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,QAAY,IAAA,CAAC,KAAK,YAAc,EAAA;AACxC,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,iBAAkB,CAAA,IAAA,CAAK,OAAO,KAAK,CAAA,CAAA;AAC/D,MAAI,IAAA,OAAO,aAAa,QAAU,EAAA;AAChC,QAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,EAAE,CAAA,GAAI,KAAK,mBAAoB,CAAA;AAAA,UAC9C,GAAG,IAAA;AAAA,UACH,WAAa,EAAA,QAAA;AAAA,UACb,IAAM,EAAA,IAAA;AAAA,UACN,MAAQ,EAAA,IAAA;AAAA,UACR,QAAU,EAAA,QAAA;AAAA,SACX,CAAA,CAAA;AAAA,OACH;AAAO,QAAK,IAAA,CAAA,KAAA,CAAM,KAAM,CAAA,EAAE,CAAI,GAAA,EAAE,GAAG,IAAK,CAAA,YAAA,CAAa,EAAE,CAAA,EAAG,QAAS,EAAA,CAAA;AAAA,KACrE;AAEA,IAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,IAAA;AAAA,MAe3BS,aAAA;AAAA,QACE,KAAK,yBAA0B,CAAA;AAAA,UAC7B,MAAQ,EAAA,cAAA;AAAA,UACR,OAAA,EAAS,KAAK,UAAW,EAAA;AAAA,UACzB,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,MAAM,IAAK,CAAA,QAAA;AAAA,UACX,MAAQ,EAAA,IAAA;AAAA,UACR,QAAQ,IAAK,CAAA,IAAA;AAAA,SACd,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAEA,IAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,MAAA,MAAM,UAAa,GAAA,MAAA,CAAO,IAAK,CAAA,QAAA,EAAU,IAAM,EAAA,OAAA,CAAA;AAC/C,MAAI,IAAA,UAAA;AACF,QAAA,IAAA,CAAK,YAAa,CAAA,UAAA,CAAW,KAAK,CAAA,GAAI,KAAK,mBAAoB,CAAA;AAAA,UAC7D,GAAG,IAAA;AAAA,UACH,GAAG,UAAA;AAAA,SACJ,CAAA,CAAA;AAAA,KACL;AAAA,GACF;AAAA,EAEU,6BAA6B,MAAiB,EAAA;AACtD,IAEI,OAAA,MAAA,EAaC,UAAU,IAAS,KAAA,mBAAA,CAAA;AAAA,GAE1B;AAAA,EAEQ,kBAAA,CACN,IACA,EAAA,KAAA,EACA,MACA,EAAA;AACA,IAAA,IAAI,CAAC,IAAK,CAAA,KAAA,CAAM,eAAgB,CAAA,GAAA,CAAI,KAAK,CAAG,EAAA;AAC1C,MAAA,IAAA,CAAK,MAAM,eAAgB,CAAA,GAAA,CAAI,KAAO,kBAAA,IAAI,KAAK,CAAA,CAAA;AAAA,KACjD;AACA,IAAA,IAAA,CAAK,MAAM,eAAgB,CAAA,GAAA,CAAI,KAAK,CAAG,EAAA,GAAA,CAAI,QAAQ,IAAI,CAAA,CAAA;AAAA,GACzD;AAAA,EAwFU,0BAAA,CACR,OACA,IACQ,EAAA;AACR,IAAM,MAAA,cAAA,GAAiB,KAAK,KAAM,CAAA,cAAA,CAAA;AAClC,IAAI,IAAA,cAAA;AAAgB,MAAO,OAAA,KAAA,CAAA;AAE3B,IAAM,MAAA,aAAA,GAAgB,KAAK,KAAM,CAAA,eAAA,CAAA;AACjC,IAAA,MAAM,gBAAwB,EAAC,CAAA;AAC/B,IAAA,MAAM,mBAA2B,EAAC,CAAA;AAClC,IAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,MAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,eAAA,EAAiB,KAAS,IAAA,QAAA,CAAA;AAC7C,MAAA,MAAM,kBAAkB,IAAK,CAAA,KAAA,CAAM,gBAAgB,GAAI,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AACpE,MAAA,MAAM,oCAAoC,eACtC,GAAA,KAAA,CAAM,KAAK,eAAgB,CAAA,MAAA,EAAQ,CAAE,CAAA,IAAA;AAAA,QACnC,CAAC,aAAa,OAAQ,CAAA,OAAA,IAAW,QAAQ,IAAU,MAAA,KAAA,CAAM,CAAC,CAAG,EAAA,IAAA;AAAA,OAE/D,GAAA,KAAA,CAAA,CAAA;AACJ,MAAI,IAAA,iCAAA;AAAmC,QAAc,aAAA,CAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KACpE;AACE,MAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,QAAI,IAAA,aAAA,CAAc,KAAK,CAAC,MAAA,KAAW,OAAO,IAAS,KAAA,IAAA,CAAK,IAAI,CAAG,EAAA;AAC7D,UAAA,aAAA,CAAc,KAAK,IAAI,CAAA,CAAA;AAAA,SACzB;AAAO,UAAA,gBAAA,CAAiB,KAAK,IAAI,CAAA,CAAA;AAAA,OAClC,CAAA,CAAA;AACH,IAAI,IAAA,aAAA,CAAc,SAAS,CAAG,EAAA;AAC5B,MAAA,KAAK,KAAK,MAAO,CAAA;AAAA,QACf,OAAS,EAAA,CAAA,EAAG,MAAO,CAAA,sBAAsB,KAAK,aAC3C,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,OAAQ,CAAA,IAAI,CAC7B,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,QACb,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AACD,MAAO,OAAA,gBAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEU,yBAAyB,KAAuB,EAAA;AACxD,IAAA,OAAO,KAAM,CAAA,KAAA;AAAA,MACX,CAAA;AAAA,MACA,WAAA,CAAY,KAAK,QAAY,IAAA,IAAA,CAAK,MAAM,eAAiB,EAAA,MAAA,IAAU,IAAI,CAAC,CAAA;AAAA,KAC1E,CAAA;AAAA,GACF;AAAA,EAEU,mBACR,CAAA,KAAA,EACA,YAAe,GAAA,IAAA,EACf,SACQ,EAAA;AACR,IAAM,MAAA,QAAA,GACJ,cAAc,KACV,CAAA,GAAA,IAAA,CAAK,MAAM,YAAa,CAAA,MAAA,CAAO,CAAC,CAAM,KAAA;AACpC,MAAO,OAAA,OAAO,cAAc,QACxB,GAAA,CAAA,CAAE,OAAO,SACT,GAAA,CAAA,CAAE,OAAO,SAAU,CAAA,EAAA,CAAA;AAAA,KACxB,CACD,GAAA,IAAA,CAAK,KAAM,CAAA,YAAA,CAAA;AAEjB,IAAI,IAAA,CAAC,SAAS,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,OAAA,KAAY,EAAE,CAAG,EAAA;AAC3C,MAAA,MAAM,oCAA4C,EAAC,CAAA;AACnD,MAAA,MAAM,+BAAuC,EAAC,CAAA;AAC9C,MAAA,IAAI,OAAU,GAAA,QAAA,CAAA;AACd,MAAA,MAAM,YAAe,GAAA,KAAA,CAAM,MAAO,CAAA,CAAC,WAAgB,KAAA;AACjD,QAAM,MAAA,SAAA,GAAA,CAAa,YAAY,IAAK,CAAA,KAAA,CAAM,UAAU,CAAK,IAAA,IAAI,CAAC,CAAA,CAAA;AAE9D,QAAA,IAAI,SAAY,GAAA,IAAA,CAAA;AAChB,QAAA,IACE,CAAC,QAAA,CAAS,IAAK,CAAA,CAAC,cAAmB,KAAA;AACjC,UAAA,IACE,CAAC,cAAe,CAAA,OAAA,CACb,KAAM,CAAA,GAAG,EACT,GAAI,CAAA,CAAC,OAAY,KAAA,OAAA,CAAQ,aAAa,CAAA,CACtC,SAAS,SAAU,CAAA,WAAA,EAAa,CACnC,EAAA;AACA,YAAO,OAAA,KAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,IAAA,CAAA;AAAA,SACR,CACD,EAAA;AACA,UAAY,SAAA,GAAA,KAAA,CAAA;AACZ,UAAA,iCAAA,CAAkC,KAAK,WAAW,CAAA,CAAA;AAAA,SACpD;AACA,QAAA,IACE,SACA,IAAA,CAAC,QAAS,CAAA,IAAA,CAAK,CAAC,cAAwB,KAAA;AACtC,UAAA,IAAI,MAAO,CAAA,cAAA,CAAe,OAAO,CAAA,GAAI,YAAY,IAAM,EAAA;AACrD,YAAU,OAAA,GAAA,MAAA,CAAO,eAAe,OAAO,CAAA,CAAA;AACvC,YAAO,OAAA,KAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,IAAA,CAAA;AAAA,SACR,CACD,EAAA;AACA,UAAA,4BAAA,CAA6B,KAAK,WAAW,CAAA,CAAA;AAC7C,UAAY,SAAA,GAAA,KAAA,CAAA;AAAA,SACd;AAEA,QAAA,IAAI,CAAC,SAAA;AAAW,UAAO,OAAA,KAAA,CAAA;AAEvB,QAAO,OAAA,IAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAED,MAAA,IAAI,YAAc,EAAA;AAChB,QAAA,IAAI,YAAe,GAAA,EAAA,CAAA;AAEnB,QAAI,IAAA,iCAAA,CAAkC,SAAS,CAAG,EAAA;AAChD,UAAA,MAAM,aAAa,iCAAkC,CAAA,MAAA;AAAA,YACnD,CAAC,aAAa,OAAY,KAAA;AACxB,cAAA,IAAI,YAAY,MAAW,KAAA,CAAA;AAAG,gBAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AAC7C,cAAA,OAAO,CAAG,EAAA,WAAW,CAAK,EAAA,EAAA,OAAA,CAAQ,IAAI,CAAA,CAAA,CAAA;AAAA,aACxC;AAAA,YACA,EAAA;AAAA,WACF,CAAA;AAEA,UAAA,YAAA,GAAe,CAAW,QAAA,EAAA,MAAA,CAAO,eAAe,CAAA,eAAA,EAAkB,UAAU,CAAA,CAAA,CAAA;AAAA,SAC9E;AAEA,QAAI,IAAA,4BAAA,CAA6B,SAAS,CAAG,EAAA;AAC3C,UAAA,MAAM,aAAa,4BAA6B,CAAA,MAAA;AAAA,YAC9C,CAAC,aAAa,OAAY,KAAA;AACxB,cAAA,IAAI,YAAY,MAAW,KAAA,CAAA;AAAG,gBAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AAC7C,cAAA,OAAO,CAAG,EAAA,WAAW,CAAK,EAAA,EAAA,OAAA,CAAQ,IAAI,CAAA,CAAA,CAAA;AAAA,aACxC;AAAA,YACA,EAAA;AAAA,WACF,CAAA;AAEA,UAAA,IAAI,aAAa,MAAS,GAAA,CAAA;AACxB,YAAA,YAAA,GAAe,GAAG,YAAY,CAAA,aAAA,CAAA,CAAA;AAChC,UAAA,YAAA,GAAe,CAAG,EAAA,YAAY,CAAG,EAAA,aAAA,CAAc,OAAO,aAAe,EAAA;AAAA,YACnE,IAAA,EAAM,SAAS,UAAU,CAAA,CAAA;AAAA,YACzB,IAAM,EAAA,CAAA,EAAG,WAAY,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,WAC9B,CAAC,CAAA,CAAA,CAAA;AAAA,SACJ;AAEA,QAAA,IAAI,aAAa,MAAS,GAAA,CAAA;AACxB,UAAA,IAAA,CAAK,MAAO,CAAA;AAAA,YACV,OAAS,EAAA,YAAA;AAAA,YACT,IAAM,EAAA,SAAA;AAAA,WACP,CAAA,CAAA;AAAA,OACL;AAEA,MAAO,OAAA,YAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEU,mBAAA,CACR,OACA,IACQ,EAAA;AACR,IAAA,IAAI,IAAM,EAAA,MAAA;AAAQ,MAAO,OAAA,KAAA,CAAA;AAEzB,IAAM,MAAA,YAAA,GAAe,KAAK,KAAM,CAAA,eAAA,CAAA;AAChC,IAAM,MAAA,oBAAA,GAAuB,KAAK,UAAW,CAAA,MAAA;AAAA,MAC3C,CAAC,OAAA,KAAY,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,CAAA;AAAA,KACvC,CAAA;AACA,IAAA,IAAI,wBAA2B,GAAA,EAAA,CAAA;AAC/B,IAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,MAAO,CAAA,CAAC,OAAY,KAAA;AAC9C,MAAM,MAAA,UAAA,GACJ,YAAa,CAAA,SAAA,CAAU,CAAC,MAAA,KAAW,MAAO,CAAA,IAAA,KAAS,OAAQ,CAAA,IAAI,CAC7D,KAAA,CAAA,CAAA,IACF,oBAAqB,CAAA,SAAA;AAAA,QACnB,CAAC,MAAA,KAAW,MAAO,CAAA,OAAA,KAAY,OAAQ,CAAA,IAAA;AAAA,OACnC,KAAA,CAAA,CAAA,CAAA;AAER,MAAI,IAAA,UAAA;AACF,QAA2B,wBAAA,GAAA,CAAA,EAAG,wBAAwB,CAAA,EACpD,wBAAyB,CAAA,MAAA,GAAS,IAAI,IAAO,GAAA,EAC/C,CAAG,EAAA,OAAA,CAAQ,IAAI,CAAA,CAAA,CAAA;AAEjB,MAAA,OAAO,CAAC,UAAA,CAAA;AAAA,KACT,CAAA,CAAA;AACD,IAAA,IAAI,yBAAyB,MAAS,GAAA,CAAA;AACpC,MAAA,IAAA,CAAK,MAAO,CAAA;AAAA,QACV,OAAS,EAAA,CAAA,EAAG,MAAO,CAAA,sBAAsB,KAAK,wBAAwB,CAAA,CAAA;AAAA,QACtE,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AACH,IAAO,OAAA,aAAA,CAAA;AAAA,GACT;AAAA,EAEU,qBAAA,CACR,OACA,IAMQ,EAAA;AACR,IAAM,MAAA,cAAA,GAAiB,KAAK,KAAM,CAAA,cAAA,CAAA;AAClC,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAA,MAAM,WAAW,KAAM,CAAA,MAAA;AAAA,QACrB,CAAC,YACC,OAAQ,CAAA,IAAA,KAAS,eAAe,OAChC,IAAA,OAAA,CAAQ,SAAS,cAAe,CAAA,IAAA;AAAA,OACpC,CAAA;AACA,MAAI,IAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACzB,QAAA,IAAA,CAAK,MAAO,CAAA;AAAA,UACV,IAAM,EAAA,SAAA;AAAA,UACN,SAAS,MAAO,CAAA,6BAAA;AAAA,SACjB,CAAA,CAAA;AAAA,OACH;AACA,MAAO,OAAA,QAAA,CAAA;AAAA,KACT;AAeA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AASF;;;;;;;;ACx1CO,MAAM,wBAAwB,WAAY,CAAA;AAAA,EAC/C,WAAA,CACY,IACH,EAAA,WAAA,EACC,KACR,EAAA;AACA,IAAA,KAAA,CAAM,OAAO,GAAM,GAAA,KAAA,CAAM,UAAW,CAAA,EAAA,EAAI,MAAM,WAAW,CAAA,CAAA;AAJ/C,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AACH,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACC,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAKV,IAAUnB,eAAA,CAAA,IAAA,EAAA,mCAAA,EAAoC,CAC5C,iBACG,KAAA;AACH,MAAO,OAAA;AAAA,QACL,GAAG,iBAAA;AAAA,QACH,SAAW,EAAA,IAAA,CAAK,KAAM,CAAA,OAAA,GAAU,UAAW,CAAA,SAAA;AAAA,OAC7C,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GATA;AAUF;;;;;;;;ACdO,MAAM,aAAa,iBAAuC,CAAA;AAAA,EAA1D,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAAA;AACL,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAA4B,EAAC,CAAA,CAAA;AAAA,GAAA;AAAA,EAE7B,MAAM,KAAK,IAAY,EAAA;AACrB,IAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AAErB,IAAA,IAAA,CAAK,WAAW,IAAI,eAAA;AAAA,MAClB,KAAK,UAAW,CAAA,SAAA;AAAA,MAChB;AAAA,QACE,cAAA,EAAgB,KAAK,UAAW,CAAA,cAAA;AAAA,OAClC;AAAA,MACA,IAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF;;AClBO,SAAS,kBAAkB,SAAmB,EAAA;AACnD,EAAA,MAAM,KAAQ,GAAA,oBAAA,CAAqB,QAAS,EAAA,CAAE,qBAAqB,SAAS,CAAA,CAAA;AAE5E,EAAM,MAAA,GAAA,uBAAU,GAAY,EAAA,CAAA;AAC5B,EAAM,KAAA,CAAA,YAAA,CAAa,OAAQ,CAAA,CAAC,CAAM,KAAA;AAChC,IAAA,IAAI,KAAK,CAAG,EAAA;AACV,MAAA,GAAA,CAAI,IAAI,CAAC,CAAA,CAAA;AAAA,KACX;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,GAAG,GAAG,CAAA,CAAA;AAChB;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA,IAAA,uBAAA,CAAA;AAUO,MAAM,iBAAkB,CAAA;AAAA,EAO7B,YAAoB,IAAa,EAAA;AAAb,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AANpB,IAAgCA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA;AAAA,MAC9B,gBAAkB,EAAA,IAAA;AAAA,MAClB,kBAAoB,EAAA,IAAA;AAAA,MACpB,SAAW,EAAA,KAAA;AAAA,KACb,CAAA,CAAA;AAOA,IAAAG,cAAA,CAAA,IAAA,EAAA,uBAAA,EAA0B,MAAM;AAAA,KAAC,CAAA,CAAA;AAJ/B,IAAA,cAAA,CAAe,IAAM,EAAA,EAAE,KAAO,EAAA,UAAA,EAAY,CAAA,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AAAA,GACZ;AAAA,EAGQ,IAAO,GAAA;AACb,IAAAF,cAAA,CAAA,IAAA,EAAK,uBAAL,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AAEA,IAAA,MAAM,EAAE,KAAO,EAAA,WAAA,EAAa,SAAU,EAAA,GAAI,KAAK,IAAK,CAAA,UAAA,CAAA;AACpD,IAAM,MAAA,WAAA,GAAc,KAAQ,GAAA,WAAA,KAAgB,CAAI,GAAA,KAAA,CAAA;AAEhD,IAAA,MAAM,EAAK,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,MAAO,CAAA,EAAA;AAAA,MACrC,mBAAA;AAAA,MACA,CAAC,CAAC,SAAS,CAAM,KAAA;AACf,QAAA,WAAA,CAAY,MAAM;AAChB,UAAK,IAAA,CAAA,KAAA,CAAM,mBACT,SAAU,CAAA,MAAA,KAAW,KACrB,CAAC,EAAE,KACC,GAAA,SAAA,CAAU,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,KAAA,KAAU,CAAC,CAAA,IAAK,WACxC,GAAA,SAAA,CAAU,KAAK,CAAC,CAAA,KAAM,CAAE,CAAA,KAAA,KAAU,CAAC,CAAA,CAAA,CAAA;AACzC,UAAK,IAAA,CAAA,KAAA,CAAM,qBACT,SAAU,CAAA,MAAA,KAAW,KACrB,CAAC,EAAE,QACC,SAAU,CAAA,IAAA;AAAA,YACR,CAAC,CAAM,KAAA,CAAA,CAAE,GAAK,EAAA,aAAA,EAAe,UAAU,SAAY,GAAA,CAAA;AAAA,cAErD,SAAU,CAAA,IAAA;AAAA,YACR,CAAC,CAAM,KAAA,CAAA,CAAE,UAAU,IAAK,CAAA,IAAA,CAAK,WAAW,SAAY,GAAA,CAAA;AAAA,WACtD,CAAA,CAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AACA,IAAAC,cAAA,CAAA,IAAA,EAAK,yBAA0B,MAAM;AACnC,MAAG,EAAA,EAAA,CAAA;AAAA,KACL,CAAA,CAAA;AAAA,GACF;AAAA,EAEA,IAAI,aAAgB,GAAA;AAClB,IAAA,MAAM,EAAE,eAAiB,EAAA,aAAA,EAAe,iBAAkB,EAAA,GACxD,KAAK,IAAK,CAAA,UAAA,CAAA;AACZ,IAAA,OAAO,CAAC,eAAA,IAAmB,CAAC,aAAA,IAAiB,CAAC,iBAAA,CAAA;AAAA,GAChD;AAAA,EACA,IAAI,aAAgB,GAAA;AAClB,IAAA,MAAM,EAAE,eAAiB,EAAA,aAAA,EAAe,iBAAkB,EAAA,GACxD,KAAK,IAAK,CAAA,UAAA,CAAA;AACZ,IAAA,OAAO,CAAC,eAAA,IAAmB,CAAC,aAAA,IAAiB,CAAC,iBAAA,CAAA;AAAA,GAChD;AAAA,EACA,IAAI,eAAkB,GAAA;AACpB,IAAA,MAAM,EAAE,eAAA,EAAiB,eAAgB,EAAA,GAAI,KAAK,IAAK,CAAA,UAAA,CAAA;AACvD,IAAO,OAAA,CAAC,mBAAmB,CAAC,eAAA,CAAA;AAAA,GAC9B;AAAA,EACA,IAAI,gBAAmB,GAAA;AACrB,IACE,OAAA,IAAA,CAAK,MAAM,gBACX,IAAA,IAAA,CAAK,MAAM,SACX,IAAA,IAAA,CAAK,KAAK,KAAM,CAAA,SAAA,CAAA;AAAA,GAEpB;AAAA,EACA,IAAI,kBAAqB,GAAA;AACvB,IACE,OAAA,IAAA,CAAK,MAAM,kBACX,IAAA,IAAA,CAAK,MAAM,SACX,IAAA,IAAA,CAAK,KAAK,KAAM,CAAA,SAAA,CAAA;AAAA,GAEpB;AAAA,EACA,IAAI,aAAgB,GAAA;AAClB,IAAA,OAAO,IAAK,CAAA,KAAA,CAAM,SAAa,IAAA,IAAA,CAAK,KAAK,KAAM,CAAA,SAAA,CAAA;AAAA,GACjD;AAAA,EACA,IAAI,gBAAmB,GAAA;AACrB,IAAA,OACE,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,YAAA,EAAe,CAAA,MAAA,KAAW,CAC/C,IAAA,IAAA,CAAK,KAAM,CAAA,SAAA,IACX,IAAK,CAAA,IAAA,CAAK,KAAM,CAAA,SAAA,CAAA;AAAA,GAEpB;AAAA,EAEA,MAAc,gBAAgB,EAAyB,EAAA;AACrD,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,IAAA,CAAA;AAEvB,IAAI,IAAA;AACF,MAAA,MAAM,EAAG,EAAA,CAAA;AAAA,aACF,CAAG,EAAA;AACV,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AAAA,KACf,SAAA;AACA,MAAA,IAAA,CAAK,MAAM,SAAY,GAAA,KAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAAA,EAEA,MAAM,MAAS,GAAA;AACb,IAAM,MAAA,IAAA,CAAK,gBAAgB,YAAY;AACrC,MAAA,MAAM,EAAE,KAAO,EAAA,WAAA,EAAa,QAAS,EAAA,GAAI,KAAK,IAAK,CAAA,UAAA,CAAA;AACnD,MAAM,MAAA,SAAA,GAAY,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA,CAAA;AAEvC,MAAI,IAAA,SAAA,GAAY,kBAAkB,SAAS,CAAA,CAAA;AAE3C,MAAA,IAAI,KAAO,EAAA;AACT,QAAM,MAAA,MAAA,GAAA,CAAU,cAAc,CAAK,IAAA,QAAA,CAAA;AACnC,QAAA,SAAA,GAAY,SAAU,CAAA,GAAA,CAAI,CAAC,KAAA,KAAU,QAAQ,MAAM,CAAA,CAAA;AAAA,OACrD;AACA,MAAA,MAAM,qBACJ,KAAS,IAAA,SAAA,CAAU,QAAU,CAAA,CAAA,WAAA,GAAc,KAAK,QAAQ,CAAA,CAAA;AAE1D,MAAA,IAAI,MAAM,IAAA,CAAK,IAAK,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrC,QAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,QAAS,EAAA,CAAA;AAE5C,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAI,kBAAoB,EAAA;AACtB,YAAM,KAAA,CAAA,YAAA,GAAe,CAAC,QAAA,GAAW,CAAC,CAAA,CAAA;AAAA,WAC7B,MAAA;AACL,YAAA,KAAA,CAAM,YAAe,GAAA,KAAA,CAAM,YACxB,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,CAAI,GAAA,CAAC,CAChB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,KAAK,CAAC,CAAA,CAAA;AAAA,WACzB;AAAA,SACK,MAAA;AACL,UAAA,KAAA,CAAM,YAAe,GAAA,KAAA,CAAM,YACxB,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,CAAI,GAAA,CAAC,CAChB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,KAAK,CAAC,CAAA,CAAA;AAAA,SACzB;AAEA,QAAA,KAAA,CAAM,aAAa,KAAM,CAAA,YAAA,CAAa,KAAM,CAAA,YAAA,CAAa,SAAS,CAAC,CAAA,CAAA;AACnE,QAAA,KAAA,CAAM,oBACJ,KAAM,CAAA,YAAA,CAAa,KAAM,CAAA,YAAA,CAAa,SAAS,CAAC,CAAA,CAAA;AAClD,QAAA,KAAA,CAAM,SAAY,GAAA,KAAA,CAAA;AAElB,QAAK,IAAA,CAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,OACrC;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,QAAW,GAAA;AACf,IAAM,MAAA,IAAA,CAAK,gBAAgB,YAAY;AACrC,MAAA,MAAM,EAAE,KAAO,EAAA,WAAA,EAAa,UAAU,SAAU,EAAA,GAAI,KAAK,IAAK,CAAA,UAAA,CAAA;AAC9D,MAAM,MAAA,SAAA,GAAY,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA,CAAA;AAEvC,MAAI,IAAA,SAAA,GAAY,kBAAkB,SAAS,CAAA,CAAA;AAE3C,MAAA,IAAI,KAAO,EAAA;AACT,QAAM,MAAA,MAAA,GAAA,CAAU,cAAc,CAAK,IAAA,QAAA,CAAA;AACnC,QAAA,SAAA,GAAY,SAAU,CAAA,GAAA,CAAI,CAAC,KAAA,KAAU,QAAQ,MAAM,CAAA,CAAA;AAAA,OACrD;AAEA,MAAA,MAAM,oBACJ,KAAS,IAAA,SAAA,CAAU,QAAS,CAAA,WAAA,GAAc,WAAW,CAAC,CAAA,CAAA;AAExD,MAAA,IAAI,MAAM,IAAA,CAAK,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AACvC,QAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,QAAS,EAAA,CAAA;AAE5C,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAI,iBAAmB,EAAA;AACrB,YAAM,KAAA,CAAA,YAAA,GAAe,CAAC,CAAC,CAAA,CAAA;AAAA,WAClB,MAAA;AACL,YAAA,KAAA,CAAM,YAAe,GAAA,KAAA,CAAM,YACxB,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,CAAI,GAAA,CAAC,CAChB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,IAAI,QAAQ,CAAA,CAAA;AAAA,WAC/B;AAAA,SACK,MAAA;AACL,UAAA,KAAA,CAAM,YAAe,GAAA,KAAA,CAAM,YACxB,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,CAAI,GAAA,CAAC,CAChB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,IAAI,SAAS,CAAA,CAAA;AAAA,SAChC;AACA,QAAA,KAAA,CAAM,aAAa,IAAK,CAAA,GAAA,CAAI,MAAM,UAAa,GAAA,CAAA,EAAG,YAAY,CAAC,CAAA,CAAA;AAC/D,QAAA,KAAA,CAAM,oBAAoB,IAAK,CAAA,GAAA,CAAI,MAAM,UAAa,GAAA,CAAA,EAAG,YAAY,CAAC,CAAA,CAAA;AACtE,QAAA,KAAA,CAAM,SAAY,GAAA,KAAA,CAAA;AAElB,QAAK,IAAA,CAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,OACrC;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,MAAS,GAAA;AACb,IAAM,MAAA,IAAA,CAAK,gBAAgB,YAAY;AACrC,MAAA,MAAM,EAAE,WAAA,EAAa,QAAS,EAAA,GAAI,KAAK,IAAK,CAAA,UAAA,CAAA;AAE5C,MAAA,IAAI,MAAM,IAAA,CAAK,IAAK,CAAA,MAAA,EAAU,EAAA;AAC5B,QAAM,MAAA,YAAA,GAAe,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA,CAAA;AAE1C,QAAA,MAAM,UAAa,GAAA,IAAA,CAAK,IAAK,CAAA,YAAA,GAAe,QAAQ,CAAA,CAAA;AAEpD,QAAI,IAAA,mBAAA,CAAA;AAEJ,QAAA,IAAI,gBAAgB,UAAY,EAAA;AAC9B,UAAA,mBAAA,GAAA,CAAuB,eAAe,CAAK,IAAA,QAAA,CAAA;AAAA,SACtC,MAAA;AACL,UAAA,mBAAA,GAAsB,YAAe,GAAA,CAAA,CAAA;AAAA,SACvC;AAEA,QAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,QAAS,EAAA,CAAA;AAE5C,QAAM,KAAA,CAAA,YAAA,GAAe,CAAC,mBAAmB,CAAA,CAAA;AACzC,QAAA,KAAA,CAAM,UAAa,GAAA,mBAAA,CAAA;AACnB,QAAA,KAAA,CAAM,aAAgB,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAM,eAAe,CAAC,CAAA,CAAA;AACrD,QAAA,KAAA,CAAM,iBAAoB,GAAA,mBAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,SAAY,GAAA,KAAA,CAAA;AAElB,QAAK,IAAA,CAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,OACrC;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,mBAAmB,KAAgB,EAAA;AACvC,IAAM,MAAA,IAAA,CAAK,gBAAgB,YAAY;AACrC,MAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,QAAS,EAAA,CAAA;AAC5C,MAAA,MAAM,SAAY,GAAA,iBAAA,CAAkB,IAAK,CAAA,IAAA,CAAK,WAAW,SAAS,CAAA,CAAA;AAElE,MAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,QAAA,MAAM,IAAK,CAAA,IAAA,CAAK,SAAU,CAAA,CAAC,KAAK,CAAC,CAAA,CAAA;AACjC,QAAI,IAAA,KAAA,CAAM,aAAa,KAAO,EAAA;AAC5B,UAAM,KAAA,CAAA,UAAA,GAAa,MAAM,UAAa,GAAA,CAAA,CAAA;AAAA,SACxC;AACA,QAAM,KAAA,CAAA,YAAA,GAAe,UAAU,GAAI,CAAA,CAAC,MAAO,CAAI,GAAA,KAAA,GAAQ,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,CAAA;AACjE,QAAK,IAAA,CAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,OAC9B,MAAA;AACL,QAAA,MAAM,EAAE,WAAA,EAAa,QAAS,EAAA,GAAI,KAAK,IAAK,CAAA,UAAA,CAAA;AAE5C,QAAI,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AAE1B,UAAA,OAAA;AAAA,SACF;AAGA,QAAA,IAAI,GAAM,GAAA,QAAA,CAAA;AACV,QAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACvB,UAAA,IAAI,CAAI,GAAA,GAAA;AAAK,YAAM,GAAA,GAAA,CAAA,CAAA;AAAA,SACpB,CAAA,CAAA;AAGD,QAAA,MAAM,eAAkB,GAAA,MAAM,IAAK,CAAA,IAAA,CAAK,UAAU,SAAS,CAAA,CAAA;AAC3D,QAAA,IAAI,CAAC,eAAiB,EAAA;AAEpB,UAAA,OAAA,CAAQ,MAAM,wCAAwC,CAAA,CAAA;AACtD,UAAA,OAAA;AAAA,SACF;AAKA,QAAA,MAAM,qBAAqB,GAAQ,KAAA,CAAA,CAAA;AAEnC,QAAA,IAAI,kBAAoB,EAAA;AACtB,UAAA,IAAI,cAAc,CAAG,EAAA;AAEnB,YAAM,KAAA,CAAA,YAAA,GAAe,CAAC,QAAA,GAAW,CAAC,CAAA,CAAA;AAAA,WAC7B,MAAA;AAEL,YAAA,IAAA,CAAK,MAAM,kBAAqB,GAAA,KAAA,CAAA;AAChC,YAAM,KAAA,CAAA,YAAA,GAAe,CAAC,CAAC,CAAA,CAAA;AAAA,WACzB;AAAA,SACK,MAAA;AAEL,UAAA,MAAM,cAAc,GAAM,GAAA,CAAA,CAAA;AAC1B,UAAA,KAAA,CAAM,eAAe,CAAC,IAAA,CAAK,GAAI,CAAA,WAAA,EAAa,CAAC,CAAC,CAAA,CAAA;AAAA,SAChD;AAGA,QAAM,KAAA,CAAA,UAAA,GAAa,KAAM,CAAA,YAAA,CAAa,CAAC,CAAA,CAAA;AACvC,QAAA,KAAA,CAAM,oBAAoB,KAAM,CAAA,UAAA,CAAA;AAChC,QAAA,KAAA,CAAM,SAAY,GAAA,KAAA,CAAA;AAGlB,QAAK,IAAA,CAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,OACrC;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF,CAAA;AAnQE,uBAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBF,IAAAkB,qBAAA,CAAA;AAwBO,MAAM,aACH,sBAYV,CAAA;AAAA,EAaE,YAAY,EAAE,UAAA,EAAY,KAAO,EAAA,GAAG,YAAmC,EAAA;AACrE,IAAM,MAAA,WAAA,GAAc,aAAa,KAAK,CAAA,CAAA;AACtC,IAAA,MAAM,cAAc,WAAY,CAAA,GAAA;AAAA,MAAI,CAAC,OACnC,KAAA,YAAA,CAAa,OAAQ,CAAA,UAAA,IAAc,QAAQ,GAAG,CAAA;AAAA,KAChD,CAAA;AAEA,IAAA,KAAA;AAAA,MACE;AAAA,QACE,GAAG,UAAA;AAAA,QACH,UAAY,EAAA;AAAA,UACV,WAAa,EAAA,KAAA,CAAM,UAAW,CAAA,OAAA,EAAS,CAAC,CAAA;AAAA,UACxC,OAAA,EAAS,WAAW,UAAc,IAAA,QAAA;AAAA,UAClC,KAAO,EAAA,KAAA;AAAA,UACP,KAAO,EAAA,KAAA,CAAM,UAAW,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA,UAChC,QAAU,EAAA,KAAA,CAAM,UAAW,CAAA,aAAA,EAAe,QAAQ,CAAA;AAAA,UAClD,SAAA,EAAW,aAAa,YAAa,CAAA,KAAK,EAAE,CAAC,CAAA,EAAG,UAAU,CAAE,CAAA,MAAA;AAAA,UAE5D,YAAA,sBAAkB,GAAI,EAAA;AAAA,UACtB,kBAAA,sBAAwB,GAAI,EAAA;AAAA,UAC5B,mBAAA,sBAAyB,GAAI,EAAA;AAAA,UAC7B,GAAG,UAAA;AAAA,SACL;AAAA,OACF;AAAA,MACA,WAAA,CAAY,IAAI,CAAC,EAAE,YAAAC,WAAY,EAAA,UAAA,EAAY,GAAG,OAAA,EAAc,KAAA;AAC1D,QAAO,OAAA,OAAA,CAAA;AAAA,OACR,CAAA;AAAA,MAED,WAAA;AAAA,KACF,CAAA;AAxCF,IAAArB,eAAA,CAAA,IAAA,EAAQ,aAAkC,EAAA,IAAA,CAAA,CAAA;AAmD1C,IAAsBG,cAAA,CAAA,IAAA,EAAAiB,qBAAA,EAAA,KAAA,CAAA,CAAA;AACtB,IAAApB,eAAA,CAAA,IAAA,EAAQ,eAA0C,EAAA,IAAA,CAAA,CAAA;AAqLlD,IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAwB,YAAY;AAClC,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,WAAA;AAAA,UACZ,aAAe,EAAA,IAAA;AAAA,SACjB;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AACD,MAAI,IAAA,GAAA,EAAK,MAAM,OAAS,EAAA;AACtB,QAAA,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,GAAA,CAAI,KAAK,OAAQ,CAAA,IAAA;AAAA,UACjB,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,QAAA,EAAU,CAAC,CAAA;AAAA,SAC5B,CAAA;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAwC,MAAM;AAC5C,MAAM,MAAA,2BAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAyB,YAAY;AACnC,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,QAAA;AAAA,SACd;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,QACnB,gBAAkB,EAAA;AAAA,UAChB,WAAa,EAAA,QAAA;AAAA,SACf;AAAA,OACD,CAAA,CAAA;AACD,MAAI,IAAA,GAAA,EAAK,MAAM,OAAS,EAAA;AACtB,QAAA,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,GAAA,CAAI,KAAK,OAAQ,CAAA,IAAA;AAAA,UACjB,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,QAAA,EAAU,CAAC,CAAA;AAAA,SAC5B,CAAA;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAyC,MAAM;AAC7C,MAAM,MAAA,4BAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAqGA,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAuC,OACrC,IACqB,KAAA;AACrB,MAAM,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACxD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,UAAA;AAAA,UACZ,IAAA;AAAA,SACF;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAI,IAAA,QAAA,EAAU,MAAM,OAAS,EAAA;AAC3B,QAAA,IAAA,CAAK,UAAa,GAAA;AAAA,UAChB,GAAG,IAAK,CAAA,UAAA;AAAA,UACR,WAAa,EAAA,IAAA;AAAA,SACf,CAAA;AACA,QAAA,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,QAAA,CAAS,KAAK,OAAQ,CAAA,IAAA;AAAA,UACtB,KAAM,CAAA,QAAA,CAAS,IAAK,CAAA,QAAA,EAAU,CAAC,CAAA;AAAA,SACjC,CAAA;AAEA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAkDA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAA0C,OAAO,KAAU,KAAA;AACzD,MAAM,MAAA,WAAA,GAAc,KAAK,YACtB,CAAA,EAAA;AAAA,QACE,CAAA,IAAA,CAAK,WAAW,WACd,IAAA,IAAA,CAAK,MAAM,oBAAuB,GAAA,CAAA,GAAI,CACvC,CAAA,IAAA,IAAA,CAAK,UAAW,CAAA,QAAA;AAAA,SAElB,YAAa,EAAA,CACd,GAAG,KAAQ,GAAA,CAAC,GAAG,UAAW,CAAA,EAAA,CAAA;AAE7B,MAAA,IAAI,WAAa,EAAA;AACf,QAAM,MAAA,IAAA,CAAK,UAAU,kBAAoB,EAAA;AAAA,UACvC,WAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAzaE,IAAK,IAAA,CAAA,KAAA,CAAM,SAAS,YAAa,CAAA,UAAA,CAAW,WAAW,GAAG,CAAA,CAAE,GAAI,CAAA,CAAC,CAAO,MAAA;AAAA,MACtE,OAAO,CAAE,CAAA,QAAA;AAAA,MACT,OAAO,CAAE,CAAA,KAAA;AAAA,MACT,KAAA,EAAO,EAAE,QAAY,IAAA,KAAA;AAAA,KACrB,CAAA,CAAA,CAAA;AACF,IAAA,IAAA,CAAK,iCAAkC,EAAA,CAAA;AACvC,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EAhDA,IAAW,UAAa,GAAA;AACtB,IAAI,IAAA,CAAC,KAAK,WAAa,EAAA;AACrB,MAAM,MAAA,IAAI,MAAM,8BAA8B,CAAA,CAAA;AAAA,KAChD;AACA,IAAA,OAAO,IAAK,CAAA,WAAA,CAAA;AAAA,GACd;AAAA,EACO,cAAc,CAAgB,EAAA;AACnC,IAAA,IAAA,CAAK,WAAc,GAAA,CAAA,CAAA;AACnB,IAAK,IAAA,CAAA,aAAA,GAAgB,IAAI,iBAAA,CAAkB,IAAI,CAAA,CAAA;AAAA,GACjD;AAAA,EA2CQ,gBAAmB,GAAA;AACzB,IAAA,IAAIC,qBAAKmB,qBAAqB,CAAA,EAAA;AAC5B,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAC9B,IAAA,IAAI,QAAU,EAAA;AACZ,MAAAlB,cAAA,CAAA,IAAA,EAAKkB,qBAAsB,EAAA,IAAA,CAAA,CAAA;AAC3B,MAAK,IAAA,CAAA,KAAA,CAAM,SAAS,YAAa,CAAA,QAAQ,EAAE,GAAI,CAAA,CAAC,OAAO,WAAiB,MAAA;AAAA,QACtE,GAAG,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,WAAW,CAAA;AAAA,QAChC,KAAA,EAAO,KAAM,CAAA,UAAA,EAAY,QAAY,IAAA,KAAA;AAAA,OACrC,CAAA,CAAA,CAAA;AAAA,KACJ;AAAA,GACF;AAAA,EAEA,MAAM,KAAK,IAA2B,EAAA;AACpC,IAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAAA,GACxB;AAAA,EAEU,iCAAoC,GAAA;AAC5C,IAAA,MAAM,qBAAwB,GAAA,CAAC,CAAC,IAAA,CAAK,UAAW,CAAA,QAAA,CAAA;AAChD,IAAI,IAAA,oBAAA,GACF,CAAC,IAAA,CAAK,UAAW,CAAA,aAAA,IACjB,CAAC,IAAA,CAAK,UAAW,CAAA,eAAA,IACjB,CAAC,IAAA,CAAK,UAAW,CAAA,iBAAA,CAAA;AAEnB,IAAA,IAAI,CAAC,oBAAsB,EAAA;AACzB,MAAA,MAAM,uBACJ,GAAA,IAAA,CAAK,UAAW,CAAA,kBAAA,CAAmB,MAAO,EAAA,CAAA;AAE5C,MAAA,KAAA,MAAW,SAAS,uBAAyB,EAAA;AAC3C,QAAA,IAAI,KAAO,EAAA;AACT,UAAuB,oBAAA,GAAA,IAAA,CAAA;AACvB,UAAA,MAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEA,IAAK,IAAA,CAAA,KAAA,CAAM,uBACT,qBAAyB,IAAA,oBAAA,CAAA;AAAA,GAC7B;AAAA,EACA,MAAgB,eAAe,GAA+B,EAAA;AAC5D,IAAM,MAAA,GAAA,GAAM,SAAS,GAAG,CAAA,CAAA;AAExB,IAAA,IAAI,IAAI,KAAO,EAAA;AACb,MAAA,MAAM,IAAK,CAAA,QAAA;AAAA,QACT,IAAI,WAAA;AAAA,UACF,aAAa,GAAI,CAAA,KAAK,CAAE,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AACjC,YAAA,IAAI,CAAE,CAAA,SAAA,KAAc,QAAY,IAAA,CAAA,CAAE,cAAc,OAAS,EAAA;AACvD,cAAA,OAAO,EAAE,GAAG,CAAG,EAAA,GAAG,EAAE,GAAI,EAAA,CAAA;AAAA,aAC1B;AAEA,YAAO,OAAA,CAAA,CAAA;AAAA,WACR,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAgB,WACd,CAAA,SAAA,EACA,SACe,EAAA;AACf,IAAM,MAAA,GAAA,GAAM,SAAS,SAAS,CAAA,CAAA;AAE9B,IAAA,IAAA,CAAK,UAAa,GAAA;AAAA,MAChB,GAAG,IAAK,CAAA,UAAA;AAAA,MACR,WAAa,EAAA,CAAA;AAAA,MACb,SAAA;AAAA,MACA,KAAO,EAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,YAAa,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAC1C,IAAA,MAAM,cAAc,WAAY,CAAA,GAAA;AAAA,MAAI,CAAC,KACnC,KAAA,YAAA,CAAa,KAAM,CAAA,UAAA,IAAc,MAAM,GAAG,CAAA;AAAA,KAC5C,CAAA;AAEA,IAAA,IAAI,YAAY,CAAC,CAAA,CAAE,MAAS,GAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AACpD,MAAS,KAAA,IAAA,CAAA,GAAI,KAAK,YAAa,CAAA,MAAA,EAAQ,IAAI,WAAY,CAAA,CAAC,CAAE,CAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AACrE,QAAA,MAAM,iBAAoB,GAAA,WAAA,CAAY,GAAI,CAAA,CAAC,OAAO,WAAgB,KAAA;AAChE,UAAA,IAAI,KAAM,CAAA,SAAA,KAAc,OAAW,IAAA,KAAA,CAAM,cAAc,QAAU,EAAA;AAC/D,YAAA,MAAM,WAAc,GAAA;AAAA,cAClB,GAAG,KAAA;AAAA,cACH,GAAG,YAAA,CAAa,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA,aAC9B,CAAA;AACA,YAAO,OAAA,WAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA;AAAA,YACL,GAAG,KAAA;AAAA,YACH,KAAA,EAAO,CAAI,GAAA,IAAA,CAAK,aAAc,EAAA;AAAA,YAC9B,UAAY,EAAA;AAAA,cACV,UAAY,EAAA,WAAA,CAAY,WAAW,CAAA,CAAE,CAAC,CAAE,CAAA,UAAA;AAAA,cACxC,KAAO,EAAA,WAAA,CAAY,WAAW,CAAA,CAAE,CAAC,CAAE,CAAA,KAAA;AAAA,aACrC;AAAA,WACF,CAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAM,MAAA,WAAA,GAAc,IAAI,WAAA,CAAY,iBAAiB,CAAA,CAAA;AAErD,QAAM,MAAA,IAAA,CAAK,SAAS,WAAW,CAAA,CAAA;AAAA,OACjC;AAAA,eACS,WAAY,CAAA,CAAC,EAAE,MAAS,GAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AAC3D,MAAA,IAAA,CAAK,YAAa,CAAA,MAAA,CAAO,WAAY,CAAA,CAAC,EAAE,MAAM,CAAA,CAAA;AAAA,KAChD;AAEA,IAAA,IAAA,CAAK,iBAAoB,GAAA,WAAA,CAAA;AACzB,IAAA,IAAA,CAAK,YAAe,GAAA,WAAA,CAAA;AACpB,IAAA,IAAA,CAAK,YAAa,CAAA,OAAA,CAAQ,CAAC,WAAA,EAAa,UAAe,KAAA;AACrD,MAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,QAAa,KAAA;AACvC,QAAM,MAAA,eAAA,GAAkB,YAAY,UAAU,CAAA,CAAA;AAC9C,QAAA,MAAM,KAAK,eAAgB,CAAA,EAAA,CAAA;AAE3B,QAAA,MAAM,aAAa,IAAK,CAAA,qBAAA;AAAA,UACtB,IAAA,CAAK,eAAkB,GAAA,QAAA;AAAA,SACzB,CAAA;AACA,QAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AAExC,QAAA,IAAI,KAAO,EAAA;AACT,UAAO,MAAA,CAAA,MAAA;AAAA,YACL,KAAM,CAAA,UAAA;AAAA,YACNJ,eAAA,CAAc,MAAM,UAAiB,CAAA;AAAA,WACvC,CAAA;AACA,UAAA,KAAA,CAAM,UAAW,CAAA,KAAA,GAAQ,QAAW,GAAA,IAAA,CAAK,aAAc,EAAA,CAAA;AACvD,UAAA,IAAI,iBAAiB,kBAAoB,EAAA;AACvC,YAAA,KAAA,CAAM,SAAS,KAAM,CAAA,KAAA,EAAO,EAAE,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,WACpD;AAAA,SACF;AAAA,OACD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAgB,UACd,MACA,EAAA;AACA,IAAO,OAAA,IAAA;AAAA,MACL,MAAM,WAAY,CAAA;AAAA,QAChB,MAAQ,EAAA,wBAAA;AAAA,QACR,SAAS,OAAQ,CAAA,KAAA;AAAA,QACjB,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,QACvB,KAAA,EAAO,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,EAAA;AAAA,QAC5B,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,OACjC,CAAA;AAAA,MACD,MAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,IAAI,QAAW,GAAA;AACb,IAAA,OAAO,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAA,GAAA,CAC1C,IAAK,CAAA,UAAA,CAAW,WAAc,GAAA,CAAA,IAAK,IAAK,CAAA,UAAA,CAAW,QACpD,GAAA,CAAA,CAAA;AAAA,GACN;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAA2B,GAAA;AAC/B,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,SAAW,EAAA;AAAA,MACnD,aAAe,EAAA,CAAA;AAAA,MACf,UAAY,EAAA,KAAA;AAAA,KACb,CAAA,CAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,CAAC,IAAK,CAAA,oBAAA,CAAqB,SAAS,CAAG,EAAA;AAC1D,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,aAAe,EAAA,CAAA;AAAA,UACf,UAAY,EAAA,MAAA;AAAA,SACd;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAA,IAAI,KAAK,IAAM,EAAA;AACb,QAAA,MAAM,SAAS,MAAM,IAAA,CAAK,eAAe,GAAI,CAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AACtB,QAAO,OAAA,MAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA,EA8CA,MAAM,UAAU,KAA6C,EAAA;AAC3D,IAAM,MAAA,eAAA,GAAA,CACJ,UAAU,KAAY,CAAA,GAAA,YAAA,CAAa,KAAK,CAAI,GAAA,IAAA,CAAK,oBAEhD,EAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA,CACpB,IAAI,CAAC,CAAA,KAAM,CAAI,GAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAE/B,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,YAAc,EAAA;AAAA,MACtD,UAAY,EAAA,QAAA;AAAA,MACZ,KAAO,EAAA,eAAA;AAAA,KACR,CAAA,CAAA;AAQD,IAAA,IAAI,YAAc,EAAA;AAChB,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,SAAA;AAAA,SACd;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAA,IAAI,KAAK,IAAM,EAAA;AACb,QAAK,IAAA,CAAA,WAAA,CAAY,GAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,MAAM,GAAI,CAAA,IAAA,CAAK,QAAU,EAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OACrE;AAAA,KACF;AACA,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AAAA,EACQ,qBAAqB,SAAuB,EAAA;AAClD,IAAO,OAAA,IAAA,CAAK,WAAW,YAAc,EAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,YAAY,SAAS,CAAA,CAAA;AAAA,GAC1E;AAAA,EACA,MAAgB,eACd,CAAA,SAAA,EACA,MACkB,EAAA;AAClB,IAAI,IAAA;AACF,MAAI,IAAA,KAAA,GAAQ,IAAK,CAAA,oBAAA,CAAqB,SAAS,CAAA,CAAA;AAE/C,MAAA,IAAI,KAAO,EAAA;AACT,QAAM,MAAA,UAAA,GAAa,KAAK,UAAW,CAAA,UAAA,CAAA;AACnC,QAAI,IAAA,CAAC,SAAS,UAAY,EAAA;AACxB,UAAQ,KAAA,GAAA;AAAA,YACN,OAAO,UAAW,CAAA,kBAAA;AAAA,YAClB,MAAQ,EAAA,IAAA;AAAA,YACR,OAAS,EAAA,UAAA;AAAA,WACX,CAAA;AAAA,SACF;AAEA,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AAErB,UAAA,IAAI,MAAQ,EAAA;AACV,YAAO,OAAA,IAAA,CAAK,mBAAoB,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,WACxC,MAAA;AACL,YAAO,OAAA,IAAA,CAAK,qBAAsB,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,WACjD;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,UACnD,QAAU,EAAA,MAAA;AAAA,UACV,iBAAmB,EAAA,WAAA;AAAA,UACnB,gBAAkB,EAAA;AAAA,YAChB,WAAa,EAAA,QAAA;AAAA,WACf;AAAA,SACD,CAAA,CAAA;AAED,QAAI,IAAA,GAAA,EAAK,MAAM,cAAgB,EAAA;AAC7B,UAAA,MAAM,SAAS,MAAM,IAAA,CAAK,eAAe,GAAI,CAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CAAA;AAC9D,UAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AACtB,UAAO,OAAA,MAAA,CAAA;AAAA,SACF,MAAA;AACL,UAAA,OAAA,CAAQ,MAAM,gCAAgC,CAAA,CAAA;AAAA,SAChD;AAAA,OACF;AAEA,MAAO,OAAA,IAAA,CAAA;AAAA,aACA,CAAG,EAAA;AACV,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AACf,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EACO,oBAAuB,GAAA;AAC5B,IAAA,IAAI,CAAC,IAAK,CAAA,aAAA;AACR,MAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA,CAAA;AAEvD,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EACA,SAAA,CACE,WACA,MACkB,EAAA;AAClB,IAAO,OAAA,KAAA,CAAM,SAAU,CAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,GAC1C;AAAA,EA0BA,cAAiB,GAAA;AACf,IAAA,OAAO,KAAK,UAAW,CAAA,WAAA,CAAA;AAAA,GACzB;AAAA,EAEA,SAAY,GAAA;AACV,IAAA,OAAO,KAAK,KAAM,CAAA,MAAA,CAAA;AAAA,GACpB;AAAA,EACA,2BAA8B,GAAA;AAC5B,IAAA,OAAO,KAAK,KAAM,CAAA,oBAAA,CAAA;AAAA,GACpB;AAAA,EACA,YAAe,GAAA;AACb,IAAA,OAAO,KAAK,UAAW,CAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EACA,kBAAqB,GAAA;AACnB,IAAA,OAAO,KAAK,KAAM,CAAA,eAAA,CAAA;AAAA,GACpB;AAAA,EACA,gBAAmB,GAAA;AACjB,IAAO,OAAA,IAAA,CAAK,oBAAqB,CAAA,GAAA,CAAI,CAAC,OAAY,KAAA,IAAA,CAAK,MAAO,CAAA,OAAO,CAAE,CAAA,CAAA;AAAA,GACzE;AAAA,EACA,OAAU,GAAA;AACR,IAAA,OAAO,KAAK,UAAW,CAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EACA,MAAM,OAAU,GAAA;AACd,IAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,MACnD,QAAU,EAAA;AAAA,QACR,UAAY,EAAA,SAAA;AAAA,OACd;AAAA,MACA,iBAAmB,EAAA,WAAA;AAAA,KACpB,CAAA,CAAA;AAED,IAAA,IAAI,KAAK,IAAM,EAAA;AACb,MAAK,IAAA,CAAA,WAAA,CAAY,GAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,MAAM,GAAI,CAAA,IAAA,CAAK,QAAU,EAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KACrE;AAAA,GACF;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,KAA6C,EAAA;AAClD,IAAO,OAAA,IAAA,CAAK,UAAU,KAAK,CAAA,CAAA;AAAA,GAC7B;AAAA,EACA,uBAAA,CACE,OACA,eACe,EAAA;AACf,IAAM,MAAA,UAAA,GAAa,IAAI,GAAA,CAAI,eAAe,CAAA,CAAA;AAE1C,IAAO,OAAA,KAAA,CAAM,OAAO,CAAC,CAAA,EAAG,UAAU,CAAC,UAAA,CAAW,GAAI,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,GAC1D;AAAA,EAsBA,MAAM,SAAS,KAA6C,EAAA;AAC1D,IAAA,MAAM,eACJ,GAAA,CAAA,KAAA,KAAU,KAAY,CAAA,GAAA,YAAA,CAAa,KAAK,CAAI,GAAA,IAAA,CAAK,kBAAmB,EAAA,EACpE,IAAK,CAAA,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA,CAAA;AAEtB,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,UAAY,EAAA;AAAA,MACpD,UAAY,EAAA,MAAA;AAAA,MACZ,OAAO,eAAgB,CAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,KAC5C,CAAA,CAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,CAAC,IAAK,CAAA,oBAAA,CAAqB,UAAU,CAAG,EAAA;AAC3D,MAAA,IAAA,CAAK,SAAS,eAAiB,EAAA,MAAA,EAAQ,EAAE,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,eACpD,YAAgB,IAAA,CAAC,IAAK,CAAA,oBAAA,CAAqB,UAAU,CAAG,EAAA;AACjE,MAAA,IAAA,CAAK,SAAS,eAAiB,EAAA,MAAA,EAAQ,EAAE,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,KAC/D;AACA,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,OAAO,KAA6C,EAAA;AACxD,IAAM,MAAA,eAAA,GAAkB,aAAa,KAAK,CAAA,CAAA;AAE1C,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,UAAY,EAAA;AAAA,MACpD,UAAY,EAAA,IAAA;AAAA,MACZ,OAAO,eAAgB,CAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,KAC5C,CAAA,CAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,CAAC,IAAK,CAAA,oBAAA,CAAqB,UAAU,CAAG,EAAA;AAC3D,MAAA,IAAA,CAAK,SAAS,eAAiB,EAAA,IAAA,EAAM,EAAE,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,eAClD,YAAgB,IAAA,CAAC,IAAK,CAAA,oBAAA,CAAqB,UAAU,CAAG,EAAA;AACjE,MAAA,IAAA,CAAK,SAAS,eAAiB,EAAA,IAAA,EAAM,EAAE,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,KAC7D;AACA,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AAAA,EAEQ,QAAA,CACN,IACA,EAAA,SAAA,EACA,KACA,EAAA;AACA,IAAA,KAAA,MAAW,KAAK,IAAM,EAAA;AACpB,MAAA,MAAM,SAAY,GAAA,SAAA,KAAc,IAAO,GAAA,CAAA,GAAI,IAAI,CAAI,GAAA,CAAA,CAAA;AACnD,MAAK,IAAA,CAAA,eAAA,CAAgB,CAAG,EAAA,SAAA,EAAW,KAAK,CAAA,CAAA;AAAA,KAC1C;AAAA,GACF;AAAA,EAEQ,eAAA,CAAgB,CAAW,EAAA,CAAA,EAAW,KAAyB,EAAA;AACrE,IAAA,MAAM,SAAY,GAAA,IAAA,CAAK,qBAAsB,CAAA,CAAC,GAAG,YAAa,EAAA,CAAA;AAC9D,IAAA,MAAM,YAAY,SAAU,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA,CAAA;AACnD,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,GAAI,CAAA,CAAC,CAAM,KAAA;AACtC,MAAA,IAAI,aAAa,kBAAoB,EAAA;AACnC,QAAA,OAAO,EAAE,QAAS,EAAA,CAAA;AAAA,OACpB;AACA,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,qBAAsB,CAAA,CAAC,GAAG,YAAa,EAAA,CAAA;AACjE,IAAA,MAAM,eAAe,YAAa,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA,CAAA;AACzD,IAAA,MAAM,aAAgB,GAAA,YAAA,CAAa,GAAI,CAAA,CAAC,CAAM,KAAA;AAC5C,MAAA,IAAI,aAAa,kBAAoB,EAAA;AACnC,QAAA,OAAO,EAAE,QAAS,EAAA,CAAA;AAAA,OACpB;AACA,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,MAAW,KAAA;AACnC,MAAM,KAAA,CAAA,UAAA,GAAa,aAAa,MAAM,CAAA,CAAA;AACtC,MAAA,IAAI,iBAAiB,kBAAoB,EAAA;AACvC,QAAA,KAAA,CAAM,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA,EAAG,KAAK,CAAA,CAAA;AAAA,OAC7C;AAAA,KACD,CAAA,CAAA;AACD,IAAa,YAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,MAAW,KAAA;AACtC,MAAM,KAAA,CAAA,UAAA,GAAa,UAAU,MAAM,CAAA,CAAA;AACnC,MAAA,IAAI,iBAAiB,kBAAoB,EAAA;AACvC,QAAA,KAAA,CAAM,QAAS,CAAA,UAAA,CAAW,MAAM,CAAA,EAAG,KAAK,CAAA,CAAA;AAAA,OAC1C;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,sBAAA,CAAuB,WAAmB,OAAmB,EAAA;AAC3D,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,YAAA,CAAa,IAAI,SAAS,CAAA,CAAA;AAC/D,IAAA,IAAA,CAAK,WAAW,YAAa,CAAA,GAAA,CAAI,SAAW,EAAA,OAAA,IAAW,CAAC,YAAY,CAAA,CAAA;AAAA,GACtE;AAAA,EAEA,kBAAA,CAAmB,UAAkB,OAAmB,EAAA;AACtD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,kBAAA,CAAmB,IAAI,QAAQ,CAAA,CAAA;AACpE,IAAA,IAAA,CAAK,WAAW,kBAAmB,CAAA,GAAA,CAAI,QAAU,EAAA,OAAA,IAAW,CAAC,YAAY,CAAA,CAAA;AACzE,IAAA,IAAA,CAAK,iCAAkC,EAAA,CAAA;AAAA,GACzC;AAAA,EAEA,oBAAA,CAAqB,UAAkB,OAAmB,EAAA;AACxD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,mBAAA,CAAoB,IAAI,QAAQ,CAAA,CAAA;AACrE,IAAA,IAAA,CAAK,WAAW,mBAAoB,CAAA,GAAA,CAAI,QAAU,EAAA,OAAA,IAAW,CAAC,YAAY,CAAA,CAAA;AAC1E,IAAA,IAAA,CAAK,iCAAkC,EAAA,CAAA;AAAA,GACzC;AACF,CAAA;AA/fEI,qBAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACzFF,IAAA,mBAAA,CAAA;AAwBO,MAAM,sBACH,sBAYV,CAAA;AAAA,EAaE,YAAY,EAAE,UAAA,EAAY,KAAO,EAAA,GAAG,YAAmC,EAAA;AACrE,IAAM,MAAA,WAAA,GAAc,aAAa,KAAK,CAAA,CAAA;AACtC,IAAA,MAAM,cAAc,WAAY,CAAA,GAAA;AAAA,MAAI,CAAC,OACnC,KAAA,YAAA,CAAa,OAAQ,CAAA,UAAA,IAAc,QAAQ,GAAG,CAAA;AAAA,KAChD,CAAA;AAEA,IAAA,KAAA;AAAA,MACE;AAAA,QACE,GAAG,UAAA;AAAA,QACH,UAAY,EAAA;AAAA,UACV,WAAa,EAAA,KAAA,CAAM,UAAW,CAAA,OAAA,EAAS,CAAC,CAAA;AAAA,UACxC,OAAA,EAAS,WAAW,UAAc,IAAA,QAAA;AAAA,UAClC,KAAO,EAAA,KAAA;AAAA,UACP,KAAO,EAAA,KAAA,CAAM,UAAW,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA,UAChC,QAAU,EAAA,KAAA,CAAM,UAAW,CAAA,aAAA,EAAe,QAAQ,CAAA;AAAA,UAClD,SAAA,EAAW,aAAa,YAAa,CAAA,KAAK,EAAE,CAAC,CAAA,CAAE,UAAU,CAAE,CAAA,MAAA;AAAA,UAC3D,YAAA,sBAAkB,GAAI,EAAA;AAAA,UACtB,kBAAA,sBAAwB,GAAI,EAAA;AAAA,UAC5B,mBAAA,sBAAyB,GAAI,EAAA;AAAA,UAC7B,GAAG,UAAA;AAAA,SACL;AAAA,OACF;AAAA,MACA,WAAA,CAAY,IAAI,CAAC,EAAE,YAAAC,WAAY,EAAA,UAAA,EAAY,GAAG,OAAA,EAAc,KAAA;AAC1D,QAAO,OAAA,OAAA,CAAA;AAAA,OACR,CAAA;AAAA,MAED,WAAA;AAAA,KACF,CAAA;AAvCF,IAAArB,eAAA,CAAA,IAAA,EAAQ,aAAkC,EAAA,IAAA,CAAA,CAAA;AAkD1C,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACR,IAAsBG,cAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA;AA0LtB,IAAAH,eAAA,CAAA,IAAA,EAAA,WAAA,EAAwB,YAAY;AAClC,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,WAAA;AAAA,UACZ,aAAe,EAAA,IAAA;AAAA,SACjB;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AACD,MAAI,IAAA,GAAA,EAAK,MAAM,OAAS,EAAA;AACtB,QAAA,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,GAAA,CAAI,KAAK,OAAQ,CAAA,IAAA;AAAA,UACjB,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,QAAA,EAAU,CAAC,CAAA;AAAA,SAC5B,CAAA;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAwC,MAAM;AAC5C,MAAM,MAAA,2BAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAyB,YAAY;AACnC,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,QAAA;AAAA,SACd;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,QACnB,gBAAkB,EAAA;AAAA,UAChB,WAAa,EAAA,QAAA;AAAA,SACf;AAAA,OACD,CAAA,CAAA;AACD,MAAI,IAAA,GAAA,EAAK,MAAM,OAAS,EAAA;AACtB,QAAA,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,GAAA,CAAI,KAAK,OAAQ,CAAA,IAAA;AAAA,UACjB,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,QAAA,EAAU,CAAC,CAAA;AAAA,SAC5B,CAAA;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAyC,MAAM;AAC7C,MAAM,MAAA,4BAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAmGA,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAuC,OACrC,IACqB,KAAA;AACrB,MAAA,IAAA,CAAK,MAAM,SAAY,GAAA,IAAA,CAAA;AACvB,MAAM,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACxD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,UAAA;AAAA,UACZ,IAAA;AAAA,SACF;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAI,IAAA,QAAA,EAAU,MAAM,OAAS,EAAA;AAC3B,QAAA,IAAA,CAAK,UAAa,GAAA;AAAA,UAChB,GAAG,IAAK,CAAA,UAAA;AAAA,UACR,WAAa,EAAA,IAAA;AAAA,SACf,CAAA;AACA,QAAA,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,QAAA,CAAS,KAAK,OAAQ,CAAA,IAAA;AAAA,UACtB,KAAM,CAAA,QAAA,CAAS,IAAK,CAAA,QAAA,EAAU,CAAC,CAAA;AAAA,SACjC,CAAA;AAEA,QAAA,IAAA,CAAK,MAAM,SAAY,GAAA,KAAA,CAAA;AACvB,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAA,CAAK,MAAM,SAAY,GAAA,KAAA,CAAA;AACvB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AA8BA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAA0C,OAAO,KAAU,KAAA;AACzD,MAAM,MAAA,eAAA,GAAA,CACH,IAAK,CAAA,UAAA,CAAW,WACd,IAAA,IAAA,CAAK,MAAM,oBAAuB,GAAA,CAAA,GAAI,CACzC,CAAA,IAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAA;AAElB,MAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,YAAa,CAAA,EAAA,CAAG,eAAe,CAAA,CAAA;AAElD,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAA,OAAA,CAAQ,MAAM,qCAAqC,CAAA,CAAA;AACnD,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAEA,MAAM,MAAA,MAAA,GAAS,MAAM,YAAa,EAAA,CAAA;AAElC,MAAA,IAAI,CAAC,MAAA,IAAU,MAAO,CAAA,MAAA,GAAS,KAAO,EAAA;AACpC,QAAQ,OAAA,CAAA,KAAA,CAAM,0BAA4B,EAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AACnD,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,EAAG,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AACjC,MAAM,MAAA,WAAA,GAAc,OAAO,UAAW,CAAA,EAAA,CAAA;AAEtC,MAAA,IAAI,WAAa,EAAA;AACf,QAAM,MAAA,IAAA,CAAK,UAAU,kBAAoB,EAAA;AAAA,UACvC,WAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAvaE,IAAK,IAAA,CAAA,KAAA,CAAM,SAAS,YAAa,CAAA,UAAA,CAAW,WAAW,GAAG,CAAA,CAAE,GAAI,CAAA,CAAC,CAAO,MAAA;AAAA,MACtE,OAAO,CAAE,CAAA,QAAA;AAAA,MACT,OAAO,CAAE,CAAA,KAAA;AAAA,MACT,KAAA,EAAO,EAAE,QAAY,IAAA,KAAA;AAAA,KACrB,CAAA,CAAA,CAAA;AACF,IAAA,IAAA,CAAK,iCAAkC,EAAA,CAAA;AACvC,IAAK,IAAA,CAAA,aAAA,GAAgB,IAAI,iBAAA,CAAkB,IAAI,CAAA,CAAA;AAC/C,IAAA,IAAA,CAAK,MAAM,SAAY,GAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EAhDA,IAAW,UAAa,GAAA;AACtB,IAAI,IAAA,CAAC,KAAK,WAAa,EAAA;AACrB,MAAM,MAAA,IAAI,MAAM,8BAA8B,CAAA,CAAA;AAAA,KAChD;AACA,IAAA,OAAO,IAAK,CAAA,WAAA,CAAA;AAAA,GACd;AAAA,EACO,cAAc,CAAgB,EAAA;AACnC,IAAA,IAAA,CAAK,WAAc,GAAA,CAAA,CAAA;AACnB,IAAK,IAAA,CAAA,aAAA,GAAgB,IAAI,iBAAA,CAAkB,IAAI,CAAA,CAAA;AAAA,GACjD;AAAA,EA0CQ,gBAAmB,GAAA;AACzB,IAAA,IAAIC,qBAAK,mBAAqB,CAAA,EAAA;AAC5B,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAC9B,IAAA,IAAI,QAAU,EAAA;AACZ,MAAAC,cAAA,CAAA,IAAA,EAAK,mBAAsB,EAAA,IAAA,CAAA,CAAA;AAC3B,MAAK,IAAA,CAAA,KAAA,CAAM,SAAS,YAAa,CAAA,QAAQ,EAAE,GAAI,CAAA,CAAC,OAAO,WAAiB,MAAA;AAAA,QACtE,GAAG,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,WAAW,CAAA;AAAA,QAChC,KAAA,EAAO,KAAM,CAAA,UAAA,EAAY,QAAY,IAAA,KAAA;AAAA,OACrC,CAAA,CAAA,CAAA;AAAA,KACJ;AAAA,GACF;AAAA,EAEA,MAAM,KAAK,IAA2B,EAAA;AACpC,IAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAAA,GACxB;AAAA,EAEU,iCAAoC,GAAA;AAC5C,IAAA,MAAM,qBAAwB,GAAA,CAAC,CAAC,IAAA,CAAK,UAAW,CAAA,QAAA,CAAA;AAEhD,IAAI,IAAA,oBAAA,GACF,CAAC,IAAA,CAAK,UAAW,CAAA,aAAA,IACjB,CAAC,IAAA,CAAK,UAAW,CAAA,eAAA,IACjB,CAAC,IAAA,CAAK,UAAW,CAAA,iBAAA,CAAA;AAEnB,IAAA,IAAI,CAAC,oBAAsB,EAAA;AACzB,MAAA,MAAM,uBACJ,GAAA,IAAA,CAAK,UAAW,CAAA,kBAAA,CAAmB,MAAO,EAAA,CAAA;AAE5C,MAAA,KAAA,MAAW,SAAS,uBAAyB,EAAA;AAC3C,QAAA,IAAI,KAAO,EAAA;AACT,UAAuB,oBAAA,GAAA,IAAA,CAAA;AACvB,UAAA,MAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEA,IAAK,IAAA,CAAA,KAAA,CAAM,uBACT,qBAAyB,IAAA,oBAAA,CAAA;AAAA,GAC7B;AAAA,EACA,MAAgB,eAAe,GAA+B,EAAA;AAC5D,IAAM,MAAA,GAAA,GAAM,SAAS,GAAG,CAAA,CAAA;AAExB,IAAA,IAAI,IAAI,KAAO,EAAA;AACb,MAAA,MAAM,IAAK,CAAA,QAAA;AAAA,QACT,IAAI,WAAA;AAAA,UACF,aAAa,GAAI,CAAA,KAAK,CAAE,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AACjC,YAAA,IAAI,CAAE,CAAA,SAAA,KAAc,QAAY,IAAA,CAAA,CAAE,cAAc,OAAS,EAAA;AACvD,cAAA,OAAO,EAAE,GAAG,CAAG,EAAA,GAAG,EAAE,GAAI,EAAA,CAAA;AAAA,aAC1B;AAEA,YAAO,OAAA,CAAA,CAAA;AAAA,WACR,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAgB,WACd,CAAA,SAAA,EACA,SACe,EAAA;AACf,IAAM,MAAA,GAAA,GAAM,SAAS,SAAS,CAAA,CAAA;AAE9B,IAAA,MAAM,KAAQ,GAAA,KAAA,CAAM,GAAI,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAChC,IAAA,MAAM,WAAc,GAAA,KAAA,CAAM,GAAI,CAAA,OAAA,EAAS,CAAC,CAAA,CAAA;AAExC,IAAA,IAAA,CAAK,UAAa,GAAA;AAAA,MAChB,GAAG,IAAK,CAAA,UAAA;AAAA,MACR,WAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,YAAa,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAC1C,IAAA,MAAM,cAAc,WAAY,CAAA,GAAA;AAAA,MAAI,CAAC,KACnC,KAAA,YAAA,CAAa,KAAM,CAAA,UAAA,IAAc,MAAM,GAAG,CAAA;AAAA,KAC5C,CAAA;AAEA,IAAA,IAAI,YAAY,CAAC,CAAA,CAAE,MAAS,GAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AACpD,MAAS,KAAA,IAAA,CAAA,GAAI,KAAK,YAAa,CAAA,MAAA,EAAQ,IAAI,WAAY,CAAA,CAAC,CAAE,CAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AACrE,QAAA,MAAM,iBAAoB,GAAA,WAAA,CAAY,GAAI,CAAA,CAAC,OAAO,WAAgB,KAAA;AAChE,UAAA,IAAI,KAAM,CAAA,SAAA,KAAc,OAAW,IAAA,KAAA,CAAM,cAAc,QAAU,EAAA;AAC/D,YAAA,MAAM,WAAc,GAAA;AAAA,cAClB,GAAG,KAAA;AAAA,cACH,GAAG,YAAA,CAAa,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA,aAC9B,CAAA;AACA,YAAO,OAAA,WAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA;AAAA,YACL,GAAG,KAAA;AAAA,YACH,KAAA,EAAO,CAAI,GAAA,IAAA,CAAK,aAAc,EAAA;AAAA,YAC9B,UAAY,EAAA;AAAA,cACV,UAAY,EAAA,WAAA,CAAY,WAAW,CAAA,CAAE,CAAC,CAAE,CAAA,UAAA;AAAA,cACxC,KAAO,EAAA,WAAA,CAAY,WAAW,CAAA,CAAE,CAAC,CAAE,CAAA,KAAA;AAAA,aACrC;AAAA,WACF,CAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAM,MAAA,WAAA,GAAc,IAAI,WAAA,CAAY,iBAAiB,CAAA,CAAA;AAErD,QAAM,MAAA,IAAA,CAAK,SAAS,WAAW,CAAA,CAAA;AAAA,OACjC;AAAA,eACS,WAAY,CAAA,CAAC,EAAE,MAAS,GAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AAC3D,MAAA,IAAA,CAAK,YAAa,CAAA,MAAA,CAAO,WAAY,CAAA,CAAC,EAAE,MAAM,CAAA,CAAA;AAAA,KAChD;AAEA,IAAA,IAAA,CAAK,iBAAoB,GAAA,WAAA,CAAA;AACzB,IAAA,IAAA,CAAK,YAAe,GAAA,WAAA,CAAA;AACpB,IAAA,IAAA,CAAK,YAAa,CAAA,OAAA,CAAQ,CAAC,WAAA,EAAa,UAAe,KAAA;AACrD,MAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,QAAa,KAAA;AACvC,QAAM,MAAA,eAAA,GAAkB,YAAY,UAAU,CAAA,CAAA;AAC9C,QAAA,MAAM,KAAK,eAAgB,CAAA,EAAA,CAAA;AAE3B,QAAA,MAAM,aAAa,IAAK,CAAA,qBAAA;AAAA,UACtB,IAAA,CAAK,eAAkB,GAAA,QAAA;AAAA,SACzB,CAAA;AACA,QAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AAExC,QAAA,IAAI,KAAO,EAAA;AACT,UAAO,MAAA,CAAA,MAAA;AAAA,YACL,KAAM,CAAA,UAAA;AAAA,YACNc,eAAA,CAAc,MAAM,UAAiB,CAAA;AAAA,WACvC,CAAA;AACA,UAAA,KAAA,CAAM,UAAW,CAAA,KAAA,GAAQ,QAAW,GAAA,IAAA,CAAK,aAAc,EAAA,CAAA;AACvD,UAAA,IAAI,iBAAiB,kBAAoB,EAAA;AACvC,YAAA,KAAA,CAAM,SAAS,KAAM,CAAA,KAAA,EAAO,EAAE,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,WACpD;AAAA,SACF;AAAA,OACD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAgB,UACd,MACA,EAAA;AACA,IAAO,OAAA,IAAA;AAAA,MACL,MAAM,WAAY,CAAA;AAAA,QAChB,MAAQ,EAAA,wBAAA;AAAA,QACR,SAAS,OAAQ,CAAA,KAAA;AAAA,QACjB,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,QACvB,KAAA,EAAO,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,EAAA;AAAA,QAC5B,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,OACjC,CAAA;AAAA,MACD,MAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,IAAI,QAAW,GAAA;AACb,IAAA,OAAA,CAAQ,IAAK,CAAA,UAAA,CAAW,WAAc,GAAA,CAAA,IAAK,KAAK,UAAW,CAAA,QAAA,CAAA;AAAA,GAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAA2B,GAAA;AAC/B,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,SAAW,EAAA;AAAA,MACnD,aAAe,EAAA,CAAA;AAAA,MACf,UAAY,EAAA,KAAA;AAAA,KACb,CAAA,CAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,CAAC,IAAK,CAAA,oBAAA,CAAqB,SAAS,CAAG,EAAA;AAC1D,MAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,QACnD,QAAU,EAAA;AAAA,UACR,UAAY,EAAA,MAAA;AAAA,SACd;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAI,IAAA,GAAA,EAAK,MAAM,cAAgB,EAAA;AAC7B,QAAA,MAAM,SAAS,MAAM,IAAA,CAAK,eAAe,GAAI,CAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AACtB,QAAO,OAAA,MAAA,CAAA;AAAA,OACE,MAAA,IAAA,GAAA,EAAK,IAAM,EAAA,OAAA,CAAQ,IAAM,EAAA;AAClC,QAAK,IAAA,CAAA,WAAA,CAAY,GAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,MAAM,GAAI,CAAA,IAAA,CAAK,QAAU,EAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OAC9D,MAAA;AACL,QAAA,OAAA,CAAQ,MAAM,gCAAgC,CAAA,CAAA;AAAA,OAChD;AAAA,KACF;AACA,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA,EA8CA,MAAM,UAAU,KAA6C,EAAA;AAC3D,IAAM,MAAA,eAAA,GAAA,CACJ,UAAU,KAAY,CAAA,GAAA,YAAA,CAAa,KAAK,CAAI,GAAA,IAAA,CAAK,oBAEhD,EAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA,CACpB,IAAI,CAAC,CAAA,KAAM,CAAI,GAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAE/B,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,YAAc,EAAA;AAAA,MACtD,UAAY,EAAA,QAAA;AAAA,MACZ,KAAO,EAAA,eAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,IAAI,YAAc,EAAA;AAChB,MAAI,IAAA,UAAA,GAAa,KAAK,UAAW,CAAA,WAAA,CAAA;AACjC,MAAA,MAAM,eACJ,IAAK,CAAA,UAAA,CAAW,WAAe,IAAA,IAAA,CAAK,WAAW,QAAW,GAAA,CAAA,CAAA,CAAA;AAE5D,MAAA,IACE,gBAAgB,QAAS,CAAA,YAAY,KACrC,IAAK,CAAA,UAAA,CAAW,gBAAgB,CAChC,EAAA;AACA,QAAa,UAAA,GAAA,IAAA,CAAK,WAAW,WAAc,GAAA,CAAA,CAAA;AAAA,OAC7C;AACA,MAAO,OAAA,IAAA,CAAK,SAAS,UAAU,CAAA,CAAA;AAAA,KAC1B,MAAA;AACL,MAAO,OAAA,YAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EACQ,qBAAqB,SAAuB,EAAA;AAClD,IAAO,OAAA,IAAA,CAAK,WAAW,YAAc,EAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,YAAY,SAAS,CAAA,CAAA;AAAA,GAC1E;AAAA,EACO,oBAAuB,GAAA;AAC5B,IAAA,IAAI,CAAC,IAAK,CAAA,aAAA;AACR,MAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA,CAAA;AAEvD,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EACA,MAAgB,eACd,CAAA,SAAA,EACA,MACkB,EAAA;AAClB,IAAI,IAAA;AACF,MAAI,IAAA,KAAA,GAAQ,IAAK,CAAA,oBAAA,CAAqB,SAAS,CAAA,CAAA;AAE/C,MAAA,IAAI,KAAO,EAAA;AACT,QAAM,MAAA,UAAA,GAAa,KAAK,UAAW,CAAA,UAAA,CAAA;AACnC,QAAI,IAAA,CAAC,SAAS,UAAY,EAAA;AACxB,UAAQ,KAAA,GAAA;AAAA,YACN,OAAO,UAAW,CAAA,kBAAA;AAAA,YAClB,MAAQ,EAAA,IAAA;AAAA,YACR,OAAS,EAAA,UAAA;AAAA,WACX,CAAA;AAAA,SACF;AAEA,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AAErB,UAAA,IAAI,MAAQ,EAAA;AACV,YAAO,OAAA,IAAA,CAAK,mBAAoB,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,WACxC,MAAA;AACL,YAAO,OAAA,IAAA,CAAK,qBAAsB,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,WACjD;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,SAA8B,CAAA;AAAA,UACnD,QAAU,EAAA,MAAA;AAAA,UACV,iBAAmB,EAAA,WAAA;AAAA,UACnB,gBAAkB,EAAA;AAAA,YAChB,WAAa,EAAA,QAAA;AAAA,WACf;AAAA,SACD,CAAA,CAAA;AAED,QAAI,IAAA,GAAA,EAAK,MAAM,cAAgB,EAAA;AAC7B,UAAA,MAAM,SAAS,MAAM,IAAA,CAAK,eAAe,GAAI,CAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CAAA;AAC9D,UAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AACtB,UAAO,OAAA,MAAA,CAAA;AAAA,SACE,MAAA,IAAA,GAAA,EAAK,IAAM,EAAA,OAAA,CAAQ,IAAM,EAAA;AAClC,UAAK,IAAA,CAAA,WAAA,CAAY,GAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,MAAM,GAAI,CAAA,IAAA,CAAK,QAAU,EAAA,CAAC,CAAC,CAAA,CAAA;AAAA,SAC9D,MAAA;AACL,UAAA,OAAA,CAAQ,MAAM,gCAAgC,CAAA,CAAA;AAAA,SAChD;AAAA,OACF;AAEA,MAAO,OAAA,IAAA,CAAA;AAAA,aACA,CAAG,EAAA;AACV,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AACf,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EACA,SAAA,CACE,WACA,MACkB,EAAA;AAClB,IAAO,OAAA,KAAA,CAAM,SAAU,CAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,GAC1C;AAAA,EA6BA,cAAiB,GAAA;AACf,IAAA,OAAO,KAAK,UAAW,CAAA,WAAA,CAAA;AAAA,GACzB;AAAA,EAEA,SAAY,GAAA;AACV,IAAA,OAAO,KAAK,KAAM,CAAA,MAAA,CAAA;AAAA,GACpB;AAAA,EACA,2BAA8B,GAAA;AAC5B,IAAA,OAAO,KAAK,KAAM,CAAA,oBAAA,CAAA;AAAA,GACpB;AAAA,EACA,YAAe,GAAA;AACb,IAAA,OAAO,KAAK,UAAW,CAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EACA,kBAAqB,GAAA;AACnB,IAAA,OAAO,KAAK,KAAM,CAAA,eAAA,CAAA;AAAA,GACpB;AAAA,EACA,gBAAmB,GAAA;AACjB,IAAO,OAAA,IAAA,CAAK,oBAAqB,CAAA,GAAA,CAAI,CAAC,OAAY,KAAA,IAAA,CAAK,MAAO,CAAA,OAAO,CAAE,CAAA,CAAA;AAAA,GACzE;AAAA,EACA,OAAU,GAAA;AACR,IAAA,OAAO,KAAK,UAAW,CAAA,KAAA,CAAA;AAAA,GACzB;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,KAA6C,EAAA;AAClD,IAAO,OAAA,IAAA,CAAK,UAAU,KAAK,CAAA,CAAA;AAAA,GAC7B;AAAA,EAkCA,MAAM,SAAS,KAA6C,EAAA;AAC1D,IAAM,MAAA,eAAA,GAAkB,aAAa,KAAK,CAAA,CAAA;AAE1C,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,UAAY,EAAA;AAAA,MACpD,UAAY,EAAA,MAAA;AAAA,MACZ,OAAO,eAAgB,CAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,KAC5C,CAAA,CAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,CAAC,IAAK,CAAA,oBAAA,CAAqB,UAAU,CAAG,EAAA;AAC3D,MAAA,MAAM,EAAE,WAAA,EAAa,QAAU,EAAA,KAAA,KAAU,IAAK,CAAA,UAAA,CAAA;AAE9C,MAAM,MAAA,YAAA,GAAe,cAAc,QAAW,GAAA,CAAA,CAAA;AAE9C,MAAA,IAAI,eAAgB,CAAA,QAAA,CAAS,YAAY,CAAA,IAAK,cAAc,KAAO,EAAA;AACjE,QAAA,MAAM,aAAa,WAAc,GAAA,CAAA,CAAA;AACjC,QAAQ,OAAA,CAAA,GAAA,CAAI,CAAuB,oBAAA,EAAA,UAAU,CAAE,CAAA,CAAA,CAAA;AAC/C,QAAO,OAAA,IAAA,CAAK,SAAS,UAAU,CAAA,CAAA;AAAA,OACjC;AAEA,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAoB,iBAAA,EAAA,WAAW,CAAE,CAAA,CAAA,CAAA;AAC7C,MAAO,OAAA,IAAA,CAAK,SAAS,WAAW,CAAA,CAAA;AAAA,KAC3B,MAAA;AACL,MAAO,OAAA,YAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEA,MAAM,OAAO,KAA6C,EAAA;AACxD,IAAM,MAAA,eAAA,GAAkB,aAAa,KAAK,CAAA,CAAA;AAE1C,IAAA,MAAM,YAAe,GAAA,MAAM,IAAK,CAAA,SAAA,CAAU,UAAY,EAAA;AAAA,MACpD,UAAY,EAAA,IAAA;AAAA,MACZ,OAAO,eAAgB,CAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,KAC5C,CAAA,CAAA;AAED,IAAA,IAAI,gBAAgB,CAAC,CAAC,IAAK,CAAA,oBAAA,CAAqB,UAAU,CAAG,EAAA;AAC3D,MAAA,MAAM,EAAE,WAAA,EAAa,QAAS,EAAA,GAAI,IAAK,CAAA,UAAA,CAAA;AAEvC,MAAM,MAAA,0BAAA,GAAA,CAA8B,cAAc,CAAK,IAAA,QAAA,CAAA;AACvD,MAAA,IACE,eAAgB,CAAA,QAAA,CAAS,0BAA0B,CAAA,IACnD,cAAc,CACd,EAAA;AACA,QAAO,OAAA,IAAA,CAAK,QAAS,CAAA,WAAA,GAAc,CAAC,CAAA,CAAA;AAAA,OACtC;AAEA,MAAO,OAAA,IAAA,CAAK,SAAS,WAAW,CAAA,CAAA;AAAA,KAC3B,MAAA;AACL,MAAO,OAAA,YAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEA,sBAAA,CAAuB,WAAmB,OAAmB,EAAA;AAC3D,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,YAAA,CAAa,IAAI,SAAS,CAAA,CAAA;AAC/D,IAAA,IAAA,CAAK,WAAW,YAAa,CAAA,GAAA,CAAI,SAAW,EAAA,OAAA,IAAW,CAAC,YAAY,CAAA,CAAA;AAAA,GACtE;AAAA,EAEA,kBAAA,CAAmB,UAAkB,OAAmB,EAAA;AACtD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,kBAAA,CAAmB,IAAI,QAAQ,CAAA,CAAA;AACpE,IAAA,IAAA,CAAK,WAAW,kBAAmB,CAAA,GAAA,CAAI,QAAU,EAAA,OAAA,IAAW,CAAC,YAAY,CAAA,CAAA;AACzE,IAAA,IAAA,CAAK,iCAAkC,EAAA,CAAA;AAAA,GACzC;AAAA,EAEA,oBAAA,CAAqB,UAAkB,OAAmB,EAAA;AACxD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,mBAAA,CAAoB,IAAI,QAAQ,CAAA,CAAA;AACrE,IAAA,IAAA,CAAK,WAAW,mBAAoB,CAAA,GAAA,CAAI,QAAU,EAAA,OAAA,IAAW,CAAC,YAAY,CAAA,CAAA;AAC1E,IAAA,IAAA,CAAK,iCAAkC,EAAA,CAAA;AAAA,GACzC;AACF,CAAA;AAleE,mBAAA,GAAA,IAAA,OAAA,EAAA;;ACtFK,MAAM,eAAe,kBAA0C,CAAA;AAAC;;ACAhE,MAAM,cAAc,KAA4B,CAAA;AAAC;;ACGjD,MAAM,cAA+B,iBAI1C,CAAA;AAAA,EACA,UAAU,SAA0C,EAAA;AAClD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,MAAa,QACX,CAAA,QAAA,EACA,OACkB,EAAA;AAClB,IAAA,IAAI,CAAC,IAAK,CAAA,UAAA,CAAW,UAAU,IAAK,CAAA,aAAA,CAAc,QAAQ,CAAG,EAAA;AAC3D,MAAA,IAAI,QAAa,KAAA,EAAA;AAAI,QAAK,IAAA,CAAA,KAAA,CAAM,WAAW,YAAe,GAAA,IAAA,CAAA;AAC1D,MAAO,OAAA,KAAA,CAAM,QAAS,CAAA,QAAA,EAAU,OAAO,CAAA,CAAA;AAAA,KACzC;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEQ,cAAc,KAA2B,EAAA;AAC/C,IAAA,MAAM,QAAQ,IAAI,MAAA,CAAO,IAAK,CAAA,UAAA,CAAW,UAAU,EAAE,CAAA,CAAA;AAErD,IAAI,IAAA,CAAC,MAAM,IAAK,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA,IAAK,UAAU,EAAI,EAAA;AAC9C,MAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,YAAe,GAAA,MAAA,CAAO,sBAAuB,EAAA,CAAA;AACnE,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAa,QAA6B,GAAA;AACxC,IAAI,IAAA,IAAA,CAAK,MAAM,UAAW,CAAA,YAAA;AAAc,MAAO,OAAA,KAAA,CAAA;AAE/C,IAAA,OAAO,MAAM,QAAS,EAAA,CAAA;AAAA,GACxB;AACF;;ACvCO,MAAM,cAAc,KAA4B,CAAA;AAAC;;ACAjD,MAAM,aAAa,KAA2B,CAAA;AAAC;;ACQ/C,MAAM,mBAAmB,kBAG9B,CAAA;AAAA,EACA,WAAY,CAAA,EAAE,KAAO,EAAA,GAAG,YAAyC,EAAA;AAC/D,IAAM,KAAA,CAAA;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAY,EAAA;AAAA,QACV,GAAG,UAAW,CAAA,UAAA;AAAA,OAChB;AAAA,MACA,OAAO,EAAE,SAAA,EAAW,UAAW,CAAA,cAAA,EAAgB,YAAY,KAAM,EAAA;AAAA,KAClE,CAAA,CAAA;AAAA,GACH;AAAA,EACA,UAAU,SAA0C,EAAA;AAClD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AAAA,EAEO,QAAA,CACL,UACA,OAGkB,EAAA;AAClB,IAAA,MAAM,WAA+B,GAAA;AAAA,MACnC,WAAW,QAAS,CAAA,SAAA;AAAA,MACpB,UAAY,EAAA,IAAA,CAAK,UAAW,CAAA,iBAAA,GACxB,SAAS,UACT,GAAA,KAAA,CAAA;AAAA,KACN,CAAA;AAEA,IAAO,OAAA,KAAA,CAAM,QAAS,CAAA,WAAA,EAAa,OAAO,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,MAAa,2BAA2B,KAAe,EAAA;AACrD,IAAA,MAAM,SAAS,MAAM,IAAA;AAAA,MACnB,WAAY,CAAA;AAAA,QACV,OAAS,EAAA,6BAAA;AAAA,QACT,MAAQ,EAAA,WAAA;AAAA,OACT,CAAA;AAAA,MACD,EAAE,QAAU,EAAA,EAAE,IAAI,KAAM,EAAA,EAAG,mBAAmB,WAAY,EAAA;AAAA,KAC5D,CAAA;AAEA,IAAI,IAAA,MAAA,EAAQ,IAAM,EAAA,GAAA,EAAK,IAAM,EAAA;AAC3B,MAAA,IAAA,CAAK,QAAS,CAAA;AAAA,QACZ,YAAY,MAAO,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,CAAK,CAAC,CAAE,CAAA,IAAA;AAAA,QACpC,WAAW,MAAO,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,CAAK,CAAC,CAAE,CAAA,IAAA;AAAA,OACpC,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEA,MAAa,QAA6B,GAAA;AACxC,IAAI,IAAA,IAAA,CAAK,MAAM,UAAW,CAAA,YAAA;AAAc,MAAO,OAAA,KAAA,CAAA;AAE/C,IAAA,IAAI,KAAK,UAAW,CAAA,QAAA,IAAY,CAAC,IAAK,CAAA,QAAA,GAAW,UAAY,EAAA;AAC3D,MAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,YAAe,GAAA,MAAA,CAAO,kBAAmB,EAAA,CAAA;AAC/D,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,OAAO,MAAM,QAAS,EAAA,CAAA;AAAA,GACxB;AAAA,EAEU,gCACR,KACyB,EAAA;AACzB,IAAM,MAAA,YAAA,GAAe,KAAK,UAAW,CAAA,iBAAA,CAAA;AAErC,IAAO,OAAA;AAAA,MACL,GAAG,KAAM,CAAA,+BAAA,CAAgC,KAAK,CAAA;AAAA,MAC9C,QAAU,EAAA;AAAA,QACR,KAAO,EAAA,YAAA,GACH,CAAC,IAAA,CAAK,UAAW,CAAA,UAAA,EAAa,IAAK,CAAA,QAAA,EAAW,CAAA,SAAS,CACvD,GAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAAA,GACF;AACF;;AChFO,MAAM,iBAAiB,kBAG5B,CAAA;AAAA,EACA,WAAY,CAAA;AAAA,IACV,aAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG,UAAA;AAAA,GACuB,EAAA;AAC1B,IAAM,KAAA,CAAA;AAAA,MACJ,GAAG;AAAA,QACD,GAAG,UAAA;AAAA,QACH,KAAA,EAAO,aAAa,aAAa,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,CAAE,CAAA,QAAQ,CAAG,EAAA,KAAA;AAAA,OAC9D;AAAA,MACA,UAAY,EAAA,EAAE,GAAG,UAAA,CAAW,YAAY,aAAc,EAAA;AAAA,KACvD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAa,QAA6B,GAAA;AACxC,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,KAAO,EAAA;AAC/B,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,YAAY,IAAK,CAAA,KAAA,CAAM,KAAK,CAAI,EAAA;AAC/C,QAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,YAAe,GAAA,MAAA,CAAO,iBAAkB,EAAA,CAAA;AAC9D,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,KAAK,uBAAuB,CAAA,CAAA;AACpC,IAAM,MAAA,OAAA,GAAU,CAAC,CAAC,IAAK,CAAA,QAAA,GAAW,CAAC,CAAA,IAAK,CAAC,IAAA,CAAK,UAAW,CAAA,QAAA,CAAA;AACzD,IAAA,IAAA,CAAK,MAAM,UAAW,CAAA,YAAA,GAAe,OACjC,GAAA,IAAA,GACA,OAAO,kBAAmB,EAAA,CAAA;AAE9B,IAAO,OAAA,CAAC,IAAK,CAAA,KAAA,CAAM,UAAW,CAAA,YAAA,CAAA;AAAA,GAChC;AACF;;ACpCO,MAAM,iBAAiB,kBAG5B,CAAA;AAAC;;ACCI,MAAM,cAAc,kBAIzB,CAAA;AAAA,EACA,WAAY,CAAA,EAAE,aAAe,EAAA,GAAG,YAA0C,EAAA;AACxE,IAAM,KAAA,CAAA;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAY,EAAA,EAAE,GAAG,UAAA,CAAW,YAAY,aAAc,EAAA;AAAA,KACvD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,KAAK,IAA2B,EAAA;AACpC,IAAM,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AAErB,IAAM,MAAA,IAAA,CAAK,UAAU,YAAY,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,UAAU,SAA0C,EAAA;AAClD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AACF;;ACtBO,MAAM,eAAe,kBAI1B,CAAA;AAAA,EACA,WAAY,CAAA,EAAE,aAAe,EAAA,GAAG,YAAqC,EAAA;AACnE,IAAM,KAAA,CAAA;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAY,EAAA,EAAE,GAAG,UAAA,CAAW,YAAY,aAAc,EAAA;AAAA,KACvD,CAAA,CAAA;AAAA,GACH;AAAA,EAEU,eAAgB,CAAA;AAAA,IACxB,UAAA,EAAY,EAAE,aAAc,EAAA;AAAA,IAC5B,KAAA;AAAA,GACkE,EAAA;AAClE,IAAA,OAAO,KAAS,IAAA,YAAA,CAAa,aAAa,CAAA,CAAE,CAAC,CAAG,EAAA,KAAA,CAAA;AAAA,GAClD;AACF;;ACrBO,MAAM,iBAAiB,iBAG5B,CAAA;AAAC;;ACHI,MAAM,cAAc,KAA4B,CAAA;AAAC;;;;;;;;ACUjD,MAAM,aAAa,kBAIxB,CAAA;AAAA,EAKA,WAAY,CAAA,EAAE,aAAe,EAAA,GAAG,OAA8B,EAAA;AAC5D,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AALb,IAAQhB,eAAA,CAAA,IAAA,EAAA,WAAA,EAAY,IAAI,YAErB,EAAA,CAAA,CAAA;AAqBH,IAAAA,eAAA,CAAA,IAAA,EAAA,wBAAA,EAAyB,KAAK,SAAU,CAAA,EAAA,CAAG,IAAK,CAAA,IAAA,CAAK,WAAW,WAAW,CAAA,CAAA,CAAA;AAhBzE,IAAK,IAAA,CAAA,UAAA,CAAW,aAAgB,GAAA,YAAA,CAAa,aAAa,CAAA,CAAA;AAE1D,IAAA,QAAA;AAAA,MACE,MAAM;AACY,OAClB;AAAA,MACA,MAAM;AACJ,QAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,WAAa,EAAA,IAAA,CAAK,WAAW,aAAa,CAAA,CAAA;AAAA,OAChE;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,iBAAoB,GAAA;AAClB,IAAA,OAAO,KAAK,UAAW,CAAA,aAAA,CAAA;AAAA,GACzB;AAAA,EAIU,gCACR,KACyB,EAAA;AACzB,IAAM,MAAA,IAAA,GAAO,KAAM,CAAA,+BAAA,CAAgC,KAAK,CAAA,CAAA;AACxD,IAAO,OAAA;AAAA,MACL,GAAG,IAAA;AAAA,MACH,QAAU,EAAA;AAAA,QACR,GAAG,IAAK,CAAA,QAAA;AAAA,QACR,WAAa,EAAA,IAAA;AAAA,OACf;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EACA,UAAU,SAAyC,EAAA;AACjD,IAAO,OAAA,KAAA,CAAM,UAAU,SAAS,CAAA,CAAA;AAAA,GAClC;AACF;;ACjBa,MAAA,gBAAA,GAAkC,OAAO,MAAO,CAAA;AAAA,EAC3D,MAAM,MAAM,QAAA;AAAA,EACZ,QAAQ,MAAM,MAAA;AAAA,EACd,SAAS,MAAM,OAAA;AAAA,EACf,OAAO,MAAM,QAAA;AAAA,EACb,QAAQ,MAAM,MAAA;AAAA,EACd,MAAM,MAAM,IAAA;AAAA,EACZ,IAAA,EAAM,CAAC,GAAQ,KAAA;AACb,IAAA,MAAM,UAAa,GAAA,GAAA,CAAA;AAEnB,IAAI,IAAA,UAAA,EAAY,YAAY,KAAO,EAAA;AACjC,MAAO,OAAA,aAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EACA,QAAQ,MAAM,MAAA;AAAA,EACd,MAAM,MAAM,IAAA;AAAA,EACZ,OAAO,MAAM,KAAA;AAAA,EACb,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,IAAA,MAAM,UAAa,GAAA,GAAA,CAAA;AAEnB,IAAA,IAAI,WAAW,KAAO,EAAA;AACpB,MAAO,OAAA,UAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EACA,OAAO,MAAM,KAAA;AAAA,EACb,UAAU,MAAM,QAAA;AAAA,EAChB,UAAU,MAAM,QAAA;AAAA,EAChB,OAAO,MAAM,KAAA;AAAA,EACb,QAAQ,MAAM,MAAA;AAAA,EACd,OAAO,MAAM,KAAA;AAAA,EACb,MAAM,MAAM,IAAA;AACd,CAAC,CAAA;;;;;;;;ACtEM,MAAM,OAAQ,CAAA;AAAA,EASnB,WAAc,GAAA;AARd,IAAyBA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAEzB,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAW,IAAI,WAAA;AAAA,MACb,iBAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAO,CAAA,kCAAA;AAAA,KACT,CAAA,CAAA;AAGE,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,KAAO,EAAA,UAAA;AAAA,MACP,WAAa,EAAA,MAAA;AAAA,MACb,IAAM,EAAA,QAAA;AAAA,KACP,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,IAAI,IAAK,CAAA,KAAA;AAAO,MAAO,OAAA,IAAA,CAAK,MAAM,UAAW,CAAA,KAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,MAAM,IAAO,GAAA;AACX,IAAA,MAAM,MAAM,MAAM,IAAA;AAAA,MAChB,WAAY,CAAA;AAAA,QACV,MAAQ,EAAA,gBAAA;AAAA,QACR,MAAQ,EAAA,IAAA;AAAA,OACT,CAAA;AAAA,KACH,CAAA;AACA,IAAA,IAAI,CAAC,GAAA,EAAK,IAAM,EAAA,WAAA,CAAY,IAAM,EAAA;AAChC,MAAM,MAAA,IAAI,MAAM,kCAAkC,CAAA,CAAA;AAAA,KACpD;AAEA,IAAA,MAAM,aAAuB,IAAK,CAAA,KAAA,CAAM,GAAK,EAAA,IAAA,EAAM,YAAY,IAAI,CAAA,CAAA;AACnE,IAAA,MAAM,QAAW,GAAAU,cAAA,CAAa,UAAW,CAAA,QAAA,EAAU,OAAO,CAAE,CAAA,IAAA;AAAA,MAC1D,CAAC,MAAM,CAAE,CAAA,QAAA;AAAA,KACR,EAAA,KAAA,CAAA;AACH,IAAA,MAAM,gBACJA,cAAa,CAAA,UAAA,CAAW,SAAS,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA,EAC5D,SAASA,cAAa,CAAA,UAAA,EAAY,UAAU,OAAO,CAAA,CAAE,CAAC,CAAG,EAAA,KAAA,CAAA;AAE/D,IAAA,IAAA,CAAK,KAAQ,GAAA,UAAA,CAAA;AACb,IAAI,IAAA,QAAA;AAAU,MAAK,IAAA,CAAA,KAAA,CAAM,SAAS,KAAQ,GAAA,QAAA,CAAA;AAC1C,IAAI,IAAA,aAAA;AAAe,MAAK,IAAA,CAAA,KAAA,CAAM,SAAS,KAAQ,GAAA,aAAA,CAAA;AAAA,GACjD;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAO,OAAA;AAAA,MACL,SAAA,EAAW,IAAK,CAAA,KAAA,EAAO,QAAU,EAAA,KAAA;AAAA,MACjC,MAAA,EAAQ,IAAK,CAAA,KAAA,EAAO,QAAU,EAAA,KAAA;AAAA,KAChC,CAAA;AAAA,GACF;AAAA,EAEA,YAAY,WAAqB,EAAA;AAC/B,IAAA,IAAI,KAAK,KAAO,EAAA,QAAA;AAAU,MAAK,IAAA,CAAA,KAAA,CAAM,SAAS,KAAQ,GAAA,WAAA,CAAA;AAAA,GACxD;AACF;;;;;;;;;;;;;;;;;;;;AC7DA,IAAA,KAAA,CAAA;AAAO,MAAM,IAAK,CAAA;AAAA,EAEhB,YAAY,IAAW,EAAA;AADvB,IAAAP,cAAA,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEE,IAAAD,cAAA,CAAA,IAAA,EAAK,OAAQ,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,GACpB;AAAA,EACA,YAAY,WAAqB,EAAA;AAC/B,GACF;AAAA,EACA,IAAI,IAAO,GAAA;AACT,IAAA,OAAOD,cAAK,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GACd;AACF,CAAA;AAVE,KAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;ACKK,MAAM,MAAO,CAAA;AAAA,EASlB,WAAc,GAAA;AARd,IAAwBD,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAExB,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAW,IAAI,WAAA;AAAA,MACb,gBAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAO,CAAA,iCAAA;AAAA,KACT,CAAA,CAAA;AAGE,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,KAAO,EAAA,UAAA;AAAA,MACP,IAAM,EAAA,QAAA;AAAA,KACP,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,IAAI,IAAK,CAAA,KAAA;AAAO,MAAO,OAAA,IAAA,CAAK,MAAM,UAAW,CAAA,KAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,MAAM,IAAO,GAAA;AACX,IAAA,MAAM,MAAM,MAAM,IAAA;AAAA,MAChB,WAAY,CAAA;AAAA,QACV,MAAQ,EAAA,eAAA;AAAA,QACR,MAAQ,EAAA,IAAA;AAAA,OACT,CAAA;AAAA,KACH,CAAA;AACA,IAAA,IAAI,CAAC,GAAA,EAAK,IAAM,EAAA,UAAA,CAAW,IAAM,EAAA;AAC/B,MAAM,MAAA,IAAI,MAAM,iCAAiC,CAAA,CAAA;AAAA,KACnD;AACA,IAAA,IAAA,CAAK,SAAS,MAAO,EAAA,CAAA;AAErB,IAAA,MAAM,aAAsB,IAAK,CAAA,KAAA,CAAM,GAAK,EAAA,IAAA,EAAM,WAAW,IAAI,CAAA,CAAA;AACjE,IAAA,MAAM,WAAc,GAAAU,cAAA,CAAa,UAAW,CAAA,MAAA,CAAO,OAAO,CAAE,CAAA,IAAA;AAAA,MAC1D,CAAC,MAAM,CAAE,CAAA,QAAA;AAAA,KACR,EAAA,KAAA,CAAA;AACH,IAAA,IAAA,CAAK,KAAQ,GAAA,UAAA,CAAA;AACb,IAAI,IAAA,WAAA,IAAe,KAAK,KAAM,CAAA,MAAA;AAAQ,MAAK,IAAA,CAAA,KAAA,CAAM,OAAO,KAAQ,GAAA,WAAA,CAAA;AAAA,GAClE;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAO,OAAA;AAAA,MACL,SAAA,EAAW,IAAK,CAAA,KAAA,EAAO,MAAO,CAAA,KAAA;AAAA,KAChC,CAAA;AAAA,GACF;AACF;;;;;;;;AC9CO,MAAM,YAAa,CAAA;AAAA,EAExB,WAAc,GAAA;AADd,IAAAV,eAAA,CAAA,IAAA,EAAA,OAAA,EAAuB,EAAE,cAAA,EAAgB,IAAM,EAAA,YAAA,EAAc,EAAG,EAAA,CAAA,CAAA;AAE9D,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,KAAO,EAAA,UAAA;AAAA,MACP,WAAa,EAAA,MAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,IAAO,GAAA;AACX,IAAA,IAAA,CAAK,QAAQ,EAAE,cAAA,EAAgB,IAAM,EAAA,YAAA,EAAc,EAAG,EAAA,CAAA;AAEtD,IAAA,MAAM,MAAM,MAAM,IAAA;AAAA,MAGhB,WAAY,CAAA;AAAA,QACV,MAAQ,EAAA,qBAAA;AAAA,QACR,MAAQ,EAAA,IAAA;AAAA,OACT,CAAA;AAAA,KACH,CAAA;AACA,IAAI,IAAA,CAAC,GAAK,EAAA,IAAA,EAAM,MAAQ,EAAA;AACtB,MAAM,MAAA,IAAI,MAAM,iCAAiC,CAAA,CAAA;AAAA,KACnD;AAEA,IAAA,MAAM,aAGF,IAAK,CAAA,KAAA,CAAM,GAAK,EAAA,IAAA,EAAM,OAAO,IAAI,CAAA,CAAA;AAErC,IAAA,IAAA,CAAK,KAAM,CAAA,YAAA,GAAeU,cAAa,CAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAE9D,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,YAAA,EAAc,WAAW,cAAe,CAAA,OAAA;AAAA,MACxC,WAAA,EAAa,WAAW,cAAe,CAAA,SAAA;AAAA,MACvC,cAAgB,EAAA,KAAA;AAAA,MAChB,WAAa,EAAA,KAAA;AAAA,KACf,CAAA;AACA,IAAA,IAAA,CAAK,MAAM,cAAiB,GAAA,cAAA,CAAA;AAAA,GAC9B;AAAA,EACA,gBAAmB,GAAA;AACjB,IAAO,OAAA;AAAA,MACL,UAAA,EAAY,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA,YAAA;AAAA,MACvC,aAAa,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA,WAAA,KAAgB,OAAO,IAAO,GAAA,EAAA;AAAA,MACtE,gBACE,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA,cAAA,KAAmB,OAAO,IAAO,GAAA,EAAA;AAAA,MAC9D,aAAa,IAAK,CAAA,KAAA,CAAM,cAAgB,EAAA,WAAA,KAAgB,OAAO,IAAO,GAAA,EAAA;AAAA,KACxE,CAAA;AAAA,GACF;AAAA,EACA,YAAY,WAAqB,EAAA;AAC/B,GACF;AACF;;ACxCO,MAAe,SAA6C,CAAA;AAEnE;;ACfO,MAAM,0BAA0B,SAGpC,CAAA;AAAA,EACD,WAAA,CACS,aACA,OAIP,EAAA;AACA,IAAM,KAAA,EAAA,CAAA;AANC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAAA,GAMT;AACF;;ACaO,MAAM,0BAA0B,SAGpC,CAAA;AAAA,EACD,WAAA,CACS,aACA,OAIP,EAAA;AACA,IAAM,KAAA,EAAA,CAAA;AANC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAAA,GAMT;AACF;;ACxCO,MAAM,0BAA0B,SAGpC,CAAA;AAAA,EACD,WAAA,CACS,aACA,OAIP,EAAA;AACA,IAAM,KAAA,EAAA,CAAA;AANC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAAA,GAMT;AACF;;ACbO,MAAM,2BAA2B,SAErC,CAAA;AAAA,EACD,WAAA,CACS,aACA,OACP,EAAA;AACA,IAAM,KAAA,EAAA,CAAA;AAHC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAAA,GAGT;AACF;;ACTO,MAAM,iBAAiB,SAE3B,CAAA;AAAA,EACD,WAAA,CACS,aACA,OACP,EAAA;AACA,IAAM,KAAA,EAAA,CAAA;AAHC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAAA,GAGT;AACF;;ACUA,SAAS,kBAAA,CAAmB,QAAgB,QAAiC,EAAA;AAC3E,EAAA,OAAO,IAAI,iBAAA,CAAkB,QAAU,EAAA,OAAO,MAAW,KAAA;AACvD,IAAA,IAAI,OAAO,SAAW,EAAA;AACpB,MAAM,MAAA,iBAAA,GAAoB,MAAM,KAAM,CAAA,IAAA;AAAA,QAQpC,WAAY,CAAA;AAAA,UACV,MAAQ,EAAA,aAAA;AAAA,UACR,MAAQ,EAAA,IAAA;AAAA,UACR,WAAa,EAAA,MAAA;AAAA,SACd,CAAA;AAAA,QACD,MAAO,CAAA,KAAA;AAAA,OACT,CAAA;AACA,MAAA,MAAM,SAAY,GAAA,uBAAA;AAAA,QAChB,iBAAA;AAAA,OACF,CAAA;AACA,MAAA,IAAI,WAAW,OAAS,EAAA,MAAA,EAAQ,KAAM,CAAA,CAAC,MAAM,kBAAoB,EAAA;AAC/D,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,cAAe,EAAA,CAAA;AAAA,OACpC,MAAA;AACL,QAAA,MAAM,MAAM,wBAAwB,CAAA,CAAA;AAAA,OACtC;AAAA,KACF;AACA,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAM,EAAA,KAAA,CAAA,EAAW,mBAAmB,IAAK,EAAA,CAAA;AAAA,GAC9D,CAAA,CAAA;AACH,CAAA;AAEA,SAAS,kBAAA,CAAmB,QAAgB,IAA6B,EAAA;AACvE,EAAA,OAAO,IAAI,iBAAA,CAAkB,IAAM,EAAA,OAAO,MAAW,KAAA;AACnD,IAAA,IAAI,OAAO,SAAW,EAAA;AACpB,MAAM,MAAA,mBAAA,GAAsB,MAAM,KAAM,CAAA,IAAA;AAAA,QACtC,WAAY,CAAA;AAAA,UACV,MAAQ,EAAA,aAAA;AAAA,UACR,MAAQ,EAAA,IAAA;AAAA,UACR,KAAO,EAAA,IAAA;AAAA,SACR,CAAA;AAAA,QACD,MAAO,CAAA,IAAA;AAAA,OACT,CAAA;AACA,MAAA,MAAM,SAAY,GAAA,uBAAA;AAAA,QAChB,mBAAA;AAAA,OACF,CAAA;AACA,MAAA,IAAI,WAAW,cAAgB,EAAA;AAC7B,QAAA,OAAO,kBAAmB,CAAA,MAAA,EAAQ,SAAU,CAAA,IAAA,CAAM,IAAK,CAAA,CAAA;AAAA,OAC9C,MAAA,IAAA,SAAA,EAAW,OAAS,EAAA,MAAA,EAAQ,SAAS,mBAAqB,EAAA;AACnE,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,cAAe,EAAA,CAAA;AAAA,OAC3C;AAGA,MAA0B;AACxB,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,cAAe,EAAA,CAAA;AAAA,OAC3C;AAAA,KACF;AACA,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAM,EAAA,KAAA,CAAA,EAAW,mBAAmB,IAAK,EAAA,CAAA;AAAA,GAC9D,CAAA,CAAA;AACH,CAAA;AAEA,eAAe,UAAU,MAAqD,EAAA;AAC5E,EAAA,MAAM,6BAA6B,MAAM,IAAA;AAAA,IAIvC,WAAY,CAAA;AAAA,MACV,MAAQ,EAAA,kBAAA;AAAA,MACR,MAAQ,EAAA,IAAA;AAAA,MACR,SAAW,EAAA,IAAA;AAAA,MACX,WAAa,EAAA,EAAA;AAAA,MACb,qBAAuB,EAAA,IAAA;AAAA,KACxB,CAAA;AAAA,IACD;AAAA,MACE,iBAAmB,EAAA,WAAA;AAAA,MACnB,gBAAkB,EAAA;AAAA,QAChB,WAAa,EAAA,QAAA;AAAA,OACf;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,iBAAA,GAAoB,4BAA4B,IAAM,EAAA,IAAA,CAAA;AAE5D,EAAA,IAAI,iBAAmB,EAAA;AACrB,IAAA,OAAO,IAAI,iBAAA;AAAA,MACT,0BAA4B,EAAA,IAAA;AAAA,MAC5B,OAAO,MAAW,KAAA;AAChB,QAAI,IAAA,MAAA,CAAO,SAAa,IAAA,MAAA,CAAO,MAAQ,EAAA;AACrC,UAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,MAAO,EAAA,CAAA;AAAA,SACxB,MAAA,IAAA,MAAA,CAAO,SAAa,IAAA,CAAC,OAAO,MAAQ,EAAA;AAC7C,UAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,SAAU,EAAA,CAAA;AAAA,SACtC;AACA,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAM,EAAA,KAAA,CAAA,EAAW,mBAAmB,IAAK,EAAA,CAAA;AAAA,OAC/D;AAAA,KACF,CAAA;AAAA,GACK,MAAA;AACL,IAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,SAAU,EAAA,CAAA;AAAA,GACtC;AACF,CAAA;AACA,eAAe,KAAK,MAAqD,EAAA;AACvE,EAAA,MAAM,eAAe,MAAM,IAAA;AAAA,IAOzB,WAAY,CAAA;AAAA,MACV,MAAQ,EAAA,MAAA;AAAA;AAAA,KAET,CAAA;AAAA,IACD;AAAA,MACE,iBAAmB,EAAA,WAAA;AAAA,MACnB,gBAAkB,EAAA;AAAA,QAChB,WAAa,EAAA,QAAA;AAAA,OACf;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,iBAAA,GACJ,YAAc,EAAA,IAAA,EAAM,OAAQ,CAAA,MAAA,CAAO,CAAC,CAAE,CAAA,KAAA,CAAM,CAAC,CAAA,CAAE,IAAS,KAAA,iBAAA,CAAA;AAE1D,EAAA,IAAI,iBAAmB,EAAA;AACrB,IAAA,OAAO,IAAI,QAAA,CAAS,YAAc,EAAA,IAAA,EAAM,OAAO,MAAW,KAAA;AACxD,MAAA,IAAI,OAAO,SAAW,EAAA;AACpB,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,SAAU,EAAA,CAAA;AAAA,OACtC;AACA,MAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAM,EAAA,KAAA,CAAA,EAAW,mBAAmB,IAAK,EAAA,CAAA;AAAA,KAC9D,CAAA,CAAA;AAAA,GACI,MAAA;AACL,IAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,SAAU,EAAA,CAAA;AAAA,GACtC;AACF,CAAA;AAEA,eAAe,UAAU,MAAiC,EAAA;AACxD,EAAA,MAAM,qBAAqB,MAAM,IAAA;AAAA,IAO/B,WAAY,CAAA;AAAA,MACV,MAAQ,EAAA,2BAAA;AAAA,MACR,MAAQ,EAAA,IAAA;AAAA,KACT,CAAA;AAAA,IACD;AAAA,MACE,iBAAmB,EAAA,WAAA;AAAA,MACnB,gBAAkB,EAAA;AAAA,QAChB,WAAa,EAAA,QAAA;AAAA,OACf;AAAA,KACF;AAAA,GACF,CAAA;AACA,EACE,IAAA,kBAAA,EAAoB,MAAM,OAAS,EAAA,MAAA,EAAQ,MAAM,CAAC,CAAA,EAAG,SACrD,2BACA,EAAA;AACA,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAM,EAAA,KAAA,CAAA;AAAA,MACN,KAAO,EAAA,uCAAA;AAAA,KACT,CAAA;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAM,EAAA,YAAA;AAAA,GACR,CAAA;AACF,CAAA;AAEA,eAAe,eACb,MACkC,EAAA;AAClC,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB,GAAG,SAAA,CAAU,QAAS,CAAA,SAAA,GAAY,gBAAiB,EAAA;AAAA,IACnD,GAAG,SAAA,CAAU,QAAS,CAAA,UAAA,GAAa,gBAAiB,EAAA;AAAA,IACpD,GAAG,SAAA,CAAU,QAAS,CAAA,eAAA,GAAkB,gBAAiB,EAAA;AAAA,IACzD,GAAG,QAAQ,gBAAiB,EAAA;AAAA,GAC9B,CAAA;AACA,EAAA,MAAM,kBAAkB,MAAM,IAAA;AAAA,IAC5B,WAAY,CAAA;AAAA,MACV,MAAQ,EAAA,SAAA;AAAA,MACR,KAAO,EAAA,IAAA;AAAA,MACP,KAAO,EAAA,IAAA;AAAA,MACP,WAAa,EAAA,EAAA;AAAA,KACd,CAAA;AAAA,IACD;AAAA,MACE,QAAU,EAAA,gBAAA;AAAA,MACV,iBAAmB,EAAA,WAAA;AAAA,MACnB,gBAAkB,EAAA;AAAA,QAChB,WAAa,EAAA,QAAA;AAAA,OACf;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAI,IAAA,eAAA,EAAiB,IAAM,EAAA,WAAA,EAAa,OAAS,EAAA;AAC/C,IAAA,OAAA,CAAQ,MAAO,EAAA,CAAA;AAEf,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,KAAA,CAAA;AAAA,KACR,CAAA;AAAA,GACF;AACA,EAAI,IAAA,eAAA,EAAiB,IAAM,EAAA,OAAA,KAAY,kBAAoB,EAAA;AACzD,IAAU,SAAA,CAAA,QAAA,CAAS,KAAM,CAAA,cAAA,GAAiB,cAAe,CAAA,QAAA,CAAA;AACzD,IAAO,OAAA,mBAAA;AAAA,MACL,MAAA;AAAA,MACA,eAAgB,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,EAAM,IAAQ,IAAA,EAAA;AAAA,KAC3C,CAAA;AAAA,GACF;AACA,EAAA,MAAM,qBAAqB,MAAM,IAAA;AAAA,IAG/B,WAAY,CAAA;AAAA,MACV,OAAS,EAAA,gCAAA;AAAA,MACT,MAAQ,EAAA,uBAAA;AAAA,MACR,SAAW,EAAA,GAAA;AAAA,MACX,UAAY,EAAA,CAAA;AAAA,KACb,CAAA;AAAA,GACH,CAAA;AACA,EAAA,MAAM,sBAAsB,MAAM,IAAA;AAAA,IAGhC,WAAY,CAAA;AAAA,MACV,OAAS,EAAA,gCAAA;AAAA,MACT,MAAQ,EAAA,uBAAA;AAAA,MACR,SAAW,EAAA,GAAA;AAAA,MACX,UAAY,EAAA,CAAA;AAAA,KACb,CAAA;AAAA,GACH,CAAA;AACA,EAAI,IAAA,kBAAA,EAAoB,MAAM,IAAM,EAAA;AAClC,IAAoB,mBAAA,CAAA,kBAAA,CAAmB,MAAM,IAAI,CAAA,CAAA;AAAA,GACnD;AACA,EAAI,IAAA,mBAAA,EAAqB,MAAM,IAAM,EAAA;AACnC,IAAoB,mBAAA,CAAA,mBAAA,CAAoB,MAAM,IAAI,CAAA,CAAA;AAAA,GACpD;AACA,EAAI,IAAA,eAAA,EAAiB,MAAM,aAAe,EAAA;AACxC,IAAA,OAAO,kBAAmB,CAAA,MAAA,EAAQ,eAAgB,CAAA,IAAA,CAAK,KAAM,IAAK,CAAA,CAAA;AAAA,GACpE;AAEA,EAAI,IAAA,eAAA,EAAiB,IAAM,EAAA,cAAA,KAAmB,IAAM,EAAA;AAClD,IAAA,OAAO,kBAAmB,CAAA,MAAA,EAAQ,eAAgB,CAAA,IAAA,CAAK,KAAM,IAAK,CAAA,CAAA;AAAA,GACpE;AAEA,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAM,EAAA,cAAA;AAAA,GACR,CAAA;AACF,CAAA;AACA,eAAe,mBAAA,CACb,QACA,OACkC,EAAA;AAClC,EAAA,OAAO,IAAI,kBAAA,CAAmB,OAAS,EAAA,OAAO,MAAW,KAAA;AACvD,IAAA,IAAI,OAAO,SAAW,EAAA;AACpB,MAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,cAAe,EAAA,CAAA;AAAA,KAC3C;AACA,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAM,EAAA,KAAA,CAAA,EAAW,mBAAmB,IAAK,EAAA,CAAA;AAAA,GAC9D,CAAA,CAAA;AACH,CAAA;AACA,eAAe,YAAY,MAAiC,EAAA;AAC1D,EAAA,MAAM,sBAAsB,MAAM,IAAA;AAAA,IAChC,WAAY,CAAA;AAAA,MACV,MAAQ,EAAA,cAAA;AAAA,KACT,CAAA;AAAA,IACD;AAAA,MACE,UAAU,EAAC;AAAA,MACX,iBAAmB,EAAA,WAAA;AAAA,MACnB,gBAAkB,EAAA;AAAA,QAChB,WAAa,EAAA,QAAA;AAAA,OACf;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAA,IAAI,CAAC,mBAAqB,EAAA,IAAA,EAAM,GAAO,IAAA,mBAAA,EAAqB,WAAW,GAAK,EAAA;AAC1E,IAAA,SAAA,CAAU,SAAS,KAAM,EAAA,CAAA;AACzB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAM,EAAA,KAAA,CAAA;AAAA,KACR,CAAA;AAAA,GACF,MAAA,IAAW,mBAAqB,EAAA,IAAA,EAAM,GAAK,EAAA;AACzC,IAAA,MAAA,CAAO,QAAS,CAAA,MAAA,CAAO,mBAAoB,CAAA,IAAA,CAAK,MAAM,aAAa,CAAA,CAAA;AACnE,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAM,EAAA,KAAA,CAAA;AAAA,KACR,CAAA;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAM,EAAA,KAAA,CAAA;AAAA,IACN,iBAAmB,EAAA,IAAA;AAAA,IACnB,KAAO,EAAA,wBAAA;AAAA,GACT,CAAA;AACF,CAAA;AAEA,MAAM,QAAgD,GAAA;AAAA,EACpD,UAAY,EAAA,SAAA;AAAA,EACZ,UAAY,EAAA,SAAA;AAAA,EACZ,YAAc,EAAA,WAAA;AAAA,EACd,OAAS,EAAA,cAAA;AAAA,EACT,IAAM,EAAA,IAAA;AACR,CAAA,CAAA;AAEA,eAAsB,QACpB,MACmC,EAAA;AACnC,EAAA,IAAI,MAAiB,GAAA,MAAA,CAAA;AAErB,EAAA,OAAO,OAAO,IAAM,EAAA;AAClB,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAEpC,IAAM,MAAA,aAAA,GAAgB,MAAM,OAAA,CAAQ,MAAM,CAAA,CAAA;AAC1C,IAAA,IAAI,yBAAyB,SAAW,EAAA;AACtC,MAAO,OAAA,aAAA,CAAA;AAAA,KACT;AAEA,IAAS,MAAA,GAAA,aAAA,CAAA;AAET,IAAA,IAAI,OAAO,KAAO,EAAA;AAChB,MAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,QACrB,IAAI,oBAAoB,EAAE,OAAA,EAAS,OAAO,KAAO,EAAA,IAAA,EAAM,SAAS,CAAA;AAAA,OAClE,CAAA;AAAA,KACF;AAEA,IAAI,IAAA,MAAA,CAAO,KAAS,IAAA,MAAA,CAAO,iBAAmB,EAAA;AAC5C,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;AC5VA,IAAA,SAAA,CAAA;AA8BY,IAAA,cAAA,qBAAAY,eAAL,KAAA;AACL,EAAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;AACA,EAAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;AACA,EAAAA,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;AACA,EAAAA,eAAA,CAAA,eAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AAJU,EAAAA,OAAAA,eAAAA,CAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA,EAAA;AAiBC,MAAA,cAAA,GAAiB,CAAC,GAAwB,KAAA;AACrD,EAAA,IAAI,GAAQ,KAAA,KAAA,CAAA,IAAa,GAAI,CAAA,MAAA,GAAS,CAAG,EAAA;AACvC,IAAA,OAAO,IACJ,OAAQ,CAAA,SAAA,EAAW,GAAG,CACtB,CAAA,OAAA,CAAQ,WAAW,GAAG,CAAA,CACtB,QAAQ,OAAS,EAAA,GAAG,EACpB,OAAQ,CAAA,OAAA,EAAS,GAAG,CACpB,CAAA,OAAA,CAAQ,UAAU,GAAG,CAAA,CAAA;AAAA,GAC1B;AACA,EAAO,OAAA,EAAA,CAAA;AACT,CAAA,CAAA;AAEO,MAAM,UAAA,GAAN,MAAM,UAAU,CAAA;AAAA,EAmBb,YAAY,aAA+B,EAAA;AAZnD,IAAOtB,eAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACP,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,IAAI,MAAO,EAAA,CAAA,CAAA;AAC5B,IAAQA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAU,IAAI,OAAQ,EAAA,CAAA,CAAA;AAC9B,IAAQA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAe,IAAI,YAAa,EAAA,CAAA,CAAA;AACxC,IAAAA,eAAA,CAAA,IAAA,EAAO,iBAA2C,EAAA,IAAA,CAAA,CAAA;AAClD,IAAAA,eAAA,CAAA,IAAA,EAAQ,UAIF,EAAC,CAAA,CAAA;AACP,IAAAA,eAAA,CAAA,IAAA,EAAQ,cAAuB,EAAA,CAAA,CAAA,CAAA;AAC/B,IAAAA,eAAA,CAAA,IAAA,EAAQ,YAAqB,EAAA,CAAA,CAAA,CAAA;AAO7B,IAAAA,eAAA,CAAA,IAAA,EAAU,WAAY,EAAA;AAAA,MACpB,CAAA,sBAAO,GAAkB,EAAA;AAAA,MACzB,CAAA,sBAAO,GAAkB,EAAA;AAAA,KAC3B,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAU,OAAQ,EAAA;AAAA,MAChB,CAAA,sBAAO,GAAkB,EAAA;AAAA,MACzB,CAAA,sBAAO,GAAkB,EAAA;AAAA,KAC3B,CAAA,CAAA;AAEA,IAIIA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA;AAAA,MACF,YAAY,EAAC;AAAA,MACb,cAAgB,EAAA,CAAA;AAAA,MAChB,MAAQ,EAAA,IAAA;AAAA,KACV,CAAA,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,IAAI,YAAa,EAAA,CAAA,CAAA;AAyC1B,IAAAA,eAAA,CAAA,IAAA,EAAQ,mBAA4B,EAAC,CAAA,CAAA;AAjEnC,IAAA,IAAA,CAAK,aAAgB,GAAA,EAAE,GAAG,gBAAA,EAAkB,GAAG,aAAc,EAAA,CAAA;AAE7D,IAAA,kBAAA,CAAmB,IAAM,EAAA,EAAE,aAAe,EAAA,KAAA,EAAO,CAAA,CAAA;AAAA,GACnD;AAAA,EArBA,WAAkB,QAAW,GAAA;AAC3B,IAAA,IAAI,CAACC,cAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAW,MAAKC,cAAA,CAAA,IAAA,EAAA,SAAA,EAAY,IAAI,UAAU,EAAA,CAAA,CAAA;AAEpD,IAAA,OAAOD,cAAK,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAwCA,WAAc,GAAA;AACZ,IAAA,OAAO,CAAC,GAAG,IAAK,CAAA,KAAA,CAAM,CAAE,CAAA,MAAA,EAAU,EAAA,GAAG,IAAK,CAAA,KAAA,CAAM,CAAE,CAAA,MAAA,EAAQ,CAAA,CAAA;AAAA,GAC5D;AAAA,EACA,eAAe,IAAkB,EAAA;AAC/B,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,MAAM,IAAI,CAAA,CAAE,QAAQ,CAAA,CAAA;AAAA,GACtC;AAAA,EACA,aAAA,CAAc,UAAkB,SAAwB,EAAA;AACtD,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,OAAO,IAAK,CAAA,KAAA,CAAM,SAAS,CAAA,CAAE,IAAI,QAAQ,CAAA,CAAA;AAAA,KACpC,MAAA;AACL,MAAK,IAAA,CAAA,KAAA,CAAM,EAAE,GAAI,CAAA,QAAQ,KAAK,IAAK,CAAA,KAAA,CAAM,CAAE,CAAA,GAAA,CAAI,QAAQ,CAAA,CAAA;AAAA,KACzD;AAAA,GACF;AAAA,EACA,WAAA,CAAY,QAAyB,SAAwB,EAAA;AAC3D,IAAI,IAAA,SAAA;AAAW,MAAA,OAAO,KAAK,SAAU,CAAA,SAAS,EAAE,GAAI,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAClE,IAAA,OACE,IAAK,CAAA,SAAA,CAAU,CAAE,CAAA,GAAA,CAAI,OAAO,MAAM,CAAC,CACnC,IAAA,IAAA,CAAK,SAAU,CAAA,CAAA,CAAE,GAAI,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,GAEvC;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,IAAK,CAAA,YAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GACd;AAAA,EACO,SAAY,GAAA;AACjB,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GACd;AAAA,EACO,UAAa,GAAA;AAClB,IAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,GACd;AAAA,EACO,eAAkB,GAAA;AACvB,IAAA,OAAO,IAAK,CAAA,YAAA,CAAA;AAAA,GACd;AAAA,EACO,cAAiB,GAAA;AACtB,IAAO,OAAA,IAAI,KAAK,EAAE,IAAA,EAAM,EAAE,IAAM,EAAA,MAAA,IAAU,CAAA,CAAA;AAAA,GAC5C;AAAA,EAIA,MAAa,IAAI,eAAmC,EAAA;AAClD,IAAA,IAAA,CAAK,OAAO,IAAK,EAAA,CAAA;AACjB,IAAA,IAAA,CAAK,QAAQ,IAAK,EAAA,CAAA;AAClB,IAAA,IAAA,CAAK,aAAa,IAAK,EAAA,CAAA;AACvB,IAAK,IAAA,CAAA,UAAA,GAAa,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACxC,IAAK,IAAA,CAAA,YAAA,GAAe,MAAO,CAAA,MAAA,CAAO,YAAY,CAAA,CAAA;AAC9C,IAAA,IAAA,CAAK,eAAkB,GAAA,eAAA,CAAA;AAEvB,IAAM,MAAA,MAAA,GAAS,cAAe,CAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAEhD,IAAA,IAAI,MAAQ,EAAA;AACV,MAAM,MAAA,GAAA,GAAoB,SAAS,MAAM,CAAA,CAAA;AACzC,MAAa,YAAA,CAAA,GAAA,CAAI,WAAa,EAAA,OAAO,CAAE,CAAA,OAAA;AAAA,QAAQ,CAAC,CAC9C,KAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,UACrB,IAAI,mBAAoB,CAAA;AAAA,YACtB,SAAS,CAAE,CAAA,IAAA;AAAA,YACX,IAAM,EAAA,SAAA;AAAA,WACP,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAS,KAAA,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,MAAA,CAAO,OAAO,QAAQ,CAAA,GAAI,GAAG,CAAK,EAAA,EAAA;AACpD,MAAI,IAAA,CAAA,GAAI,KAAK,YAAc,EAAA;AACzB,QAAA,IAAA,CAAK,OAAO,IAAK,CAAA;AAAA,UACf,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,UAChB,UAAY,EAAA,CAAA;AAAA,UACZ,MAAQ,EAAA,WAAA;AAAA,SACT,CAAA,CAAA;AAAA,OACH;AACA,MAAA,IAAI,CAAI,GAAA,IAAA,CAAK,YAAgB,IAAA,CAAA,IAAK,KAAK,UAAY,EAAA;AACjD,QAAA,IAAA,CAAK,OAAO,IAAK,CAAA;AAAA,UACf,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,UAChB,UAAY,EAAA,CAAA;AAAA,UACZ,MAAQ,EAAA,SAAA;AAAA,SACT,CAAA,CAAA;AAAA,OACH;AACA,MAAI,IAAA,CAAA,KAAM,KAAK,YAAc,EAAA;AAC3B,QAAA,IAAA,CAAK,OAAO,IAAK,CAAA;AAAA,UACf,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,UAChB,UAAY,EAAA,CAAA;AAAA,UACZ,MAAQ,EAAA,SAAA;AAAA,SACT,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AACA,IAAA,MAAM,GAAM,GAAA,MAAM,WAAY,CAAA,QAAA,CAAS,kBAAmB,EAAA,CAAA;AAE1D,IAAI,IAAA;AACF,MAAA,WAAA,MAAiB,kBAAkB,GAAK,EAAA;AACtC,QAAA,IAAA,CAAK,eAAgB,CAAA,IAAA;AAAA,UACnB,cAAA,CAAe,SAAY,GAAA,GAAA,GAAM,cAAe,CAAA,QAAA;AAAA,SAClD,CAAA;AAAA,OACF;AACA,MAAA,WAAA,MAAiB,kBAAkB,GAAK,EAAA;AACtC,QAAM,MAAA,OAAA,GAAU,IAAI,IAAA,CAAK,cAAc,CAAA,CAAA;AACvC,QAAA,MAAM,QAAQ,IAAK,EAAA,CAAA;AAEnB,QAAI,IAAA,cAAA,CAAe,cAAc,GAAK,EAAA;AACpC,UAAA,IAAA,CAAK,KAAM,CAAA,CAAA,CAAE,GAAI,CAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AACjD,UAAA,IAAA,CAAK,UAAU,CAAE,CAAA,GAAA,CAAI,OAAO,cAAe,CAAA,EAAE,GAAG,OAAO,CAAA,CAAA;AAAA,SAClD,MAAA;AACL,UAAA,IAAA,CAAK,KAAM,CAAA,CAAA,CAAE,GAAI,CAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AACjD,UAAA,IAAA,CAAK,UAAU,CAAE,CAAA,GAAA,CAAI,OAAO,cAAe,CAAA,EAAE,GAAG,OAAO,CAAA,CAAA;AAAA,SACzD;AAAA,OACF;AAEA,MAAA,WAAA,MAAiB,kBAAkB,GAAK,EAAA;AACtC,QAAK,IAAA,CAAA,SAAA,CAAU,cAAe,CAAA,SAAS,CACpC,CAAA,GAAA,CAAI,MAAO,CAAA,cAAA,CAAe,EAAE,CAAC,CAC5B,EAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AAAA,OACvB;AAEA,MAAK,IAAA,CAAA,KAAA,CAAM,UAAa,GAAA,IAAA,CAAK,WAAY,EAAA,CAAA;AACzC,MAAA,IAAA,CAAK,MAAM,cAAiB,GAAA,CAAA,iBAAA;AAC5B,MAAA,IAAA,CAAK,MAAM,MAAS,GAAA,KAAA,CAAA;AAAA,aACb,CAAG,EAAA;AACV,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AACf,MAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,QACrB,IAAI,mBAAoB,CAAA;AAAA,UACtB,IAAM,EAAA,OAAA;AAAA,UACN,OAAA,EAAS,OAAO,cAAe,EAAA;AAAA,SAChC,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEO,kBAAA,CAAmB,WAAmB,OAAiB,EAAA;AAC5D,IAAK,IAAA,CAAA,eAAA,GAAkB,KAAK,eAAgB,CAAA,MAAA;AAAA,MAC1C,CAAC,CAAA,KAAM,CAAM,KAAA,SAAA,GAAY,GAAM,GAAA,OAAA;AAAA,KACjC,CAAA;AACA,IAAI,IAAA,IAAA,CAAK,eAAgB,CAAA,MAAA,KAAW,CAAG,EAAA;AACrC,MAAA,IAAA,CAAK,MAAM,cAAiB,GAAA,CAAA,eAAA;AAAA,KAC9B;AAAA,GACF;AAAA,EAEA,MAAa,IAAO,GAAA;AAClB,IAAM,MAAA,SAAA,GAAY,KAAK,eAAiB,EAAA,SAAA,CAAA;AACxC,IAAA,IAAI,SAAW,EAAA;AACb,MAAI,IAAA;AACF,QAAA,MAAM,UAAU,WAAY,CAAA;AAAA,UAC1B,MAAQ,EAAA,cAAA;AAAA,UACR,KAAO,EAAA,IAAA;AAAA,UACP,KAAO,EAAA,IAAA;AAAA,UACP,YAAY,oBAAqB,EAAA;AAAA,UACjC,SAAW,EAAA,IAAA;AAAA,UACX,KAAO,EAAA,IAAA;AAAA,SACR,CAAA,CAAA;AAED,QAAA,MAAM,YAAe,GAAA;AAAA,UACnB,GAAG,IAAK,CAAA,OAAA,CAAQ,gBAAiB,EAAA;AAAA,UACjC,GAAG,IAAK,CAAA,YAAA,CAAa,gBAAiB,EAAA;AAAA,SACxC,CAAA;AACA,QAAA,cAAA,CAAe,SAAS,YAAY,CAAA,CAAA;AAAA,eAC7B,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA,CAAA;AACnD,QAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,UACrB,IAAI,mBAAoB,CAAA;AAAA,YACtB,IAAM,EAAA,OAAA;AAAA,YACN,OAAA,EAAS,OAAO,uBAAwB,EAAA;AAAA,WACzC,CAAA;AAAA,SACH,CAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAa,KAAQ,GAAA;AACnB,IAAA,MAAM,SAAU,MAAO,CAAA,GAAA,IAAO,MAAQ,EAAA,cAAA,EAAwB,QAC3D,SAAU,CAAA,EAAA,CAAA;AACb,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAA;AACd,IAAA,CAAE,MAAO,CAAA,GAAA,IAAO,MAAQ,EAAA,cAAA,EAAwB,OAAQ,CAAA,QAAA;AAAA,MACtD,KAAA;AAAA,MACA,KAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,MAAa,OAAU,GAAA;AAAA,GAAC;AAAA,EAExB,MAAa,OACX,CAAA,MAAA,EACA,IAC2C,EAAA;AAC3C,IAAM,MAAA,OAAA,GAAU,MAAM,IAAA,CAAK,QAAS,EAAA,CAAA;AACpC,IAAA,MAAM,UAAa,GAAA,IAAA,CAAK,eAAiB,EAAA,UAAA,IAAc,OAAY,KAAA,IAAA,CAAA;AAEnE,IAAA,IAAI,UAAY,EAAA;AACd,MAAI,IAAA;AACF,QAAA,MAAM,SAAS,MAAM,OAAA;AAAA,UACnB,MAAU,IAAA;AAAA,YACR,MAAM,IAAQ,IAAA,YAAA;AAAA,WAChB;AAAA,SACF,CAAA;AAEA,QAAA,IAAI,kBAAkB,SAAW,EAAA;AAC/B,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AAEA,QAAO,OAAA,MAAA,CAAA;AAAA,eACA,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA,CAAA;AACnD,QAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,UACrB,IAAI,mBAAoB,CAAA;AAAA,YACtB,IAAM,EAAA,OAAA;AAAA,YACN,OAAA,EAAS,OAAO,uBAAwB,EAAA;AAAA,WACzC,CAAA;AAAA,SACH,CAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACK,MAAA;AACL,MAAO,OAAA,OAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEA,MAAa,IAAO,GAAA;AAClB,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,GAAG,IAAK,CAAA,MAAA,CAAO,gBAAiB,EAAA;AAAA,MAChC,GAAG,IAAK,CAAA,OAAA,CAAQ,gBAAiB,EAAA;AAAA,MACjC,GAAG,IAAK,CAAA,YAAA,CAAa,gBAAiB,EAAA;AAAA,MACtC,GAAG,QAAQ,gBAAiB,EAAA;AAAA,KAC9B,CAAA;AACA,IAAA,MAAM,OAAO,MAAM,IAAA;AAAA,MACjB,WAAY,CAAA;AAAA,QACV,MAAQ,EAAA,SAAA;AAAA,QACR,KAAO,EAAA,IAAA;AAAA,QACP,YAAY,oBAAqB,EAAA;AAAA,OAClC,CAAA;AAAA,MACD;AAAA,QACE,QAAU,EAAA,YAAA;AAAA,QACV,iBAAmB,EAAA,WAAA;AAAA,QACnB,gBAAkB,EAAA;AAAA,UAChB,WAAa,EAAA,QAAA;AAAA,SACf;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAa,KAAQ,GAAA;AACnB,IAAA,MAAA,CAAO,KAAM,EAAA,CAAA;AAAA,GACf;AAAA,EAEO,aAAa,IAAc,EAAA;AAChC,IAAA,IAAI,IAAK,CAAA,MAAA;AAAQ,MAAO,OAAA,IAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAAA,GAC1C;AAAA,EAEA,MAAa,IAAO,GAAA;AAClB,IAAM,MAAA,OAAA,GAAU,MAAM,IAAA,CAAK,QAAS,EAAA,CAAA;AACpC,IAAA,IAAI,OAAY,KAAA,IAAA;AAAM,MAAO,OAAA,OAAA,CAAA;AAC7B,IAAA,MAAM,SAAY,GAAA,IAAA,CAAK,eAAiB,EAAA,YAAA,IAAgB,OAAY,KAAA,IAAA,CAAA;AAEpE,IAAA,IAAI,SAAW,EAAA;AACb,MAAI,IAAA;AACF,QAAA,MAAM,gBAAgB,MAAM,IAAA;AAAA,UAC1B,WAAY,CAAA;AAAA,YACV,MAAQ,EAAA,2BAAA;AAAA,YACR,MAAQ,EAAA,IAAA;AAAA,WACT,CAAA;AAAA,UACD;AAAA,YACE,iBAAmB,EAAA,WAAA;AAAA,YACnB,gBAAkB,EAAA;AAAA,cAChB,WAAa,EAAA,QAAA;AAAA,aACf;AAAA,WACF;AAAA,SACF,CAAA;AACA,QACE,IAAA,aAAA,EAAe,MAAM,OAAS,EAAA,MAAA,EAAQ,MAAM,CAAC,CAAA,EAAG,SAChD,2BACA,EAAA;AACA,UAAM,MAAA,IAAI,MAAM,wCAAwC,CAAA,CAAA;AAAA,SAC1D;AAGA,QAAA,MAAM,wBAAwB,MAAM,IAAA;AAAA,UAClC,WAAY,CAAA;AAAA,YACV,MAAQ,EAAA,kBAAA;AAAA,YACR,MAAQ,EAAA,IAAA;AAAA,YACR,SAAW,EAAA,IAAA;AAAA,YACX,WAAa,EAAA,EAAA;AAAA,WACd,CAAA;AAAA,UACD;AAAA,YACE,iBAAmB,EAAA,WAAA;AAAA,YACnB,gBAAkB,EAAA;AAAA,cAChB,WAAa,EAAA,QAAA;AAAA,aACf;AAAA,WACF;AAAA,SACF,CAAA;AACA,QAAI,IAAA,qBAAA,EAAuB,WAAW,GAAK,EAAA;AACzC,UAAM,MAAA,IAAI,MAAM,8BAA8B,CAAA,CAAA;AAAA,SAChD;AAEA,QAAA,MAAM,UAAU,WAAY,CAAA;AAAA,UAC1B,MAAQ,EAAA,cAAA;AAAA,UACR,KAAO,EAAA,IAAA;AAAA,UACP,KAAO,EAAA,IAAA;AAAA,UACP,YAAY,oBAAqB,EAAA;AAAA,UACjC,SAAW,EAAA,IAAA;AAAA,UACX,KAAO,EAAA,IAAA;AAAA,SACR,CAAA,CAAA;AAED,QAAA,MAAM,YAAe,GAAA;AAAA,UACnB,GAAG,IAAK,CAAA,MAAA,CAAO,gBAAiB,EAAA;AAAA,UAChC,GAAG,IAAK,CAAA,OAAA,CAAQ,gBAAiB,EAAA;AAAA,UACjC,GAAG,IAAK,CAAA,YAAA,CAAa,gBAAiB,EAAA;AAAA,UACtC,GAAG,QAAQ,gBAAiB,EAAA;AAAA,SAC9B,CAAA;AACA,QAAA,cAAA,CAAe,SAAS,YAAY,CAAA,CAAA;AACpC,QAAO,OAAA,IAAA,CAAA;AAAA,eACA,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA,CAAA;AACnD,QAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,UACrB,IAAI,mBAAoB,CAAA;AAAA,YACtB,IAAM,EAAA,OAAA;AAAA,YACN,OAAA,EAAS,OAAO,uBAAwB,EAAA;AAAA,WACzC,CAAA;AAAA,SACH,CAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAa,IAAO,GAAA;AAClB,IAAA,MAAM,OAAO,MAAM,IAAA;AAAA,MACjB,WAAY,CAAA;AAAA,QACV,MAAQ,EAAA,UAAA;AAAA,QACR,KAAO,EAAA,IAAA;AAAA,QACP,KAAO,EAAA,IAAA;AAAA,QACP,KAAO,EAAA,IAAA;AAAA,OACR,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,MAAM,YAAe,GAAA,IAAA,CAAA;AACrB,IAAA,MAAM,yBAAyB,YAAc,EAAA,OAAA,CAAA;AAC7C,IACE,IAAA,sBAAA,KAA2B,wBAC3B,IAAA,sBAAA,KAA2B,kBAC3B,EAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,MAAA,IACE,YAAc,EAAA,OAAA,KAAY,uBAC1B,IAAA,YAAA,EAAc,SAAS,MAAO,CAAA,KAAA,CAAM,CAAC,CAAA,KAAM,uBAC3C,EAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEA,MAAa,QAAW,GAAA;AACtB,IAAA,MAAM,GAAM,GAAA,CAAA,EACV,MAAO,CAAA,OACT,yDACE,MAAO,CAAA,kBAAA,IAAsB,OAC/B,CAAA,eAAA,EAAkB,MAAO,CAAA,eAAA,IAAmB,OAAO,CAAA,YAAA,EACjD,OAAO,cACT,CAAA,WAAA,CAAA,CAAA;AAEA,IAAM,MAAA,MAAA,GAAS,MAAM,GAAA,CAAI,GAAG,CAAA,CAAA;AAE5B,IAAI,IAAA,MAAA,IAAU,MAAO,CAAA,IAAA,KAAS,IAAM,EAAA;AAClC,MAAM,MAAA,EAAE,MAAS,GAAA,MAAA,CAAA;AACjB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEO,YAAA,CAAa,YAAoB,SAAmB,EAAA;AACzD,IAAA,IAAI,IAAK,CAAA,MAAA,IAAU,IAAK,CAAA,MAAA,CAAO,aAAa,CAAC,CAAA;AAC3C,MAAA,IAAA,CAAK,MAAO,CAAA,UAAA,GAAa,CAAC,CAAA,CAAE,KAAQ,GAAA,SAAA,CAAA;AAAA,GACxC;AAAA,EAEA,MAAa,QAAkC,GAAA;AAC7C,IAAA,IAAI,YAA6B,GAAA,IAAA,CAAA;AAEjC,IAAA,WAAA,MAAiB,GAAG,CAAC,CAAK,IAAA,IAAA,CAAK,MAAM,CAAG,EAAA;AACtC,MAAM,MAAA,MAAA,GAAS,MAAM,CAAA,CAAE,QAAS,EAAA,CAAA;AAChC,MAAI,IAAA,MAAA,KAAW,IAAQ,IAAA,CAAC,YAAc,EAAA;AACpC,QAAe,YAAA,GAAA,MAAA,CAAA;AAAA,OACjB;AAAA,KACF;AACA,IAAA,WAAA,MAAiB,GAAG,CAAC,CAAK,IAAA,IAAA,CAAK,MAAM,CAAG,EAAA;AACtC,MAAM,MAAA,MAAA,GAAS,MAAM,CAAA,CAAE,QAAS,EAAA,CAAA;AAChC,MAAI,IAAA,MAAA,KAAW,IAAQ,IAAA,CAAC,YAAc,EAAA;AACpC,QAAe,YAAA,GAAA,MAAA,CAAA;AAAA,OACjB;AAAA,KACF;AAEA,IAAA,OAAO,YAAgB,IAAA,IAAA,CAAA;AAAA,GACzB;AACF,CAAA,CAAA;AA/aS,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAPE,cAAA,CADW,YACJ,SAA8B,EAAA,IAAA,CAAA,CAAA;AADhC,IAAM,SAAN,GAAA;;;;;;;;;;;;;;;ACzCP,MAAM,YAAe,GAAA;AAAA,EACnB,aAAe,EAAA,GAAA;AAAA,EACf,SAAW,EAAA,GAAA;AACb,CAAA,CAAA;AAEO,MAAM,cAAA,GAAN,MAAM,cAAwC,CAAA;AAAA,EAG3C,WAAc,GAAA;AAAA,GAAC;AAAA,EAEvB,aAAA,CAAc,SAAiB,OAAuC,EAAA;AACpE,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,QAAS,CAAA,aAAA,CAAc,SAAS,OAAO,CAAA,CAAA;AAC9D,IAAI,IAAA,IAAA;AAAM,MAAO,OAAA,IAAI,SAAS,IAAI,CAAA,CAAA;AAClC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,aAAa,EAAqB,EAAA;AAChC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAA,CAAA;AACxC,IAAO,OAAA,iBAAA,CAAkB,QAAS,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAA;AAAA,GACtD;AAAA,EAEA,SACE,CAAA,OAAA,EACA,MACA,EAAA,UAAA,EACA,OACA,MACA,EAAA;AAMA,IAAA,QAAA,CAAS,SAAS,MAAO,CAAA,IAAA,CAAK,EAAE,QAAA,EAAU,QAAQ,CAAA,CAAA;AAAA,GAEpD;AAAA,EAEA,aAAgB,GAAA;AACd,IAAS,QAAA,CAAA,QAAA,CAAS,cAAc,QAAS,EAAA,CAAA;AAAA,GAC3C;AAAA,EAEA,kBAAkB,MAAgB,EAAA;AAChC,IAAM,MAAA,EAAA,GAAK,OAAO,MAAM,CAAA,CAAA;AACxB,IAAI,IAAA,MAAA,CAAA;AAEJ,IAAA,QAAQ,EAAI;AAAA,MACV,KAAK,iBAAkB,CAAA,OAAA;AACrB,QAAS,MAAA,GAAA,SAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,IAAA;AACrB,QAAS,MAAA,GAAA,MAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,QAAA;AACrB,QAAS,MAAA,GAAA,UAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,IAAA;AACrB,QAAS,MAAA,GAAA,MAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,OAAA;AACrB,QAAS,MAAA,GAAA,SAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,QAAA;AACrB,QAAS,MAAA,GAAA,UAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,KAAA;AACrB,QAAS,MAAA,GAAA,aAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,YAAa,CAAA,aAAA;AAChB,QAAS,MAAA,GAAA,UAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,YAAa,CAAA,SAAA;AAChB,QAAS,MAAA,GAAA,OAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF,KAAK,iBAAkB,CAAA,KAAA;AACrB,QAAS,MAAA,GAAA,OAAA,CAAA;AACT,QAAA,MAAA;AAAA,MACF;AACE,QAAA,OAAA;AAAA,KACJ;AAEA,IACE,SAAS,aAAc,CAAA,CAAA,SAAA,EAAY,MAAM,CAAA,EAAA,CAAI,GAC5C,KAAM,EAAA,CAAA;AAAA,GACX;AAAA,EAEA,eAAwB,GAAA;AACtB,IAAS,QAAA,CAAA,QAAA,CAAS,IAAK,CAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AAAA,GAC1C;AAAA,EAEA,oBAAoB,EAA2B,EAAA;AAC7C,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAA,CAAA;AACxC,IAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,CAAA,EAAG,OAAQ,EAAA,CAAA;AAAA,GACvC;AAAA,EAEA,oBAAoB,EAA2B,EAAA;AAC7C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAA,IAAA,CAAK,oBAAoB,QAAQ,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,mBAAmB,EAA2B,EAAA;AAC5C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,CAAA,EAAG,MAAO,EAAA,CAAA;AAAA,GACtC;AAAA,EAEA,mBAAmB,EAA2B,EAAA;AAC5C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAA,IAAA,CAAK,mBAAmB,QAAQ,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,WAA2B,GAAA;AACzB,IAAO,OAAA,SAAA,CAAU,QAAS,CAAA,WAAA,EAAc,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,IAAI,QAAS,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GACpE;AAAA,EACA,kBAAkB,IAA8B,EAAA;AAC9C,IAAA,OAAO,UAAU,QAAS,CAAA,WAAA,GAAc,MAAmB,CAAA,CAAC,KAAK,CAAM,KAAA;AACrE,MAAI,IAAA,CAAA,CAAE,UAAW,CAAA,SAAA,KAAc,IAAM,EAAA;AACnC,QAAA,GAAA,CAAI,IAAK,CAAA,IAAI,QAAS,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OAC1B;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACT,EAAG,EAAE,CAAA,CAAA;AAAA,GACP;AAAA,EAEA,WAAA,CACE,SACA,KACuC,EAAA;AACvC,IAAA,MAAM,SAAuB,EAAC,CAAA;AAC9B,IAAK,IAAA,CAAA,iBAAA,CAAkB,OAAO,CAAE,CAAA,OAAA;AAAA,MAAQ,CAAC,CACvC,KAAA,MAAA,CAAO,KAAK,CAAE,CAAA,QAAA,CAAS,KAAK,CAAe,CAAA;AAAA,KAC7C,CAAA;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,gBAAgB,EAAqB,EAAA;AACnC,IAAI,IAAA,KAAA,CAAA;AAEJ,IAAA,QAAQ,EAAI;AAAA,MACV,MAAK,kBAAkB,KAAS,IAAA,OAAA;AAC9B,QAAQ,KAAA,GAAA,OAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,OAAW,IAAA,SAAA;AAChC,QAAQ,KAAA,GAAA,SAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,QAAY,IAAA,UAAA;AACjC,QAAQ,KAAA,GAAA,UAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,IAAQ,IAAA,MAAA;AAC7B,QAAQ,KAAA,GAAA,MAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,QAAY,IAAA,UAAA;AACjC,QAAQ,KAAA,GAAA,UAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,KAAS,IAAA,OAAA;AAC9B,QAAQ,KAAA,GAAA,OAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,OAAW,IAAA,SAAA;AAChC,QAAQ,KAAA,GAAA,SAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,IAAQ,IAAA,MAAA;AAC7B,QAAQ,KAAA,GAAA,MAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,IAAQ,IAAA,MAAA;AAC7B,QAAQ,KAAA,GAAA,MAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,KAAS,IAAA,OAAA;AAC9B,QAAQ,KAAA,GAAA,OAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF,MAAK,kBAAkB,SAAa,IAAA,WAAA;AAClC,QAAQ,KAAA,GAAA,WAAA,CAAA;AACR,QAAA,MAAA;AAAA,MACF;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,CAA8B,2BAAA,EAAA,EAAE,CAAE,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,sBAAwC,GAAA;AACtC,IAAA,OAAO,MAAO,CAAA,SAAA,CAAA;AAAA,GAChB;AAAA,EAEA,qBAAuC,GAAA;AACrC,IAAA,OAAO,SAAU,CAAA,QAAA,CAAS,UAAW,EAAA,CAAE,IAAQ,IAAA,IAAA,CAAA;AAAA,GACjD;AAAA,EAEA,cAAgC,GAAA;AAC9B,IAAA,OAAO,UAAU,QAAS,CAAA,WAAA,CAAA;AAAA,GAC5B;AAAA,EAEA,kBAAoC,GAAA;AAClC,IAAO,OAAA,SAAA,CAAU,QAAS,CAAA,cAAA,EAAiB,CAAA,IAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,cAAc,OAAmC,EAAA;AAC/C,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAAS,GAAG,CAAA,CAAA;AACrC,IAAI,IAAA,GAAA;AAAK,MAAO,OAAA,GAAA,CAAA;AAChB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAA,CAAQ,SAAiB,OAAoC,EAAA;AAC3D,IAAA,IAAI,OAAY,KAAA,GAAA;AAAK,MAAO,OAAA,IAAA,CAAK,aAAc,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AAC/D,IAAA,IAAI,OAAY,KAAA,GAAA;AAAK,MAAO,OAAA,IAAA,CAAK,aAAc,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AAC/D,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,aAAc,CAAA,OAAA,EAAS,GAAG,CAAA,CAAA;AAC5C,IAAA,IAAI,IAAM,EAAA;AACR,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,aAAc,CAAA,OAAA,EAAS,GAAG,CAAA,CAAA;AAC7C,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,kBAAqB,GAAA;AACnB,IAAA,OAAO,MAAO,CAAA,eAAA,CAAA;AAAA,GAChB;AAAA,EAEA,cAAiB,GAAA;AACf,IAAA,OAAO,KAAK,kBAAmB,EAAA,CAAA;AAAA,GACjC;AAAA,EAEA,mBAAsB,GAAA;AACpB,IAAO,OAAA,MAAA,CAAO,eAAgB,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAAA,GACvC;AAAA,EAEA,iBAAoB,GAAA;AAClB,IAAO,OAAA,MAAA,CAAO,gBAAgB,CAAC,CAAA,CAAA;AAAA,GACjC;AAAA,EAEA,aAAgB,GAAA;AACd,IAAO,OAAA,MAAA,CAAO,gBAAgB,CAAC,CAAA,CAAA;AAAA,GACjC;AAAA,EAEA,eAAe,OAAmC,EAAA;AAChD,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAAS,GAAG,CAAA,CAAA;AACrC,IAAI,IAAA,GAAA;AAAK,MAAO,OAAA,GAAA,CAAA;AAChB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,WAA6B,GAAA;AAC3B,IAAI,IAAA;AACF,MAAA,OAAO,MAAO,CAAA,iBAAA,CAAA;AAAA,aACP,CAAY,EAAA;AACnB,MAAA,IAAI,aAAa,KAAO,EAAA;AACtB,QAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,kBAAA,EAAqB,CAAE,CAAA,OAAO,CAAE,CAAA,CAAA,CAAA;AAAA,OAChD;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,iBAAiB,EAA2B,EAAA;AAC1C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,CAAA,EAAG,IAAK,EAAA,CAAA;AAAA,GACpC;AAAA,EAEA,iBAAiB,EAA2B,EAAA;AAC1C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA,CAAA;AAAA,GAChC;AAAA,EAEA,UAAU,KAAmB,EAAA;AAC3B,IAAS,QAAA,CAAA,QAAA,CAAS,MAAO,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,OAAA,CAAQ,OAAe,GAAmB,EAAA;AACxC,IAAA,QAAA,CAAS,QAAS,CAAA,IAAA,CAAK,OAAQ,CAAA,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,GAC3C;AAAA,EAEA,QAAW,GAAA;AAET,IAAA,SAAA,CAAU,QAAS,CAAA,IAAA,EAAO,CAAA,IAAA,CAAK,CAAC,GAAQ,KAAA;AACtC,MAAI,IAAA,GAAA;AAAK,QAAA,OAAA,CAAQ,KAAK,WAAW,CAAA,CAAA;AAAA,KAClC,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,mBAAmB,KAAiB,EAAA;AAClC,IAAA,MAAA,CAAO,eAAkB,GAAA,KAAA,CAAA;AACzB,IAAA,MAAA,CAAO,eAAkB,GAAA,KAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,YAAA,CAAa,YAAoB,SAAyB,EAAA;AACxD,IAAU,SAAA,CAAA,QAAA,CAAS,YAAa,CAAA,UAAA,EAAY,SAAS,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,iBAAiB,EAA2B,EAAA;AAC1C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,CAAA,EAAG,IAAK,EAAA,CAAA;AAAA,GACpC;AAAA,EAEA,WAAA,CACE,IACA,EAAA,KAAA,EACA,UACM,EAAA;AACN,IAAS,QAAA,CAAA,QAAA,CAAS,OACf,CAAA,OAAA,CAAQ,EAAE,QAAA,EAAU,IAAM,EAAA,KAAA,EAAO,CAAA,CACjC,IAAK,CAAA,CAAC,YAAiB,KAAA;AACtB,MAAI,IAAA;AACF,QAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAAA,eAChB,CAAG,EAAA;AACV,QAAA,IAAI,aAAa,KAAO,EAAA;AACtB,UAAO,MAAA,CAAA;AAAA,YACL,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,YACjB,IAAM,EAAA,QAAA;AAAA,WACP,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,WAAA,CACE,IACA,EAAA,KAAA,EACA,IACM,EAAA;AACN,IAAA,MAAA,CAAO,EAAE,OAAS,EAAA,IAAA,EAAM,MAAM,IAAQ,IAAA,SAAA,EAAW,OAAO,CAAA,CAAA;AAAA,GAC1D;AAAA,EAEA,iBAAiB,EAA2B,EAAA;AAC1C,IAAA,MAAM,WAAW,OAAO,EAAA,KAAO,WAAW,IAAK,CAAA,eAAA,CAAgB,EAAE,CAAI,GAAA,EAAA,CAAA;AACrE,IAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA,CAAA;AAAA,GAChC;AAAA;AAAA,EAGA,aAAa,KAAgC,EAAA;AAC3C,IAAA,OAAO,QAAS,CAAA,QAAA,CAAS,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,GACnD;AAAA;AAAA,EAGA,WAAW,KAAgC,EAAA;AACzC,IAAA,OAAO,QAAS,CAAA,QAAA,CAAS,OAAQ,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,GACjD;AAAA,EAEA,aAAA,CAAc,SAAiB,MAAiB,EAAA;AAC9C,IAAK,IAAA,CAAA,SAAA,CAAU,SAAS,MAAM,CAAA,CAAA;AAAA,GAChC;AACF,CAAA,CAAA;AArUEH,eADW,CAAA,cAAA,EACG,UAAW,EAAA,IAAI,cAAc,EAAA,CAAA,CAAA;AADtC,IAAM,aAAN,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBP,IAAA,UAAA,CAAA;AA6BO,MAAM,eAAgB,CAAA;AAAA,EAU3B,YAA4B,UAAwC,EAAA;AAAxC,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;AAT5B,IAAa,YAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AACb,IAAA,aAAA,CAAA,IAAA,EAAO,QAAa,EAAC,CAAA,CAAA;AACrB,IAAA,aAAA,CAAA,IAAA,EAAQ,QAAgC,EAAA;AAAA,MACtC,SAAW,EAAA,KAAA;AAAA,MACX,YAAY,EAAC;AAAA,MACb,YAAY,EAAC;AAAA,MACb,YAAY,EAAC;AAAA,KACf,CAAA,CAAA;AAGE,IAAA,cAAA,CAA0C,IAAM,EAAA;AAAA,MAC9C,MAAQ,EAAA,UAAA;AAAA,MACR,KAAO,EAAA,QAAA;AAAA,KACR,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,UAAW,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,IAAW,KAA6C,GAAA;AACtD,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA,GACrC;AAAA,EAEO,aAAmB,GAAA;AACxB,IAAA,OAAO,KAAK,KAAM,CAAA,UAAA,CAAA;AAAA,GACpB;AAAA,EAEA,MAAM,KAAK,IAAY,EAAA;AACrB,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA;AAAY,MAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA,CAAA;AAC9D,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,IAAA,CAAA,CAAA;AAClB,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AAAA,GACd;AAAA,EAEQ,iBAAiB,CAAwB,EAAA;AAC/C,IAAA,IAAI,EAAE,UAAY,EAAA;AAChB,MAAA,IAAA,CAAK,OAAO,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,CAAA,CAAE,WAAW,IAAI,CAAA,CAAA;AAAA,KACvD;AAEA,IAAA,YAAA,CAAa,CAAE,CAAA,SAAS,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACvC,MAAK,IAAA,CAAA,MAAA,CAAO,WAAW,CAAE,CAAA,IAAI,IAAI,YAAa,CAAA,CAAA,CAAE,MAAM,CAAE,CAAA,GAAA;AAAA,QACtD,CAACuB,OAAMA,EAAE,CAAA,IAAA;AAAA,OACX,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,YAAA,CAAa,CAAE,CAAA,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACtC,MAAA,IAAA,CAAK,MAAO,CAAA,UAAA,CAAW,CAAE,CAAA,IAAI,IAAI,CAAE,CAAA,KAAA,CAAA;AAAA,KACpC,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAa,cAAc,GAA8C,EAAA;AACvE,IAAA,IAAI,OAAU,GAAA,IAAA,CAAA;AACd,IAAA,MAAM,kBAA4B,EAAC,CAAA;AAEnC,IAAA,MAAM,QAAW,GAAA,GAAA,EAAK,KAAS,IAAA,GAAA,EAAK,aAAe,EAAA,KAAA,CAAA;AAEnD,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,KAAA,MAAW,SAAa,IAAA,YAAA,CAAa,QAAS,CAAA,SAAS,CAAG,EAAA;AACxD,QAAI,IAAA,SAAA,CAAU,SAAS,QAAU,EAAA;AAC/B,UAAU,OAAA,GAAA,KAAA,CAAA;AACV,UAAA,MAAA,CAAO,QAAS,CAAA,MAAA;AAAA,YACd,WAAY,CAAA;AAAA,cACV,SAAS,OAAQ,CAAA,KAAA;AAAA,cACjB,MAAQ,EAAA,QAAA;AAAA,cACR,KAAO,EAAA,IAAA;AAAA,cAEP,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,cACvB,KAAA,EAAO,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,EAAA;AAAA,cAC5B,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,aACjC,CAAA;AAAA,WACH,CAAA;AAAA,SACF,MAAA,IAAW,SAAU,CAAA,IAAA,KAAS,MAAQ,EAAA;AACpC,UAAgB,eAAA,CAAA,IAAA,CAAK,UAAU,OAAO,CAAA,CAAA;AAAA,SACxC;AAAA,OACF;AAAA,KACF;AAEA,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,IAAI,IAAK,WAAa,EAAA;AACpB,QAAA,MAAM,MAAS,GAAA,QAAA,CAAS,GAAK,CAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAE7C,QAAA,mBAAA;AAAA,UACE,MAAA;AAAA,SACF,CAAA;AAAA,OACF;AAEA,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA,CAAA;AAAA,OAChC;AAEA,MAAA,WAAA,MAAiB,SAAS,eAAiB,EAAA;AACzC,QAAM,MAAA,IAAA,CAAK,UAAU,KAAK,CAAA,CAAA;AAAA,OAC5B;AAEA,MAAA,IAAA,CAAK,OAAO,SAAY,GAAA,KAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAEU,qBAAqB,SAAoC,EAAA;AACjE,IAAA,MAAM,iBAAiB,EAAC,CAAA;AACxB,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,SAAU,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AAC5C,MAAA,IAAI,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,GAAK,EAAA;AAC7B,QAAA,cAAA,CAAe,IAAK,CAAA,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,CAAA,CAAA;AAAA,OACxC,MAAA,IAAW,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,OAAO,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,GAAK,EAAA;AACjE,QAAM,MAAA,SAAA,GAAY,SAAU,CAAA,CAAC,CAAE,CAAA,KAAA,CAAA;AAC/B,QAAA,IAAI,SAAW,EAAA;AACb,UAAe,cAAA,CAAA,IAAA;AAAA,YACb,cAAc,QACX,CAAA,OAAA;AAAA,cACC,IAAA,CAAK,KAAK,UAAW,CAAA,QAAA;AAAA,cACrB,IAAA,CAAK,KAAK,UAAW,CAAA,SAAA;AAAA,aACvB,CACC,SAAS,SAAS,CAAA;AAAA,WACvB,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AACA,IAAO,OAAA,cAAA,CAAA;AAAA,GACT;AAAA,EACA,MAAgB,iBAAiB,KAAyC,EAAA;AACxE,IAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AAEb,IAAA,WAAA,MAAiB,MAAU,IAAA,YAAA,CAAa,KAAM,CAAA,MAAM,CAAG,EAAA;AACrD,MAAA,MAAM,GAAM,GAAA,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAQlC,MAAI,IAAA;AACF,QAAM,MAAA,EAAA,GAAM,MAAe,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAItC,QAAA,MAAA,GACE,UACC,MAAM,EAAA;AAAA,UACL,IAAA;AAAA,UACA,GAAG,IAAK,CAAA,oBAAA,CAAqB,YAAa,CAAA,GAAA,CAAI,SAAS,CAAC,CAAA;AAAA,SAC1D,CAAA;AAAA,eACK,CAAG,EAAA;AACV,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AACf,QAAA,aAAA,CAAc,QAAS,CAAA,GAAA;AAAA,UACrB,IAAI,mBAAoB,CAAA;AAAA,YACtB,SAAS,MAAO,CAAA,YAAA,CAAa,KAAM,CAAA,IAAA,EAAM,IAAI,OAAO,CAAA;AAAA,WACrD,CAAA;AAAA,SACH,CAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAM,UAAU,OAAiB,EAAA;AAC/B,IAAA,IAAA,CAAK,OAAO,SAAY,GAAA,IAAA,CAAA;AAExB,IAAI,IAAA;AACF,MAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,IAAK,CAAA,UAAA,CAAW,KAAK,CAAE,CAAA,IAAA;AAAA,QAChD,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,OAAA;AAAA,OACpB,CAAA;AACA,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAM,MAAA,IAAI,KAAM,CAAA,gBAAA,GAAmB,OAAO,CAAA,CAAA;AAAA,OAC5C;AAEA,MACG,IAAA,CAAA,CAAC,MAAM,MAAW,IAAA,MAAM,KAAK,gBAAiB,CAAA,KAAK,CACpD,KAAA,KAAA,CAAM,YACN,EAAA;AACA,QAAA,MAAM,IAAK,CAAA,aAAA;AAAA,UAAA,CACR,MAAM,IAAA,CAAK,WAAY,CAAA,WAAA,EAAa,OAAO,CAAI,GAAA,IAAA;AAAA,SAClD,CAAA;AAAA,OACF;AAAA,KACA,SAAA;AACA,MAAA,IAAA,CAAK,OAAO,SAAY,GAAA,KAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAEA,YAAY,OAAiB,EAAA;AAC3B,IAAO,OAAA,IAAA,CAAK,MAAO,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA;AAAA,GACvC;AAAA,EAEA,MAAc,WAAY,CAAA,MAAA,EAAgB,IAAW,EAAA;AACnD,IAAO,OAAA,IAAA;AAAA,MACL,WAAY,CAAA;AAAA,QACV,SAAS,OAAQ,CAAA,KAAA;AAAA,QACjB,MAAQ,EAAA,eAAA;AAAA,QACR,MAAA;AAAA,QAEA,KAAA,EAAO,KAAK,UAAW,CAAA,EAAA;AAAA,QACvB,KAAA,EAAO,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,EAAA;AAAA,QAC5B,SAAA,EAAW,IAAK,CAAA,IAAA,CAAK,UAAW,CAAA,SAAA;AAAA,OACjC,CAAA;AAAA,MACD;AAAA,QACE,QAAU,EAAA;AAAA,UACR,OAAS,EAAA,IAAA;AAAA,SACX;AAAA,QACA,iBAAmB,EAAA,WAAA;AAAA,OACrB;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEA,MAAM,cAAe,CAAA,OAAA,EAAiB,KAAe,EAAA;AACnD,IAAA,IAAA,CAAK,OAAO,SAAY,GAAA,IAAA,CAAA;AAExB,IAAI,IAAA;AACF,MAAA,MAAM,IAAK,CAAA,aAAA;AAAA,QAAA,CAEP,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,UAAA;AAAA,UACA,KAAK,SAAU,CAAA;AAAA,YACb,OAAA;AAAA,YACA,KAAO,EAAA,IAAA;AAAA,YACP,KAAA;AAAA,WACD,CAAA;AAAA,SAEF,GAAA,IAAA;AAAA,OACL,CAAA;AAAA,KACA,SAAA;AACA,MAAA,IAAA,CAAK,OAAO,SAAY,GAAA,KAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAEA,eAAe,OAAiB,EAAA;AAC9B,IAAA,OAAO,IAAK,CAAA,MAAA,CAAO,UAAW,CAAA,OAAO,EAAE,IAAK,EAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,QAAA,CAAS,OAAiB,EAAA,KAAA,GAAgB,CAAG,EAAA;AAC3C,IAAA,OAAO,IAAK,CAAA,MAAA,CAAO,UAAW,CAAA,OAAO,EAAE,KAAK,CAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,MAAM,QAAA,CAAS,OAAiB,EAAA,KAAA,EAAY,KAAe,EAAA;AACzD,IAAA,IAAA,CAAK,OAAO,SAAY,GAAA,IAAA,CAAA;AAExB,IAAI,IAAA;AACF,MAAA,MAAM,IAAK,CAAA,aAAA;AAAA,QAAA,CAEP,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,UAAA;AAAA,UACA,KAAK,SAAU,CAAA;AAAA,YACb,KAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,WACD,CAAA;AAAA,SAEF,GAAA,IAAA;AAAA,OACL,CAAA;AAAA,KACA,SAAA;AACA,MAAA,IAAA,CAAK,OAAO,SAAY,GAAA,KAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAEA,MAAM,WAAY,CAAA,OAAA,EAAiB,KAAY,EAAA;AAC7C,IAAA,IAAA,CAAK,OAAO,SAAY,GAAA,IAAA,CAAA;AAExB,IAAI,IAAA;AACF,MAAA,MAAM,IAAK,CAAA,aAAA;AAAA,QAAA,CAEP,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,aAAA;AAAA,UACA,KAAK,SAAU,CAAA;AAAA,YACb,OAAA;AAAA,YACA,KAAA;AAAA,WACD,CAAA;AAAA,SAEF,GAAA,IAAA;AAAA,OACL,CAAA;AAAA,KACA,SAAA;AACA,MAAA,IAAA,CAAK,OAAO,SAAY,GAAA,KAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAAA,EAEA,MAAM,YAAY,OAAc,EAAA;AAC9B,IAAA,IAAA,CAAK,OAAO,SAAY,GAAA,IAAA,CAAA;AAExB,IAAI,IAAA;AACF,MAAA,MAAM,IAAK,CAAA,aAAA;AAAA,QAAA,CAEP,MAAM,IAAK,CAAA,WAAA;AAAA,UACT,SAAA;AAAA,UACA,OAAO,OAAY,KAAA,QAAA,IAAY,UAC3B,IAAK,CAAA,SAAA,CAAU,OAAO,CACtB,GAAA,OAAA;AAAA,SAEL,GAAA,IAAA;AAAA,OACL,CAAA;AAAA,KACA,SAAA;AACA,MAAA,IAAA,CAAK,OAAO,SAAY,GAAA,KAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AACF,CAAA;AAhSE,UAAA,GAAA,IAAA,OAAA,EAAA;;AC5BK,MAAM,2BAA2B,YAEtC,CAAA;AAAA,EACA,YACkB,KAChB,EAAA;AACA,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAFK,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAA,GAGlB;AACF;;;;"}