@acorex-platform/module-workplacesafety-management-client 0.0.30 → 0.0.33
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/fesm2022/acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-mzaaZ6T3.mjs +549 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-acorex-platform-module-workplacesafety-management-client-mzaaZ6T3.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.mjs +509 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.mjs +297 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.mjs +431 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.mjs +416 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.mjs +476 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.mjs +482 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.mjs +345 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.mjs +1458 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.mjs +1313 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.mjs +295 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.mjs +542 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.mjs +470 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.mjs +369 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.mjs +299 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.mjs +1358 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-CeTmhod5.mjs +170 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-CeTmhod5.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-Dae2kkZe.mjs +372 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-hierarchy-levels.entity-Dae2kkZe.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-CpNcN6Pf.mjs +160 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-control-measure.entity-CpNcN6Pf.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-BcsAnO9h.mjs +294 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-ppe-rule.entity-BcsAnO9h.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-C9wGZ3hB.mjs +279 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-register.entity-C9wGZ3hB.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-AUr2GVLU.mjs +339 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard-risk.entity-AUr2GVLU.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-J6fveZKA.mjs +345 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-hazard.entity-J6fveZKA.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-3fQPlBBf.mjs +208 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-ppe-item.entity-3fQPlBBf.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-BRGcQo7H.mjs +971 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section-dependency-BRGcQo7H.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-BPx-3rYX.mjs +356 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-section.entity-BPx-3rYX.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-_nG09ZpE.mjs +211 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type-section.entity-_nG09ZpE.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-CIH7W9R7.mjs +158 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-type.entity-CIH7W9R7.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-work-step.entity-DmFYsBhI.mjs +405 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan-work-step.entity-DmFYsBhI.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-CUDh_ZfQ.mjs +333 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-plan.entity-CUDh_ZfQ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-BxNUXvae.mjs +232 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-safety-template.entity-BxNUXvae.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-73MUyaIk.mjs +162 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-section-type.entity-73MUyaIk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-Ujxum2GY.mjs +256 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog-work-step-type.entity-Ujxum2GY.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.mjs +2 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs +739 -806
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-CnTEwf_l.mjs +93 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-CnTEwf_l.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-BI9VkzNw.mjs +117 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.component-BI9VkzNw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-BBhH7KP1.mjs → acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-tMrUDnCb.mjs} +48 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-tMrUDnCb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-index-kF37zgd4.mjs → acorex-platform-module-workplacesafety-management-client-index-LxP1eZLY.mjs} +391 -92
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-LxP1eZLY.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs +43 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs +42 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-CQtVhCgw.mjs +101 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-edit.component-CQtVhCgw.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs +221 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.service-YS8FHiRu.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs +61 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-C2X3VpEt.mjs → acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-Dd9xdo_y.mjs} +3 -7
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-Dd9xdo_y.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-6i0RkG3L.mjs +557 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-safety-plan-preview-modal.component-6i0RkG3L.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BJsg3pHZ.mjs → acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs} +13 -25
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BlPzzCc2.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client.mjs +1 -460
- package/fesm2022/acorex-platform-module-workplacesafety-management-client.mjs.map +1 -1
- package/package.json +70 -2
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-hierarchy-levels.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-control-measure.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-ppe-rule.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-register.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard-risk.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-hazard.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-ppe-item.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-section.d.ts +9 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type-section.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-type.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan-work-step.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-plan.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-safety-template.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-section-type.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entities-work-step-type.d.ts +5 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts-entity-catalog.d.ts +10 -0
- package/types/acorex-platform-module-workplacesafety-management-client-contracts.d.ts +89 -140
- package/types/acorex-platform-module-workplacesafety-management-client-local-entities.d.ts +12 -0
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-C-qrrqOV.mjs +0 -203
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram-widget-view.component-C-qrrqOV.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-control-hierarchy-diagram.service-BBhH7KP1.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-risk-ppe-rule-status.provider-DtqzcWh0.mjs +0 -42
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-hazard-risk-ppe-rule-status.provider-DtqzcWh0.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-kF37zgd4.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-preview-control-hierarchy-diagram.command-C2X3VpEt.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-workplacesafety-management-client-save-safety-plan-sections.command-BJsg3pHZ.mjs.map +0 -1
package/fesm2022/acorex-platform-module-workplacesafety-management-client-index-LxP1eZLY.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-index-LxP1eZLY.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-widget-options.util.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-widget-options.service.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-builder.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-section-builder.component.html","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-preview/safety-plan-preview.service.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-sections-page.component.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/features/safety-plan-sections-page/safety-plan-sections-page-component.provider.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport type {\n AXPBuilderSection,\n AXPWidgetPropertyInjection,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex-platform/framework-client/layout/widgets';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { createBooleanProperty } from '@acorex-platform/framework-shared/widget-core';\nimport {\n asSafetyPlanDisplayText,\n resolveEntityRefId,\n resolveSectionTypeKey,\n type AXMSafetyPlanSectionWidgetOptions,\n type AXMSectionTypeCode,\n type AXMSectionTypeSnapshot,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\nimport { PPE_ITEM_VIEWER_WIDGET_NAME } from '../ppe-item-viewer/ppe-item-viewer.types';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMSafetyPlanConfigurableWidgetType =\n | typeof PPE_ITEM_VIEWER_WIDGET_NAME\n | typeof AXPWidgetsList.Editors.ControlHierarchyDiagram;\n\n//#endregion\n\n//#region ----- Constants -----\n\nexport const SAFETY_PLAN_PPE_WIDGET_PROPERTY_EXCLUDE = [\n 'name',\n 'path',\n 'ppeItems',\n 'readonly',\n 'disabled',\n 'triggers',\n 'requiredValidation',\n] as const;\n\nexport const SAFETY_PLAN_HIERARCHY_WIDGET_PROPERTY_EXCLUDE = ['name', 'path'] as const;\n\nconst PPE_OPTION_KEYS = ['layout'] as const;\nconst HIERARCHY_OPTION_KEYS = ['viewType', 'showTitle', 'showViewTypeSelector'] as const;\n\n//#endregion\n\n//#region ----- Resolve -----\n\nexport function resolveSafetyPlanSectionConfigurableWidgetType(\n sectionTypeId: string | undefined,\n snapshot?: AXMSectionTypeSnapshot,\n sectionTitle?: unknown,\n sectionDescription?: unknown,\n): AXMSafetyPlanConfigurableWidgetType | null {\n const resolvedKeys = [\n resolveSectionTypeKey(sectionTypeId, snapshot),\n resolveSectionTypeKeyFromCode(snapshot?.code),\n resolveSectionTypeKeyFromTitle(sectionTitle),\n resolveSectionTypeKeyFromTitle(snapshot?.title),\n resolveSectionTypeKeyFromDescription(sectionDescription),\n resolveSectionTypeKeyFromDescription(snapshot?.description),\n ];\n if (resolvedKeys.includes('Ppe')) {\n return PPE_ITEM_VIEWER_WIDGET_NAME;\n }\n if (resolvedKeys.includes('HierarchyLevel')) {\n return AXPWidgetsList.Editors.ControlHierarchyDiagram;\n }\n return null;\n}\n\nfunction resolveSectionTypeKeyFromCode(code: string | undefined): AXMSectionTypeCode | undefined {\n const compact = asSafetyPlanDisplayText(code).replace(/\\s+/g, '').toLowerCase();\n if (!compact) {\n return undefined;\n }\n if (compact === 'hierarchylevel' || compact === 'hierarchy') {\n return 'HierarchyLevel';\n }\n if (compact === 'ppe') {\n return 'Ppe';\n }\n return undefined;\n}\n\nfunction resolveSectionTypeKeyFromTitle(title: unknown): AXMSectionTypeCode | undefined {\n const compact = asSafetyPlanDisplayText(title).replace(/\\s+/g, '').toLowerCase();\n if (!compact) {\n return undefined;\n }\n if (compact === 'hierarchylevel' || compact.includes('hierarchy')) {\n return 'HierarchyLevel';\n }\n if (compact === 'ppe' || compact === 'ppeitem' || compact === 'ppeitems') {\n return 'Ppe';\n }\n return undefined;\n}\n\nfunction resolveSectionTypeKeyFromDescription(description: unknown): AXMSectionTypeCode | undefined {\n const text = asSafetyPlanDisplayText(description).toLowerCase();\n if (!text) {\n return undefined;\n }\n if (text.includes('control hierarchy')) {\n return 'HierarchyLevel';\n }\n if (text.includes('personal protective equipment')) {\n return 'Ppe';\n }\n return undefined;\n}\n\nfunction readBuilderSectionTypeId(section: AXPBuilderSection): string | undefined {\n return resolveEntityRefId(section['sectionTypeId']) ?? resolveEntityRefId(section['sectionType']) ?? undefined;\n}\n\nexport function resolveConfigurableWidgetTypeForSection(\n section: AXPBuilderSection,\n): AXMSafetyPlanConfigurableWidgetType | null {\n return resolveSafetyPlanSectionConfigurableWidgetType(\n readBuilderSectionTypeId(section),\n section['sectionType'] as AXMSectionTypeSnapshot | undefined,\n section['title'],\n section['description'],\n );\n}\n\nexport function canConfigureSafetyPlanSectionWidget(section: AXPBuilderSection): boolean {\n return resolveConfigurableWidgetTypeForSection(section) != null;\n}\n\nexport function widgetTitleKeyForConfigurableType(widgetType: AXMSafetyPlanConfigurableWidgetType): string {\n if (widgetType === PPE_ITEM_VIEWER_WIDGET_NAME) {\n return '@workplacesafety-management:ppe-items.components.ppe-item-viewer.widget-title';\n }\n return '@workplacesafety-management:control-measure-types.components.control-hierarchy-diagram.widget-title';\n}\n\n//#endregion\n\n//#region ----- Options -----\n\nexport function readSectionWidgetOptions(section: AXPBuilderSection): AXMSafetyPlanSectionWidgetOptions {\n const raw = section['widgetOptions'];\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return {};\n }\n return { ...(raw as AXMSafetyPlanSectionWidgetOptions) };\n}\n\nexport function pickSavedWidgetOptions(\n widgetType: AXMSafetyPlanConfigurableWidgetType,\n existing: AXMSafetyPlanSectionWidgetOptions,\n incoming: Record<string, unknown>,\n): AXMSafetyPlanSectionWidgetOptions {\n const merged = { ...existing, ...incoming };\n const keys = widgetType === PPE_ITEM_VIEWER_WIDGET_NAME ? PPE_OPTION_KEYS : HIERARCHY_OPTION_KEYS;\n const next: AXMSafetyPlanSectionWidgetOptions = {};\n for (const key of keys) {\n const value = merged[key];\n if (value !== undefined && value !== null) {\n (next as Record<string, unknown>)[key] = value;\n }\n }\n return next;\n}\n\nexport function buildSafetyPlanSectionWidgetNode(\n widgetType: AXMSafetyPlanConfigurableWidgetType,\n options: AXMSafetyPlanSectionWidgetOptions,\n): AXPWidgetNode {\n return {\n type: widgetType,\n options: { ...options },\n };\n}\n\nexport function hierarchyWidgetCustomProperties(): AXPWidgetPropertyInjection[] {\n return [\n {\n property: createBooleanProperty({\n name: 'showTitle',\n title:\n '@workplacesafety-management:control-measure-types.components.control-hierarchy-diagram.fields.show-title.title',\n path: 'options.showTitle',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: false,\n }),\n },\n {\n property: createBooleanProperty({\n name: 'showViewTypeSelector',\n title:\n '@workplacesafety-management:control-measure-types.components.control-hierarchy-diagram.fields.show-view-type-selector.title',\n path: 'options.showViewTypeSelector',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: true,\n }),\n },\n ];\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPWidgetPropertyViewerService,\n type AXPBuilderSection,\n type AXPBuilderValue,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\n\nimport { PPE_ITEM_VIEWER_WIDGET_NAME } from '../ppe-item-viewer/ppe-item-viewer.types';\nimport {\n buildSafetyPlanSectionWidgetNode,\n canConfigureSafetyPlanSectionWidget,\n hierarchyWidgetCustomProperties,\n pickSavedWidgetOptions,\n readSectionWidgetOptions,\n resolveConfigurableWidgetTypeForSection,\n SAFETY_PLAN_HIERARCHY_WIDGET_PROPERTY_EXCLUDE,\n SAFETY_PLAN_PPE_WIDGET_PROPERTY_EXCLUDE,\n widgetTitleKeyForConfigurableType,\n type AXMSafetyPlanConfigurableWidgetType,\n} from './safety-plan-section-widget-options.util';\n\n//#endregion\n\n//#region ----- Service -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMSafetyPlanSectionWidgetOptionsService {\n //#region ----- Services & Dependencies -----\n\n private readonly widgetPropertyViewer = inject(AXPWidgetPropertyViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Public API -----\n\n canConfigure(section: AXPBuilderSection): boolean {\n return canConfigureSafetyPlanSectionWidget(section);\n }\n\n async prompt(\n section: AXPBuilderSection,\n _value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const widgetType = resolveConfigurableWidgetTypeForSection(section);\n if (!widgetType) {\n return null;\n }\n\n const existing = readSectionWidgetOptions(section);\n const title =\n (await this.translationService.translateAsync(widgetTitleKeyForConfigurableType(widgetType))) ||\n (await this.translationService.translateAsync('@general:actions.edit.title')) ||\n 'Edit';\n\n const result = await this.widgetPropertyViewer\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(title)\n .setMode('simple')\n .setWidget(buildSafetyPlanSectionWidgetNode(widgetType, existing))\n .setExclude([...this.excludeFor(widgetType)]);\n if (widgetType !== PPE_ITEM_VIEWER_WIDGET_NAME) {\n dialog.setCustom({ properties: hierarchyWidgetCustomProperties() });\n }\n })\n .show();\n\n if (!result?.values) {\n return null;\n }\n\n const incoming = (result.values.options as Record<string, unknown> | undefined) ?? {};\n return {\n widgetOptions: pickSavedWidgetOptions(widgetType, existing, incoming),\n };\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private excludeFor(widgetType: AXMSafetyPlanConfigurableWidgetType): readonly string[] {\n return widgetType === PPE_ITEM_VIEWER_WIDGET_NAME\n ? SAFETY_PLAN_PPE_WIDGET_PROPERTY_EXCLUDE\n : SAFETY_PLAN_HIERARCHY_WIDGET_PROPERTY_EXCLUDE;\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPDataGenerator } from '@acorex-platform/framework-client/core';\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutBuilderService,\n} from '@acorex-platform/framework-client/layout/builder';\nimport {\n AXPEntityDataSelectorService,\n AXPEntityDefinitionRegistryService,\n AXPEntityService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPBuilderItem,\n AXPBuilderItemViewModel,\n AXPBuilderSection,\n AXPBuilderValue,\n AXPStandardSectionItemsBuilderComponent,\n AXPStandardSectionItemsBuilderConfig,\n} from '@acorex-platform/framework-client/layout/components';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { AXMSectionTypeSnapshot } from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n RootConfig,\n WORKPLACE_SAFETY_SECTION_TYPE_LOOKUP_WIDGET_OPTIONS,\n clearDependentItemsOnParentChange,\n dedupeSafetyPlanSectionItemSelection,\n enrichSectionTypeSnapshot,\n isStepTableColumnMultiLookup,\n isStepTableSectionType,\n mapSafetyPlanSectionSelectedItems,\n normalizeStepTableColumns,\n normalizeStepTableRows,\n resolveSafetyPlanSectionItemColumns,\n resolveSafetyPlanSectionItemEntityKey,\n resolveSafetyPlanSectionItemFilterAsync,\n resolveStepTableColumnLookupEntity,\n sortStepTableColumns,\n stepTableColumnKey,\n stepTableColumnTitle,\n asSafetyPlanDisplayText,\n type AXMStepTableCellValue,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n AXMSafetyPlanSectionBuilderItemValue,\n AXMSafetyPlanSectionBuilderValue,\n AXMSafetyPlanStepTableRowBuilderPayload,\n normalizeSafetyPlanSectionBuilderValue,\n summarizeStepTableRow,\n} from './safety-plan-section-builder.types';\nimport { AXMSafetyPlanSectionWidgetOptionsService } from './safety-plan-section-widget-options.service';\n\n//#region ----- Types -----\n\ninterface SafetyPlanSectionDialogValue {\n sectionTypeId: string;\n sectionType?: AXMSectionTypeSnapshot;\n /** Synced from the selected Section Type (display-only in the dialog). */\n sectionTypeDescription?: string;\n /** Derived from Section Type title; not shown in the dialog. */\n title: string;\n /** Optional section description copied from the type description on create/edit. */\n description?: string;\n}\n\ninterface SafetyPlanSectionItemDialogValue {\n itemIds: string[];\n items?: { id: string; title?: string; code?: string }[];\n}\n\ninterface SafetyPlanStepTableRowDialogValue {\n [key: string]: unknown;\n}\n\ninterface SectionBuilderContext {\n sectionTypeId: string;\n sectionType?: AXMSectionTypeSnapshot;\n workStepTypeId?: string;\n workStepType?: { id: string; title?: string; code?: string };\n columns: AXMStepTableColumnDef[];\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-safety-plan-section-builder',\n templateUrl: './safety-plan-section-builder.component.html',\n styleUrl: './safety-plan-section-builder.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPStandardSectionItemsBuilderComponent],\n})\nexport class AXMSafetyPlanSectionBuilderComponent {\n //#region ----- Inputs / Outputs -----\n\n readonly value = input<AXMSafetyPlanSectionBuilderValue | null | undefined>(null);\n readonly safetyPlanId = input<string | undefined>(undefined);\n readonly options = input<Record<string, unknown>>({});\n\n readonly valueChange = output<AXMSafetyPlanSectionBuilderValue>();\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n private readonly standardRef = viewChild(AXPStandardSectionItemsBuilderComponent);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly entityDataSelector = inject(AXPEntityDataSelectorService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly entityService = inject(AXPEntityService);\n private readonly widgetOptionsService = inject(AXMSafetyPlanSectionWidgetOptionsService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly builderValue = signal<AXPBuilderValue>({ sections: [] });\n\n /** Applied on the next builder commit so section header title survives item add/edit. */\n private readonly pendingSectionTitles = new Map<string, string>();\n\n protected readonly standardConfig = computed<AXPStandardSectionItemsBuilderConfig>(() => ({\n mapItemToView: (item) => this.mapItemToView(item),\n promptAddSection: this.allowAddSection() ? (value) => this.promptAddSection(value) : async () => null,\n promptEditSection: (section, value) => this.promptSectionHeaderEdit(section, value),\n promptAddItems: this.allowAddItems() ? (sectionId, value) => this.promptAddItems(sectionId, value) : undefined,\n promptEditItem: (item, sectionId, value) => this.promptEditItem(item, sectionId, value),\n showSectionTechnicalName: false,\n allowReorderSections: this.allowReorderSections(),\n minSectionCount: this.allowAddSection() ? 0 : Number.MAX_SAFE_INTEGER,\n texts: {\n addSection: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title',\n addItem: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-item.title',\n },\n }));\n\n protected readonly hideHeaderActions = computed(() => (this.options()['hideHeaderActions'] as boolean) === true);\n protected readonly allowAddSection = computed(() => (this.options()['allowAddSection'] as boolean) !== false);\n protected readonly allowEditSection = computed(() => (this.options()['allowEditSection'] as boolean) === true);\n protected readonly allowEditItem = computed(() => (this.options()['allowEditItem'] as boolean) === true);\n protected readonly allowAddItems = computed(() => (this.options()['allowAddItems'] as boolean) !== false);\n protected readonly allowReorderSections = computed(() => {\n const option = this.options()['allowReorderSections'];\n return typeof option === 'boolean' ? option : true;\n });\n protected readonly readonly = computed(() => (this.options()['readonly'] as boolean) === true);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n #syncValueToBuilder = effect(() => {\n const normalized = normalizeSafetyPlanSectionBuilderValue(this.value());\n this.builderValue.set(this.toBuilderValue(normalized));\n });\n\n //#endregion\n\n //#region ----- Public API -----\n\n async addSection(): Promise<void> {\n await this.standardRef()?.addSection();\n }\n\n syncAfterSave(value: AXMSafetyPlanSectionBuilderValue): void {\n const normalized = normalizeSafetyPlanSectionBuilderValue(value);\n this.builderValue.set(this.toBuilderValue(normalized));\n queueMicrotask(() => this.standardRef()?.markClean());\n }\n\n resetAfterDiscard(): void {\n const normalized = normalizeSafetyPlanSectionBuilderValue(this.value());\n this.builderValue.set(this.toBuilderValue(normalized));\n queueMicrotask(() => this.standardRef()?.markClean());\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onBuilderValueChange(next: AXPBuilderValue): void {\n const previous = this.fromBuilderValue(this.builderValue());\n let nextValue = clearDependentItemsOnParentChange(previous, this.fromBuilderValue(next));\n if (this.pendingSectionTitles.size > 0) {\n nextValue = {\n sections: nextValue.sections.map((section) => {\n const title = this.pendingSectionTitles.get(section.id);\n return title ? { ...section, title } : section;\n }),\n };\n this.pendingSectionTitles.clear();\n }\n this.builderValue.set(this.toBuilderValue(nextValue));\n this.valueChange.emit(nextValue);\n }\n\n //#endregion\n\n //#region ----- Section prompts -----\n\n private async promptAddSection(value: AXPBuilderValue): Promise<Record<string, unknown> | null> {\n const dialogValue = await this.promptSectionForm('create', {\n sectionTypeId: '',\n sectionTypeDescription: '',\n title: '',\n description: '',\n });\n if (!dialogValue) return null;\n\n const sectionId = AXPDataGenerator.uuid();\n return {\n id: sectionId,\n name: sectionId,\n sectionTypeId: dialogValue.sectionTypeId,\n sectionType: dialogValue.sectionType,\n title: dialogValue.title,\n description: dialogValue.description ?? '',\n safetyPlanId: this.safetyPlanId() ?? '',\n sortOrder: (value.sections?.length ?? 0) + 1,\n items: [],\n };\n }\n\n private async promptSectionHeaderEdit(\n section: AXPBuilderSection,\n value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n if (this.widgetOptionsService.canConfigure(section)) {\n return this.widgetOptionsService.prompt(section, value);\n }\n if (!this.allowEditSection()) {\n return null;\n }\n return this.promptEditSection(section, value);\n }\n\n private async promptEditSection(\n section: AXPBuilderSection,\n value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const previousSectionTypeId = String(section['sectionTypeId'] ?? '');\n const sectionTypeSnapshot = section['sectionType'] as AXMSectionTypeSnapshot | undefined;\n const dialogValue = await this.promptSectionForm('edit', {\n sectionTypeId: previousSectionTypeId,\n sectionType: sectionTypeSnapshot,\n sectionTypeDescription:\n enrichSectionTypeSnapshot(previousSectionTypeId, sectionTypeSnapshot)?.description ??\n String(section['description'] ?? ''),\n title: String(section['title'] ?? ''),\n description: String(section['description'] ?? ''),\n });\n if (!dialogValue) return null;\n\n const sectionTypeChanged = previousSectionTypeId !== dialogValue.sectionTypeId;\n const isStepTable = isStepTableSectionType(dialogValue.sectionTypeId, dialogValue.sectionType);\n const keepWorkStep =\n isStepTable && !sectionTypeChanged\n ? {\n workStepTypeId: section['workStepTypeId'],\n workStepType: section['workStepType'],\n columns: section['columns'],\n }\n : {\n workStepTypeId: undefined,\n workStepType: undefined,\n columns: [],\n };\n\n return {\n ...section,\n sectionTypeId: dialogValue.sectionTypeId,\n sectionType: dialogValue.sectionType,\n title: dialogValue.title,\n description: dialogValue.description ?? '',\n ...keepWorkStep,\n ...(sectionTypeChanged ? { items: [] } : {}),\n };\n }\n\n private async promptSectionForm(\n mode: 'create' | 'edit',\n seed: SafetyPlanSectionDialogValue,\n ): Promise<SafetyPlanSectionDialogValue | null> {\n const titleKey =\n mode === 'create'\n ? '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title'\n : '@general:actions.edit.title';\n const title = (await this.translationService.translateAsync(titleKey)) || (mode === 'create' ? 'Add Section' : 'Edit');\n\n const result = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean; value?: SafetyPlanSectionDialogValue }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('md')\n .setCloseButton(true)\n .setContext({ ...seed })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(this.buildSectionFormDefinition());\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as Partial<SafetyPlanSectionDialogValue>;\n const sectionTypeId = String(context.sectionTypeId ?? '').trim();\n if (!sectionTypeId) {\n return { success: false };\n }\n\n const sectionType = enrichSectionTypeSnapshot(sectionTypeId, context.sectionType);\n const titleValue =\n String(context.title ?? '').trim() ||\n String(sectionType?.title ?? '').trim() ||\n String(sectionType?.code ?? '').trim();\n if (!titleValue) {\n return { success: false };\n }\n\n const description =\n String(context.sectionTypeDescription ?? '').trim() ||\n String(context.description ?? '').trim() ||\n String(sectionType?.description ?? '').trim();\n\n return {\n success: true,\n kind: 'object',\n value: {\n sectionTypeId,\n sectionType,\n title: titleValue,\n description,\n sectionTypeDescription: description,\n },\n };\n });\n })\n .show();\n\n return result?.success && result.value ? result.value : null;\n }\n\n private buildSectionFormDefinition(): AXPDynamicFormDefinition {\n const group: AXPDynamicFormGroupDefinition = {\n name: 'section',\n title: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.title',\n parameters: [\n {\n path: 'sectionTypeId',\n title: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.section-type.title',\n widget: {\n path: 'sectionTypeId',\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`,\n ...WORKPLACE_SAFETY_SECTION_TYPE_LOOKUP_WIDGET_OPTIONS,\n },\n },\n },\n {\n path: 'sectionTypeDescription',\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.description.title',\n widget: {\n path: 'sectionTypeDescription',\n type: AXPWidgetsCatalog.largeText,\n options: {\n readonly: true,\n rows: 2,\n },\n },\n },\n ],\n };\n return { groups: [group] };\n }\n\n //#endregion\n\n //#region ----- Item prompts -----\n\n private async promptAddItems(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null> {\n const section = value.sections.find((s) => s.id === sectionId);\n if (!section || !this.sectionContextFromBuilderSection(section)) {\n return null;\n }\n\n let sectionContext = this.sectionContextFromBuilderSection(section)!;\n if (isStepTableSectionType(sectionContext.sectionTypeId, sectionContext.sectionType)) {\n if (!sectionContext.workStepTypeId || sectionContext.columns.length === 0) {\n const assigned = await this.ensureStepTableWorkStep(sectionId);\n if (!assigned) {\n return null;\n }\n const updatedSection = this.builderValue().sections.find((entry) => entry.id === sectionId);\n const nextContext = updatedSection ? this.sectionContextFromBuilderSection(updatedSection) : null;\n if (!nextContext?.workStepTypeId || nextContext.columns.length === 0) {\n return null;\n }\n sectionContext = nextContext;\n }\n\n const currentSection = this.builderValue().sections.find((entry) => entry.id === sectionId) ?? section;\n const sectionTitle = String(currentSection['title'] ?? '').trim();\n const sectionTypeTitle = String(sectionContext.sectionType?.title ?? '').trim();\n const applyTitleToSection =\n (currentSection.items?.length ?? 0) === 0 ||\n !sectionTitle ||\n sectionTitle === sectionTypeTitle ||\n sectionTitle === sectionContext.sectionTypeId;\n\n const row = await this.promptStepTableRowForm(\n 'create',\n sectionContext,\n {\n title: applyTitleToSection\n ? sectionTitle && sectionTitle !== sectionTypeTitle\n ? sectionTitle\n : String(sectionContext.workStepType?.title ?? '').trim()\n : '',\n },\n { requireTitle: true, applyTitleToSection },\n );\n if (!row) {\n return null;\n }\n\n if (applyTitleToSection && row.title?.trim()) {\n this.patchSectionTitle(sectionId, row.title.trim());\n }\n\n const itemCount =\n this.builderValue().sections.find((entry) => entry.id === sectionId)?.items.length ??\n currentSection.items.length;\n return [this.toBuilderItemFromStepTableRow(row, itemCount)];\n }\n\n const existingIds = this.collectEntityIdsFromBuilderItems(section.items);\n const dialogValue = await this.openItemDataSelector('create', undefined, sectionId, value, section, true);\n if (!dialogValue) return null;\n\n const selected = this.expandDialogSelectionToLinkedEntities(dialogValue).filter(\n (entry) => !existingIds.has(entry.id),\n );\n if (!selected.length) {\n return null;\n }\n\n const startOrder = section.items.length;\n return selected.map((entry, index) =>\n this.toBuilderItemFromEntity(sectionId, entry, startOrder + index),\n );\n }\n\n private async promptEditItem(\n item: AXPBuilderItem,\n sectionId: string,\n value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n const section = value.sections.find((s) => s.id === sectionId);\n if (!section || !this.sectionContextFromBuilderSection(section)) {\n return null;\n }\n\n const sectionContext = this.sectionContextFromBuilderSection(section)!;\n if (isStepTableSectionType(sectionContext.sectionTypeId, sectionContext.sectionType)) {\n const existing = item['stepTableRow'] as AXMSafetyPlanStepTableRowBuilderPayload | undefined;\n if (!existing || sectionContext.columns.length === 0) {\n return null;\n }\n const seed = {\n ...this.cellsToDialogValue(existing.cells ?? [], sectionContext.columns),\n title: String(existing.title ?? item['title'] ?? '').trim(),\n };\n const isPrimaryRow = (item.order ?? 0) === 0;\n const row = await this.promptStepTableRowForm('edit', sectionContext, seed, {\n requireTitle: true,\n applyTitleToSection: isPrimaryRow,\n });\n if (!row) {\n return null;\n }\n if (isPrimaryRow && row.title?.trim()) {\n this.patchSectionTitle(sectionId, row.title.trim());\n }\n return this.toBuilderItemFromStepTableRow(\n {\n ...row,\n code: existing.code,\n },\n item.order ?? 0,\n String(item.id),\n );\n }\n\n if (!this.allowEditItem()) {\n return null;\n }\n\n const currentEntityId = this.resolveBuilderItemEntityId(item);\n const seed: SafetyPlanSectionItemDialogValue | undefined = currentEntityId\n ? {\n itemIds: [currentEntityId],\n items: Array.isArray(item['items'])\n ? (item['items'] as AXMSafetyPlanSectionBuilderItemValue['items'])\n : [],\n }\n : undefined;\n\n const dialogValue = await this.openItemDataSelector('edit', seed, sectionId, value, section, false);\n if (!dialogValue) return null;\n\n const selected = this.expandDialogSelectionToLinkedEntities(dialogValue);\n if (!selected.length) {\n return null;\n }\n\n const otherIds = this.collectEntityIdsFromBuilderItems(\n section.items.filter((row) => String(row.id) !== String(item.id)),\n );\n const replacement = selected.find((entry) => !otherIds.has(entry.id)) ?? selected[0];\n\n return this.toBuilderItemFromEntity(sectionId, replacement, item.order ?? 0);\n }\n\n private async toastWorkStepRequired(): Promise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translationService.translateAsync(\n '@workplacesafety-management:safety-plan-sections.messages.work-step-required.message',\n ),\n });\n }\n\n /** Prompts for Work Step and patches the Step Table section before rows can be added. */\n private async ensureStepTableWorkStep(sectionId: string): Promise<boolean> {\n const picked = await this.promptWorkStepPicker();\n if (!picked) {\n return false;\n }\n\n const current = this.fromBuilderValue(this.builderValue());\n const next: AXMSafetyPlanSectionBuilderValue = {\n sections: current.sections.map((section) => {\n if (section.id !== sectionId) {\n return section;\n }\n return {\n ...section,\n workStepTypeId: picked.id,\n workStepType: { id: picked.id, title: picked.title, code: picked.code },\n columns: picked.columns,\n };\n }),\n };\n this.builderValue.set(this.toBuilderValue(next));\n this.valueChange.emit(next);\n return true;\n }\n\n private patchSectionTitle(sectionId: string, title: string): void {\n const trimmed = title.trim();\n if (!trimmed) {\n return;\n }\n this.pendingSectionTitles.set(sectionId, trimmed);\n }\n\n private async promptWorkStepPicker(): Promise<{\n id: string;\n title?: string;\n code?: string;\n columns: AXMStepTableColumnDef[];\n } | null> {\n const title =\n (await this.translationService.translateAsync(\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.work-step.title',\n )) || 'Work Step';\n\n const result = await this.layoutBuilder\n .create()\n .dialog<{\n success: boolean;\n value?: { workStepTypeId: string; workStepType?: { id: string; title?: string; code?: string } };\n }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('md')\n .setCloseButton(true)\n .setContext({ workStepTypeId: '' })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm({\n groups: [\n {\n name: 'work-step',\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.work-step.title',\n parameters: [\n {\n path: 'workStepTypeId',\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.work-step.title',\n widget: {\n path: 'workStepTypeId',\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.workStepType.name}`,\n look: 'select',\n textField: 'title',\n valueField: 'id',\n columns: ['code', 'title'],\n expose: [\n { source: 'id', target: 'workStepType.id' },\n { source: 'title', target: 'workStepType.title' },\n { source: 'code', target: 'workStepType.code' },\n ],\n },\n },\n },\n ],\n },\n ],\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as {\n workStepTypeId?: string;\n workStepType?: { id: string; title?: string; code?: string };\n };\n const workStepTypeId = String(context.workStepTypeId ?? '').trim();\n if (!workStepTypeId) {\n return { success: false };\n }\n return {\n success: true,\n kind: 'object',\n value: {\n workStepTypeId,\n workStepType: context.workStepType,\n },\n };\n });\n })\n .show();\n\n if (!result?.success || !result.value?.workStepTypeId) {\n return null;\n }\n\n const loaded = await this.loadWorkStepType(result.value.workStepTypeId);\n if (!loaded) {\n await this.toastWorkStepRequired();\n return null;\n }\n return loaded;\n }\n\n private sectionContextFromBuilderSection(section: AXPBuilderSection): SectionBuilderContext | null {\n const sectionTypeId = String(section['sectionTypeId'] ?? '').trim();\n if (!sectionTypeId) {\n return null;\n }\n return {\n sectionTypeId,\n sectionType: enrichSectionTypeSnapshot(\n sectionTypeId,\n section['sectionType'] as AXMSectionTypeSnapshot | undefined,\n ),\n workStepTypeId: typeof section['workStepTypeId'] === 'string' ? section['workStepTypeId'].trim() : undefined,\n workStepType: section['workStepType'] as SectionBuilderContext['workStepType'],\n columns: normalizeStepTableColumns(section['columns'] as AXMStepTableColumnDef[] | undefined),\n };\n }\n\n //#endregion\n\n //#region ----- Catalog item selector -----\n\n private resolveSectionIndex(sectionId: string, builderValue: AXPBuilderValue): number {\n const orderedSections = [...builderValue.sections].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n return orderedSections.findIndex((section) => section.id === sectionId);\n }\n\n private async loadHazardRiskRecords(hazardRiskIds: string[]): Promise<Record<string, unknown>[]> {\n if (!hazardRiskIds.length) {\n return [];\n }\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.hazardRisk.name}`;\n const accessor = this.entityService.withEntity(entityKey);\n const results = await Promise.all(\n hazardRiskIds.map((id) => accessor.data().byKey(id).catch(() => null)),\n );\n return results\n .filter((record): record is NonNullable<(typeof results)[number]> => record != null)\n .map((record) => record as unknown as Record<string, unknown>);\n }\n\n private async resolveItemFilterForSection(\n sectionTypeId: string,\n sectionId: string,\n builderValue: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const orderedSections = [...builderValue.sections].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n const sectionIndex = this.resolveSectionIndex(sectionId, builderValue);\n if (sectionIndex < 0) {\n return null;\n }\n const sections = this.fromBuilderValue({ sections: orderedSections }).sections;\n return resolveSafetyPlanSectionItemFilterAsync(\n sectionTypeId,\n sections,\n sectionIndex,\n (ids) => this.loadHazardRiskRecords(ids),\n );\n }\n\n private async openItemDataSelector(\n mode: 'create' | 'edit',\n seed: SafetyPlanSectionItemDialogValue | undefined,\n sectionId: string,\n builderValue: AXPBuilderValue,\n section: AXPBuilderSection,\n allowMultiple: boolean,\n ): Promise<SafetyPlanSectionItemDialogValue | null> {\n const sectionContext = this.sectionContextFromBuilderSection(section);\n if (!sectionContext) {\n return null;\n }\n\n const entityKey = resolveSafetyPlanSectionItemEntityKey(\n sectionContext.sectionTypeId,\n sectionContext.sectionType,\n );\n if (!entityKey) {\n return null;\n }\n\n const dotIndex = entityKey.indexOf('.');\n if (dotIndex <= 0) {\n return null;\n }\n\n const entity = await this.entityRegistry.resolve(\n entityKey.substring(0, dotIndex),\n entityKey.substring(dotIndex + 1),\n );\n if (!entity) {\n return null;\n }\n\n const filter = await this.resolveItemFilterForSection(\n sectionContext.sectionTypeId,\n sectionId,\n builderValue,\n );\n const columns = resolveSafetyPlanSectionItemColumns(sectionContext.sectionTypeId);\n const selectedItemIds = (seed?.itemIds ?? []).filter((id): id is string => typeof id === 'string' && id.length > 0);\n\n const titleKey =\n mode === 'create'\n ? '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-item.title'\n : '@general:actions.edit.title';\n const title = (await this.translationService.translateAsync(titleKey)) || (mode === 'create' ? 'Add Item' : 'Edit');\n\n const result = await this.entityDataSelector.open({\n entity,\n title,\n allowMultiple,\n selectedItemIds: selectedItemIds.length > 0 ? selectedItemIds : undefined,\n columns,\n filters: filter ?? undefined,\n allowCreate: 'none',\n showCategoryFilter: false,\n });\n\n if (!result) {\n return null;\n }\n\n if (!result.items?.length) {\n return mode === 'edit' ? { itemIds: [], items: [] } : null;\n }\n\n const items = mapSafetyPlanSectionSelectedItems(sectionContext.sectionTypeId, result.items);\n return dedupeSafetyPlanSectionItemSelection({\n id: `${sectionId}__item_1`,\n itemIds: items.map((item) => item.id),\n items,\n });\n }\n\n //#endregion\n\n //#region ----- Builder value mapping -----\n\n private mapItemToView(item: AXPBuilderItem): AXPBuilderItemViewModel {\n const stepTableRow = item['stepTableRow'] as AXMSafetyPlanStepTableRowBuilderPayload | undefined;\n if (stepTableRow) {\n const code = String(stepTableRow.code ?? '').trim();\n return {\n icon: 'fa-light fa-table-rows',\n title: String(stepTableRow.title ?? item['title'] ?? '').trim() || 'Row',\n name: code || undefined,\n badges: [],\n };\n }\n\n const snapshot = Array.isArray(item['items'])\n ? (item['items'] as { title?: string; code?: string }[])[0]\n : undefined;\n const title =\n asSafetyPlanDisplayText(item['title']) || asSafetyPlanDisplayText(snapshot?.title);\n const code = asSafetyPlanDisplayText(item['name']) || asSafetyPlanDisplayText(snapshot?.code);\n\n return {\n icon: 'fa-light fa-list-check',\n title,\n name: code || undefined,\n badges: [],\n };\n }\n\n private toBuilderValue(value: AXMSafetyPlanSectionBuilderValue): AXPBuilderValue {\n return {\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id,\n order: sectionIndex,\n name: section.id,\n sectionTypeId: section.sectionTypeId,\n sectionType: enrichSectionTypeSnapshot(section.sectionTypeId, section.sectionType),\n title: section.title,\n description: section.description ?? '',\n code: section.code,\n safetyPlanId: section.safetyPlanId ?? this.safetyPlanId() ?? '',\n sourceSafetyPlanTypeSectionId: section.sourceSafetyPlanTypeSectionId,\n sortOrder: section.sortOrder ?? sectionIndex + 1,\n required: section.required === true,\n workStepTypeId: section.workStepTypeId,\n workStepType: section.workStepType,\n columns: normalizeStepTableColumns(section.columns),\n widgetOptions: section.widgetOptions,\n items: this.expandSectionItemsToBuilderRows(section.id, section.items, section),\n })),\n } as AXPBuilderValue;\n }\n\n private fromBuilderValue(value: AXPBuilderValue): AXMSafetyPlanSectionBuilderValue {\n return normalizeSafetyPlanSectionBuilderValue({\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id,\n sectionTypeId: String(section['sectionTypeId'] ?? ''),\n sectionType: enrichSectionTypeSnapshot(\n String(section['sectionTypeId'] ?? ''),\n section['sectionType'] as AXMSectionTypeSnapshot | undefined,\n ),\n title: String(section['title'] ?? ''),\n description: String(section['description'] ?? ''),\n code: typeof section['code'] === 'string' ? section['code'] : undefined,\n safetyPlanId: String(section['safetyPlanId'] ?? this.safetyPlanId() ?? ''),\n sourceSafetyPlanTypeSectionId:\n typeof section['sourceSafetyPlanTypeSectionId'] === 'string'\n ? section['sourceSafetyPlanTypeSectionId']\n : undefined,\n sortOrder:\n typeof section['sortOrder'] === 'number' ? section['sortOrder'] : sectionIndex + 1,\n required: section['required'] === true,\n workStepTypeId:\n typeof section['workStepTypeId'] === 'string' ? section['workStepTypeId'] : undefined,\n workStepType: section['workStepType'] as AXMSafetyPlanSectionBuilderValue['sections'][number]['workStepType'],\n columns: normalizeStepTableColumns(section['columns'] as AXMStepTableColumnDef[] | undefined),\n widgetOptions:\n section['widgetOptions'] && typeof section['widgetOptions'] === 'object' && !Array.isArray(section['widgetOptions'])\n ? { ...(section['widgetOptions'] as Record<string, unknown>) }\n : undefined,\n items: this.collapseBuilderRowsToStorageItems(section.id, section.items, section),\n })),\n });\n }\n\n private expandSectionItemsToBuilderRows(\n sectionId: string,\n items: AXMSafetyPlanSectionBuilderItemValue[],\n section: {\n sectionTypeId?: string;\n sectionType?: AXMSectionTypeSnapshot;\n columns?: AXMStepTableColumnDef[];\n },\n ): AXPBuilderItem[] {\n if (\n isStepTableSectionType(section.sectionTypeId, section.sectionType) ||\n items.some((item) => item.stepTableRow)\n ) {\n const columns = normalizeStepTableColumns(section.columns);\n return items\n .filter((item) => item.stepTableRow)\n .map((item, order) =>\n this.toBuilderItemFromStepTableRow(\n {\n ...item.stepTableRow!,\n title:\n item.stepTableRow!.title ||\n summarizeStepTableRow(item.stepTableRow!.cells ?? [], columns),\n },\n order,\n item.id,\n ),\n );\n }\n const linked = this.flattenLinkedEntities(items);\n return linked.map((entry, order) => this.toBuilderItemFromEntity(sectionId, entry, order));\n }\n\n private collapseBuilderRowsToStorageItems(\n sectionId: string,\n items: AXPBuilderItem[],\n section: AXPBuilderSection,\n ): AXMSafetyPlanSectionBuilderItemValue[] {\n const ordered = [...items].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n const sectionTypeId = String(section['sectionTypeId'] ?? '');\n const sectionType = section['sectionType'] as AXMSectionTypeSnapshot | undefined;\n\n if (isStepTableSectionType(sectionTypeId, sectionType) || ordered.some((item) => item['stepTableRow'])) {\n const columns = normalizeStepTableColumns(section['columns'] as AXMStepTableColumnDef[] | undefined);\n const stepItems: AXMSafetyPlanSectionBuilderItemValue[] = [];\n ordered.forEach((item, index) => {\n const stepTableRow = item['stepTableRow'] as AXMSafetyPlanStepTableRowBuilderPayload | undefined;\n if (!stepTableRow) {\n return;\n }\n const stepId =\n typeof item.id === 'string' && item.id && !String(item.id).includes('__entity_')\n ? String(item.id)\n : AXPDataGenerator.uuid();\n const title =\n stepTableRow.title?.trim() ||\n summarizeStepTableRow(stepTableRow.cells ?? [], columns) ||\n 'Row';\n stepItems.push({\n id: stepId,\n itemIds: [stepId],\n items: [{ id: stepId, title, code: stepTableRow.code }],\n stepTableRow: {\n ...stepTableRow,\n title,\n sortOrder: index + 1,\n },\n });\n });\n return stepItems;\n }\n\n const itemIds: string[] = [];\n const snapshots: NonNullable<AXMSafetyPlanSectionBuilderItemValue['items']> = [];\n\n for (const item of ordered) {\n const entityId = this.resolveBuilderItemEntityId(item);\n if (!entityId || itemIds.includes(entityId)) {\n continue;\n }\n itemIds.push(entityId);\n const snapshot = Array.isArray(item['items'])\n ? (item['items'] as NonNullable<AXMSafetyPlanSectionBuilderItemValue['items']>)[0]\n : undefined;\n snapshots.push({\n id: entityId,\n title:\n asSafetyPlanDisplayText(snapshot?.title) ||\n asSafetyPlanDisplayText(item['title']) ||\n undefined,\n code:\n asSafetyPlanDisplayText(snapshot?.code) ||\n asSafetyPlanDisplayText(item['name']) ||\n undefined,\n });\n }\n\n if (!itemIds.length) {\n return [];\n }\n\n return [\n dedupeSafetyPlanSectionItemSelection({\n id: `${sectionId}__item_1`,\n itemIds,\n items: snapshots,\n }),\n ];\n }\n\n private flattenLinkedEntities(\n items: AXMSafetyPlanSectionBuilderItemValue[],\n ): Array<{ id: string; title?: string; code?: string }> {\n const linked: Array<{ id: string; title?: string; code?: string }> = [];\n const seen = new Set<string>();\n\n for (const slot of items) {\n const ids = Array.isArray(slot.itemIds) ? slot.itemIds : [];\n const snapshots = Array.isArray(slot.items) ? slot.items : [];\n for (let index = 0; index < ids.length; index += 1) {\n const id = String(ids[index] ?? '').trim();\n if (!id || seen.has(id)) {\n continue;\n }\n seen.add(id);\n const snapshot = snapshots.find((entry) => entry?.id === id) ?? snapshots[index];\n linked.push({\n id,\n title: asSafetyPlanDisplayText(snapshot?.title) || undefined,\n code: asSafetyPlanDisplayText(snapshot?.code) || undefined,\n });\n }\n }\n\n return linked;\n }\n\n private expandDialogSelectionToLinkedEntities(\n dialogValue: SafetyPlanSectionItemDialogValue,\n ): Array<{ id: string; title?: string; code?: string }> {\n return this.flattenLinkedEntities([\n {\n id: 'dialog',\n itemIds: [...(dialogValue.itemIds ?? [])],\n items: dialogValue.items ? [...dialogValue.items] : [],\n },\n ]);\n }\n\n private collectEntityIdsFromBuilderItems(items: AXPBuilderItem[]): Set<string> {\n const ids = new Set<string>();\n for (const item of items) {\n const entityId = this.resolveBuilderItemEntityId(item);\n if (entityId) {\n ids.add(entityId);\n }\n }\n return ids;\n }\n\n private resolveBuilderItemEntityId(item: AXPBuilderItem): string | null {\n if (typeof item['entityId'] === 'string' && item['entityId'].trim()) {\n return item['entityId'].trim();\n }\n if (Array.isArray(item['itemIds']) && typeof item['itemIds'][0] === 'string' && item['itemIds'][0].trim()) {\n return item['itemIds'][0].trim();\n }\n const snapshot = Array.isArray(item['items'])\n ? (item['items'] as { id?: string }[])[0]\n : undefined;\n if (typeof snapshot?.id === 'string' && snapshot.id.trim()) {\n return snapshot.id.trim();\n }\n return null;\n }\n\n private toBuilderItemFromEntity(\n sectionId: string,\n entry: { id: string; title?: string; code?: string },\n order: number,\n ): AXPBuilderItem {\n const title = asSafetyPlanDisplayText(entry.title);\n const code = asSafetyPlanDisplayText(entry.code);\n return {\n id: `${sectionId}__entity_${entry.id}`,\n order,\n entityId: entry.id,\n itemIds: [entry.id],\n items: [{ id: entry.id, title: title || undefined, code: code || undefined }],\n title,\n name: code,\n };\n }\n\n private toBuilderItemFromStepTableRow(\n row: AXMSafetyPlanStepTableRowBuilderPayload,\n order: number,\n id?: string,\n ): AXPBuilderItem {\n const stepId =\n typeof id === 'string' && id.trim() && !id.includes('__item_') && !id.includes('__entity_')\n ? id.trim()\n : AXPDataGenerator.uuid();\n const title = String(row.title ?? '').trim() || 'Row';\n const code = String(row.code ?? '').trim();\n return {\n id: stepId,\n order,\n entityId: stepId,\n itemIds: [stepId],\n items: [{ id: stepId, title, code: code || undefined }],\n title,\n name: code,\n stepTableRow: {\n ...row,\n title,\n sortOrder: order + 1,\n },\n };\n }\n\n //#endregion\n\n //#region ----- Step Table row dialog -----\n\n private async promptStepTableRowForm(\n mode: 'create' | 'edit',\n sectionContext: SectionBuilderContext,\n seed: SafetyPlanStepTableRowDialogValue,\n options?: { requireTitle?: boolean; applyTitleToSection?: boolean },\n ): Promise<AXMSafetyPlanStepTableRowBuilderPayload | null> {\n const columns = sortStepTableColumns(sectionContext.columns);\n const requireTitle = options?.requireTitle === true;\n const titleKey =\n mode === 'create'\n ? '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-row.title'\n : '@general:actions.edit.title';\n const dialogTitle =\n (await this.translationService.translateAsync(titleKey)) ||\n (mode === 'create' ? 'Add Row' : 'Edit');\n\n const result = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean; value?: AXMSafetyPlanStepTableRowBuilderPayload }>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({ ...seed })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(this.buildStepTableRowFormDefinition(columns, { includeTitle: requireTitle }));\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as SafetyPlanStepTableRowDialogValue;\n const customTitle = String(context['title'] ?? '').trim();\n if (requireTitle && !customTitle) {\n return { success: false };\n }\n const cells = this.dialogValueToCells(context, columns);\n if (!this.validateRequiredStepTableCells(cells, columns)) {\n return { success: false };\n }\n return {\n success: true,\n kind: 'object',\n value: {\n cells,\n title: customTitle || summarizeStepTableRow(cells, columns),\n } satisfies AXMSafetyPlanStepTableRowBuilderPayload,\n };\n });\n })\n .show();\n\n return result?.success && result.value ? result.value : null;\n }\n\n private buildStepTableRowFormDefinition(\n columns: AXMStepTableColumnDef[],\n options?: { includeTitle?: boolean },\n ): AXPDynamicFormDefinition {\n const ordered = sortStepTableColumns(columns);\n const parameters: AXPDynamicFormDefinition['groups'][number]['parameters'] = [];\n\n if (options?.includeTitle) {\n parameters.push({\n path: 'title',\n title: '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.title.title',\n widget: {\n path: 'title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.fields.title.placeholder',\n },\n },\n });\n }\n\n for (const column of ordered) {\n const key = stepTableColumnKey(column);\n const lookupEntity = resolveStepTableColumnLookupEntity(column);\n const multi = isStepTableColumnMultiLookup(column);\n parameters.push({\n path: key,\n title: stepTableColumnTitle(column),\n widget: lookupEntity\n ? {\n path: key,\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: multi ? 'lookup' : 'select',\n entity: lookupEntity,\n textField: 'title',\n valueField: 'id',\n columns: ['code', 'title'],\n ...(multi ? { multiple: true } : {}),\n expose: multi\n ? [\n { source: 'id', target: `${key}Refs.{id}` },\n { source: 'title', target: `${key}Refs.{title}` },\n { source: 'code', target: `${key}Refs.{code}` },\n ]\n : [\n { source: 'id', target: `${key}Ref.id` },\n { source: 'title', target: `${key}Ref.title` },\n { source: 'code', target: `${key}Ref.code` },\n ],\n },\n }\n : {\n path: key,\n type: AXPWidgetsCatalog.text,\n },\n });\n }\n\n return {\n groups: [\n {\n name: 'step-table-row',\n title: '@workplacesafety-management:safety-plan-work-steps.entities.safety-plan-work-step.groups.table-content',\n parameters,\n },\n ],\n };\n }\n\n private validateRequiredStepTableCells(\n cells: AXMStepTableCellValue[],\n columns: AXMStepTableColumnDef[],\n ): boolean {\n for (const column of columns) {\n if (column.required !== true) {\n continue;\n }\n const key = stepTableColumnKey(column);\n const cell = cells.find((entry) => entry.columnKey === key);\n if (!cell) {\n return false;\n }\n const lookupEntity = resolveStepTableColumnLookupEntity(column);\n if (lookupEntity) {\n if (!(cell.refIds?.length)) {\n return false;\n }\n } else if (!cell.textValue?.trim()) {\n return false;\n }\n }\n return true;\n }\n\n private cellsToDialogValue(\n cells: AXMStepTableCellValue[],\n columns: AXMStepTableColumnDef[],\n ): SafetyPlanStepTableRowDialogValue {\n const ordered = sortStepTableColumns(columns);\n const normalized = normalizeStepTableRows(\n [{ id: 'row', sortOrder: 1, cells }],\n ordered,\n )[0];\n const dialogRow: SafetyPlanStepTableRowDialogValue = {};\n for (const column of ordered) {\n const key = stepTableColumnKey(column);\n const cell = normalized?.cells.find((entry) => entry.columnKey === key);\n if (!cell) {\n continue;\n }\n const lookupEntity = resolveStepTableColumnLookupEntity(column);\n if (!lookupEntity) {\n dialogRow[key] = cell.textValue ?? '';\n continue;\n }\n if (isStepTableColumnMultiLookup(column)) {\n dialogRow[key] = cell.refIds ?? [];\n dialogRow[`${key}Refs`] = cell.refs ?? [];\n } else {\n dialogRow[key] = cell.refIds?.[0];\n dialogRow[`${key}Ref`] = cell.refs?.[0];\n }\n }\n return dialogRow;\n }\n\n private dialogValueToCells(\n row: SafetyPlanStepTableRowDialogValue,\n columns: AXMStepTableColumnDef[],\n ): AXMStepTableCellValue[] {\n const ordered = sortStepTableColumns(columns);\n return ordered.map((column) => {\n const key = stepTableColumnKey(column);\n const lookupEntity = resolveStepTableColumnLookupEntity(column);\n if (!lookupEntity) {\n return {\n columnKey: key,\n textValue: typeof row[key] === 'string' ? String(row[key]) : '',\n };\n }\n if (isStepTableColumnMultiLookup(column)) {\n const refs = Array.isArray(row[`${key}Refs`])\n ? (row[`${key}Refs`] as { id?: string; title?: string; code?: string }[])\n : [];\n const ids = Array.isArray(row[key])\n ? (row[key] as unknown[]).filter((value): value is string => typeof value === 'string')\n : refs\n .map((ref) => (typeof ref?.id === 'string' ? ref.id : ''))\n .filter(Boolean);\n return {\n columnKey: key,\n refIds: ids,\n refs: ids.map((idValue) => {\n const ref = refs.find((entry) => entry?.id === idValue);\n return { id: idValue, title: ref?.title, code: ref?.code };\n }),\n };\n }\n const ref = row[`${key}Ref`] as { id?: string; title?: string; code?: string } | undefined;\n const idValue =\n (typeof row[key] === 'string' && String(row[key])) ||\n (typeof ref?.id === 'string' ? ref.id : '');\n return {\n columnKey: key,\n refIds: idValue ? [idValue] : [],\n refs: idValue ? [{ id: idValue, title: ref?.title, code: ref?.code }] : [],\n };\n });\n }\n\n private async loadWorkStepType(workStepTypeId: string): Promise<{\n id: string;\n title?: string;\n code?: string;\n columns: AXMStepTableColumnDef[];\n } | null> {\n try {\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.workStepType.name}`;\n const row = await this.entityService.withEntity(entityKey).data().byKey(workStepTypeId);\n if (!row) {\n return null;\n }\n const record = row as {\n id?: string;\n title?: string;\n code?: string;\n columns?: AXMStepTableColumnDef[];\n };\n return {\n id: String(record.id ?? workStepTypeId),\n title: record.title,\n code: record.code,\n columns: normalizeStepTableColumns(record.columns),\n };\n } catch {\n return null;\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-safety-plan-section-builder\">\n @if (!readonly() && !hideHeaderActions() && allowAddSection()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button\n class=\"ax-sm\"\n [text]=\"\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title'\n | translate\n | async\n \"\n [color]=\"'primary'\"\n (onClick)=\"addSection()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"block min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n","//#region ----- Imports -----\n\nimport { Injectable, inject } from '@angular/core';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPDeviceService } from '@acorex-platform/framework-client/core';\n\nimport type { AXMSafetyPlanPreviewOpenOptions } from './safety-plan-preview.types';\n\n//#endregion\n\n//#region ----- Service -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMSafetyPlanPreviewService {\n //#region ----- Services & Dependencies -----\n\n private readonly popupService = inject(AXPopupService);\n private readonly deviceService = inject(AXPDeviceService);\n\n //#endregion\n\n //#region ----- Public API -----\n\n async open(options: AXMSafetyPlanPreviewOpenOptions): Promise<void> {\n const { AXMSafetyPlanPreviewModalComponent } = await import('./safety-plan-preview-modal.component');\n await this.popupService.open(AXMSafetyPlanPreviewModalComponent, {\n title: options.title,\n size: this.deviceService.isSmall() ? 'full' : 'lg',\n data: {\n structure: options.structure,\n },\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { resolveEntityRowDisplayText } from '@acorex-platform/framework-client/common';\nimport { AXPDataGenerator } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService, AXPRuntimeRemoteHookKeys, type AXPRuntimeCommandExecuteHookPayload } from '@acorex-platform/framework-client/runtime';\nimport { AXPHookService } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutBuilderService, resolveLayoutBuilderDialogResult } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport type {\n AXMSafetyPlanSectionBuilderValue,\n AXMWorkplaceSafetyManagementSafetyPlanTypeSectionEntityModel,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n AXMWorkplaceSafetyManagementCommandKeys,\n RootConfig,\n buildSectionStructureFromTypeSections,\n collectBuiltInRepeatableSectionTypeIds,\n dedupeSafetyPlanSectionStructure,\n normalizeStepTableColumns,\n resolveEntityRefId,\n resolveSectionItemEntityName,\n isStepTableSectionType,\n toBuilderValueFromStructure,\n asSafetyPlanDisplayText,\n type AXMStepTableColumnDef,\n} from '@acorex-platform/module-workplacesafety-management-client/contracts';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXMSafetyPlanSectionBuilderComponent } from './safety-plan-section-builder.component';\nimport {\n normalizeSafetyPlanSectionBuilderValue,\n hydrateStepTableSectionsWithWorkSteps,\n safetyPlanSectionsToBuilderValue,\n} from './safety-plan-section-builder.types';\nimport { SAFETY_PLAN_SECTIONS_SAVE_COMMAND } from './save-safety-plan-sections.command';\nimport { AXMSafetyPlanPreviewService } from '../safety-plan-preview/safety-plan-preview.service';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst SAFETY_PLAN_SECTIONS_ADD_SECTION_COMMAND = 'SafetyPlan:Sections:AddSection';\nconst SAFETY_PLAN_SECTIONS_PREVIEW_COMMAND = 'SafetyPlan:Sections:Preview';\nconst SAFETY_PLAN_SECTIONS_DISCARD_COMMAND = 'SafetyPlan:Sections:Discard';\nconst SAFETY_PLAN_SECTIONS_CHANGE_PLAN_TYPE_COMMAND = 'SafetyPlan:Sections:ChangePlanType';\n\nconst SAFETY_PLAN_SECTION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanSection.name}`;\nconst SAFETY_PLAN_WORK_STEP_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanWorkStep.name}`;\nconst SAFETY_PLAN_TYPE_SECTION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.safetyPlanTypeSection.name}`;\nconst SAFETY_PLAN_TYPE_ENTITY = RootConfig.entities.safetyPlanType.source;\nconst SECTION_TYPE_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface ChangePlanTypeDialogValue {\n safetyPlanTypeId: string;\n safetyPlanType?: { id: string; title?: string; code?: string };\n}\n\ninterface ChangePlanTypeSelection {\n safetyPlanTypeId: string;\n safetyPlanType?: { id: string; title?: string; code?: string };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-safety-plan-sections-page',\n standalone: true,\n imports: [AXMSafetyPlanSectionBuilderComponent, AXTranslationModule, AsyncPipe],\n template: `\n @if (isLoadingStructure()) {\n <p class=\"text-muted p-4\">\n {{\n '@workplacesafety-management:safety-plans.entities.safety-plan.pages.sections.loading'\n | translate\n | async\n }}\n </p>\n } @else if (safetyPlanId() || hasPlanType()) {\n <axm-safety-plan-section-builder\n #builderRef\n [value]=\"committedValue()\"\n [safetyPlanId]=\"safetyPlanId() ?? undefined\"\n [options]=\"builderOptions()\"\n (valueChange)=\"onValueChange($event)\"\n />\n } @else {\n <p class=\"text-muted p-4\">\n {{\n '@workplacesafety-management:safety-plans.entities.safety-plan.pages.sections.select-plan-type-first'\n | translate\n | async\n }}\n </p>\n }\n `,\n host: {\n class: 'block w-full min-h-0',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMSafetyPlanSectionsPageComponent,\n },\n ],\n})\nexport class AXMSafetyPlanSectionsPageComponent extends AXPPageLayoutBaseComponent {\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n protected readonly builderRef = viewChild<AXMSafetyPlanSectionBuilderComponent>('builderRef');\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly dialogService = inject(AXDialogService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly hooks = inject(AXPHookService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly previewService = inject(AXMSafetyPlanPreviewService);\n\n private readonly baselineValue = signal<AXMSafetyPlanSectionBuilderValue | null>(null);\n protected readonly committedValue = signal<AXMSafetyPlanSectionBuilderValue | null>(null);\n protected readonly isLoadingStructure = signal(false);\n /** Prevents re-entrant sync loops when applyStructure mutates shared form context. */\n private readonly lastSyncedKey = signal<string | null>(null);\n /** In-flight sync key — blocks concurrent loads for the same pair without blocking retries after cancel. */\n private readonly inflightSyncKey = signal<string | null>(null);\n private readonly appliedPlanTypeId = signal<string | null>(null);\n /** Keeps plan type in sync after Change Plan Type when parent form context is mutated in place. */\n private readonly planTypeOverride = signal<string | null>(null);\n\n protected readonly safetyPlanId = computed((): string | null => {\n const raw = this.rootContext()?.['id'];\n return typeof raw === 'string' && raw.length > 0 ? raw : null;\n });\n\n protected readonly planTypeId = computed((): string | null => {\n const override = this.planTypeOverride();\n if (override) {\n return override;\n }\n const ctx = this.rootContext() ?? {};\n return (\n resolveEntityRefId(ctx['safetyPlanTypeId']) ??\n resolveEntityRefId((ctx['safetyPlanType'] as { id?: unknown } | undefined)?.id) ??\n resolveEntityRefId(ctx['safetyPlanType'])\n );\n });\n\n protected readonly hasPlanType = computed(() => !!this.planTypeId());\n\n protected readonly isDraftPlan = computed((): boolean => {\n const status = this.rootContext()?.['status'];\n return !status || status === AXPSystemStatusType.Draft;\n });\n\n protected readonly builderOptions = computed(() => ({\n hideHeaderActions: true,\n readonly: !this.isDraftPlan() || this.isLoadingStructure(),\n allowAddSection: this.isDraftPlan() && !this.isLoadingStructure(),\n allowAddItems: this.isDraftPlan() && !this.isLoadingStructure(),\n allowReorderSections: this.isDraftPlan() && !this.isLoadingStructure(),\n ...((this.pageConfig() ?? {}) as Record<string, unknown>),\n ...((this.options() ?? {}) as Record<string, unknown>),\n allowEditSection: false,\n allowEditItem: false,\n }));\n\n protected readonly isDirty = computed(() => {\n return !isEqual(this.baselineValue() ?? { sections: [] }, this.committedValue() ?? { sections: [] });\n });\n\n #syncFromContext = effect((onCleanup) => {\n const planId = this.safetyPlanId();\n const typeId = this.planTypeId();\n const syncKey = `${planId ?? ''}|${typeId ?? ''}`;\n\n // Already applied or already loading for this plan/type pair.\n if (\n untracked(() => this.lastSyncedKey()) === syncKey ||\n untracked(() => this.inflightSyncKey()) === syncKey\n ) {\n return;\n }\n\n this.inflightSyncKey.set(syncKey);\n\n let cancelled = false;\n\n const clearInflight = (): void => {\n if (untracked(() => this.inflightSyncKey()) === syncKey) {\n this.inflightSyncKey.set(null);\n }\n };\n\n const markSynced = (): void => {\n this.lastSyncedKey.set(syncKey);\n clearInflight();\n };\n\n const run = async (): Promise<void> => {\n if (cancelled) {\n return;\n }\n\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n if (cancelled) {\n return;\n }\n\n // Edit: load independent saved sections once — never append type defaults on top.\n if (planId) {\n this.isLoadingStructure.set(true);\n try {\n const loaded = await this.fetchSectionsFromBackend(planId, repeatableSectionTypeIds);\n if (cancelled) return;\n\n if (loaded.sections.length > 0) {\n // Replace UI from backend (deduped). Never append defaults on top of saved rows.\n this.applyStructure(loaded, { asBaseline: true });\n this.appliedPlanTypeId.set(typeId);\n markSynced();\n return;\n }\n\n // No saved rows yet — fall through to type defaults when type is known.\n } catch {\n if (cancelled) return;\n clearInflight();\n await this.showStructureLoadError();\n return;\n } finally {\n if (!cancelled) {\n this.isLoadingStructure.set(false);\n }\n }\n\n if (cancelled) {\n return;\n }\n }\n\n if (!typeId) {\n this.appliedPlanTypeId.set(null);\n this.applyStructure({ sections: [] }, { asBaseline: true });\n markSynced();\n return;\n }\n\n const previousTypeId = untracked(() => this.appliedPlanTypeId());\n const currentSections = untracked(() => this.committedValue()?.sections ?? []);\n\n if (previousTypeId && previousTypeId !== typeId && currentSections.length > 0) {\n const confirmed = await this.confirmReplaceStructure();\n if (cancelled) return;\n if (!confirmed) {\n // Keep previous structure; mark new type as handled so we do not loop.\n this.appliedPlanTypeId.set(typeId);\n markSynced();\n return;\n }\n }\n\n this.isLoadingStructure.set(true);\n try {\n const defaults = await this.loadDefaultsForPlanType(typeId, repeatableSectionTypeIds);\n if (cancelled) return;\n // Replace (never append) the current collection with type defaults.\n this.applyStructure(defaults, { asBaseline: true });\n this.appliedPlanTypeId.set(typeId);\n markSynced();\n } catch {\n if (cancelled) return;\n clearInflight();\n await this.showStructureLoadError();\n } finally {\n if (!cancelled) {\n this.isLoadingStructure.set(false);\n }\n }\n };\n\n void run();\n\n onCleanup(() => {\n cancelled = true;\n clearInflight();\n });\n });\n\n protected onValueChange(value: AXMSafetyPlanSectionBuilderValue): void {\n const withOrder = normalizeSafetyPlanSectionBuilderValue({\n sections: value.sections.map((section, index) => ({\n ...section,\n sortOrder: index + 1,\n })),\n });\n this.committedValue.set(withOrder);\n this.updateRootContextField('sectionStructure', withOrder);\n this.updateRootContextField('sections', withOrder);\n this.recompute();\n }\n\n override getWizardStepContext(): Record<string, unknown> | null {\n const value = this.committedValue();\n if (!value) {\n return null;\n }\n const cloned = cloneDeep(value);\n return { sectionStructure: cloned, sections: cloned };\n }\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n const actions: AXPLayoutDetailsViewAction[] = [];\n const canPreview =\n !this.isLoadingStructure() &&\n (!!this.hasPlanType() || !!this.safetyPlanId() || (this.committedValue()?.sections.length ?? 0) > 0);\n\n if (this.isDraftPlan() && !this.isLoadingStructure()) {\n actions.push({\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.add-section.title',\n icon: 'fa-light fa-layer-group',\n zone: 'header' as const,\n priority: 'primary' as const,\n color: 'primary' as const,\n command: { name: SAFETY_PLAN_SECTIONS_ADD_SECTION_COMMAND, options: {} },\n });\n }\n\n if (canPreview) {\n actions.push({\n title:\n '@workplacesafety-management:safety-plan-sections.entities.safety-plan-section.actions.preview.title',\n icon: 'fa-light fa-eye',\n zone: 'header' as const,\n priority: 'secondary' as const,\n color: 'default' as const,\n command: { name: SAFETY_PLAN_SECTIONS_PREVIEW_COMMAND, options: {} },\n });\n }\n\n if (!this.isDraftPlan() || this.isLoadingStructure()) {\n return actions;\n }\n\n actions.push({\n title: '@workplacesafety-management:safety-plans.actions.change-plan-type.title',\n icon: 'fa-light fa-arrow-right-arrow-left',\n zone: 'header' as const,\n priority: 'secondary' as const,\n color: 'default' as const,\n visible: this.isDraftPlan() && (!!this.planTypeId() || !!this.safetyPlanId()),\n command: { name: SAFETY_PLAN_SECTIONS_CHANGE_PLAN_TYPE_COMMAND, options: {} },\n });\n\n if (this.safetyPlanId()) {\n actions.push(\n {\n title: '@general:actions.discard.title',\n icon: 'fa-light fa-rotate-left',\n zone: 'footer' as const,\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: { name: SAFETY_PLAN_SECTIONS_DISCARD_COMMAND, options: {} },\n },\n {\n title: '@general:actions.save.title',\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer' as const,\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: { name: SAFETY_PLAN_SECTIONS_SAVE_COMMAND, options: {} },\n },\n );\n }\n\n return actions;\n }\n\n override async execute(command: { name: string; options?: unknown }): Promise<void> {\n if (command.name === SAFETY_PLAN_SECTIONS_ADD_SECTION_COMMAND) {\n await this.builderRef()?.addSection();\n return;\n }\n\n if (command.name === SAFETY_PLAN_SECTIONS_PREVIEW_COMMAND) {\n await this.handlePreview();\n return;\n }\n\n if (command.name === SAFETY_PLAN_SECTIONS_CHANGE_PLAN_TYPE_COMMAND) {\n await this.handleChangePlanType();\n return;\n }\n\n if (command.name === SAFETY_PLAN_SECTIONS_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n\n if (command.name !== SAFETY_PLAN_SECTIONS_SAVE_COMMAND) return;\n\n await this.handleSave({ silent: false });\n }\n\n private async handlePreview(): Promise<void> {\n const previewLabel =\n (await this.translateService.translateAsync('@general:actions.preview.title')) || 'Preview';\n const locale = this.translateService.getActiveLang?.() ?? 'en-US';\n const planTitle = resolveEntityRowDisplayText(this.rootContext()?.['title'], locale);\n const title = planTitle ? `${previewLabel}: ${planTitle}` : previewLabel;\n await this.previewService.open({\n title,\n structure: cloneDeep(this.committedValue() ?? { sections: [] }),\n });\n }\n\n private async handleChangePlanType(): Promise<void> {\n if (!this.isDraftPlan()) {\n this.toastService.show({\n color: 'warning',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.draft-only',\n ),\n });\n return;\n }\n\n const selection = await this.promptChangePlanTypeDialog();\n if (!selection) {\n return;\n }\n\n const currentTypeId = this.planTypeId();\n if (currentTypeId && currentTypeId === selection.safetyPlanTypeId) {\n this.toastService.show({\n color: 'warning',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.same-plan-type',\n ),\n });\n return;\n }\n\n const confirmed = await this.confirmChangePlanType();\n if (!confirmed) {\n return;\n }\n\n const planId = this.safetyPlanId();\n this.isLoadingStructure.set(true);\n try {\n if (planId) {\n await this.applyPersistedPlanTypeChange(planId, selection);\n } else {\n await this.applyWizardPlanTypeChange(selection);\n }\n } catch {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.change-plan-type-failed',\n ),\n });\n } finally {\n this.isLoadingStructure.set(false);\n }\n }\n\n private async promptChangePlanTypeDialog(): Promise<ChangePlanTypeSelection | null> {\n const ctx = this.rootContext() ?? {};\n const currentType = (ctx['safetyPlanType'] as { id?: string; title?: string; code?: string } | undefined) ?? {};\n const currentTypeId = this.planTypeId() ?? '';\n\n const result = await this.layoutBuilder\n .create()\n .dialog<ChangePlanTypeSelection | null>((dialog) => {\n dialog\n .setTitle('@workplacesafety-management:safety-plans.actions.change-plan-type.dialog.title')\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n safetyPlanTypeId: currentTypeId,\n safetyPlanType: currentTypeId\n ? {\n id: currentTypeId,\n title: typeof currentType.title === 'string' ? currentType.title : undefined,\n code: typeof currentType.code === 'string' ? currentType.code : undefined,\n }\n : undefined,\n } satisfies ChangePlanTypeDialogValue)\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .formField(\n '@workplacesafety-management:safety-plans.actions.change-plan-type.dialog.fields.plan-type.title',\n (field) => {\n field.path('safetyPlanTypeId');\n field.lookupBox({\n entity: SAFETY_PLAN_TYPE_ENTITY,\n look: 'select',\n searchable: true,\n textField: 'title',\n valueField: 'id',\n columns: ['code', 'title'],\n expose: [\n { source: 'id', target: 'safetyPlanType.id' },\n { source: 'title', target: 'safetyPlanType.title' },\n { source: 'code', target: 'safetyPlanType.code' },\n ],\n validations: [{ rule: 'required' }],\n });\n },\n );\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@workplacesafety-management:safety-plans.actions.change-plan-type.dialog.actions.continue');\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n const context = dialogRef.context() as ChangePlanTypeDialogValue;\n const safetyPlanTypeId = resolveEntityRefId(context.safetyPlanTypeId);\n if (!safetyPlanTypeId) {\n throw new Error(\n (await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.actions.change-plan-type.dialog.fields.plan-type.placeholder',\n )) || 'Select a Plan Type',\n );\n }\n return {\n safetyPlanTypeId,\n safetyPlanType: context.safetyPlanType?.id\n ? context.safetyPlanType\n : { id: safetyPlanTypeId },\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<ChangePlanTypeSelection>(result);\n }\n\n private async confirmChangePlanType(): Promise<boolean> {\n const title =\n (await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.confirm-change-plan-type.title',\n )) || 'Change Plan Type?';\n const message =\n (await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.confirm-change-plan-type.message',\n )) ||\n 'Changing the Plan Type will discard all existing sections and their selected values. The default sections for the new Plan Type will be loaded. Do you want to continue?';\n\n const dialogResult = await this.dialogService.confirm(title, message, 'danger', 'horizontal');\n return dialogResult.result === true;\n }\n\n private async applyPersistedPlanTypeChange(planId: string, selection: ChangePlanTypeSelection): Promise<void> {\n const payload = await this.hooks.runAsync<AXPRuntimeCommandExecuteHookPayload>(\n AXPRuntimeRemoteHookKeys.CommandExecute,\n {\n name: AXMWorkplaceSafetyManagementCommandKeys.SafetyPlan.ChangeType,\n input: {\n id: planId,\n safetyPlanTypeId: selection.safetyPlanTypeId,\n safetyPlanType: selection.safetyPlanType,\n },\n },\n );\n\n if (!payload.handled || !payload.result?.success) {\n const text = payload.result?.message?.text;\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content:\n typeof text === 'string' && text.startsWith('@')\n ? await this.translateService.translateAsync(text)\n : await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.change-plan-type-failed',\n ),\n });\n return;\n }\n\n const data = payload.result.data as\n | {\n safetyPlanTypeId?: string;\n safetyPlanType?: { id: string; title?: string; code?: string };\n sections?: unknown[];\n }\n | undefined;\n\n const nextTypeId = data?.safetyPlanTypeId ?? selection.safetyPlanTypeId;\n const nextType = data?.safetyPlanType ?? selection.safetyPlanType ?? { id: nextTypeId };\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n const saved = dedupeSafetyPlanSectionStructure(\n safetyPlanSectionsToBuilderValue(\n (data?.sections ?? []) as Parameters<typeof safetyPlanSectionsToBuilderValue>[0],\n ),\n { repeatableSectionTypeIds },\n );\n\n this.planTypeOverride.set(nextTypeId);\n this.updateRootContextField('safetyPlanTypeId', nextTypeId);\n this.updateRootContextField('safetyPlanType', nextType);\n this.appliedPlanTypeId.set(nextTypeId);\n this.lastSyncedKey.set(`${planId}|${nextTypeId}`);\n this.inflightSyncKey.set(null);\n this.applyStructure(saved, { asBaseline: true });\n this.builderRef()?.syncAfterSave(saved);\n this.recompute();\n\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.actions.change-plan-type.dialog.success',\n ),\n });\n }\n\n private async applyWizardPlanTypeChange(selection: ChangePlanTypeSelection): Promise<void> {\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n const defaults = await this.loadDefaultsForPlanType(\n selection.safetyPlanTypeId,\n repeatableSectionTypeIds,\n );\n\n this.planTypeOverride.set(selection.safetyPlanTypeId);\n this.updateRootContextField('safetyPlanTypeId', selection.safetyPlanTypeId);\n this.updateRootContextField('safetyPlanType', selection.safetyPlanType ?? { id: selection.safetyPlanTypeId });\n this.appliedPlanTypeId.set(selection.safetyPlanTypeId);\n this.lastSyncedKey.set(`|${selection.safetyPlanTypeId}`);\n this.inflightSyncKey.set(null);\n this.applyStructure(defaults, { asBaseline: true });\n this.builderRef()?.syncAfterSave(defaults);\n this.recompute();\n\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.actions.change-plan-type.dialog.success',\n ),\n });\n }\n\n private async handleSave(options?: { silent?: boolean }): Promise<void> {\n const silent = options?.silent === true;\n const id = this.safetyPlanId();\n const value = this.committedValue() ?? { sections: [] };\n\n if (!id) {\n if (!silent) {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.entities.safety-plan.pages.sections.save-plan-first',\n ),\n });\n }\n return;\n }\n\n const result = await this.commandService.execute(SAFETY_PLAN_SECTIONS_SAVE_COMMAND, { id, value });\n\n if (result?.success) {\n // Always reload from backend after save so UI never keeps a stale/appended local list.\n const repeatableSectionTypeIds = await this.loadRepeatableSectionTypeIds();\n const saved = await this.fetchSectionsFromBackend(id, repeatableSectionTypeIds);\n this.applyStructure(saved, { asBaseline: true });\n this.lastSyncedKey.set(`${id}|${this.planTypeId() ?? ''}`);\n this.inflightSyncKey.set(null);\n this.builderRef()?.syncAfterSave(saved);\n this.recompute();\n if (!silent) {\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync('@general:messages.generic.success.description'),\n });\n }\n return;\n }\n\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content:\n typeof result?.message?.text === 'string' && result.message.text.startsWith('@')\n ? await this.translateService.translateAsync(result.message.text)\n : await this.translateService.translateAsync('@general:messages.entity.update-failed'),\n });\n }\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as unknown as { recompute?: () => void } | null | undefined;\n layout?.recompute?.();\n }\n\n private handleDiscard(): void {\n const baseline = this.baselineValue() ?? { sections: [] };\n this.committedValue.set(baseline);\n this.updateRootContextField('sectionStructure', baseline);\n this.updateRootContextField('sections', baseline);\n this.builderRef()?.resetAfterDiscard();\n this.recompute();\n }\n\n private applyStructure(\n value: AXMSafetyPlanSectionBuilderValue,\n options: { asBaseline: boolean },\n ): void {\n const normalized = normalizeSafetyPlanSectionBuilderValue(value);\n if (options.asBaseline) {\n this.baselineValue.set(normalized);\n }\n this.committedValue.set(normalized);\n // Keep both form fields in sync with the same replaced value (never merge/append).\n this.updateRootContextField('sectionStructure', normalized);\n this.updateRootContextField('sections', normalized);\n // Defer host recompute so it cannot re-enter the sync effect synchronously.\n queueMicrotask(() => {\n untracked(() => this.recompute());\n });\n }\n\n /** Query plan sections from storage and return a deduped builder value (replace, never append). */\n private async fetchSectionsFromBackend(\n planId: string,\n repeatableSectionTypeIds: readonly string[] = [],\n ): Promise<AXMSafetyPlanSectionBuilderValue> {\n const result = await this.entityService.withEntity(SAFETY_PLAN_SECTION_ENTITY).data().query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanId', operator: { type: 'equal' }, value: planId }],\n },\n } as never);\n\n const rawLoaded = safetyPlanSectionsToBuilderValue(\n (result.items ?? []) as Parameters<typeof safetyPlanSectionsToBuilderValue>[0],\n );\n const deduped = dedupeSafetyPlanSectionStructure(rawLoaded, { repeatableSectionTypeIds });\n\n const workStepsResult = await this.entityService.withEntity(SAFETY_PLAN_WORK_STEP_ENTITY).data().query({\n skip: 0,\n take: 2000,\n filter: {\n logic: 'and',\n filters: [{ field: 'safetyPlanId', operator: { type: 'equal' }, value: planId }],\n },\n } as never);\n\n const columnsByWorkStepTypeId = await this.loadWorkStepTypeColumns(\n deduped.sections\n .map((section) => section.workStepTypeId)\n .filter((id): id is string => typeof id === 'string' && id.length > 0),\n );\n\n return this.hydrateCatalogItemSnapshots(\n hydrateStepTableSectionsWithWorkSteps(\n deduped,\n (workStepsResult.items ?? []) as Parameters<typeof hydrateStepTableSectionsWithWorkSteps>[1],\n columnsByWorkStepTypeId,\n ),\n );\n }\n\n /**\n * Repeater lookups are not joined on query. Fill missing catalog item titles from\n * Hazard / HazardRisk / PPE / Control records so seeded item cards are not blank.\n */\n private async hydrateCatalogItemSnapshots(\n value: AXMSafetyPlanSectionBuilderValue,\n ): Promise<AXMSafetyPlanSectionBuilderValue> {\n const locale = this.translateService.getActiveLang?.() ?? 'en-US';\n const missingByEntity = new Map<string, Set<string>>();\n\n for (const section of value.sections) {\n if (isStepTableSectionType(section.sectionTypeId, section.sectionType)) {\n continue;\n }\n const entityName = resolveSectionItemEntityName(section.sectionTypeId, section.sectionType);\n if (!entityName) {\n continue;\n }\n for (const slot of section.items) {\n for (const id of slot.itemIds ?? []) {\n const snapshot = slot.items?.find((entry) => entry.id === id);\n if (asSafetyPlanDisplayText(snapshot?.title) || asSafetyPlanDisplayText(snapshot?.code)) {\n continue;\n }\n const ids = missingByEntity.get(entityName) ?? new Set<string>();\n ids.add(id);\n missingByEntity.set(entityName, ids);\n }\n }\n }\n\n if (missingByEntity.size === 0) {\n return value;\n }\n\n const loadedById = new Map<string, { title?: string; code?: string }>();\n await Promise.all(\n [...missingByEntity.entries()].map(async ([entityName, ids]) => {\n const idList = [...ids];\n try {\n const result = await this.entityService.withEntity(entityName).data().query({\n skip: 0,\n take: Math.max(idList.length, 1),\n filter:\n idList.length === 1\n ? { field: 'id', operator: { type: 'equal' }, value: idList[0] }\n : { field: 'id', operator: { type: 'in' }, value: idList },\n } as never);\n for (const row of result.items ?? []) {\n const record = row as unknown as Record<string, unknown>;\n const id = resolveEntityRefId(record['id']);\n if (!id) {\n continue;\n }\n loadedById.set(id, {\n title: resolveEntityRowDisplayText(record['title'], locale) || undefined,\n code: asSafetyPlanDisplayText(record['code']) || undefined,\n });\n }\n } catch {\n /* skip entities the session cannot read */\n }\n }),\n );\n\n if (loadedById.size === 0) {\n return value;\n }\n\n return {\n sections: value.sections.map((section) => ({\n ...section,\n items: section.items.map((slot) => ({\n ...slot,\n items: (slot.itemIds ?? []).map((id, index) => {\n const existing = slot.items?.find((entry) => entry.id === id) ?? slot.items?.[index];\n const loaded = loadedById.get(id);\n return {\n id,\n title: asSafetyPlanDisplayText(existing?.title) || loaded?.title,\n code: asSafetyPlanDisplayText(existing?.code) || loaded?.code,\n };\n }),\n })),\n })),\n };\n }\n\n private async loadWorkStepTypeColumns(\n workStepTypeIds: readonly string[],\n ): Promise<Map<string, AXMStepTableColumnDef[]>> {\n const uniqueIds = [...new Set(workStepTypeIds)];\n const columnsById = new Map<string, AXMStepTableColumnDef[]>();\n if (!uniqueIds.length) {\n return columnsById;\n }\n\n const entityKey = `${RootConfig.module.name}.${RootConfig.entities.workStepType.name}`;\n const accessor = this.entityService.withEntity(entityKey);\n await Promise.all(\n uniqueIds.map(async (id) => {\n try {\n const row = await accessor.data().byKey(id);\n if (!row) {\n return;\n }\n const record = row as { columns?: AXMStepTableColumnDef[] };\n columnsById.set(id, normalizeStepTableColumns(record.columns));\n } catch {\n // Leave missing types without columns; hydrate falls back to row snapshots.\n }\n }),\n );\n return columnsById;\n }\n\n private async loadRepeatableSectionTypeIds(): Promise<string[]> {\n const builtIn = collectBuiltInRepeatableSectionTypeIds();\n try {\n const result = await this.entityService.withEntity(SECTION_TYPE_ENTITY).data().query({\n skip: 0,\n take: 1000,\n } as never);\n const fromQuery = (result.items ?? [])\n .filter((row) => (row as { isRepeatable?: unknown }).isRepeatable === true)\n .map((row) => resolveEntityRefId((row as { id?: unknown }).id))\n .filter((id): id is string => !!id);\n return [...new Set([...fromQuery, ...builtIn])];\n } catch {\n return builtIn;\n }\n }\n\n private async loadDefaultsForPlanType(\n typeId: string,\n repeatableSectionTypeIds: readonly string[] = [],\n ): Promise<AXMSafetyPlanSectionBuilderValue> {\n const result = await this.entityService.withEntity(SAFETY_PLAN_TYPE_SECTION_ENTITY).data().query({\n skip: 0,\n take: 1000,\n sort: [{ field: 'sortOrder', dir: 'asc' }],\n filter: {\n logic: 'and',\n filters: [\n { field: 'safetyPlanTypeId', operator: { type: 'equal' }, value: typeId },\n { field: 'isArchived', operator: { type: 'equal' }, value: false },\n ],\n },\n } as never);\n\n const typeSections = ((result.items ?? []) as AXMWorkplaceSafetyManagementSafetyPlanTypeSectionEntityModel[]).filter(\n (row) => resolveEntityRefId(row.safetyPlanTypeId) === typeId,\n );\n\n const structure = dedupeSafetyPlanSectionStructure(\n buildSectionStructureFromTypeSections(typeSections, {\n createId: () => AXPDataGenerator.uuid(),\n }),\n { repeatableSectionTypeIds },\n );\n\n return toBuilderValueFromStructure(await this.enrichSectionTitlesFromSectionTypes(structure));\n }\n\n /**\n * Fills missing section titles from SectionType records when type-section snapshots omit them.\n */\n private async enrichSectionTitlesFromSectionTypes(\n structure: ReturnType<typeof buildSectionStructureFromTypeSections>,\n ): Promise<ReturnType<typeof buildSectionStructureFromTypeSections>> {\n const missingIds = [\n ...new Set(\n structure.sections\n .filter((section) => !section.sectionType?.title || section.title === section.sectionTypeId)\n .map((section) => section.sectionTypeId)\n .filter((id) => !!id),\n ),\n ];\n if (!missingIds.length) {\n return structure;\n }\n\n const sectionTypeEntity = `${RootConfig.module.name}.${RootConfig.entities.sectionType.name}`;\n const result = await this.entityService.withEntity(sectionTypeEntity).data().query({\n skip: 0,\n take: Math.max(missingIds.length, 1),\n filter: {\n logic: 'or',\n filters: missingIds.map((id) => ({\n field: 'id',\n operator: { type: 'equal' },\n value: id,\n })),\n },\n } as never);\n\n const byId = new Map<string, { title?: string; code?: string }>();\n for (const row of result.items ?? []) {\n const record = row as unknown as Record<string, unknown>;\n const id = resolveEntityRefId(record['id']);\n if (!id) continue;\n const title = record['title'];\n const code = record['code'];\n byId.set(id, {\n title: typeof title === 'string' ? title : undefined,\n code: typeof code === 'string' ? code : undefined,\n });\n }\n\n return {\n sections: structure.sections.map((section) => {\n const meta = byId.get(section.sectionTypeId);\n if (!meta?.title && !meta?.code) {\n return section;\n }\n const title = (meta.title ?? meta.code ?? section.title).trim();\n return {\n ...section,\n title,\n sectionType: {\n id: section.sectionTypeId,\n title: meta.title ?? section.sectionType?.title,\n code: meta.code ?? section.sectionType?.code,\n },\n };\n }),\n };\n }\n\n private async confirmReplaceStructure(): Promise<boolean> {\n const title =\n (await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.confirm-change-plan-type.title',\n )) || 'Change Plan Type?';\n const message =\n (await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.confirm-change-plan-type.message',\n )) ||\n 'Changing the Plan Type will discard all existing sections and their selected values. The default sections for the new Plan Type will be loaded. Do you want to continue?';\n\n const dialogResult = await this.dialogService.confirm(title, message, 'danger', 'horizontal');\n return dialogResult.result === true;\n }\n\n private async showStructureLoadError(): Promise<void> {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync(\n '@workplacesafety-management:safety-plans.messages.section-structure.load-failed',\n ),\n });\n }\n\n private updateRootContextField(field: string, value: unknown): void {\n const ctx = this.rootContext() as Record<string, unknown> | undefined;\n if (!ctx || typeof ctx !== 'object') {\n return;\n }\n ctx[field] = cloneDeep(value);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { SAFETY_PLAN_SECTIONS_PAGE_COMPONENT_KEY } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\n//#endregion\n\n//#region ---- Safety plan sections page provider ----\n\n@Injectable()\nexport class AXMSafetyPlanSectionsPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: SAFETY_PLAN_SECTIONS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./safety-plan-sections-page.component').then((m) => m.AXMSafetyPlanSectionsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":["i4","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AA4BA;AAEA;AAEO,MAAM,uCAAuC,GAAG;IACrD,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,oBAAoB;CACZ;AAEH,MAAM,6CAA6C,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU;AAEtF,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAU;AAC3C,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,sBAAsB,CAAU;AAExF;AAEA;AAEM,SAAU,8CAA8C,CAC5D,aAAiC,EACjC,QAAiC,EACjC,YAAsB,EACtB,kBAA4B,EAAA;AAE5B,IAAA,MAAM,YAAY,GAAG;AACnB,QAAA,qBAAqB,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC9C,QAAA,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC7C,8BAA8B,CAAC,YAAY,CAAC;AAC5C,QAAA,8BAA8B,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC/C,oCAAoC,CAAC,kBAAkB,CAAC;AACxD,QAAA,oCAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC5D;AACD,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAChC,QAAA,OAAO,2BAA2B;IACpC;AACA,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC3C,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,uBAAuB;IACvD;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,6BAA6B,CAAC,IAAwB,EAAA;AAC7D,IAAA,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;IAC/E,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,SAAS;IAClB;IACA,IAAI,OAAO,KAAK,gBAAgB,IAAI,OAAO,KAAK,WAAW,EAAE;AAC3D,QAAA,OAAO,gBAAgB;IACzB;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,8BAA8B,CAAC,KAAc,EAAA;AACpD,IAAA,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;IAChF,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,SAAS;IAClB;IACA,IAAI,OAAO,KAAK,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACjE,QAAA,OAAO,gBAAgB;IACzB;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,EAAE;AACxE,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,oCAAoC,CAAC,WAAoB,EAAA;IAChE,MAAM,IAAI,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;IAC/D,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AACtC,QAAA,OAAO,gBAAgB;IACzB;AACA,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE;AAClD,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,wBAAwB,CAAC,OAA0B,EAAA;AAC1D,IAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS;AAChH;AAEM,SAAU,uCAAuC,CACrD,OAA0B,EAAA;IAE1B,OAAO,8CAA8C,CACnD,wBAAwB,CAAC,OAAO,CAAC,EACjC,OAAO,CAAC,aAAa,CAAuC,EAC5D,OAAO,CAAC,OAAO,CAAC,EAChB,OAAO,CAAC,aAAa,CAAC,CACvB;AACH;AAEM,SAAU,mCAAmC,CAAC,OAA0B,EAAA;AAC5E,IAAA,OAAO,uCAAuC,CAAC,OAAO,CAAC,IAAI,IAAI;AACjE;AAEM,SAAU,iCAAiC,CAAC,UAA+C,EAAA;AAC/F,IAAA,IAAI,UAAU,KAAK,2BAA2B,EAAE;AAC9C,QAAA,OAAO,+EAA+E;IACxF;AACA,IAAA,OAAO,qGAAqG;AAC9G;AAEA;AAEA;AAEM,SAAU,wBAAwB,CAAC,OAA0B,EAAA;AACjE,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;AACpC,IAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACzD,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,EAAE,GAAI,GAAyC,EAAE;AAC1D;SAEgB,sBAAsB,CACpC,UAA+C,EAC/C,QAA2C,EAC3C,QAAiC,EAAA;IAEjC,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE;AAC3C,IAAA,MAAM,IAAI,GAAG,UAAU,KAAK,2BAA2B,GAAG,eAAe,GAAG,qBAAqB;IACjG,MAAM,IAAI,GAAsC,EAAE;AAClD,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACxC,YAAA,IAAgC,CAAC,GAAG,CAAC,GAAG,KAAK;QAChD;IACF;AACA,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,gCAAgC,CAC9C,UAA+C,EAC/C,OAA0C,EAAA;IAE1C,OAAO;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;KACxB;AACH;SAEgB,+BAA+B,GAAA;IAC7C,OAAO;AACL,QAAA;YACE,QAAQ,EAAE,qBAAqB,CAAC;AAC9B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,KAAK,EACH,gHAAgH;AAClH,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,2BAA2B;AAClC,gBAAA,YAAY,EAAE,KAAK;aACpB,CAAC;AACH,SAAA;AACD,QAAA;YACE,QAAQ,EAAE,qBAAqB,CAAC;AAC9B,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,KAAK,EACH,6HAA6H;AAC/H,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,KAAK,EAAE,2BAA2B;AAClC,gBAAA,YAAY,EAAE,IAAI;aACnB,CAAC;AACH,SAAA;KACF;AACH;AAEA;;AC9MA;AAwBA;AAEA;MAGa,wCAAwC,CAAA;AADrD,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAC7D,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AA4DnE,IAAA;;;AAtDC,IAAA,YAAY,CAAC,OAA0B,EAAA;AACrC,QAAA,OAAO,mCAAmC,CAAC,OAAO,CAAC;IACrD;AAEA,IAAA,MAAM,MAAM,CACV,OAA0B,EAC1B,MAAuB,EAAA;AAEvB,QAAA,MAAM,UAAU,GAAG,uCAAuC,CAAC,OAAO,CAAC;QACnE,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC;AAClD,QAAA,MAAM,KAAK,GACT,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC;aAC3F,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;AAC7E,YAAA,MAAM;AAER,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,aAAA,MAAM;AACN,aAAA,MAAM,CAAC,CAAC,MAAM,KAAI;YACjB;iBACG,QAAQ,CAAC,KAAK;iBACd,OAAO,CAAC,QAAQ;AAChB,iBAAA,SAAS,CAAC,gCAAgC,CAAC,UAAU,EAAE,QAAQ,CAAC;iBAChE,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/C,YAAA,IAAI,UAAU,KAAK,2BAA2B,EAAE;gBAC9C,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,+BAA+B,EAAE,EAAE,CAAC;YACrE;AACF,QAAA,CAAC;AACA,aAAA,IAAI,EAAE;AAET,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AACnB,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,QAAQ,GAAI,MAAM,CAAC,MAAM,CAAC,OAA+C,IAAI,EAAE;QACrF,OAAO;YACL,aAAa,EAAE,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACtE;IACH;;;AAMQ,IAAA,UAAU,CAAC,UAA+C,EAAA;QAChE,OAAO,UAAU,KAAK;AACpB,cAAE;cACA,6CAA6C;IACnD;8GA7DW,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wCAAwC,cAD3B,MAAM,EAAA,CAAA,CAAA;;2FACnB,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBADpD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACsElC;AAEA;MASa,oCAAoC,CAAA;AAPjD,IAAA,WAAA,GAAA;;QAUW,IAAA,CAAA,KAAK,GAAG,KAAK,CAAsD,IAAI;kFAAC;QACxE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAqB,SAAS;yFAAC;QACnD,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,EAAE;oFAAC;QAE5C,IAAA,CAAA,WAAW,GAAG,MAAM,EAAoC;;;QAMhD,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,uCAAuC;wFAAC;AAChE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kCAAkC,CAAC;AAC3D,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,wCAAwC,CAAC;;;AAMrE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE;yFAAC;;AAG1D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAAkB;AAE9C,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAuC,OAAO;YACxF,aAAa,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACjD,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,YAAY,IAAI;AACrG,YAAA,iBAAiB,EAAE,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;YACnF,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS;AAC9G,YAAA,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;AACvF,YAAA,wBAAwB,EAAE,KAAK;AAC/B,YAAA,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjD,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,gBAAgB;AACrE,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,EAAE,yGAAyG;AACrH,gBAAA,OAAO,EAAE,sGAAsG;AAChH,aAAA;SACF,CAAC;2FAAC;AAEgB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAa,KAAK,IAAI;8FAAC;AAC7F,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAa,KAAK,KAAK;4FAAC;AAC1F,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAa,KAAK,IAAI;6FAAC;AAC3F,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,CAAC,eAAe,CAAa,KAAK,IAAI;0FAAC;AACrF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,CAAC,eAAe,CAAa,KAAK,KAAK;0FAAC;AACtF,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACrD,YAAA,OAAO,OAAO,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI;QACpD,CAAC;iGAAC;AACiB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAa,KAAK,IAAI;qFAAC;;;AAM9F,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,MAAK;YAChC,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACvE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC;gGAAC;AAusCH,IAAA;;;AA1sCC,IAAA,mBAAmB;;;AASnB,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE;IACxC;AAEA,IAAA,aAAa,CAAC,KAAuC,EAAA;AACnD,QAAA,MAAM,UAAU,GAAG,sCAAsC,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,cAAc,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC;IACvD;IAEA,iBAAiB,GAAA;QACf,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,cAAc,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC;IACvD;;;AAMU,IAAA,oBAAoB,CAAC,IAAqB,EAAA;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3D,QAAA,IAAI,SAAS,GAAG,iCAAiC,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,EAAE;AACtC,YAAA,SAAS,GAAG;gBACV,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC3C,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AACvD,oBAAA,OAAO,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO;AAChD,gBAAA,CAAC,CAAC;aACH;AACD,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;QACnC;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IAClC;;;IAMQ,MAAM,gBAAgB,CAAC,KAAsB,EAAA;QACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AACzD,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,sBAAsB,EAAE,EAAE;AAC1B,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,WAAW,EAAE,EAAE;AAChB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;AAE7B,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE;QACzC,OAAO;AACL,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,YAAA,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;AAC1C,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;YACvC,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AAC5C,YAAA,KAAK,EAAE,EAAE;SACV;IACH;AAEQ,IAAA,MAAM,uBAAuB,CACnC,OAA0B,EAC1B,KAAsB,EAAA;QAEtB,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;QACzD;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC5B,YAAA,OAAO,IAAI;QACb;QACA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC;IAC/C;AAEQ,IAAA,MAAM,iBAAiB,CAC7B,OAA0B,EAC1B,KAAsB,EAAA;QAEtB,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACpE,QAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAuC;QACxF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AACvD,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,mBAAmB;YAChC,sBAAsB,EACpB,yBAAyB,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,EAAE,WAAW;AAClF,gBAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACtC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAClD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;AAE7B,QAAA,MAAM,kBAAkB,GAAG,qBAAqB,KAAK,WAAW,CAAC,aAAa;AAC9E,QAAA,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC;AAC9F,QAAA,MAAM,YAAY,GAChB,WAAW,IAAI,CAAC;AACd,cAAE;AACE,gBAAA,cAAc,EAAE,OAAO,CAAC,gBAAgB,CAAC;AACzC,gBAAA,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC;AACrC,gBAAA,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;AAC5B;AACH,cAAE;AACE,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,OAAO,EAAE,EAAE;aACZ;QAEP,OAAO;AACL,YAAA,GAAG,OAAO;YACV,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,YAAA,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;AAC1C,YAAA,GAAG,YAAY;AACf,YAAA,IAAI,kBAAkB,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;SAC7C;IACH;AAEQ,IAAA,MAAM,iBAAiB,CAC7B,IAAuB,EACvB,IAAkC,EAAA;AAElC,QAAA,MAAM,QAAQ,GACZ,IAAI,KAAK;AACP,cAAE;cACA,6BAA6B;QACnC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;AAEtH,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,aAAA,MAAM;AACN,aAAA,MAAM,CAA6D,CAAC,MAAM,KAAI;YAC7E;iBACG,QAAQ,CAAC,KAAK;iBACd,OAAO,CAAC,IAAI;iBACZ,cAAc,CAAC,IAAI;AACnB,iBAAA,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE;AACtB,iBAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACvD,YAAA,CAAC;AACA,iBAAA,UAAU,CAAC,CAAC,OAAO,KAAI;gBACtB,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC;AACvF,YAAA,CAAC;AACA,iBAAA,QAAQ,CAAC,CAAC,SAAS,KAAI;AACtB,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;AACA,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAA2C;AAC5E,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAChE,IAAI,CAAC,aAAa,EAAE;AAClB,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;gBAEA,MAAM,WAAW,GAAG,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;AACjF,gBAAA,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;oBAClC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;oBACvC,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBACxC,IAAI,CAAC,UAAU,EAAE;AACf,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;AAEA,gBAAA,MAAM,WAAW,GACf,MAAM,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;oBACnD,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;oBACxC,MAAM,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAE/C,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE;wBACL,aAAa;wBACb,WAAW;AACX,wBAAA,KAAK,EAAE,UAAU;wBACjB,WAAW;AACX,wBAAA,sBAAsB,EAAE,WAAW;AACpC,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AACA,aAAA,IAAI,EAAE;AAET,QAAA,OAAO,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI;IAC9D;IAEQ,0BAA0B,GAAA;AAChC,QAAA,MAAM,KAAK,GAAkC;AAC3C,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,qFAAqF;AAC5F,YAAA,UAAU,EAAE;AACV,gBAAA;AACE,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,KAAK,EAAE,yGAAyG;AAChH,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,iBAAiB,CAAC,MAAM;AAC9B,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE;AAC3E,4BAAA,GAAG,mDAAmD;AACvD,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,KAAK,EACH,wGAAwG;AAC1G,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,wBAAwB;wBAC9B,IAAI,EAAE,iBAAiB,CAAC,SAAS;AACjC,wBAAA,OAAO,EAAE;AACP,4BAAA,QAAQ,EAAE,IAAI;AACd,4BAAA,IAAI,EAAE,CAAC;AACR,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;AACD,QAAA,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;IAC5B;;;AAMQ,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAE,KAAsB,EAAA;AACpE,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;QAC9D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,cAAc,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAE;QACpE,IAAI,sBAAsB,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE;AACpF,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC9D,IAAI,CAAC,QAAQ,EAAE;AACb,oBAAA,OAAO,IAAI;gBACb;gBACA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC;AAC3F,gBAAA,MAAM,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,GAAG,IAAI;AACjG,gBAAA,IAAI,CAAC,WAAW,EAAE,cAAc,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpE,oBAAA,OAAO,IAAI;gBACb;gBACA,cAAc,GAAG,WAAW;YAC9B;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,OAAO;AACtG,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACjE,YAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC/E,YAAA,MAAM,mBAAmB,GACvB,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC;AACzC,gBAAA,CAAC,YAAY;AACb,gBAAA,YAAY,KAAK,gBAAgB;AACjC,gBAAA,YAAY,KAAK,cAAc,CAAC,aAAa;YAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC3C,QAAQ,EACR,cAAc,EACd;AACE,gBAAA,KAAK,EAAE;AACL,sBAAE,YAAY,IAAI,YAAY,KAAK;AACjC,0BAAE;AACF,0BAAE,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI;AACzD,sBAAE,EAAE;aACP,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC5C;YACD,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,IAAI;YACb;YAEA,IAAI,mBAAmB,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;AAC5C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACrD;YAEA,MAAM,SAAS,GACb,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM;AAClF,gBAAA,cAAc,CAAC,KAAK,CAAC,MAAM;YAC7B,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7D;QAEA,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,KAAK,CAAC;AACxE,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AACzG,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,qCAAqC,CAAC,WAAW,CAAC,CAAC,MAAM,CAC7E,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CACtC;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;QACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAC/B,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,CACnE;IACH;AAEQ,IAAA,MAAM,cAAc,CAC1B,IAAoB,EACpB,SAAiB,EACjB,KAAsB,EAAA;AAEtB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;QAC9D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAE;QACtE,IAAI,sBAAsB,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE;AACpF,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAwD;YAC5F,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,MAAM,IAAI,GAAG;AACX,gBAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC;AACxE,gBAAA,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;aAC5D;YACD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC;AAC5C,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;AAC1E,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,mBAAmB,EAAE,YAAY;AAClC,aAAA,CAAC;YACF,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,IAAI;YACb;YACA,IAAI,YAAY,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;AACrC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACrD;YACA,OAAO,IAAI,CAAC,6BAA6B,CACvC;AACE,gBAAA,GAAG,GAAG;gBACN,IAAI,EAAE,QAAQ,CAAC,IAAI;AACpB,aAAA,EACD,IAAI,CAAC,KAAK,IAAI,CAAC,EACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAChB;QACH;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;QAC7D,MAAM,IAAI,GAAiD;AACzD,cAAE;gBACE,OAAO,EAAE,CAAC,eAAe,CAAC;gBAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,sBAAG,IAAI,CAAC,OAAO;AACf,sBAAE,EAAE;AACP;cACD,SAAS;AAEb,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;AACnG,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,qCAAqC,CAAC,WAAW,CAAC;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gCAAgC,CACpD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAClE;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAEpF,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9E;AAEQ,IAAA,MAAM,qBAAqB,GAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;YAC5F,OAAO,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CACnD,sFAAsF,CACvF;AACF,SAAA,CAAC;IACJ;;IAGQ,MAAM,uBAAuB,CAAC,SAAiB,EAAA;AACrD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE;QAChD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1D,QAAA,MAAM,IAAI,GAAqC;YAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACzC,gBAAA,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE;AAC5B,oBAAA,OAAO,OAAO;gBAChB;gBACA,OAAO;AACL,oBAAA,GAAG,OAAO;oBACV,cAAc,EAAE,MAAM,CAAC,EAAE;AACzB,oBAAA,YAAY,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;oBACvE,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;AACH,YAAA,CAAC,CAAC;SACH;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,OAAO,IAAI;IACb;IAEQ,iBAAiB,CAAC,SAAiB,EAAE,KAAa,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;QAC5B,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QACA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;IACnD;AAEQ,IAAA,MAAM,oBAAoB,GAAA;AAMhC,QAAA,MAAM,KAAK,GACT,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAC3C,sGAAsG,CACvG,KAAK,WAAW;AAEnB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,aAAA,MAAM;AACN,aAAA,MAAM,CAGJ,CAAC,MAAM,KAAI;YACZ;iBACG,QAAQ,CAAC,KAAK;iBACd,OAAO,CAAC,IAAI;iBACZ,cAAc,CAAC,IAAI;AACnB,iBAAA,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;AACjC,iBAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnB,MAAM,CAAC,WAAW,CAAC;AACjB,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,IAAI,EAAE,WAAW;AACjB,4BAAA,KAAK,EACH,sGAAsG;AACxG,4BAAA,UAAU,EAAE;AACV,gCAAA;AACE,oCAAA,IAAI,EAAE,gBAAgB;AACtB,oCAAA,KAAK,EACH,sGAAsG;AACxG,oCAAA,MAAM,EAAE;AACN,wCAAA,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,iBAAiB,CAAC,MAAM;AAC9B,wCAAA,OAAO,EAAE;AACP,4CAAA,MAAM,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE;AAC5E,4CAAA,IAAI,EAAE,QAAQ;AACd,4CAAA,SAAS,EAAE,OAAO;AAClB,4CAAA,UAAU,EAAE,IAAI;AAChB,4CAAA,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,4CAAA,MAAM,EAAE;AACN,gDAAA,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE;AAC3C,gDAAA,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE;AACjD,gDAAA,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;AAChD,6CAAA;AACF,yCAAA;AACF,qCAAA;AACF,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC;AACJ,YAAA,CAAC;AACA,iBAAA,UAAU,CAAC,CAAC,OAAO,KAAI;gBACtB,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC;AACvF,YAAA,CAAC;AACA,iBAAA,QAAQ,CAAC,OAAO,SAAS,KAAI;AAC5B,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;AACA,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAGhC;AACD,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAClE,IAAI,CAAC,cAAc,EAAE;AACnB,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;gBACA,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE;wBACL,cAAc;wBACd,YAAY,EAAE,OAAO,CAAC,YAAY;AACnC,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AACA,aAAA,IAAI,EAAE;AAET,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE;AACrD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;QACvE,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,gCAAgC,CAAC,OAA0B,EAAA;AACjE,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACnE,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;QACA,OAAO;YACL,aAAa;YACb,WAAW,EAAE,yBAAyB,CACpC,aAAa,EACb,OAAO,CAAC,aAAa,CAAuC,CAC7D;YACD,cAAc,EAAE,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS;AAC5G,YAAA,YAAY,EAAE,OAAO,CAAC,cAAc,CAA0C;AAC9E,YAAA,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAwC,CAAC;SAC9F;IACH;;;IAMQ,mBAAmB,CAAC,SAAiB,EAAE,YAA6B,EAAA;AAC1E,QAAA,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAClG,QAAA,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;IACzE;IAEQ,MAAM,qBAAqB,CAAC,aAAuB,EAAA;AACzD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACzB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CACvE;AACD,QAAA,OAAO;aACJ,MAAM,CAAC,CAAC,MAAM,KAAsD,MAAM,IAAI,IAAI;aAClF,GAAG,CAAC,CAAC,MAAM,KAAK,MAA4C,CAAC;IAClE;AAEQ,IAAA,MAAM,2BAA2B,CACvC,aAAqB,EACrB,SAAiB,EACjB,YAA6B,EAAA;AAE7B,QAAA,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAClG,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACtE,QAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,QAAQ;QAC9E,OAAO,uCAAuC,CAC5C,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CACzC;IACH;AAEQ,IAAA,MAAM,oBAAoB,CAChC,IAAuB,EACvB,IAAkD,EAClD,SAAiB,EACjB,YAA6B,EAC7B,OAA0B,EAC1B,aAAsB,EAAA;QAEtB,MAAM,cAAc,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC;QACrE,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,SAAS,GAAG,qCAAqC,CACrD,cAAc,CAAC,aAAa,EAC5B,cAAc,CAAC,WAAW,CAC3B;QACD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;AACvC,QAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC9C,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAChC,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAClC;QACD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CACnD,cAAc,CAAC,aAAa,EAC5B,SAAS,EACT,YAAY,CACb;QACD,MAAM,OAAO,GAAG,mCAAmC,CAAC,cAAc,CAAC,aAAa,CAAC;AACjF,QAAA,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,KAAmB,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnH,QAAA,MAAM,QAAQ,GACZ,IAAI,KAAK;AACP,cAAE;cACA,6BAA6B;QACnC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;QAEnH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAChD,MAAM;YACN,KAAK;YACL,aAAa;AACb,YAAA,eAAe,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,eAAe,GAAG,SAAS;YACzE,OAAO;YACP,OAAO,EAAE,MAAM,IAAI,SAAS;AAC5B,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,kBAAkB,EAAE,KAAK;AAC1B,SAAA,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AACzB,YAAA,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI;QAC5D;AAEA,QAAA,MAAM,KAAK,GAAG,iCAAiC,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;AAC3F,QAAA,OAAO,oCAAoC,CAAC;YAC1C,EAAE,EAAE,CAAA,EAAG,SAAS,CAAA,QAAA,CAAU;AAC1B,YAAA,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACrC,KAAK;AACN,SAAA,CAAC;IACJ;;;AAMQ,IAAA,aAAa,CAAC,IAAoB,EAAA;AACxC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAwD;QAChG,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACnD,OAAO;AACL,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;gBACxE,IAAI,EAAE,IAAI,IAAI,SAAS;AACvB,gBAAA,MAAM,EAAE,EAAE;aACX;QACH;QAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C,cAAG,IAAI,CAAC,OAAO,CAAyC,CAAC,CAAC;cACxD,SAAS;AACb,QAAA,MAAM,KAAK,GACT,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpF,QAAA,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAE7F,OAAO;AACL,YAAA,IAAI,EAAE,wBAAwB;YAC9B,KAAK;YACL,IAAI,EAAE,IAAI,IAAI,SAAS;AACvB,YAAA,MAAM,EAAE,EAAE;SACX;IACH;AAEQ,IAAA,cAAc,CAAC,KAAuC,EAAA;QAC5D,OAAO;AACL,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,MAAM;gBACvD,EAAE,EAAE,OAAO,CAAC,EAAE;AACd,gBAAA,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,OAAO,CAAC,EAAE;gBAChB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,WAAW,EAAE,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;gBAClF,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,gBAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;gBACtC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;gBAC/D,6BAA6B,EAAE,OAAO,CAAC,6BAA6B;AACpE,gBAAA,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,YAAY,GAAG,CAAC;AAChD,gBAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI;gBACnC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,gBAAA,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC;gBACnD,aAAa,EAAE,OAAO,CAAC,aAAa;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AAChF,aAAA,CAAC,CAAC;SACe;IACtB;AAEQ,IAAA,gBAAgB,CAAC,KAAsB,EAAA;AAC7C,QAAA,OAAO,sCAAsC,CAAC;AAC5C,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,MAAM;gBACvD,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACrD,gBAAA,WAAW,EAAE,yBAAyB,CACpC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,aAAa,CAAuC,CAC7D;gBACD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AACjD,gBAAA,IAAI,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS;AACvE,gBAAA,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;AAC1E,gBAAA,6BAA6B,EAC3B,OAAO,OAAO,CAAC,+BAA+B,CAAC,KAAK;AAClD,sBAAE,OAAO,CAAC,+BAA+B;AACzC,sBAAE,SAAS;gBACf,SAAS,EACP,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,CAAC;AACpF,gBAAA,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI;AACtC,gBAAA,cAAc,EACZ,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS;AACvF,gBAAA,YAAY,EAAE,OAAO,CAAC,cAAc,CAAyE;AAC7G,gBAAA,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAwC,CAAC;gBAC7F,aAAa,EACX,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,OAAO,CAAC,eAAe,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;AACjH,sBAAE,EAAE,GAAI,OAAO,CAAC,eAAe,CAA6B;AAC5D,sBAAE,SAAS;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AAClF,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC;IACJ;AAEQ,IAAA,+BAA+B,CACrC,SAAiB,EACjB,KAA6C,EAC7C,OAIC,EAAA;QAED,IACE,sBAAsB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;AAClE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,EACvC;YACA,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1D,YAAA,OAAO;iBACJ,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY;iBAClC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KACf,IAAI,CAAC,6BAA6B,CAChC;gBACE,GAAG,IAAI,CAAC,YAAa;AACrB,gBAAA,KAAK,EACH,IAAI,CAAC,YAAa,CAAC,KAAK;oBACxB,qBAAqB,CAAC,IAAI,CAAC,YAAa,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC;AACjE,aAAA,EACD,KAAK,EACL,IAAI,CAAC,EAAE,CACR,CACF;QACL;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5F;AAEQ,IAAA,iCAAiC,CACvC,SAAiB,EACjB,KAAuB,EACvB,OAA0B,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5D,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAuC;QAEhF,IAAI,sBAAsB,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE;YACtG,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAwC,CAAC;YACpG,MAAM,SAAS,GAA2C,EAAE;YAC5D,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC9B,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAwD;gBAChG,IAAI,CAAC,YAAY,EAAE;oBACjB;gBACF;gBACA,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW;AAC7E,sBAAE,MAAM,CAAC,IAAI,CAAC,EAAE;AAChB,sBAAE,gBAAgB,CAAC,IAAI,EAAE;AAC7B,gBAAA,MAAM,KAAK,GACT,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;oBAC1B,qBAAqB,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC;AACxD,oBAAA,KAAK;gBACP,SAAS,CAAC,IAAI,CAAC;AACb,oBAAA,EAAE,EAAE,MAAM;oBACV,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,oBAAA,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;AACvD,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,YAAY;wBACf,KAAK;wBACL,SAAS,EAAE,KAAK,GAAG,CAAC;AACrB,qBAAA;AACF,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,SAAS;QAClB;QAEA,MAAM,OAAO,GAAa,EAAE;QAC5B,MAAM,SAAS,GAA+D,EAAE;AAEhF,QAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC3C;YACF;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C,kBAAG,IAAI,CAAC,OAAO,CAAgE,CAAC,CAAC;kBAC/E,SAAS;YACb,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,KAAK,EACH,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxC,oBAAA,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,SAAS;AACX,gBAAA,IAAI,EACF,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC;AACvC,oBAAA,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrC,SAAS;AACZ,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;AACL,YAAA,oCAAoC,CAAC;gBACnC,EAAE,EAAE,CAAA,EAAG,SAAS,CAAA,QAAA,CAAU;gBAC1B,OAAO;AACP,gBAAA,KAAK,EAAE,SAAS;aACjB,CAAC;SACH;IACH;AAEQ,IAAA,qBAAqB,CAC3B,KAA6C,EAAA;QAE7C,MAAM,MAAM,GAAyD,EAAE;AACvE,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;AAE9B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE;YAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;AAC7D,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAClD,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC1C,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACvB;gBACF;AACA,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC;gBAChF,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE;oBACF,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,SAAS;oBAC5D,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,SAAS;AAC3D,iBAAA,CAAC;YACJ;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,qCAAqC,CAC3C,WAA6C,EAAA;QAE7C,OAAO,IAAI,CAAC,qBAAqB,CAAC;AAChC,YAAA;AACE,gBAAA,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACzC,gBAAA,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;AACvD,aAAA;AACF,SAAA,CAAC;IACJ;AAEQ,IAAA,gCAAgC,CAAC,KAAuB,EAAA;AAC9D,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU;AAC7B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACtD,IAAI,QAAQ,EAAE;AACZ,gBAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnB;QACF;AACA,QAAA,OAAO,GAAG;IACZ;AAEQ,IAAA,0BAA0B,CAAC,IAAoB,EAAA;AACrD,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;QAChC;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;YACzG,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAClC;QACA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C,cAAG,IAAI,CAAC,OAAO,CAAuB,CAAC,CAAC;cACtC,SAAS;AACb,QAAA,IAAI,OAAO,QAAQ,EAAE,EAAE,KAAK,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;AAC1D,YAAA,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,uBAAuB,CAC7B,SAAiB,EACjB,KAAoD,EACpD,KAAa,EAAA;QAEb,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC;QAClD,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC;QAChD,OAAO;AACL,YAAA,EAAE,EAAE,CAAA,EAAG,SAAS,YAAY,KAAK,CAAC,EAAE,CAAA,CAAE;YACtC,KAAK;YACL,QAAQ,EAAE,KAAK,CAAC,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7E,KAAK;AACL,YAAA,IAAI,EAAE,IAAI;SACX;IACH;AAEQ,IAAA,6BAA6B,CACnC,GAA4C,EAC5C,KAAa,EACb,EAAW,EAAA;QAEX,MAAM,MAAM,GACV,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW;AACxF,cAAE,EAAE,CAAC,IAAI;AACT,cAAE,gBAAgB,CAAC,IAAI,EAAE;AAC7B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AACrD,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC1C,OAAO;AACL,YAAA,EAAE,EAAE,MAAM;YACV,KAAK;AACL,YAAA,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;YACvD,KAAK;AACL,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,GAAG;gBACN,KAAK;gBACL,SAAS,EAAE,KAAK,GAAG,CAAC;AACrB,aAAA;SACF;IACH;;;IAMQ,MAAM,sBAAsB,CAClC,IAAuB,EACvB,cAAqC,EACrC,IAAuC,EACvC,OAAmE,EAAA;QAEnE,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC;AAC5D,QAAA,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,KAAK,IAAI;AACnD,QAAA,MAAM,QAAQ,GACZ,IAAI,KAAK;AACP,cAAE;cACA,6BAA6B;AACnC,QAAA,MAAM,WAAW,GACf,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC;AACvD,aAAC,IAAI,KAAK,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,aAAA,MAAM;AACN,aAAA,MAAM,CAAwE,CAAC,MAAM,KAAI;YACxF;iBACG,QAAQ,CAAC,WAAW;iBACpB,OAAO,CAAC,IAAI;iBACZ,cAAc,CAAC,IAAI;AACnB,iBAAA,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE;AACtB,iBAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,gBAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;AACnG,YAAA,CAAC;AACA,iBAAA,UAAU,CAAC,CAAC,OAAO,KAAI;gBACtB,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC;AACvF,YAAA,CAAC;AACA,iBAAA,QAAQ,CAAC,CAAC,SAAS,KAAI;AACtB,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;AACA,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAuC;AACxE,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACzD,gBAAA,IAAI,YAAY,IAAI,CAAC,WAAW,EAAE;AAChC,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;gBACA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACxD,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B;gBACA,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE;wBACL,KAAK;wBACL,KAAK,EAAE,WAAW,IAAI,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC;AACV,qBAAA;iBACpD;AACH,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AACA,aAAA,IAAI,EAAE;AAET,QAAA,OAAO,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI;IAC9D;IAEQ,+BAA+B,CACrC,OAAgC,EAChC,OAAoC,EAAA;AAEpC,QAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC;QAC7C,MAAM,UAAU,GAA6D,EAAE;AAE/E,QAAA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,UAAU,CAAC,IAAI,CAAC;AACd,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,kGAAkG;AACzG,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAC5B,oBAAA,OAAO,EAAE;AACP,wBAAA,WAAW,EACT,wGAAwG;AAC3G,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAA,MAAM,YAAY,GAAG,kCAAkC,CAAC,MAAM,CAAC;AAC/D,YAAA,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,CAAC;YAClD,UAAU,CAAC,IAAI,CAAC;AACd,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC;AACnC,gBAAA,MAAM,EAAE;AACN,sBAAE;AACE,wBAAA,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,iBAAiB,CAAC,MAAM;AAC9B,wBAAA,OAAO,EAAE;4BACP,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ;AACjC,4BAAA,MAAM,EAAE,YAAY;AACpB,4BAAA,SAAS,EAAE,OAAO;AAClB,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,4BAAA,IAAI,KAAK,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACpC,4BAAA,MAAM,EAAE;AACN,kCAAE;oCACE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA,EAAG,GAAG,CAAA,SAAA,CAAW,EAAE;oCAC3C,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,GAAG,CAAA,YAAA,CAAc,EAAE;oCACjD,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA,EAAG,GAAG,CAAA,WAAA,CAAa,EAAE;AAChD;AACH,kCAAE;oCACE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,EAAE;oCACxC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,GAAG,CAAA,SAAA,CAAW,EAAE;oCAC9C,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA,EAAG,GAAG,CAAA,QAAA,CAAU,EAAE;AAC7C,iCAAA;AACN,yBAAA;AACF;AACH,sBAAE;AACE,wBAAA,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAC7B,qBAAA;AACN,aAAA,CAAC;QACJ;QAEA,OAAO;AACL,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,KAAK,EAAE,wGAAwG;oBAC/G,UAAU;AACX,iBAAA;AACF,aAAA;SACF;IACH;IAEQ,8BAA8B,CACpC,KAA8B,EAC9B,OAAgC,EAAA;AAEhC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE;gBAC5B;YACF;AACA,YAAA,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,MAAM,YAAY,GAAG,kCAAkC,CAAC,MAAM,CAAC;YAC/D,IAAI,YAAY,EAAE;gBAChB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AAC1B,oBAAA,OAAO,KAAK;gBACd;YACF;iBAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;AAClC,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,kBAAkB,CACxB,KAA8B,EAC9B,OAAgC,EAAA;AAEhC,QAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC;QAC7C,MAAM,UAAU,GAAG,sBAAsB,CACvC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EACpC,OAAO,CACR,CAAC,CAAC,CAAC;QACJ,MAAM,SAAS,GAAsC,EAAE;AACvD,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAA,MAAM,IAAI,GAAG,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC;YACvE,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;AACA,YAAA,MAAM,YAAY,GAAG,kCAAkC,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,YAAY,EAAE;gBACjB,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;gBACrC;YACF;AACA,YAAA,IAAI,4BAA4B,CAAC,MAAM,CAAC,EAAE;gBACxC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;gBAClC,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,IAAA,CAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;YAC3C;iBAAO;gBACL,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,gBAAA,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,GAAA,CAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACzC;QACF;AACA,QAAA,OAAO,SAAS;IAClB;IAEQ,kBAAkB,CACxB,GAAsC,EACtC,OAAgC,EAAA;AAEhC,QAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACtC,YAAA,MAAM,YAAY,GAAG,kCAAkC,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO;AACL,oBAAA,SAAS,EAAE,GAAG;oBACd,SAAS,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;iBAChE;YACH;AACA,YAAA,IAAI,4BAA4B,CAAC,MAAM,CAAC,EAAE;AACxC,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,CAAA,IAAA,CAAM,CAAC;AAC1C,sBAAG,GAAG,CAAC,CAAA,EAAG,GAAG,MAAM;sBACjB,EAAE;gBACN,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,sBAAG,GAAG,CAAC,GAAG,CAAe,CAAC,MAAM,CAAC,CAAC,KAAK,KAAsB,OAAO,KAAK,KAAK,QAAQ;AACtF,sBAAE;yBACG,GAAG,CAAC,CAAC,GAAG,MAAM,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;yBACxD,MAAM,CAAC,OAAO,CAAC;gBACtB,OAAO;AACL,oBAAA,SAAS,EAAE,GAAG;AACd,oBAAA,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACxB,wBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,KAAK,OAAO,CAAC;AACvD,wBAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5D,oBAAA,CAAC,CAAC;iBACH;YACH;YACA,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA,GAAA,CAAK,CAA+D;AAC1F,YAAA,MAAM,OAAO,GACX,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjD,iBAAC,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;YAC7C,OAAO;AACL,gBAAA,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChC,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE;aAC3E;AACH,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,gBAAgB,CAAC,cAAsB,EAAA;AAMnD,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;AACtF,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;YACvF,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,IAAI;YACb;YACA,MAAM,MAAM,GAAG,GAKd;YACD,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,cAAc,CAAC;gBACvC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,gBAAA,OAAO,EAAE,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC;aACnD;QACH;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;8GApwCW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAaN,uCAAuC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1HlF,y8BA+BA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED4EY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,+BAAE,uCAAuC,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE5G,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,WACtC,CAAC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uCAAuC,CAAC,EAAA,QAAA,EAAA,y8BAAA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA;wbAe/E,uCAAuC,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE1HlF;AAQA;AAEA;MAGa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAkB1D,IAAA;;;IAZC,MAAM,IAAI,CAAC,OAAwC,EAAA;QACjD,MAAM,EAAE,kCAAkC,EAAE,GAAG,MAAM,OAAO,6GAAuC,CAAC;AACpG,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC/D,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI;AAClD,YAAA,IAAI,EAAE;gBACJ,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA;AACF,SAAA,CAAC;IACJ;8GAnBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACZlC;AAqDA;AAEA;AAEA,MAAM,wCAAwC,GAAG,gCAAgC;AACjF,MAAM,oCAAoC,GAAG,6BAA6B;AAC1E,MAAM,oCAAoC,GAAG,6BAA6B;AAC1E,MAAM,6CAA6C,GAAG,oCAAoC;AAE1F,MAAM,0BAA0B,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC5G,MAAM,4BAA4B,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC/G,MAAM,+BAA+B,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACrH,MAAM,uBAAuB,GAAG,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM;AACzE,MAAM,mBAAmB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;AAgB/F;AAEA;AA4CM,MAAO,kCAAmC,SAAQ,0BAA0B,CAAA;AA1ClF,IAAA,WAAA,GAAA;;QA2CE,IAAA,CAAA,WAAW,GAAG,KAAK,CAA0B,EAAE;wFAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK;kGAA2B;QAC7C,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,EAAE;oFAAC;QAEzB,IAAA,CAAA,UAAU,GAAG,SAAS,CAAuC,YAAY;uFAAC;AAE5E,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC/C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9E,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAEpD,IAAA,CAAA,aAAa,GAAG,MAAM,CAA0C,IAAI;0FAAC;QACnE,IAAA,CAAA,cAAc,GAAG,MAAM,CAA0C,IAAI;2FAAC;QACtE,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK;+FAAC;;QAEpC,IAAA,CAAA,aAAa,GAAG,MAAM,CAAgB,IAAI;0FAAC;;QAE3C,IAAA,CAAA,eAAe,GAAG,MAAM,CAAgB,IAAI;4FAAC;QAC7C,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAgB,IAAI;8FAAC;;QAE/C,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAgB,IAAI;6FAAC;AAE5C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAoB;YAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AACtC,YAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;QAC/D,CAAC;yFAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAoB;AAC3D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACxC,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,QAAQ;YACjB;YACA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;AACpC,YAAA,QACE,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC3C,gBAAA,kBAAkB,CAAE,GAAG,CAAC,gBAAgB,CAAkC,EAAE,EAAE,CAAC;AAC/E,gBAAA,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE7C,CAAC;uFAAC;QAEiB,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;wFAAC;AAEjD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAc;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;YAC7C,OAAO,CAAC,MAAM,IAAI,MAAM,KAAK,mBAAmB,CAAC,KAAK;QACxD,CAAC;wFAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,OAAO;AAClD,YAAA,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC1D,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACjE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC/D,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACtE,YAAA,IAAK,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAA6B;AACzD,YAAA,IAAK,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAA6B;AACtD,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,aAAa,EAAE,KAAK;SACrB,CAAC;2FAAC;AAEgB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YACzC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtG,CAAC;oFAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,CAAC,SAAS,KAAI;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;YAChC,MAAM,OAAO,GAAG,CAAA,EAAG,MAAM,IAAI,EAAE,CAAA,CAAA,EAAI,MAAM,IAAI,EAAE,CAAA,CAAE;;YAGjD,IACE,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,OAAO;AACjD,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,OAAO,EACnD;gBACA;YACF;AAEA,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;YAEjC,IAAI,SAAS,GAAG,KAAK;YAErB,MAAM,aAAa,GAAG,MAAW;AAC/B,gBAAA,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,OAAO,EAAE;AACvD,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;gBAChC;AACF,YAAA,CAAC;YAED,MAAM,UAAU,GAAG,MAAW;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,gBAAA,aAAa,EAAE;AACjB,YAAA,CAAC;AAED,YAAA,MAAM,GAAG,GAAG,YAA0B;gBACpC,IAAI,SAAS,EAAE;oBACb;gBACF;AAEA,gBAAA,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE;gBAC1E,IAAI,SAAS,EAAE;oBACb;gBACF;;gBAGA,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,oBAAA,IAAI;wBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,CAAC;AACpF,wBAAA,IAAI,SAAS;4BAAE;wBAEf,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;4BAE9B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACjD,4BAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AAClC,4BAAA,UAAU,EAAE;4BACZ;wBACF;;oBAGF;AAAE,oBAAA,MAAM;AACN,wBAAA,IAAI,SAAS;4BAAE;AACf,wBAAA,aAAa,EAAE;AACf,wBAAA,MAAM,IAAI,CAAC,sBAAsB,EAAE;wBACnC;oBACF;4BAAU;wBACR,IAAI,CAAC,SAAS,EAAE;AACd,4BAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;wBACpC;oBACF;oBAEA,IAAI,SAAS,EAAE;wBACb;oBACF;gBACF;gBAEA,IAAI,CAAC,MAAM,EAAE;AACX,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,oBAAA,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3D,oBAAA,UAAU,EAAE;oBACZ;gBACF;AAEA,gBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAChE,gBAAA,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC;AAE9E,gBAAA,IAAI,cAAc,IAAI,cAAc,KAAK,MAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7E,oBAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACtD,oBAAA,IAAI,SAAS;wBAAE;oBACf,IAAI,CAAC,SAAS,EAAE;;AAEd,wBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AAClC,wBAAA,UAAU,EAAE;wBACZ;oBACF;gBACF;AAEA,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,gBAAA,IAAI;oBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,CAAC;AACrF,oBAAA,IAAI,SAAS;wBAAE;;oBAEf,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACnD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AAClC,oBAAA,UAAU,EAAE;gBACd;AAAE,gBAAA,MAAM;AACN,oBAAA,IAAI,SAAS;wBAAE;AACf,oBAAA,aAAa,EAAE;AACf,oBAAA,MAAM,IAAI,CAAC,sBAAsB,EAAE;gBACrC;wBAAU;oBACR,IAAI,CAAC,SAAS,EAAE;AACd,wBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;oBACpC;gBACF;AACF,YAAA,CAAC;YAED,KAAK,GAAG,EAAE;YAEV,SAAS,CAAC,MAAK;gBACb,SAAS,GAAG,IAAI;AAChB,gBAAA,aAAa,EAAE;AACjB,YAAA,CAAC,CAAC;QACJ,CAAC;6FAAC;AAyvBH,IAAA;AA72BC,IAAA,gBAAgB;AAsHN,IAAA,aAAa,CAAC,KAAuC,EAAA;QAC7D,MAAM,SAAS,GAAG,sCAAsC,CAAC;AACvD,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,MAAM;AAChD,gBAAA,GAAG,OAAO;gBACV,SAAS,EAAE,KAAK,GAAG,CAAC;AACrB,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,SAAS,CAAC;AAC1D,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE;IAClB;IAES,oBAAoB,GAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;QACnC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD;IAES,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;AAES,IAAA,MAAM,mBAAmB,GAAA;QAChC,MAAM,OAAO,GAAiC,EAAE;AAChD,QAAA,MAAM,UAAU,GACd,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,aAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtG,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;YACpD,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,KAAK,EACH,yGAAyG;AAC3G,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,IAAI,EAAE,QAAiB;AACvB,gBAAA,QAAQ,EAAE,SAAkB;AAC5B,gBAAA,KAAK,EAAE,SAAkB;gBACzB,OAAO,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,EAAE,EAAE;AACzE,aAAA,CAAC;QACJ;QAEA,IAAI,UAAU,EAAE;YACd,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,KAAK,EACH,qGAAqG;AACvG,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,IAAI,EAAE,QAAiB;AACvB,gBAAA,QAAQ,EAAE,WAAoB;AAC9B,gBAAA,KAAK,EAAE,SAAkB;gBACzB,OAAO,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,EAAE,EAAE;AACrE,aAAA,CAAC;QACJ;QAEA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACpD,YAAA,OAAO,OAAO;QAChB;QAEA,OAAO,CAAC,IAAI,CAAC;AACX,YAAA,KAAK,EAAE,yEAAyE;AAChF,YAAA,IAAI,EAAE,oCAAoC;AAC1C,YAAA,IAAI,EAAE,QAAiB;AACvB,YAAA,QAAQ,EAAE,WAAoB;AAC9B,YAAA,KAAK,EAAE,SAAkB;YACzB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,6CAA6C,EAAE,OAAO,EAAE,EAAE,EAAE;AAC9E,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,CACV;AACE,gBAAA,KAAK,EAAE,gCAAgC;AACvC,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,IAAI,EAAE,QAAiB;AACvB,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,EAAE,EAAE;aACrE,EACD;AACE,gBAAA,KAAK,EAAE,6BAA6B;AACpC,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,IAAI,EAAE,QAAiB;AACvB,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,EAAE,EAAE;AAClE,aAAA,CACF;QACH;AAEA,QAAA,OAAO,OAAO;IAChB;IAES,MAAM,OAAO,CAAC,OAA4C,EAAA;AACjE,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,wCAAwC,EAAE;AAC7D,YAAA,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE;YACrC;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,oCAAoC,EAAE;AACzD,YAAA,MAAM,IAAI,CAAC,aAAa,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,6CAA6C,EAAE;AAClE,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,oCAAoC,EAAE;YACzD,IAAI,CAAC,aAAa,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,iCAAiC;YAAE;QAExD,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1C;AAEQ,IAAA,MAAM,aAAa,GAAA;AACzB,QAAA,MAAM,YAAY,GAChB,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,gCAAgC,CAAC,KAAK,SAAS;QAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,IAAI,OAAO;AACjE,QAAA,MAAM,SAAS,GAAG,2BAA2B,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC;AACpF,QAAA,MAAM,KAAK,GAAG,SAAS,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,EAAK,SAAS,CAAA,CAAE,GAAG,YAAY;AACxE,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC7B,KAAK;AACL,YAAA,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAChE,SAAA,CAAC;IACJ;AAEQ,IAAA,MAAM,oBAAoB,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;gBAC1F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,gFAAgF,CACjF;AACF,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE;QACzD,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;QACvC,IAAI,aAAa,IAAI,aAAa,KAAK,SAAS,CAAC,gBAAgB,EAAE;AACjE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;gBAC1F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,oFAAoF,CACrF;AACF,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE;QACpD,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI;YACF,IAAI,MAAM,EAAE;gBACV,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,SAAS,CAAC;YAC5D;iBAAO;AACL,gBAAA,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACjD;QACF;AAAE,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;gBAC1F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,6FAA6F,CAC9F;AACF,aAAA,CAAC;QACJ;gBAAU;AACR,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;QACpC;IACF;AAEQ,IAAA,MAAM,0BAA0B,GAAA;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;QACpC,MAAM,WAAW,GAAI,GAAG,CAAC,gBAAgB,CAAgE,IAAI,EAAE;QAC/G,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;AAE7C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,aAAA,MAAM;AACN,aAAA,MAAM,CAAiC,CAAC,MAAM,KAAI;YACjD;iBACG,QAAQ,CAAC,gFAAgF;iBACzF,OAAO,CAAC,IAAI;iBACZ,cAAc,CAAC,IAAI;AACnB,iBAAA,UAAU,CAAC;AACV,gBAAA,gBAAgB,EAAE,aAAa;AAC/B,gBAAA,cAAc,EAAE;AACd,sBAAE;AACE,wBAAA,EAAE,EAAE,aAAa;AACjB,wBAAA,KAAK,EAAE,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,GAAG,WAAW,CAAC,KAAK,GAAG,SAAS;AAC5E,wBAAA,IAAI,EAAE,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,GAAG,WAAW,CAAC,IAAI,GAAG,SAAS;AAC1E;AACH,sBAAE,SAAS;aACsB;AACpC,iBAAA,OAAO,CAAC,CAAC,IAAI,KAAI;gBAChB;qBACG,YAAY,CAAC,QAAQ;qBACrB,MAAM,CAAC,MAAM;AACb,qBAAA,SAAS,CACR,iGAAiG,EACjG,CAAC,KAAK,KAAI;AACR,oBAAA,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC9B,KAAK,CAAC,SAAS,CAAC;AACd,wBAAA,MAAM,EAAE,uBAAuB;AAC/B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,wBAAA,MAAM,EAAE;AACN,4BAAA,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE;AAC7C,4BAAA,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE;AACnD,4BAAA,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAClD,yBAAA;AACD,wBAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACpC,qBAAA,CAAC;AACJ,gBAAA,CAAC,CACF;AACL,YAAA,CAAC;AACA,iBAAA,UAAU,CAAC,CAAC,OAAO,KAAI;gBACtB;qBACG,MAAM,CAAC,+BAA+B;qBACtC,MAAM,CAAC,2FAA2F,CAAC;AACxG,YAAA,CAAC;AACA,iBAAA,QAAQ,CAAC,OAAO,SAAS,KAAI;AAC5B,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,IAAI;gBACb;AACA,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAA+B;gBAChE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBACrE,IAAI,CAAC,gBAAgB,EAAE;AACrB,oBAAA,MAAM,IAAI,KAAK,CACb,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,uGAAuG,CACxG,KAAK,oBAAoB,CAC3B;gBACH;gBACA,OAAO;oBACL,gBAAgB;AAChB,oBAAA,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE;0BACpC,OAAO,CAAC;AACV,0BAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;iBAC7B;AACH,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AACA,aAAA,IAAI,EAAE;AAET,QAAA,OAAO,gCAAgC,CAA0B,MAAM,CAAC;IAC1E;AAEQ,IAAA,MAAM,qBAAqB,GAAA;AACjC,QAAA,MAAM,KAAK,GACT,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,oGAAoG,CACrG,KAAK,mBAAmB;AAC3B,QAAA,MAAM,OAAO,GACX,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,sGAAsG,CACvG;AACD,YAAA,0KAA0K;AAE5K,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC;AAC7F,QAAA,OAAO,YAAY,CAAC,MAAM,KAAK,IAAI;IACrC;AAEQ,IAAA,MAAM,4BAA4B,CAAC,MAAc,EAAE,SAAkC,EAAA;AAC3F,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CACvC,wBAAwB,CAAC,cAAc,EACvC;AACE,YAAA,IAAI,EAAE,uCAAuC,CAAC,UAAU,CAAC,UAAU;AACnE,YAAA,KAAK,EAAE;AACL,gBAAA,EAAE,EAAE,MAAM;gBACV,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;gBAC5C,cAAc,EAAE,SAAS,CAAC,cAAc;AACzC,aAAA;AACF,SAAA,CACF;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;YAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;gBAC1F,OAAO,EACL,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG;sBAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI;sBAC/C,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACxC,6FAA6F,CAC9F;AACR,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAMf;QAEb,MAAM,UAAU,GAAG,IAAI,EAAE,gBAAgB,IAAI,SAAS,CAAC,gBAAgB;AACvE,QAAA,MAAM,QAAQ,GAAG,IAAI,EAAE,cAAc,IAAI,SAAS,CAAC,cAAc,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE;AACvF,QAAA,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE;AAC1E,QAAA,MAAM,KAAK,GAAG,gCAAgC,CAC5C,gCAAgC,EAC7B,IAAI,EAAE,QAAQ,IAAI,EAAE,EACtB,EACD,EAAE,wBAAwB,EAAE,CAC7B;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC3D,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,yCAAyC,CAAC;YAC5F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,kFAAkF,CACnF;AACF,SAAA,CAAC;IACJ;IAEQ,MAAM,yBAAyB,CAAC,SAAkC,EAAA;AACxE,QAAA,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE;AAC1E,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CACjD,SAAS,CAAC,gBAAgB,EAC1B,wBAAwB,CACzB;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACrD,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,SAAS,CAAC,gBAAgB,CAAC;AAC3E,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,CAAC,cAAc,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC7G,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,SAAS,CAAC,gBAAgB,CAAA,CAAE,CAAC;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,yCAAyC,CAAC;YAC5F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,kFAAkF,CACnF;AACF,SAAA,CAAC;IACJ;IAEQ,MAAM,UAAU,CAAC,OAA8B,EAAA;AACrD,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,KAAK,IAAI;AACvC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAEvD,IAAI,CAAC,EAAE,EAAE;YACP,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,oBAAA,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;oBAC1F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,8FAA8F,CAC/F;AACF,iBAAA,CAAC;YACJ;YACA;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAElG,QAAA,IAAI,MAAM,EAAE,OAAO,EAAE;;AAEnB,YAAA,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE;YAC1E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,wBAAwB,CAAC;YAC/E,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA,CAAE,CAAC;AAC1D,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,oBAAA,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,yCAAyC,CAAC;oBAC5F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,+CAA+C,CAAC;AACrG,iBAAA,CAAC;YACJ;YACA;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC1F,YAAA,OAAO,EACL,OAAO,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;AAC7E,kBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;kBAC9D,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wCAAwC,CAAC;AAC3F,SAAA,CAAC;IACJ;IAEmB,SAAS,GAAA;QAC1B,KAAK,CAAC,SAAS,EAAE;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAA0E;AAC9F,QAAA,MAAM,EAAE,SAAS,IAAI;IACvB;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,QAAQ,CAAC;AACzD,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,iBAAiB,EAAE;QACtC,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,cAAc,CACpB,KAAuC,EACvC,OAAgC,EAAA;AAEhC,QAAA,MAAM,UAAU,GAAG,sCAAsC,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QACpC;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;;AAEnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC3D,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC;;QAEnD,cAAc,CAAC,MAAK;YAClB,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACnC,QAAA,CAAC,CAAC;IACJ;;AAGQ,IAAA,MAAM,wBAAwB,CACpC,MAAc,EACd,2BAA8C,EAAE,EAAA;AAEhD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAC1F,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjF,aAAA;AACO,SAAA,CAAC;AAEX,QAAA,MAAM,SAAS,GAAG,gCAAgC,EAC/C,MAAM,CAAC,KAAK,IAAI,EAAE,EACpB;QACD,MAAM,OAAO,GAAG,gCAAgC,CAAC,SAAS,EAAE,EAAE,wBAAwB,EAAE,CAAC;AAEzF,QAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACrG,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjF,aAAA;AACO,SAAA,CAAC;QAEX,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAChE,OAAO,CAAC;aACL,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,cAAc;AACvC,aAAA,MAAM,CAAC,CAAC,EAAE,KAAmB,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CACzE;AAED,QAAA,OAAO,IAAI,CAAC,2BAA2B,CACrC,qCAAqC,CACnC,OAAO,GACN,eAAe,CAAC,KAAK,IAAI,EAAE,GAC5B,uBAAuB,CACxB,CACF;IACH;AAEA;;;AAGG;IACK,MAAM,2BAA2B,CACvC,KAAuC,EAAA;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,IAAI,OAAO;AACjE,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB;AAEtD,QAAA,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;YACpC,IAAI,sBAAsB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE;gBACtE;YACF;AACA,YAAA,MAAM,UAAU,GAAG,4BAA4B,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;YAC3F,IAAI,CAAC,UAAU,EAAE;gBACf;YACF;AACA,YAAA,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;gBAChC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;AACnC,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7D,oBAAA,IAAI,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;wBACvF;oBACF;AACA,oBAAA,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAU;AAChE,oBAAA,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACX,oBAAA,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;gBACtC;YACF;QACF;AAEA,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6C;QACvE,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,KAAI;AAC7D,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACvB,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAC1E,oBAAA,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,oBAAA,MAAM,EACJ,MAAM,CAAC,MAAM,KAAK;0BACd,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9D,0BAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,iBAAA,CAAC;gBACX,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,GAAyC;oBACxD,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3C,IAAI,CAAC,EAAE,EAAE;wBACP;oBACF;AACA,oBAAA,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE;wBACjB,KAAK,EAAE,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,SAAS;wBACxE,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS;AAC3D,qBAAA,CAAC;gBACJ;YACF;AAAE,YAAA,MAAM;;YAER;QACF,CAAC,CAAC,CACH;AAED,QAAA,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,KAAK;QACd;QAEA,OAAO;AACL,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;AACzC,gBAAA,GAAG,OAAO;AACV,gBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAClC,oBAAA,GAAG,IAAI;AACP,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;wBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACpF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACjC,OAAO;4BACL,EAAE;4BACF,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,KAAK;4BAChE,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,IAAI;yBAC9D;AACH,oBAAA,CAAC,CAAC;AACH,iBAAA,CAAC,CAAC;AACJ,aAAA,CAAC,CAAC;SACJ;IACH;IAEQ,MAAM,uBAAuB,CACnC,eAAkC,EAAA;QAElC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmC;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;QACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;AACzD,QAAA,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAI;AACzB,YAAA,IAAI;AACF,gBAAA,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,GAAG,EAAE;oBACR;gBACF;gBACA,MAAM,MAAM,GAAG,GAA4C;AAC3D,gBAAA,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChE;AAAE,YAAA,MAAM;;YAER;QACF,CAAC,CAAC,CACH;AACD,QAAA,OAAO,WAAW;IACpB;AAEQ,IAAA,MAAM,4BAA4B,GAAA;AACxC,QAAA,MAAM,OAAO,GAAG,sCAAsC,EAAE;AACxD,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACnF,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,IAAI,EAAE,IAAI;AACF,aAAA,CAAC;YACX,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;iBAClC,MAAM,CAAC,CAAC,GAAG,KAAM,GAAkC,CAAC,YAAY,KAAK,IAAI;AACzE,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,kBAAkB,CAAE,GAAwB,CAAC,EAAE,CAAC;iBAC7D,MAAM,CAAC,CAAC,EAAE,KAAmB,CAAC,CAAC,EAAE,CAAC;AACrC,YAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QACjD;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,OAAO;QAChB;IACF;AAEQ,IAAA,MAAM,uBAAuB,CACnC,MAAc,EACd,2BAA8C,EAAE,EAAA;AAEhD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAC/F,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC1C,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzE,oBAAA,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACnE,iBAAA;AACF,aAAA;AACO,SAAA,CAAC;QAEX,MAAM,YAAY,GAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAqE,MAAM,CAClH,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAC7D;AAED,QAAA,MAAM,SAAS,GAAG,gCAAgC,CAChD,qCAAqC,CAAC,YAAY,EAAE;AAClD,YAAA,QAAQ,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE;AACxC,SAAA,CAAC,EACF,EAAE,wBAAwB,EAAE,CAC7B;QAED,OAAO,2BAA2B,CAAC,MAAM,IAAI,CAAC,mCAAmC,CAAC,SAAS,CAAC,CAAC;IAC/F;AAEA;;AAEG;IACK,MAAM,mCAAmC,CAC/C,SAAmE,EAAA;AAEnE,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,GAAG,IAAI,GAAG,CACR,SAAS,CAAC;iBACP,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa;iBAC1F,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,aAAa;iBACtC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CACxB;SACF;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,iBAAiB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;AAC7F,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACjF,YAAA,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACpC,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;AAC/B,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA,CAAC,CAAC;AACJ,aAAA;AACO,SAAA,CAAC;AAEX,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6C;QACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,GAAyC;YACxD,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,EAAE;gBAAE;AACT,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,gBAAA,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,SAAS;AACpD,gBAAA,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS;AAClD,aAAA,CAAC;QACJ;QAEA,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC5C,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AAC/B,oBAAA,OAAO,OAAO;gBAChB;AACA,gBAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE;gBAC/D,OAAO;AACL,oBAAA,GAAG,OAAO;oBACV,KAAK;AACL,oBAAA,WAAW,EAAE;wBACX,EAAE,EAAE,OAAO,CAAC,aAAa;wBACzB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK;wBAC/C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI;AAC7C,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;SACH;IACH;AAEQ,IAAA,MAAM,uBAAuB,GAAA;AACnC,QAAA,MAAM,KAAK,GACT,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,oGAAoG,CACrG,KAAK,mBAAmB;AAC3B,QAAA,MAAM,OAAO,GACX,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,sGAAsG,CACvG;AACD,YAAA,0KAA0K;AAE5K,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC;AAC7F,QAAA,OAAO,YAAY,CAAC,MAAM,KAAK,IAAI;IACrC;AAEQ,IAAA,MAAM,sBAAsB,GAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,YAAA,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uCAAuC,CAAC;YAC1F,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACjD,iFAAiF,CAClF;AACF,SAAA,CAAC;IACJ;IAEQ,sBAAsB,CAAC,KAAa,EAAE,KAAc,EAAA;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAyC;QACrE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACnC;QACF;QACA,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;IAC/B;8GA/6BW,kCAAkC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAPlC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,kCAAkC;AAChD,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCS;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3BS,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAuCnE,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA1C9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,oCAAoC,EAAE,mBAAmB,EAAE,SAAS,CAAC;AAC/E,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,kCAAoC;AAChD,yBAAA;AACF,qBAAA;AACF,iBAAA;gXAMiF,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;;;;;;AC5H9F;AAEA;MAGa,0CAA0C,CAAA;AACrD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,uCAAuC;AAC5C,gBAAA,MAAM,EAAE,MACN,gFAA+C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAAC;AACpG,aAAA;SACF;IACH;8GATW,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1C,0CAA0C,EAAA,CAAA,CAAA;;2FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBADtD;;;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';
|
|
2
|
+
import { RootConfig } from '@acorex-platform/module-workplacesafety-management-client/contracts';
|
|
3
|
+
export { workplacesafetyManagementLocalEntityCatalog } from '@acorex-platform/module-workplacesafety-management-client/contracts/entity-catalog';
|
|
4
|
+
|
|
5
|
+
//#region ----- Imports -----
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region ----- Provide local entities -----
|
|
8
|
+
/**
|
|
9
|
+
* Registers workplacesafety-management layouts on the client from packaged factories.
|
|
10
|
+
* Each `import()` targets a secondary entry so unused entities stay out of the
|
|
11
|
+
* bundle. Do not add this to the demo app; demo continues to load layouts via
|
|
12
|
+
* `Domain:GetEntityLayout`.
|
|
13
|
+
*/
|
|
14
|
+
function provideWorkplacesafetyManagementLocalEntities() {
|
|
15
|
+
return provideLocalEntityCatalog({
|
|
16
|
+
moduleName: RootConfig.module.name,
|
|
17
|
+
loaders: {
|
|
18
|
+
[RootConfig.entities.controlHierarchyLevels.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-hierarchy-levels').then((m) => m.controlHierarchyLevelsEntityFactory()),
|
|
19
|
+
[RootConfig.entities.controlMeasure.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-measure').then((m) => m.controlMeasureEntityFactory()),
|
|
20
|
+
[RootConfig.entities.hazard.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard').then((m) => m.hazardEntityFactory()),
|
|
21
|
+
[RootConfig.entities.hazardPpeRule.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-ppe-rule').then((m) => m.hazardPpeRuleEntityFactory()),
|
|
22
|
+
[RootConfig.entities.hazardRegister.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-register').then((m) => m.hazardRegisterEntityFactory()),
|
|
23
|
+
[RootConfig.entities.hazardRisk.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-risk').then((m) => m.hazardRiskEntityFactory()),
|
|
24
|
+
[RootConfig.entities.ppeItem.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/ppe-item').then((m) => m.ppeItemEntityFactory()),
|
|
25
|
+
[RootConfig.entities.safetyPlan.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan').then((m) => m.safetyPlanEntityFactory()),
|
|
26
|
+
[RootConfig.entities.safetyPlanSection.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-section').then((m) => m.safetyPlanSectionEntityFactory()),
|
|
27
|
+
[RootConfig.entities.safetyPlanType.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type').then((m) => m.safetyPlanTypeEntityFactory()),
|
|
28
|
+
[RootConfig.entities.safetyPlanTypeSection.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type-section').then((m) => m.safetyPlanTypeSectionEntityFactory()),
|
|
29
|
+
[RootConfig.entities.safetyPlanWorkStep.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-work-step').then((m) => m.safetyPlanWorkStepEntityFactory()),
|
|
30
|
+
[RootConfig.entities.safetyTemplate.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-template').then((m) => m.safetyTemplateEntityFactory()),
|
|
31
|
+
[RootConfig.entities.sectionType.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/section-type').then((m) => m.sectionTypeEntityFactory()),
|
|
32
|
+
[RootConfig.entities.workStepType.name]: () => import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/work-step-type').then((m) => m.workStepTypeEntityFactory()),
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Generated bundle index. Do not edit.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
export { provideWorkplacesafetyManagementLocalEntities };
|
|
43
|
+
//# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-local-entities.mjs.map
|
package/fesm2022/acorex-platform-module-workplacesafety-management-client-local-entities.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-local-entities.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/workplacesafety-management/client/src/lib/acorex-platform-module-workplacesafety-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-workplacesafety-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers workplacesafety-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideWorkplacesafetyManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.controlHierarchyLevels.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-hierarchy-levels').then((m) => m.controlHierarchyLevelsEntityFactory()),\n [RootConfig.entities.controlMeasure.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/control-measure').then((m) => m.controlMeasureEntityFactory()),\n [RootConfig.entities.hazard.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard').then((m) => m.hazardEntityFactory()),\n [RootConfig.entities.hazardPpeRule.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-ppe-rule').then((m) => m.hazardPpeRuleEntityFactory()),\n [RootConfig.entities.hazardRegister.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-register').then((m) => m.hazardRegisterEntityFactory()),\n [RootConfig.entities.hazardRisk.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/hazard-risk').then((m) => m.hazardRiskEntityFactory()),\n [RootConfig.entities.ppeItem.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/ppe-item').then((m) => m.ppeItemEntityFactory()),\n [RootConfig.entities.safetyPlan.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan').then((m) => m.safetyPlanEntityFactory()),\n [RootConfig.entities.safetyPlanSection.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-section').then((m) => m.safetyPlanSectionEntityFactory()),\n [RootConfig.entities.safetyPlanType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type').then((m) => m.safetyPlanTypeEntityFactory()),\n [RootConfig.entities.safetyPlanTypeSection.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-type-section').then((m) => m.safetyPlanTypeSectionEntityFactory()),\n [RootConfig.entities.safetyPlanWorkStep.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-plan-work-step').then((m) => m.safetyPlanWorkStepEntityFactory()),\n [RootConfig.entities.safetyTemplate.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/safety-template').then((m) => m.safetyTemplateEntityFactory()),\n [RootConfig.entities.sectionType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/section-type').then((m) => m.sectionTypeEntityFactory()),\n [RootConfig.entities.workStepType.name]: () =>\n import('@acorex-platform/module-workplacesafety-management-client/contracts/entities/work-step-type').then((m) => m.workStepTypeEntityFactory()),\n },\n });\n}\n\nexport { workplacesafetyManagementLocalEntityCatalog } from '@acorex-platform/module-workplacesafety-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as i2 from '@acorex/components/decorators';
|
|
2
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
3
|
+
import { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
4
|
+
import * as i0 from '@angular/core';
|
|
5
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
6
|
+
import { e as extractPpeItemIds } from './acorex-platform-module-workplacesafety-management-client-ppe-item-viewer.util-2Kl3_3sg.mjs';
|
|
7
|
+
|
|
8
|
+
//#region ----- Imports -----
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region ----- Component -----
|
|
11
|
+
class AXMPpeItemViewerWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
12
|
+
get selectedCount() {
|
|
13
|
+
return extractPpeItemIds(this.rawValue).length;
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPpeItemViewerWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMPpeItemViewerWidgetColumnComponent, isStandalone: true, selector: "axm-ppe-item-viewer-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
|
|
17
|
+
@if (selectedCount > 0) {
|
|
18
|
+
<ax-icon class="fa-solid fa-check text-success"></ax-icon>
|
|
19
|
+
} @else {
|
|
20
|
+
<span>---</span>
|
|
21
|
+
}
|
|
22
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPpeItemViewerWidgetColumnComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{
|
|
27
|
+
selector: 'axm-ppe-item-viewer-widget-column',
|
|
28
|
+
template: `
|
|
29
|
+
@if (selectedCount > 0) {
|
|
30
|
+
<ax-icon class="fa-solid fa-check text-success"></ax-icon>
|
|
31
|
+
} @else {
|
|
32
|
+
<span>---</span>
|
|
33
|
+
}
|
|
34
|
+
`,
|
|
35
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
36
|
+
imports: [AXDecoratorModule],
|
|
37
|
+
inputs: ['rawValue', 'rowData'],
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
|
|
41
|
+
export { AXMPpeItemViewerWidgetColumnComponent };
|
|
42
|
+
//# sourceMappingURL=acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-workplacesafety-management-client-ppe-item-viewer-widget-column.component-D2Mmow12.mjs","sources":["../../../../libs/modules/workplacesafety-management/client/src/lib/features/ppe-item-viewer/ppe-item-viewer-widget-column.component.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { extractPpeItemIds } from './ppe-item-viewer.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-ppe-item-viewer-widget-column',\n template: `\n @if (selectedCount > 0) {\n <ax-icon class=\"fa-solid fa-check text-success\"></ax-icon>\n } @else {\n <span>---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorModule],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMPpeItemViewerWidgetColumnComponent extends AXPColumnWidgetComponent<unknown> {\n protected get selectedCount(): number {\n return extractPpeItemIds(this.rawValue).length;\n }\n}\n\n//#endregion\n"],"names":["i1"],"mappings":";;;;;;;AAAA;AAQA;AAEA;AAeM,MAAO,qCAAsC,SAAQ,wBAAiC,CAAA;AAC1F,IAAA,IAAc,aAAa,GAAA;QACzB,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;IAChD;8GAHW,qCAAqC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXtC;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGhB,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAbjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;AAChC,iBAAA;;;;;"}
|