udp-stencil-component-library 25.18.1-beta.8 → 25.18.1-beta.9

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.
Files changed (965) hide show
  1. package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +12 -12
  2. package/dist/cjs/advanced-search-builder.cjs.entry.js +2 -2
  3. package/dist/cjs/advanced-search.advanced-search-grouped.ag-table.edit-view-form-dialog.grid-primary-bar.kpi-list.save-view-form-dialog.side-sheet.udp-hotlist-form.udp-notification.udp-pop-over-grid-action-header.upd-alert-banner.entry.cjs.js.map +1 -0
  4. package/dist/cjs/advanced-search_12.cjs.entry.js +876 -0
  5. package/dist/cjs/ag-grid-base.ghost-render.grid-header.hint-panel.udp-dialog.udp-list-item.entry.cjs.js.map +1 -0
  6. package/dist/cjs/{ag-grid-base_5.cjs.entry.js → ag-grid-base_6.cjs.entry.js} +26 -8
  7. package/dist/cjs/{advanced-search_50.cjs.entry.js → ambient-template-grid.cjs.entry.js} +43 -4915
  8. package/dist/cjs/ambient-template-grid.entry.cjs.js.map +1 -0
  9. package/dist/cjs/api-method-instance-grid.cjs.entry.js +1 -1
  10. package/dist/cjs/app-bar.cjs.entry.js +23 -0
  11. package/dist/cjs/app-bar.entry.cjs.js.map +1 -0
  12. package/dist/cjs/catalog-store-BOiNPWZB.js +34 -0
  13. package/dist/cjs/catalog-store-BOiNPWZB.js.map +1 -0
  14. package/dist/cjs/chart-container_3.cjs.entry.js +2 -2
  15. package/dist/cjs/check-box.cjs.entry.js +2 -2
  16. package/dist/cjs/chip-section.cjs.entry.js +2 -2
  17. package/dist/cjs/client-side-grid.resource-timeline-primary-bar.entry.cjs.js.map +1 -1
  18. package/dist/cjs/client-side-grid_2.cjs.entry.js +5 -4
  19. package/dist/cjs/color-preview.cjs.entry.js +1 -1
  20. package/dist/cjs/conversionFunctions-B_9y17KE.js +135 -0
  21. package/dist/cjs/conversionFunctions-B_9y17KE.js.map +1 -0
  22. package/dist/cjs/{currency-renderer-D8Tuzf0W.js → currency-renderer-53i7rUkS.js} +7 -8
  23. package/dist/cjs/currency-renderer-53i7rUkS.js.map +1 -0
  24. package/dist/cjs/custom-button.cjs.entry.js +52 -0
  25. package/dist/cjs/custom-button.entry.cjs.js.map +1 -0
  26. package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.cjs.js.map +1 -1
  27. package/dist/cjs/date-time-renderer_6.cjs.entry.js +10 -9
  28. package/dist/cjs/entity-maintenance-grid.cjs.entry.js +1 -1
  29. package/dist/cjs/feature-details-card.feature-details-popup.entry.cjs.js.map +1 -1
  30. package/dist/cjs/feature-details-card_2.cjs.entry.js +7 -6
  31. package/dist/cjs/filter-conditions.search-list-item.tree-list-item.udp-column-header.udp-grid-loader.udp-page-header.udp-radio-button.entry.cjs.js.map +1 -0
  32. package/dist/cjs/filter-conditions_7.cjs.entry.js +309 -0
  33. package/dist/cjs/filter-group.validation-chip.entry.cjs.js.map +1 -1
  34. package/dist/cjs/filter-group_2.cjs.entry.js +3 -2
  35. package/dist/cjs/fluent-dialog.cjs.entry.js +23 -0
  36. package/dist/cjs/fluent-dialog.entry.cjs.js.map +1 -0
  37. package/dist/cjs/{iconUtils-Bfr2fT9-.js → iconMapping-BV2-Gk9Y.js} +2 -13
  38. package/dist/cjs/iconMapping-BV2-Gk9Y.js.map +1 -0
  39. package/dist/cjs/iconUtils-2mh73T__.js +18 -0
  40. package/dist/cjs/iconUtils-2mh73T__.js.map +1 -0
  41. package/dist/cjs/image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comment.udp-save-draft-button.entry.cjs.js.map +1 -1
  42. package/dist/cjs/image-upload_7.cjs.entry.js +8 -7
  43. package/dist/cjs/index-DrMNAZCL.js +162 -94
  44. package/dist/cjs/index.cjs.js +57 -17
  45. package/dist/cjs/index.cjs.js.map +1 -1
  46. package/dist/cjs/inputs-example.cjs.entry.js +2 -2
  47. package/dist/cjs/loader.cjs.js +1 -1
  48. package/dist/cjs/logical-search-indicator.cjs.entry.js +1 -1
  49. package/dist/cjs/map-component_2.cjs.entry.js +2 -2
  50. package/dist/cjs/numeric-field_5.cjs.entry.js +15 -15
  51. package/dist/cjs/primary-action-header.udp-side-sheet.udp-tabs.entry.cjs.js.map +1 -0
  52. package/dist/cjs/primary-action-header_3.cjs.entry.js +644 -0
  53. package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.cjs.js.map +1 -1
  54. package/dist/cjs/question-configs-renderer_5.cjs.entry.js +16 -15
  55. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
  56. package/dist/cjs/search-method-grid.cjs.entry.js +1 -1
  57. package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
  58. package/dist/cjs/side-sheet-container.cjs.entry.js +20 -0
  59. package/dist/cjs/side-sheet-container.entry.cjs.js.map +1 -0
  60. package/dist/cjs/simple-card.cjs.entry.js +1 -1
  61. package/dist/cjs/status-chip.udp-function-button.entry.cjs.js.map +1 -0
  62. package/dist/cjs/status-chip_2.cjs.entry.js +109 -0
  63. package/dist/cjs/stencil-chip.cjs.entry.js +112 -0
  64. package/dist/cjs/stencil-chip.entry.cjs.js.map +1 -0
  65. package/dist/cjs/stencil-icon-button-grid-action-header.cjs.entry.js +44 -0
  66. package/dist/cjs/stencil-icon-button-grid-action-header.entry.cjs.js.map +1 -0
  67. package/dist/cjs/stencil-icon-button.udp-ambient-tool-tip.udp-badge.entry.cjs.js.map +1 -0
  68. package/dist/cjs/stencil-icon-button_3.cjs.entry.js +158 -0
  69. package/dist/cjs/stencil-library.cjs.js +1 -1
  70. package/dist/cjs/stencil-toggle.cjs.entry.js +150 -0
  71. package/dist/cjs/stencil-toggle.entry.cjs.js.map +1 -0
  72. package/dist/cjs/text-field.udp-selector.entry.cjs.js.map +1 -0
  73. package/dist/cjs/text-field_2.cjs.entry.js +568 -0
  74. package/dist/cjs/{catalog-store-yJKDPXXM.js → transformSearchData-B4bk4Aik.js} +2 -31
  75. package/dist/cjs/transformSearchData-B4bk4Aik.js.map +1 -0
  76. package/dist/cjs/udp-adornment.cjs.entry.js +1 -1
  77. package/dist/cjs/udp-advanced-search-builder.cjs.entry.js +1 -1
  78. package/dist/cjs/udp-avatar.cjs.entry.js +57 -0
  79. package/dist/cjs/udp-avatar.entry.cjs.js.map +1 -0
  80. package/dist/cjs/udp-bar-chart_4.cjs.entry.js +4 -4
  81. package/dist/cjs/udp-button.cjs.entry.js +113 -0
  82. package/dist/cjs/udp-button.entry.cjs.js.map +1 -0
  83. package/dist/cjs/udp-calendar-base.cjs.entry.js +1 -1
  84. package/dist/cjs/udp-calendar-day.cjs.entry.js +1 -1
  85. package/dist/cjs/udp-calendar-month.cjs.entry.js +1 -1
  86. package/dist/cjs/udp-calendar-week.cjs.entry.js +1 -1
  87. package/dist/cjs/udp-calendar-year.cjs.entry.js +1 -1
  88. package/dist/cjs/udp-card-action-area.cjs.entry.js +1 -1
  89. package/dist/cjs/udp-card_6.cjs.entry.js +7 -7
  90. package/dist/cjs/udp-charts-example.cjs.entry.js +1 -1
  91. package/dist/cjs/udp-chip_3.cjs.entry.js +2 -2
  92. package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
  93. package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
  94. package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
  95. package/dist/cjs/udp-container.udp-linear-loader.entry.cjs.js.map +1 -0
  96. package/dist/cjs/udp-container_2.cjs.entry.js +56 -0
  97. package/dist/cjs/udp-date-range-selector.cjs.entry.js +1 -1
  98. package/dist/cjs/udp-divider.cjs.entry.js +22 -0
  99. package/dist/cjs/udp-divider.entry.cjs.js.map +1 -0
  100. package/dist/cjs/udp-dynamic-container-with-menu.cjs.entry.js +134 -0
  101. package/dist/cjs/udp-dynamic-container-with-menu.entry.cjs.js.map +1 -0
  102. package/dist/cjs/udp-dynamic-form.cjs.entry.js +1 -1
  103. package/dist/cjs/udp-empty-state-display.cjs.entry.js +1 -1
  104. package/dist/cjs/udp-forms-builder.cjs.entry.js +2 -1
  105. package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
  106. package/dist/cjs/udp-forms-follow-up-list-card.cjs.entry.js +2 -2
  107. package/dist/cjs/udp-forms-list-card.cjs.entry.js +5 -5
  108. package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
  109. package/dist/cjs/udp-forms-renderer.cjs.entry.js +1 -1
  110. package/dist/cjs/udp-forms-ui.cjs.entry.js +2 -1
  111. package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
  112. package/dist/cjs/udp-icon.cjs.entry.js +151 -0
  113. package/dist/cjs/udp-icon.entry.cjs.js.map +1 -0
  114. package/dist/cjs/udp-list-renderer.udp-pagination.entry.cjs.js.map +1 -0
  115. package/dist/cjs/udp-list-renderer_2.cjs.entry.js +204 -0
  116. package/dist/cjs/udp-map.cjs.entry.js +3 -3
  117. package/dist/cjs/udp-menu-item.cjs.entry.js +27 -0
  118. package/dist/cjs/udp-menu-item.entry.cjs.js.map +1 -0
  119. package/dist/cjs/udp-page.cjs.entry.js +1 -1
  120. package/dist/cjs/udp-pop-over.cjs.entry.js +132 -0
  121. package/dist/cjs/udp-pop-over.entry.cjs.js.map +1 -0
  122. package/dist/cjs/udp-sankey-chart.cjs.entry.js +1 -1
  123. package/dist/cjs/udp-skeleton-loading.cjs.entry.js +22 -0
  124. package/dist/cjs/udp-skeleton-loading.entry.cjs.js.map +1 -0
  125. package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
  126. package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
  127. package/dist/cjs/udp-tab-panel.cjs.entry.js +2 -2
  128. package/dist/cjs/udp-tab.cjs.entry.js +38 -0
  129. package/dist/cjs/udp-tab.entry.cjs.js.map +1 -0
  130. package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
  131. package/dist/cjs/udp-xy-chart.cjs.entry.js +1 -1
  132. package/dist/cjs/udp-xy-multi-series-chart.cjs.entry.js +1 -1
  133. package/dist/cjs/unity-typography.cjs.entry.js +63 -0
  134. package/dist/cjs/unity-typography.entry.cjs.js.map +1 -0
  135. package/dist/collection/collection-manifest.json +0 -8
  136. package/dist/collection/components/deprecated/side-sheet/side-sheet-container.js +1 -1
  137. package/dist/collection/components/deprecated/side-sheet/side-sheet.js +1 -1
  138. package/dist/collection/components/my-component/UI/advanced-search/advanced-search-grouped.js +6 -2
  139. package/dist/collection/components/my-component/UI/advanced-search/advanced-search-grouped.js.map +1 -1
  140. package/dist/collection/components/my-component/UI/advanced-search/advanced-search.js +6 -2
  141. package/dist/collection/components/my-component/UI/advanced-search/advanced-search.js.map +1 -1
  142. package/dist/collection/components/my-component/UI/advanced-search/filter-conditions/filter-conditions.js +1 -1
  143. package/dist/collection/components/my-component/UI/advanced-search/ui/logical-search-indicator/logical-search-indicator.js +1 -1
  144. package/dist/collection/components/my-component/UI/advanced-search-builder/advanced-search-builder.js +2 -2
  145. package/dist/collection/components/my-component/UI/advanced-search-builder/udp-advanced-search-builder.js +1 -1
  146. package/dist/collection/components/my-component/UI/advanced-search-builder/validation-chip.js +1 -1
  147. package/dist/collection/components/my-component/UI/buttons/icon-button/function-button/udp-function-button.js +1 -1
  148. package/dist/collection/components/my-component/UI/buttons/icon-button/primary-button/custom-button.js +1 -1
  149. package/dist/collection/components/my-component/UI/buttons/icon-button/radio-button/udp-radio-button.js +1 -1
  150. package/dist/collection/components/my-component/UI/buttons/udp-button/udp-button.js +1 -1
  151. package/dist/collection/components/my-component/UI/calendar/udp-calendar-base.js +1 -1
  152. package/dist/collection/components/my-component/UI/calendar/udp-calendar-day.js +1 -1
  153. package/dist/collection/components/my-component/UI/calendar/udp-calendar-month.js +1 -1
  154. package/dist/collection/components/my-component/UI/calendar/udp-calendar-week.js +1 -1
  155. package/dist/collection/components/my-component/UI/calendar/udp-calendar-year.js +1 -1
  156. package/dist/collection/components/my-component/UI/charts/chart-kpi/chart-kpi.js +1 -1
  157. package/dist/collection/components/my-component/UI/charts/udp-bar-chart/udp-bar-chart.js +1 -1
  158. package/dist/collection/components/my-component/UI/charts/udp-charts-example.js +1 -1
  159. package/dist/collection/components/my-component/UI/charts/udp-distribution-chart/udp-distribution-chart.js +1 -1
  160. package/dist/collection/components/my-component/UI/charts/udp-donut-chart/udp-donut-chart.js +1 -1
  161. package/dist/collection/components/my-component/UI/charts/udp-line-chart/udp-line-chart.js +1 -1
  162. package/dist/collection/components/my-component/UI/charts/udp-sankey-chart/udp-sankey-chart.js +1 -1
  163. package/dist/collection/components/my-component/UI/charts/udp-xy-chart/udp-xy-chart.js +1 -1
  164. package/dist/collection/components/my-component/UI/charts/udp-xy-multi-series-chart/udp-xy-multi-series-chart.js +1 -1
  165. package/dist/collection/components/my-component/UI/data-display/adornment/udp-adornment/udp-adornment.js +1 -1
  166. package/dist/collection/components/my-component/UI/data-display/badge/udp-badge.js +1 -1
  167. package/dist/collection/components/my-component/UI/data-display/cards/udp-ambient-card/udp-ambient-card.js +1 -1
  168. package/dist/collection/components/my-component/UI/data-display/cards/udp-card/udp-card-action-area/udp-card-action-area.js +1 -1
  169. package/dist/collection/components/my-component/UI/data-display/cards/udp-card/udp-card-actions/udp-card-actions.js +1 -1
  170. package/dist/collection/components/my-component/UI/data-display/cards/udp-card/udp-card-content/udp-card-content.js +1 -1
  171. package/dist/collection/components/my-component/UI/data-display/cards/udp-card/udp-card-header/udp-card-header.js +1 -1
  172. package/dist/collection/components/my-component/UI/data-display/cards/udp-card/udp-card-media/udp-card-media.js +1 -1
  173. package/dist/collection/components/my-component/UI/data-display/cards/udp-card/udp-card.js +3 -3
  174. package/dist/collection/components/my-component/UI/data-display/chips/stencil-chip/status-chip/status-chip.js +1 -1
  175. package/dist/collection/components/my-component/UI/data-display/chips/stencil-chip/stencil-chip.js +2 -2
  176. package/dist/collection/components/my-component/UI/data-display/chips/udp-chip.js +1 -1
  177. package/dist/collection/components/my-component/UI/data-display/divider/udp-divider.js +1 -1
  178. package/dist/collection/components/my-component/UI/data-display/empty-state-display/udp-empty-state-display.js +1 -1
  179. package/dist/collection/components/my-component/UI/data-display/headers/udp-column-header.js +1 -1
  180. package/dist/collection/components/my-component/UI/data-display/headers/udp-page-header/udp-page-header.js +1 -1
  181. package/dist/collection/components/my-component/UI/data-display/hint-panel/hint-panel.js +1 -1
  182. package/dist/collection/components/my-component/UI/data-display/kpi/kpi-list.js +1 -1
  183. package/dist/collection/components/my-component/UI/data-display/list-item/list-item.js +2 -2
  184. package/dist/collection/components/my-component/UI/data-display/pop-over/udp-pop-over.js +1 -1
  185. package/dist/collection/components/my-component/UI/data-display/pop-over-grid-action-header/udp-pop-over-grid-action-header.js +1 -1
  186. package/dist/collection/components/my-component/UI/data-display/primary-action-header/primary-action-header.js +2 -2
  187. package/dist/collection/components/my-component/UI/data-display/simple-card/simple-card.js +1 -1
  188. package/dist/collection/components/my-component/UI/data-display/tool-tip/udp-ambient-tool-tip.js +2 -2
  189. package/dist/collection/components/my-component/UI/data-display/tree/tree-list-item/search-item/search-list-item.js +1 -1
  190. package/dist/collection/components/my-component/UI/data-display/udp-avatar/udp-avatar.js +1 -1
  191. package/dist/collection/components/my-component/UI/dialogs/fluent-dialog/fluent-dialog.js +2 -2
  192. package/dist/collection/components/my-component/UI/dialogs/udp-dialog.js +1 -1
  193. package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.js +9 -9
  194. package/dist/collection/components/my-component/UI/feedback/udp-notification/alerts/upd-alert-banner.js +1 -1
  195. package/dist/collection/components/my-component/UI/feedback/udp-notification/udp-notification.js +2 -2
  196. package/dist/collection/components/my-component/UI/forms/dynamic-form/udp-dynamic-form.js +1 -1
  197. package/dist/collection/components/my-component/UI/forms/edit-view-form/edit-view-form.js +2 -2
  198. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +1 -1
  199. package/dist/collection/components/my-component/UI/forms/save-view-form/save-view-form.js +2 -2
  200. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/forms-question-item/udp-forms-builder-question-item.js +2 -2
  201. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/file-upload-renderer/file-upload-renderer.js +2 -2
  202. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/list-option-renderer/list-options-renderer.js +3 -3
  203. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-configs-renderer/question-configs-renderer.js +6 -6
  204. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/section-configs-renderer/section-configs-renderer.js +3 -3
  205. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.js +1 -1
  206. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/text-input-renderer/text-input-renderer.js +2 -2
  207. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-menu/udp-forms-builder-menu.js +2 -2
  208. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-style-override/udp-forms-builder-style-override.js +1 -1
  209. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.js +5 -5
  210. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
  211. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-follow-up-list-card/udp-forms-follow-up-list-card.js +2 -2
  212. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +1 -1
  213. package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
  214. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +19 -15
  215. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js.map +1 -1
  216. package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
  217. package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
  218. package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
  219. package/dist/collection/components/my-component/UI/grid/new-grid/api-method-instance-grid.js +1 -1
  220. package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
  221. package/dist/collection/components/my-component/UI/grid/new-grid/entity-maintenance-grid.js +1 -1
  222. package/dist/collection/components/my-component/UI/grid/new-grid/search-method-grid.js +1 -1
  223. package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
  224. package/dist/collection/components/my-component/UI/grid/renderers/currency-renderer.js +11 -1
  225. package/dist/collection/components/my-component/UI/grid/renderers/currency-renderer.js.map +1 -1
  226. package/dist/collection/components/my-component/UI/grid/renderers/hot-list-add-renderer.js +3 -0
  227. package/dist/collection/components/my-component/UI/grid/renderers/hot-list-add-renderer.js.map +1 -1
  228. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
  229. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +2 -2
  230. package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
  231. package/dist/collection/components/my-component/UI/inputs/date-range-selector/udp-date-range-selector.js +1 -1
  232. package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
  233. package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
  234. package/dist/collection/components/my-component/UI/inputs/image-upload/image-upload.js +1 -1
  235. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +3 -3
  236. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +2 -2
  237. package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
  238. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +3 -3
  239. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +3 -3
  240. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +3 -3
  241. package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
  242. package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
  243. package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
  244. package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
  245. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
  246. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
  247. package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
  248. package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
  249. package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
  250. package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
  251. package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
  252. package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
  253. package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
  254. package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
  255. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
  256. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
  257. package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +2 -2
  258. package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
  259. package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
  260. package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
  261. package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
  262. package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +1 -1
  263. package/dist/collection/components/my-component/UI/menu/udp-menu.js +1 -1
  264. package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
  265. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +2 -2
  266. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
  267. package/dist/collection/components/my-component/UI/tabs/udp-tab-panel/udp-tab-panel.js +2 -2
  268. package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
  269. package/dist/collection/components/my-component/UI/util/ghost-render/ghost-render.js +1 -1
  270. package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
  271. package/dist/collection/global/ag-grid.js +3 -0
  272. package/dist/collection/global/ag-grid.js.map +1 -1
  273. package/dist/collection/index.js +0 -3
  274. package/dist/collection/index.js.map +1 -1
  275. package/dist/collection/store/user-store.js.map +1 -1
  276. package/dist/collection/theme/color-preview/color-preview.js +1 -1
  277. package/dist/collection/udp-utilities/api-udp/apiMutate.js.map +1 -1
  278. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
  279. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
  280. package/dist/components/add-map-feature-popup2.js +3 -3
  281. package/dist/components/advanced-search-builder2.js +2 -2
  282. package/dist/components/advanced-search-grouped2.js +2 -2
  283. package/dist/components/advanced-search-grouped2.js.map +1 -1
  284. package/dist/components/advanced-search2.js +2 -2
  285. package/dist/components/advanced-search2.js.map +1 -1
  286. package/dist/components/ag-grid-base2.js +2 -2
  287. package/dist/components/ag-table2.js +1 -1
  288. package/dist/components/ambient-template-grid.js +4350 -1
  289. package/dist/components/ambient-template-grid.js.map +1 -1
  290. package/dist/components/api-method-instance-grid.js +1 -1
  291. package/dist/components/apiUtils.js +1 -1
  292. package/dist/components/app-bar.js +69 -1
  293. package/dist/components/app-bar.js.map +1 -1
  294. package/dist/components/catalog-store.js +1 -1
  295. package/dist/components/chart-kpi2.js +1 -1
  296. package/dist/components/check-box2.js +2 -2
  297. package/dist/components/chip-section.js +2 -2
  298. package/dist/components/client-side-grid2.js +1 -1
  299. package/dist/components/color-preview.js +1 -1
  300. package/dist/components/custom-button2.js +1 -1
  301. package/dist/components/edit-view-form.js +2 -2
  302. package/dist/components/entity-maintenance-grid.js +2 -2
  303. package/dist/components/feature-details-card2.js +4 -4
  304. package/dist/components/feature-details-popup2.js +1 -1
  305. package/dist/components/file-upload-renderer2.js +2 -2
  306. package/dist/components/filter-conditions2.js +1 -1
  307. package/dist/components/fluent-dialog2.js +2 -2
  308. package/dist/components/ghost-render2.js +1 -1
  309. package/dist/components/grid-primary-bar2.js +2 -2
  310. package/dist/components/hint-panel2.js +1 -1
  311. package/dist/components/image-upload2.js +1 -1
  312. package/dist/components/index.js +45 -4
  313. package/dist/components/index.js.map +1 -1
  314. package/dist/components/inputs-example.js +2 -2
  315. package/dist/components/kpi-list2.js +1 -1
  316. package/dist/components/list-item.js +2 -2
  317. package/dist/components/list-options-renderer2.js +3 -3
  318. package/dist/components/logical-search-indicator.js +1 -1
  319. package/dist/components/map-component2.js +1 -1
  320. package/dist/components/map-toolbar2.js +6 -6
  321. package/dist/components/numeric-field2.js +3 -3
  322. package/dist/components/primary-action-header2.js +2 -2
  323. package/dist/components/question-configs-renderer2.js +6 -6
  324. package/dist/components/resource-timeline-calendar.js +1 -1
  325. package/dist/components/resource-timeline-primary-bar2.js +2 -2
  326. package/dist/components/save-view-form.js +2 -2
  327. package/dist/components/search-list-item2.js +1 -1
  328. package/dist/components/search-method-grid2.js +2 -2
  329. package/dist/components/section-configs-renderer2.js +3 -3
  330. package/dist/components/select-layer-popup2.js +2 -2
  331. package/dist/components/server-side-grid2.js +1 -1
  332. package/dist/components/side-sheet-container2.js +1 -1
  333. package/dist/components/side-sheet2.js +1 -1
  334. package/dist/components/signature-input2.js +2 -2
  335. package/dist/components/signature-renderer2.js +1 -1
  336. package/dist/components/simple-card.js +1 -1
  337. package/dist/components/split-line-popup2.js +1 -1
  338. package/dist/components/status-chip2.js +1 -1
  339. package/dist/components/status-renderer.js +4 -5
  340. package/dist/components/status-renderer.js.map +1 -1
  341. package/dist/components/stencil-chip2.js +2 -2
  342. package/dist/components/stencil-form2.js +1 -1
  343. package/dist/components/stencil-toggle2.js +4 -4
  344. package/dist/components/tally.js +2 -2
  345. package/dist/components/text-area2.js +3 -3
  346. package/dist/components/text-field2.js +3 -3
  347. package/dist/components/text-input-renderer2.js +2 -2
  348. package/dist/components/udp-adornment2.js +1 -1
  349. package/dist/components/udp-advanced-search-builder.js +1 -1
  350. package/dist/components/udp-ambient-card2.js +1 -1
  351. package/dist/components/udp-ambient-tool-tip2.js +2 -2
  352. package/dist/components/udp-avatar2.js +1 -1
  353. package/dist/components/udp-badge2.js +1 -1
  354. package/dist/components/udp-bar-chart2.js +1 -1
  355. package/dist/components/udp-button2.js +1 -1
  356. package/dist/components/udp-calendar-base2.js +1 -1
  357. package/dist/components/udp-calendar-day.js +1 -1
  358. package/dist/components/udp-calendar-month.js +1 -1
  359. package/dist/components/udp-calendar-week.js +1 -1
  360. package/dist/components/udp-calendar-year.js +1 -1
  361. package/dist/components/udp-card-action-area.js +1 -1
  362. package/dist/components/udp-card-actions2.js +1 -1
  363. package/dist/components/udp-card-content2.js +1 -1
  364. package/dist/components/udp-card-header2.js +1 -1
  365. package/dist/components/udp-card-media2.js +1 -1
  366. package/dist/components/udp-card2.js +3 -3
  367. package/dist/components/udp-charts-example.js +1 -1
  368. package/dist/components/udp-chip2.js +1 -1
  369. package/dist/components/udp-column-header2.js +1 -1
  370. package/dist/components/udp-container-query-grid-item.js +1 -1
  371. package/dist/components/udp-container-query-grid.js +1 -1
  372. package/dist/components/udp-container-query2.js +2 -2
  373. package/dist/components/udp-container2.js +2 -2
  374. package/dist/components/udp-date-range-selector.js +1 -1
  375. package/dist/components/udp-date-selector2.js +3 -3
  376. package/dist/components/udp-datetime-selector2.js +3 -3
  377. package/dist/components/udp-dialog2.js +1 -1
  378. package/dist/components/udp-distribution-chart2.js +1 -1
  379. package/dist/components/udp-divider2.js +1 -1
  380. package/dist/components/udp-donut-chart2.js +1 -1
  381. package/dist/components/udp-dynamic-container-with-menu2.js +1 -1
  382. package/dist/components/udp-dynamic-form.js +1 -1
  383. package/dist/components/udp-empty-state-display.js +1 -1
  384. package/dist/components/udp-forms-builder-menu2.js +2 -2
  385. package/dist/components/udp-forms-builder-question-item2.js +2 -2
  386. package/dist/components/udp-forms-builder-style-override2.js +1 -1
  387. package/dist/components/udp-forms-follow-up-list-card.js +2 -2
  388. package/dist/components/udp-forms-list-card2.js +5 -5
  389. package/dist/components/udp-forms-list.js +1 -1
  390. package/dist/components/udp-forms-renderer.js +1 -1
  391. package/dist/components/udp-function-button2.js +1 -1
  392. package/dist/components/udp-grid-loader2.js +2 -2
  393. package/dist/components/udp-hotlist-form2.js +1 -1
  394. package/dist/components/udp-line-chart2.js +1 -1
  395. package/dist/components/udp-linear-loader2.js +1 -1
  396. package/dist/components/udp-map-toolbar2.js +1 -1
  397. package/dist/components/udp-map.js +3 -3
  398. package/dist/components/udp-menu-item2.js +1 -1
  399. package/dist/components/udp-menu2.js +1 -1
  400. package/dist/components/udp-notification2.js +2 -2
  401. package/dist/components/udp-page-header2.js +1 -1
  402. package/dist/components/udp-page.js +1 -1
  403. package/dist/components/udp-pop-over-grid-action-header2.js +1 -1
  404. package/dist/components/udp-pop-over2.js +1 -1
  405. package/dist/components/udp-radio-button2.js +1 -1
  406. package/dist/components/udp-sankey-chart.js +1 -1
  407. package/dist/components/udp-selector2.js +4 -4
  408. package/dist/components/udp-side-sheet2.js +9 -9
  409. package/dist/components/udp-skeleton-loading2.js +1 -1
  410. package/dist/components/udp-split-screen.js +1 -1
  411. package/dist/components/udp-stepper-demo.js +1 -1
  412. package/dist/components/udp-tab-panel.js +2 -2
  413. package/dist/components/udp-tab.js +56 -1
  414. package/dist/components/udp-tab.js.map +1 -1
  415. package/dist/components/udp-tabs2.js +2 -2
  416. package/dist/components/udp-time-selector2.js +3 -3
  417. package/dist/components/udp-user-creator.js +86 -1
  418. package/dist/components/udp-user-creator.js.map +1 -1
  419. package/dist/components/udp-vertical-spacer.js +1 -1
  420. package/dist/components/udp-xy-chart2.js +1 -1
  421. package/dist/components/udp-xy-multi-series-chart.js +1 -1
  422. package/dist/components/upd-alert-banner2.js +1 -1
  423. package/dist/components/validation-chip2.js +1 -1
  424. package/dist/docs.json +363 -1408
  425. package/dist/esm/{action-column-util-BArOL_Uz.js → action-column-util-DUK_9dnF.js} +3 -3
  426. package/dist/esm/{action-column-util-BArOL_Uz.js.map → action-column-util-DUK_9dnF.js.map} +1 -1
  427. package/dist/esm/add-map-feature-popup_4.entry.js +13 -13
  428. package/dist/esm/advanced-search-builder.entry.js +2 -2
  429. package/dist/esm/advanced-search.advanced-search-grouped.ag-table.edit-view-form-dialog.grid-primary-bar.kpi-list.save-view-form-dialog.side-sheet.udp-hotlist-form.udp-notification.udp-pop-over-grid-action-header.upd-alert-banner.entry.js.map +1 -0
  430. package/dist/esm/advanced-search_12.entry.js +850 -0
  431. package/dist/esm/ag-grid-base.ghost-render.grid-header.hint-panel.udp-dialog.udp-list-item.entry.js.map +1 -0
  432. package/dist/esm/{ag-grid-base_5.entry.js → ag-grid-base_6.entry.js} +27 -10
  433. package/dist/{components/ambient-template-grid2.js → esm/ambient-template-grid.entry.js} +128 -489
  434. package/dist/esm/ambient-template-grid.entry.js.map +1 -0
  435. package/dist/esm/api-method-instance-grid.entry.js +1 -1
  436. package/dist/esm/{apiUtils-CudiwABF.js → apiUtils-cUHs50y0.js} +3 -3
  437. package/dist/{stencil-library/apiUtils-CudiwABF.js.map → esm/apiUtils-cUHs50y0.js.map} +1 -1
  438. package/dist/esm/app-bar.entry.js +17 -0
  439. package/dist/esm/app-bar.entry.js.map +1 -0
  440. package/dist/esm/catalog-store-BhgNAUY6.js +30 -0
  441. package/dist/esm/catalog-store-BhgNAUY6.js.map +1 -0
  442. package/dist/esm/chart-container_3.entry.js +2 -2
  443. package/dist/esm/{chartUtils-DqjnIahA.js → chartUtils-DFIyEsL1.js} +3 -3
  444. package/dist/esm/{chartUtils-DqjnIahA.js.map → chartUtils-DFIyEsL1.js.map} +1 -1
  445. package/dist/esm/check-box.entry.js +2 -2
  446. package/dist/esm/chip-section.entry.js +2 -2
  447. package/dist/esm/client-side-grid.resource-timeline-primary-bar.entry.js.map +1 -1
  448. package/dist/esm/client-side-grid_2.entry.js +5 -4
  449. package/dist/esm/color-preview.entry.js +1 -1
  450. package/dist/esm/conversionFunctions-CNWYTvRs.js +132 -0
  451. package/dist/esm/conversionFunctions-CNWYTvRs.js.map +1 -0
  452. package/dist/esm/{currency-renderer-BQ-hUac8.js → currency-renderer-CRK1v2o-.js} +7 -8
  453. package/dist/esm/currency-renderer-CRK1v2o-.js.map +1 -0
  454. package/dist/esm/custom-button.entry.js +50 -0
  455. package/dist/esm/custom-button.entry.js.map +1 -0
  456. package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.js.map +1 -1
  457. package/dist/esm/date-time-renderer_6.entry.js +12 -11
  458. package/dist/esm/entity-maintenance-grid.entry.js +2 -2
  459. package/dist/esm/{enums-CE8s6a9b.js → enums-BOc5zJ68.js} +3 -3
  460. package/dist/esm/{enums-CE8s6a9b.js.map → enums-BOc5zJ68.js.map} +1 -1
  461. package/dist/esm/feature-details-card.feature-details-popup.entry.js.map +1 -1
  462. package/dist/esm/feature-details-card_2.entry.js +9 -8
  463. package/dist/esm/file-upload_2.entry.js +1 -1
  464. package/dist/esm/filter-conditions.search-list-item.tree-list-item.udp-column-header.udp-grid-loader.udp-page-header.udp-radio-button.entry.js.map +1 -0
  465. package/dist/esm/filter-conditions_7.entry.js +297 -0
  466. package/dist/esm/filter-group.validation-chip.entry.js.map +1 -1
  467. package/dist/esm/filter-group_2.entry.js +3 -2
  468. package/dist/esm/fluent-dialog.entry.js +21 -0
  469. package/dist/esm/fluent-dialog.entry.js.map +1 -0
  470. package/dist/esm/{iconUtils-KSv32PVD.js → iconMapping-C_IYrnjG.js} +3 -13
  471. package/dist/esm/iconMapping-C_IYrnjG.js.map +1 -0
  472. package/dist/esm/iconUtils-BsS5FaLc.js +16 -0
  473. package/dist/esm/iconUtils-BsS5FaLc.js.map +1 -0
  474. package/dist/esm/image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comment.udp-save-draft-button.entry.js.map +1 -1
  475. package/dist/esm/image-upload_7.entry.js +10 -9
  476. package/dist/esm/index-n-1ZSeAs.js +162 -94
  477. package/dist/esm/index.js +48 -9
  478. package/dist/esm/index.js.map +1 -1
  479. package/dist/esm/inputs-example.entry.js +2 -2
  480. package/dist/esm/loader.js +1 -1
  481. package/dist/esm/logical-search-indicator.entry.js +1 -1
  482. package/dist/esm/map-component_2.entry.js +3 -3
  483. package/dist/esm/numeric-field_5.entry.js +15 -15
  484. package/dist/esm/primary-action-header.udp-side-sheet.udp-tabs.entry.js.map +1 -0
  485. package/dist/esm/primary-action-header_3.entry.js +636 -0
  486. package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.js.map +1 -1
  487. package/dist/esm/question-configs-renderer_5.entry.js +18 -17
  488. package/dist/esm/resource-timeline-calendar.entry.js +1 -1
  489. package/dist/esm/search-method-grid.entry.js +2 -2
  490. package/dist/esm/server-side-grid.entry.js +1 -1
  491. package/dist/esm/side-sheet-container.entry.js +18 -0
  492. package/dist/esm/side-sheet-container.entry.js.map +1 -0
  493. package/dist/esm/simple-card.entry.js +1 -1
  494. package/dist/esm/status-chip.udp-function-button.entry.js.map +1 -0
  495. package/dist/esm/status-chip_2.entry.js +96 -0
  496. package/dist/esm/stencil-chip.entry.js +106 -0
  497. package/dist/esm/stencil-chip.entry.js.map +1 -0
  498. package/dist/esm/stencil-icon-button-grid-action-header.entry.js +42 -0
  499. package/dist/esm/stencil-icon-button-grid-action-header.entry.js.map +1 -0
  500. package/dist/esm/stencil-icon-button.udp-ambient-tool-tip.udp-badge.entry.js.map +1 -0
  501. package/dist/esm/stencil-icon-button_3.entry.js +154 -0
  502. package/dist/esm/stencil-library.js +1 -1
  503. package/dist/esm/stencil-toggle.entry.js +148 -0
  504. package/dist/esm/stencil-toggle.entry.js.map +1 -0
  505. package/dist/esm/text-field.udp-selector.entry.js.map +1 -0
  506. package/dist/esm/text-field_2.entry.js +565 -0
  507. package/dist/esm/{catalog-store-CeVER_Bk.js → transformSearchData-DBjFnXu6.js} +3 -29
  508. package/dist/esm/transformSearchData-DBjFnXu6.js.map +1 -0
  509. package/dist/esm/udp-adornment.entry.js +1 -1
  510. package/dist/esm/udp-advanced-search-builder.entry.js +1 -1
  511. package/dist/esm/udp-avatar.entry.js +55 -0
  512. package/dist/esm/udp-avatar.entry.js.map +1 -0
  513. package/dist/esm/udp-bar-chart_4.entry.js +5 -5
  514. package/dist/esm/udp-button.entry.js +111 -0
  515. package/dist/esm/udp-button.entry.js.map +1 -0
  516. package/dist/esm/udp-calendar-base.entry.js +1 -1
  517. package/dist/esm/udp-calendar-day.entry.js +1 -1
  518. package/dist/esm/udp-calendar-month.entry.js +1 -1
  519. package/dist/esm/udp-calendar-week.entry.js +1 -1
  520. package/dist/esm/udp-calendar-year.entry.js +1 -1
  521. package/dist/esm/udp-card-action-area.entry.js +1 -1
  522. package/dist/esm/udp-card_6.entry.js +7 -7
  523. package/dist/esm/udp-charts-example.entry.js +1 -1
  524. package/dist/esm/udp-chip_3.entry.js +2 -2
  525. package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
  526. package/dist/esm/udp-container-query-grid.entry.js +1 -1
  527. package/dist/esm/udp-container-query.entry.js +2 -2
  528. package/dist/esm/udp-container.udp-linear-loader.entry.js.map +1 -0
  529. package/dist/esm/udp-container_2.entry.js +53 -0
  530. package/dist/esm/udp-date-range-selector.entry.js +1 -1
  531. package/dist/esm/udp-divider.entry.js +20 -0
  532. package/dist/esm/udp-divider.entry.js.map +1 -0
  533. package/dist/esm/{udp-drive-utils-BiYKUATs.js → udp-drive-utils-CIrjVGiJ.js} +3 -3
  534. package/dist/{stencil-library/udp-drive-utils-BiYKUATs.js.map → esm/udp-drive-utils-CIrjVGiJ.js.map} +1 -1
  535. package/dist/esm/udp-dynamic-container-with-menu.entry.js +132 -0
  536. package/dist/esm/udp-dynamic-container-with-menu.entry.js.map +1 -0
  537. package/dist/esm/udp-dynamic-form.entry.js +1 -1
  538. package/dist/esm/udp-empty-state-display.entry.js +1 -1
  539. package/dist/esm/{udp-forms-builder-question-template-y1XU3Z2l.js → udp-forms-builder-question-template-BwyE73q_.js} +3 -3
  540. package/dist/esm/{udp-forms-builder-question-template-y1XU3Z2l.js.map → udp-forms-builder-question-template-BwyE73q_.js.map} +1 -1
  541. package/dist/esm/udp-forms-builder.entry.js +4 -3
  542. package/dist/esm/udp-forms-builder.entry.js.map +1 -1
  543. package/dist/esm/udp-forms-follow-up-list-card.entry.js +3 -3
  544. package/dist/esm/udp-forms-list-card.entry.js +6 -6
  545. package/dist/esm/udp-forms-list.entry.js +2 -2
  546. package/dist/esm/udp-forms-renderer.entry.js +2 -2
  547. package/dist/esm/udp-forms-ui.entry.js +3 -2
  548. package/dist/esm/udp-forms-ui.entry.js.map +1 -1
  549. package/dist/esm/udp-icon.entry.js +149 -0
  550. package/dist/esm/udp-icon.entry.js.map +1 -0
  551. package/dist/esm/udp-list-renderer.udp-pagination.entry.js.map +1 -0
  552. package/dist/esm/udp-list-renderer_2.entry.js +201 -0
  553. package/dist/esm/{udp-map-utils-BokzHQF1.js → udp-map-utils-DNAUNI5U.js} +3 -3
  554. package/dist/esm/{udp-map-utils-BokzHQF1.js.map → udp-map-utils-DNAUNI5U.js.map} +1 -1
  555. package/dist/esm/udp-map.entry.js +3 -3
  556. package/dist/esm/udp-menu-item.entry.js +25 -0
  557. package/dist/esm/udp-menu-item.entry.js.map +1 -0
  558. package/dist/esm/udp-page.entry.js +1 -1
  559. package/dist/esm/udp-pop-over.entry.js +130 -0
  560. package/dist/esm/udp-pop-over.entry.js.map +1 -0
  561. package/dist/esm/udp-sankey-chart.entry.js +2 -2
  562. package/dist/esm/udp-skeleton-loading.entry.js +20 -0
  563. package/dist/esm/udp-skeleton-loading.entry.js.map +1 -0
  564. package/dist/esm/udp-split-screen.entry.js +1 -1
  565. package/dist/esm/udp-stepper-demo.entry.js +1 -1
  566. package/dist/esm/udp-tab-panel.entry.js +2 -2
  567. package/dist/esm/udp-tab.entry.js +36 -0
  568. package/dist/esm/udp-tab.entry.js.map +1 -0
  569. package/dist/esm/udp-vertical-spacer.entry.js +1 -1
  570. package/dist/esm/udp-xy-chart.entry.js +2 -2
  571. package/dist/esm/udp-xy-multi-series-chart.entry.js +2 -2
  572. package/dist/esm/unity-typography.entry.js +61 -0
  573. package/dist/esm/unity-typography.entry.js.map +1 -0
  574. package/dist/stencil-library/{action-column-util-BArOL_Uz.js → action-column-util-DUK_9dnF.js} +2 -2
  575. package/dist/stencil-library/{action-column-util-BArOL_Uz.js.map → action-column-util-DUK_9dnF.js.map} +1 -1
  576. package/dist/stencil-library/add-map-feature-popup_4.entry.js +1 -1
  577. package/dist/stencil-library/advanced-search-builder.entry.js +1 -1
  578. package/dist/stencil-library/advanced-search.advanced-search-grouped.ag-table.edit-view-form-dialog.grid-primary-bar.kpi-list.save-view-form-dialog.side-sheet.udp-hotlist-form.udp-notification.udp-pop-over-grid-action-header.upd-alert-banner.entry.esm.js.map +1 -0
  579. package/dist/stencil-library/advanced-search_12.entry.js +2 -0
  580. package/dist/stencil-library/advanced-search_12.entry.js.map +1 -0
  581. package/dist/stencil-library/ag-grid-base.ghost-render.grid-header.hint-panel.udp-dialog.udp-list-item.entry.esm.js.map +1 -0
  582. package/dist/stencil-library/ag-grid-base_6.entry.js +2 -0
  583. package/dist/stencil-library/ag-grid-base_6.entry.js.map +1 -0
  584. package/dist/stencil-library/ambient-template-grid.entry.esm.js.map +1 -0
  585. package/dist/stencil-library/ambient-template-grid.entry.js +2 -0
  586. package/dist/stencil-library/ambient-template-grid.entry.js.map +1 -0
  587. package/dist/stencil-library/api-method-instance-grid.entry.js +1 -1
  588. package/dist/stencil-library/{apiUtils-CudiwABF.js → apiUtils-cUHs50y0.js} +2 -2
  589. package/dist/{esm/apiUtils-CudiwABF.js.map → stencil-library/apiUtils-cUHs50y0.js.map} +1 -1
  590. package/dist/stencil-library/app-bar.entry.esm.js.map +1 -0
  591. package/dist/stencil-library/app-bar.entry.js +2 -0
  592. package/dist/stencil-library/app-bar.entry.js.map +1 -0
  593. package/dist/stencil-library/catalog-store-BhgNAUY6.js +2 -0
  594. package/dist/stencil-library/catalog-store-BhgNAUY6.js.map +1 -0
  595. package/dist/stencil-library/chart-container_3.entry.js +1 -1
  596. package/dist/stencil-library/chart-container_3.entry.js.map +1 -1
  597. package/dist/stencil-library/{chartUtils-DqjnIahA.js → chartUtils-DFIyEsL1.js} +2 -2
  598. package/dist/stencil-library/{chartUtils-DqjnIahA.js.map → chartUtils-DFIyEsL1.js.map} +1 -1
  599. package/dist/stencil-library/check-box.entry.js +1 -1
  600. package/dist/stencil-library/chip-section.entry.js +1 -1
  601. package/dist/stencil-library/client-side-grid.resource-timeline-primary-bar.entry.esm.js.map +1 -1
  602. package/dist/stencil-library/client-side-grid_2.entry.js +1 -1
  603. package/dist/stencil-library/client-side-grid_2.entry.js.map +1 -1
  604. package/dist/stencil-library/color-preview.entry.js +1 -1
  605. package/dist/stencil-library/conversionFunctions-CNWYTvRs.js +2 -0
  606. package/dist/stencil-library/conversionFunctions-CNWYTvRs.js.map +1 -0
  607. package/dist/stencil-library/{currency-renderer-BQ-hUac8.js → currency-renderer-CRK1v2o-.js} +2 -2
  608. package/dist/stencil-library/currency-renderer-CRK1v2o-.js.map +1 -0
  609. package/dist/stencil-library/custom-button.entry.esm.js.map +1 -0
  610. package/dist/stencil-library/custom-button.entry.js +2 -0
  611. package/dist/stencil-library/custom-button.entry.js.map +1 -0
  612. package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.esm.js.map +1 -1
  613. package/dist/stencil-library/date-time-renderer_6.entry.js +1 -1
  614. package/dist/stencil-library/date-time-renderer_6.entry.js.map +1 -1
  615. package/dist/stencil-library/entity-maintenance-grid.entry.js +1 -1
  616. package/dist/stencil-library/{enums-CE8s6a9b.js → enums-BOc5zJ68.js} +2 -2
  617. package/dist/stencil-library/{enums-CE8s6a9b.js.map → enums-BOc5zJ68.js.map} +1 -1
  618. package/dist/stencil-library/feature-details-card.feature-details-popup.entry.esm.js.map +1 -1
  619. package/dist/stencil-library/feature-details-card_2.entry.js +1 -1
  620. package/dist/stencil-library/feature-details-card_2.entry.js.map +1 -1
  621. package/dist/stencil-library/file-upload_2.entry.js +1 -1
  622. package/dist/stencil-library/filter-conditions.search-list-item.tree-list-item.udp-column-header.udp-grid-loader.udp-page-header.udp-radio-button.entry.esm.js.map +1 -0
  623. package/dist/stencil-library/filter-conditions_7.entry.js +2 -0
  624. package/dist/stencil-library/filter-conditions_7.entry.js.map +1 -0
  625. package/dist/stencil-library/filter-group.validation-chip.entry.esm.js.map +1 -1
  626. package/dist/stencil-library/filter-group_2.entry.js +1 -1
  627. package/dist/stencil-library/filter-group_2.entry.js.map +1 -1
  628. package/dist/stencil-library/fluent-dialog.entry.esm.js.map +1 -0
  629. package/dist/stencil-library/fluent-dialog.entry.js +2 -0
  630. package/dist/stencil-library/fluent-dialog.entry.js.map +1 -0
  631. package/dist/stencil-library/{iconUtils-KSv32PVD.js → iconMapping-C_IYrnjG.js} +2 -2
  632. package/dist/stencil-library/iconMapping-C_IYrnjG.js.map +1 -0
  633. package/dist/stencil-library/iconUtils-BsS5FaLc.js +2 -0
  634. package/dist/stencil-library/iconUtils-BsS5FaLc.js.map +1 -0
  635. package/dist/stencil-library/image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comment.udp-save-draft-button.entry.esm.js.map +1 -1
  636. package/dist/stencil-library/image-upload_7.entry.js +1 -1
  637. package/dist/stencil-library/image-upload_7.entry.js.map +1 -1
  638. package/dist/stencil-library/index.esm.js +1 -1
  639. package/dist/stencil-library/index.esm.js.map +1 -1
  640. package/dist/stencil-library/inputs-example.entry.js +1 -1
  641. package/dist/stencil-library/logical-search-indicator.entry.js +1 -1
  642. package/dist/stencil-library/map-component_2.entry.js +1 -1
  643. package/dist/stencil-library/numeric-field_5.entry.js +1 -1
  644. package/dist/stencil-library/primary-action-header.udp-side-sheet.udp-tabs.entry.esm.js.map +1 -0
  645. package/dist/stencil-library/primary-action-header_3.entry.js +2 -0
  646. package/dist/stencil-library/primary-action-header_3.entry.js.map +1 -0
  647. package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.esm.js.map +1 -1
  648. package/dist/stencil-library/question-configs-renderer_5.entry.js +1 -1
  649. package/dist/stencil-library/question-configs-renderer_5.entry.js.map +1 -1
  650. package/dist/stencil-library/resource-timeline-calendar.entry.js +1 -1
  651. package/dist/stencil-library/search-method-grid.entry.js +1 -1
  652. package/dist/stencil-library/server-side-grid.entry.js +1 -1
  653. package/dist/stencil-library/side-sheet-container.entry.esm.js.map +1 -0
  654. package/dist/stencil-library/side-sheet-container.entry.js +2 -0
  655. package/dist/stencil-library/side-sheet-container.entry.js.map +1 -0
  656. package/dist/stencil-library/simple-card.entry.js +1 -1
  657. package/dist/stencil-library/status-chip.udp-function-button.entry.esm.js.map +1 -0
  658. package/dist/stencil-library/status-chip_2.entry.js +2 -0
  659. package/dist/stencil-library/status-chip_2.entry.js.map +1 -0
  660. package/dist/stencil-library/stencil-chip.entry.esm.js.map +1 -0
  661. package/dist/stencil-library/stencil-chip.entry.js +2 -0
  662. package/dist/stencil-library/stencil-chip.entry.js.map +1 -0
  663. package/dist/stencil-library/stencil-icon-button-grid-action-header.entry.esm.js.map +1 -0
  664. package/dist/stencil-library/stencil-icon-button-grid-action-header.entry.js +2 -0
  665. package/dist/stencil-library/stencil-icon-button-grid-action-header.entry.js.map +1 -0
  666. package/dist/stencil-library/stencil-icon-button.udp-ambient-tool-tip.udp-badge.entry.esm.js.map +1 -0
  667. package/dist/stencil-library/stencil-icon-button_3.entry.js +2 -0
  668. package/dist/stencil-library/stencil-icon-button_3.entry.js.map +1 -0
  669. package/dist/stencil-library/stencil-library.esm.js +1 -1
  670. package/dist/stencil-library/stencil-toggle.entry.esm.js.map +1 -0
  671. package/dist/stencil-library/stencil-toggle.entry.js +2 -0
  672. package/dist/stencil-library/stencil-toggle.entry.js.map +1 -0
  673. package/dist/stencil-library/text-field.udp-selector.entry.esm.js.map +1 -0
  674. package/dist/stencil-library/text-field_2.entry.js +2 -0
  675. package/dist/stencil-library/text-field_2.entry.js.map +1 -0
  676. package/dist/stencil-library/transformSearchData-DBjFnXu6.js +2 -0
  677. package/dist/stencil-library/transformSearchData-DBjFnXu6.js.map +1 -0
  678. package/dist/stencil-library/udp-adornment.entry.js +1 -1
  679. package/dist/stencil-library/udp-advanced-search-builder.entry.js +1 -1
  680. package/dist/stencil-library/udp-avatar.entry.esm.js.map +1 -0
  681. package/dist/stencil-library/udp-avatar.entry.js +2 -0
  682. package/dist/stencil-library/udp-avatar.entry.js.map +1 -0
  683. package/dist/stencil-library/udp-bar-chart_4.entry.js +1 -1
  684. package/dist/stencil-library/udp-button.entry.esm.js.map +1 -0
  685. package/dist/stencil-library/udp-button.entry.js +2 -0
  686. package/dist/stencil-library/udp-button.entry.js.map +1 -0
  687. package/dist/stencil-library/udp-calendar-base.entry.js +1 -1
  688. package/dist/stencil-library/udp-calendar-day.entry.js +1 -1
  689. package/dist/stencil-library/udp-calendar-month.entry.js +1 -1
  690. package/dist/stencil-library/udp-calendar-week.entry.js +1 -1
  691. package/dist/stencil-library/udp-calendar-year.entry.js +1 -1
  692. package/dist/stencil-library/udp-card-action-area.entry.js +1 -1
  693. package/dist/stencil-library/udp-card_6.entry.js +1 -1
  694. package/dist/stencil-library/udp-charts-example.entry.js +1 -1
  695. package/dist/stencil-library/udp-chip_3.entry.js +1 -1
  696. package/dist/stencil-library/udp-container-query-grid-item.entry.js +1 -1
  697. package/dist/stencil-library/udp-container-query-grid.entry.js +1 -1
  698. package/dist/stencil-library/udp-container-query.entry.js +1 -1
  699. package/dist/stencil-library/udp-container.udp-linear-loader.entry.esm.js.map +1 -0
  700. package/dist/stencil-library/udp-container_2.entry.js +2 -0
  701. package/dist/stencil-library/udp-container_2.entry.js.map +1 -0
  702. package/dist/stencil-library/udp-date-range-selector.entry.js +1 -1
  703. package/dist/stencil-library/udp-divider.entry.esm.js.map +1 -0
  704. package/dist/stencil-library/udp-divider.entry.js +2 -0
  705. package/dist/stencil-library/udp-divider.entry.js.map +1 -0
  706. package/dist/stencil-library/{udp-drive-utils-BiYKUATs.js → udp-drive-utils-CIrjVGiJ.js} +2 -2
  707. package/dist/{esm/udp-drive-utils-BiYKUATs.js.map → stencil-library/udp-drive-utils-CIrjVGiJ.js.map} +1 -1
  708. package/dist/stencil-library/udp-dynamic-container-with-menu.entry.esm.js.map +1 -0
  709. package/dist/stencil-library/udp-dynamic-container-with-menu.entry.js +2 -0
  710. package/dist/stencil-library/udp-dynamic-container-with-menu.entry.js.map +1 -0
  711. package/dist/stencil-library/udp-dynamic-form.entry.js +1 -1
  712. package/dist/stencil-library/udp-empty-state-display.entry.js +1 -1
  713. package/dist/stencil-library/{udp-forms-builder-question-template-y1XU3Z2l.js → udp-forms-builder-question-template-BwyE73q_.js} +2 -2
  714. package/dist/stencil-library/{udp-forms-builder-question-template-y1XU3Z2l.js.map → udp-forms-builder-question-template-BwyE73q_.js.map} +1 -1
  715. package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
  716. package/dist/stencil-library/udp-forms-builder.entry.js +1 -1
  717. package/dist/stencil-library/udp-forms-builder.entry.js.map +1 -1
  718. package/dist/stencil-library/udp-forms-follow-up-list-card.entry.js +1 -1
  719. package/dist/stencil-library/udp-forms-list-card.entry.js +1 -1
  720. package/dist/stencil-library/udp-forms-list.entry.js +1 -1
  721. package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
  722. package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
  723. package/dist/stencil-library/udp-forms-ui.entry.js +1 -1
  724. package/dist/stencil-library/udp-forms-ui.entry.js.map +1 -1
  725. package/dist/stencil-library/udp-icon.entry.esm.js.map +1 -0
  726. package/dist/stencil-library/udp-icon.entry.js +2 -0
  727. package/dist/stencil-library/udp-icon.entry.js.map +1 -0
  728. package/dist/stencil-library/udp-list-renderer.udp-pagination.entry.esm.js.map +1 -0
  729. package/dist/stencil-library/udp-list-renderer_2.entry.js +2 -0
  730. package/dist/stencil-library/udp-list-renderer_2.entry.js.map +1 -0
  731. package/dist/stencil-library/{udp-map-utils-BokzHQF1.js → udp-map-utils-DNAUNI5U.js} +2 -2
  732. package/dist/stencil-library/{udp-map-utils-BokzHQF1.js.map → udp-map-utils-DNAUNI5U.js.map} +1 -1
  733. package/dist/stencil-library/udp-map.entry.js +1 -1
  734. package/dist/stencil-library/udp-menu-item.entry.esm.js.map +1 -0
  735. package/dist/stencil-library/udp-menu-item.entry.js +2 -0
  736. package/dist/stencil-library/udp-menu-item.entry.js.map +1 -0
  737. package/dist/stencil-library/udp-page.entry.js +1 -1
  738. package/dist/stencil-library/udp-pop-over.entry.esm.js.map +1 -0
  739. package/dist/stencil-library/udp-pop-over.entry.js +2 -0
  740. package/dist/stencil-library/udp-pop-over.entry.js.map +1 -0
  741. package/dist/stencil-library/udp-sankey-chart.entry.js +1 -1
  742. package/dist/stencil-library/udp-skeleton-loading.entry.esm.js.map +1 -0
  743. package/dist/stencil-library/udp-skeleton-loading.entry.js +2 -0
  744. package/dist/stencil-library/udp-skeleton-loading.entry.js.map +1 -0
  745. package/dist/stencil-library/udp-split-screen.entry.js +1 -1
  746. package/dist/stencil-library/udp-stepper-demo.entry.js +1 -1
  747. package/dist/stencil-library/udp-tab-panel.entry.js +1 -1
  748. package/dist/stencil-library/udp-tab.entry.esm.js.map +1 -0
  749. package/dist/stencil-library/udp-tab.entry.js +2 -0
  750. package/dist/stencil-library/udp-tab.entry.js.map +1 -0
  751. package/dist/stencil-library/udp-vertical-spacer.entry.js +1 -1
  752. package/dist/stencil-library/udp-xy-chart.entry.js +1 -1
  753. package/dist/stencil-library/udp-xy-multi-series-chart.entry.js +1 -1
  754. package/dist/stencil-library/unity-typography.entry.esm.js.map +1 -0
  755. package/dist/stencil-library/unity-typography.entry.js +2 -0
  756. package/dist/stencil-library/unity-typography.entry.js.map +1 -0
  757. package/dist/types/components/my-component/UI/advanced-search/advanced-search-grouped.d.ts +4 -0
  758. package/dist/types/components/my-component/UI/advanced-search/advanced-search.d.ts +4 -0
  759. package/dist/types/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.d.ts +4 -0
  760. package/dist/types/components/my-component/UI/grid/renderers/currency-renderer.d.ts +0 -4
  761. package/dist/types/components/my-component/UI/grid/renderers/hot-list-add-renderer.d.ts +3 -0
  762. package/dist/types/components.d.ts +48 -192
  763. package/dist/types/global/ag-grid.d.ts +3 -0
  764. package/dist/types/index.d.ts +0 -3
  765. package/dist/types/store/user-store.d.ts +3 -0
  766. package/dist/types/udp-utilities/api-udp/apiMutate.d.ts +4 -0
  767. package/package.json +1 -1
  768. package/dist/cjs/ag-grid-base.ghost-render.grid-header.udp-dialog.udp-list-item.entry.cjs.js.map +0 -1
  769. package/dist/cjs/api-services-NWeAzI4X.js +0 -56
  770. package/dist/cjs/api-services-NWeAzI4X.js.map +0 -1
  771. package/dist/cjs/catalog-store-yJKDPXXM.js.map +0 -1
  772. package/dist/cjs/currency-renderer-D8Tuzf0W.js.map +0 -1
  773. package/dist/cjs/get-user-DFb8yrQ2.js +0 -88
  774. package/dist/cjs/get-user-DFb8yrQ2.js.map +0 -1
  775. package/dist/cjs/get-user.cjs.entry.js +0 -12
  776. package/dist/cjs/get-user.entry.cjs.js.map +0 -1
  777. package/dist/cjs/iconUtils-Bfr2fT9-.js.map +0 -1
  778. package/dist/cjs/page-renderer.cjs.entry.js +0 -40
  779. package/dist/cjs/page-renderer.entry.cjs.js.map +0 -1
  780. package/dist/cjs/test-api-updated.cjs.entry.js +0 -82
  781. package/dist/cjs/test-api-updated.entry.cjs.js.map +0 -1
  782. package/dist/cjs/test-api.cjs.entry.js +0 -72
  783. package/dist/cjs/test-api.entry.cjs.js.map +0 -1
  784. package/dist/cjs/toggle-button.cjs.entry.js +0 -19
  785. package/dist/cjs/toggle-button.entry.cjs.js.map +0 -1
  786. package/dist/cjs/udp-container.cjs.entry.js +0 -35
  787. package/dist/cjs/udp-container.entry.cjs.js.map +0 -1
  788. package/dist/cjs/udp-fetch-C9800dwI.js +0 -267
  789. package/dist/cjs/udp-fetch-C9800dwI.js.map +0 -1
  790. package/dist/cjs/udp-fetch.cjs.entry.js +0 -10
  791. package/dist/cjs/udp-fetch.entry.cjs.js.map +0 -1
  792. package/dist/cjs/udp-list-renderer.udp-pagination.udp-side-sheet.entry.cjs.js.map +0 -1
  793. package/dist/cjs/udp-list-renderer_3.cjs.entry.js +0 -467
  794. package/dist/collection/components/my-component/AG-Grid.js +0 -352
  795. package/dist/collection/components/my-component/AG-Grid.js.map +0 -1
  796. package/dist/collection/components/my-component/demo/ambient-demo-container.css +0 -17
  797. package/dist/collection/components/my-component/demo/ambient-demo-container.js +0 -42
  798. package/dist/collection/components/my-component/demo/ambient-demo-container.js.map +0 -1
  799. package/dist/collection/components/my-component/my-component.css +0 -27
  800. package/dist/collection/components/my-component/my-component.js +0 -1575
  801. package/dist/collection/components/my-component/my-component.js.map +0 -1
  802. package/dist/collection/components/my-component/test-api/test-api.js +0 -46
  803. package/dist/collection/components/my-component/test-api/test-api.js.map +0 -1
  804. package/dist/collection/page-renderer/page-renderer.css +0 -0
  805. package/dist/collection/page-renderer/page-renderer.js +0 -159
  806. package/dist/collection/page-renderer/page-renderer.js.map +0 -1
  807. package/dist/collection/toggle-button.css +0 -29
  808. package/dist/collection/toggle-button.js +0 -64
  809. package/dist/collection/toggle-button.js.map +0 -1
  810. package/dist/collection/udp-utilities/api/api-services.js +0 -45
  811. package/dist/collection/udp-utilities/api/api-services.js.map +0 -1
  812. package/dist/collection/udp-utilities/api/useAxiosGet/useAxiosGet.js +0 -38
  813. package/dist/collection/udp-utilities/api/useAxiosGet/useAxiosGet.js.map +0 -1
  814. package/dist/collection/udp-utilities/api/useAxiosMutate/testApi.js +0 -50
  815. package/dist/collection/udp-utilities/api/useAxiosMutate/testApi.js.map +0 -1
  816. package/dist/collection/udp-utilities/api/useAxiosMutate/useApiServiceGetQuery.js +0 -37
  817. package/dist/collection/udp-utilities/api/useAxiosMutate/useApiServiceGetQuery.js.map +0 -1
  818. package/dist/collection/udp-utilities/api/useAxiosMutate/useApiServiceMutate.js +0 -36
  819. package/dist/collection/udp-utilities/api/useAxiosMutate/useApiServiceMutate.js.map +0 -1
  820. package/dist/collection/udp-utilities/api/useAxiosMutate/useAxiosMutate.js +0 -29
  821. package/dist/collection/udp-utilities/api/useAxiosMutate/useAxiosMutate.js.map +0 -1
  822. package/dist/collection/udp-utilities/api-udp/get-user.js +0 -125
  823. package/dist/collection/udp-utilities/api-udp/get-user.js.map +0 -1
  824. package/dist/collection/udp-utilities/api-udp/udp-fetch.js +0 -284
  825. package/dist/collection/udp-utilities/api-udp/udp-fetch.js.map +0 -1
  826. package/dist/collection/udp-utilities/auth/auth-actions.js +0 -39
  827. package/dist/collection/udp-utilities/auth/auth-actions.js.map +0 -1
  828. package/dist/collection/udp-utilities/auth/auth-config.js +0 -26
  829. package/dist/collection/udp-utilities/auth/auth-config.js.map +0 -1
  830. package/dist/collection/udp-utilities/auth/auth.js +0 -1
  831. package/dist/collection/udp-utilities/auth/auth.js.map +0 -1
  832. package/dist/collection/udp-utilities/auth/sign-in-auth-provider.js +0 -63
  833. package/dist/collection/udp-utilities/auth/sign-in-auth-provider.js.map +0 -1
  834. package/dist/collection/udp-utilities/baseSearchPayload.js +0 -13
  835. package/dist/collection/udp-utilities/baseSearchPayload.js.map +0 -1
  836. package/dist/collection/udp-utilities/testAuth/manualAccessToken.js +0 -4
  837. package/dist/collection/udp-utilities/testAuth/manualAccessToken.js.map +0 -1
  838. package/dist/collection/utils/utils.js +0 -15
  839. package/dist/collection/utils/utils.js.map +0 -1
  840. package/dist/components/ambient-demo-container.d.ts +0 -11
  841. package/dist/components/ambient-demo-container.js +0 -9
  842. package/dist/components/ambient-demo-container.js.map +0 -1
  843. package/dist/components/ambient-demo-container2.js +0 -43
  844. package/dist/components/ambient-demo-container2.js.map +0 -1
  845. package/dist/components/ambient-template-grid2.js.map +0 -1
  846. package/dist/components/api-services.js +0 -50
  847. package/dist/components/api-services.js.map +0 -1
  848. package/dist/components/app-bar2.js +0 -74
  849. package/dist/components/app-bar2.js.map +0 -1
  850. package/dist/components/get-user.d.ts +0 -11
  851. package/dist/components/get-user.js +0 -9
  852. package/dist/components/get-user.js.map +0 -1
  853. package/dist/components/get-user2.js +0 -103
  854. package/dist/components/get-user2.js.map +0 -1
  855. package/dist/components/my-component.d.ts +0 -11
  856. package/dist/components/my-component.js +0 -1796
  857. package/dist/components/my-component.js.map +0 -1
  858. package/dist/components/page-renderer.d.ts +0 -11
  859. package/dist/components/page-renderer.js +0 -325
  860. package/dist/components/page-renderer.js.map +0 -1
  861. package/dist/components/test-api-updated.d.ts +0 -11
  862. package/dist/components/test-api-updated.js +0 -105
  863. package/dist/components/test-api-updated.js.map +0 -1
  864. package/dist/components/test-api.d.ts +0 -11
  865. package/dist/components/test-api.js +0 -92
  866. package/dist/components/test-api.js.map +0 -1
  867. package/dist/components/toggle-button.d.ts +0 -11
  868. package/dist/components/toggle-button.js +0 -42
  869. package/dist/components/toggle-button.js.map +0 -1
  870. package/dist/components/udp-fetch.d.ts +0 -11
  871. package/dist/components/udp-fetch.js +0 -9
  872. package/dist/components/udp-fetch.js.map +0 -1
  873. package/dist/components/udp-fetch2.js +0 -284
  874. package/dist/components/udp-fetch2.js.map +0 -1
  875. package/dist/components/udp-tab2.js +0 -61
  876. package/dist/components/udp-tab2.js.map +0 -1
  877. package/dist/components/udp-user-creator2.js +0 -91
  878. package/dist/components/udp-user-creator2.js.map +0 -1
  879. package/dist/esm/advanced-search_50.entry.js +0 -8795
  880. package/dist/esm/ag-grid-base.ghost-render.grid-header.udp-dialog.udp-list-item.entry.js.map +0 -1
  881. package/dist/esm/api-services-C0O6l6cU.js +0 -50
  882. package/dist/esm/api-services-C0O6l6cU.js.map +0 -1
  883. package/dist/esm/catalog-store-CeVER_Bk.js.map +0 -1
  884. package/dist/esm/currency-renderer-BQ-hUac8.js.map +0 -1
  885. package/dist/esm/get-user-BtNVBI86.js +0 -82
  886. package/dist/esm/get-user-BtNVBI86.js.map +0 -1
  887. package/dist/esm/get-user.entry.js +0 -6
  888. package/dist/esm/get-user.entry.js.map +0 -1
  889. package/dist/esm/iconUtils-KSv32PVD.js.map +0 -1
  890. package/dist/esm/page-renderer.entry.js +0 -38
  891. package/dist/esm/page-renderer.entry.js.map +0 -1
  892. package/dist/esm/test-api-updated.entry.js +0 -80
  893. package/dist/esm/test-api-updated.entry.js.map +0 -1
  894. package/dist/esm/test-api.entry.js +0 -66
  895. package/dist/esm/test-api.entry.js.map +0 -1
  896. package/dist/esm/toggle-button.entry.js +0 -17
  897. package/dist/esm/toggle-button.entry.js.map +0 -1
  898. package/dist/esm/udp-container.entry.js +0 -33
  899. package/dist/esm/udp-container.entry.js.map +0 -1
  900. package/dist/esm/udp-fetch-BGMJ3xhH.js +0 -259
  901. package/dist/esm/udp-fetch-BGMJ3xhH.js.map +0 -1
  902. package/dist/esm/udp-fetch.entry.js +0 -4
  903. package/dist/esm/udp-fetch.entry.js.map +0 -1
  904. package/dist/esm/udp-list-renderer.udp-pagination.udp-side-sheet.entry.js.map +0 -1
  905. package/dist/esm/udp-list-renderer_3.entry.js +0 -459
  906. package/dist/stencil-library/advanced-search_50.entry.js +0 -2
  907. package/dist/stencil-library/advanced-search_50.entry.js.map +0 -1
  908. package/dist/stencil-library/ag-grid-base.ghost-render.grid-header.udp-dialog.udp-list-item.entry.esm.js.map +0 -1
  909. package/dist/stencil-library/ag-grid-base_5.entry.js +0 -2
  910. package/dist/stencil-library/ag-grid-base_5.entry.js.map +0 -1
  911. package/dist/stencil-library/api-services-C0O6l6cU.js +0 -2
  912. package/dist/stencil-library/api-services-C0O6l6cU.js.map +0 -1
  913. package/dist/stencil-library/catalog-store-CeVER_Bk.js +0 -2
  914. package/dist/stencil-library/catalog-store-CeVER_Bk.js.map +0 -1
  915. package/dist/stencil-library/currency-renderer-BQ-hUac8.js.map +0 -1
  916. package/dist/stencil-library/get-user-BtNVBI86.js +0 -2
  917. package/dist/stencil-library/get-user-BtNVBI86.js.map +0 -1
  918. package/dist/stencil-library/get-user.entry.esm.js.map +0 -1
  919. package/dist/stencil-library/get-user.entry.js +0 -2
  920. package/dist/stencil-library/get-user.entry.js.map +0 -1
  921. package/dist/stencil-library/iconUtils-KSv32PVD.js.map +0 -1
  922. package/dist/stencil-library/page-renderer.entry.esm.js.map +0 -1
  923. package/dist/stencil-library/page-renderer.entry.js +0 -2
  924. package/dist/stencil-library/page-renderer.entry.js.map +0 -1
  925. package/dist/stencil-library/test-api-updated.entry.esm.js.map +0 -1
  926. package/dist/stencil-library/test-api-updated.entry.js +0 -2
  927. package/dist/stencil-library/test-api-updated.entry.js.map +0 -1
  928. package/dist/stencil-library/test-api.entry.esm.js.map +0 -1
  929. package/dist/stencil-library/test-api.entry.js +0 -2
  930. package/dist/stencil-library/test-api.entry.js.map +0 -1
  931. package/dist/stencil-library/toggle-button.entry.esm.js.map +0 -1
  932. package/dist/stencil-library/toggle-button.entry.js +0 -2
  933. package/dist/stencil-library/toggle-button.entry.js.map +0 -1
  934. package/dist/stencil-library/udp-container.entry.esm.js.map +0 -1
  935. package/dist/stencil-library/udp-container.entry.js +0 -2
  936. package/dist/stencil-library/udp-container.entry.js.map +0 -1
  937. package/dist/stencil-library/udp-fetch-BGMJ3xhH.js +0 -2
  938. package/dist/stencil-library/udp-fetch-BGMJ3xhH.js.map +0 -1
  939. package/dist/stencil-library/udp-fetch.entry.esm.js.map +0 -1
  940. package/dist/stencil-library/udp-fetch.entry.js +0 -2
  941. package/dist/stencil-library/udp-fetch.entry.js.map +0 -1
  942. package/dist/stencil-library/udp-list-renderer.udp-pagination.udp-side-sheet.entry.esm.js.map +0 -1
  943. package/dist/stencil-library/udp-list-renderer_3.entry.js +0 -2
  944. package/dist/stencil-library/udp-list-renderer_3.entry.js.map +0 -1
  945. package/dist/types/components/my-component/AG-Grid.d.ts +0 -0
  946. package/dist/types/components/my-component/demo/ambient-demo-container.d.ts +0 -4
  947. package/dist/types/components/my-component/my-component.d.ts +0 -699
  948. package/dist/types/components/my-component/test-api/test-api.d.ts +0 -7
  949. package/dist/types/page-renderer/page-renderer.d.ts +0 -10
  950. package/dist/types/toggle-button.d.ts +0 -5
  951. package/dist/types/udp-utilities/api/api-services.d.ts +0 -14
  952. package/dist/types/udp-utilities/api/useAxiosGet/useAxiosGet.d.ts +0 -19
  953. package/dist/types/udp-utilities/api/useAxiosMutate/testApi.d.ts +0 -7
  954. package/dist/types/udp-utilities/api/useAxiosMutate/useApiServiceGetQuery.d.ts +0 -19
  955. package/dist/types/udp-utilities/api/useAxiosMutate/useApiServiceMutate.d.ts +0 -5
  956. package/dist/types/udp-utilities/api/useAxiosMutate/useAxiosMutate.d.ts +0 -12
  957. package/dist/types/udp-utilities/api-udp/get-user.d.ts +0 -18
  958. package/dist/types/udp-utilities/api-udp/udp-fetch.d.ts +0 -10
  959. package/dist/types/udp-utilities/auth/auth-actions.d.ts +0 -0
  960. package/dist/types/udp-utilities/auth/auth-config.d.ts +0 -14
  961. package/dist/types/udp-utilities/auth/auth.d.ts +0 -0
  962. package/dist/types/udp-utilities/auth/sign-in-auth-provider.d.ts +0 -0
  963. package/dist/types/udp-utilities/baseSearchPayload.d.ts +0 -2
  964. package/dist/types/udp-utilities/testAuth/manualAccessToken.d.ts +0 -2
  965. package/dist/types/utils/utils.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ambient-template-grid.js","sourceRoot":"","sources":["../../../../../../src/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Draft, produce } from 'immer';\nimport { Component, Element, h, State, Prop, Event, EventEmitter, Watch, Listen, Method } from '@stencil/core';\nimport { state } from '../../../../../store/catalog-store';\nimport type { ColumnApi, GridOptions, ICellRendererParams, IServerSideDatasource } from 'ag-grid-enterprise';\nimport CustomRenderer from '../../../../my-component/UI/grid/renderers/custom-renderer';\nimport CustomActionsRenderer from '../../../../my-component/UI/grid/renderers/custom-actions-renderer';\nimport Star16 from '@carbon/icons/es/star/16';\nimport List16 from '@carbon/icons/es/list/16';\nimport { SearchServiceDatasource, rowGroups } from '../../../../../udp-utilities/grid/data-source/SearchServiceDatasource';\nimport { convertToAgGridColumns } from '../../../../../udp-utilities/grid/convertToAgGridColumns';\nimport {\n getSelectedView,\n getAvailableViews,\n saveView,\n updateView,\n updateViewAndConfigurations,\n getAvailableGridActions,\n getPromotedLookupMethod,\n executeQueryAdHocAndMapLookups,\n executeQueryWithParameters,\n getApiCatalogAndProduct,\n getApiCatalogById,\n executeQueryAdHoc,\n getAllHotlists,\n createAHotlist,\n deleteAHotlist,\n addRecordToAHotlist,\n loadAHotlist,\n removeRecordFromHotlist,\n deleteSelectedView,\n getApiMethodInstance,\n getApiMethod,\n} from '../../../../../udp-utilities/api-udp/apiUtils';\nimport { UdpGridColumnDefs, useTreeDatasource } from '../conversionFunctions/conversionFunctions';\nimport '../../../../my-component/ag-grid.css';\nimport EmailCellRenderer from '../renderers/email-cell-renderer';\nimport OpenFunctionCellRenderer from '../renderers/open-function-cell-renderer';\nimport HotListAddRenderer from '../renderers/hot-list-add-renderer';\nimport { SharedContext } from '../renderers/sharedContext';\nimport HoverContentCellRenderer from '../renderers/hover-content-cell-renderer';\nimport { GridStateTypeEnums } from './enums/gridEnums';\nimport { SearchObject, FilterDetail, HotListObject, ActionItem } from './interfaces/gridInterfaces';\nimport { transformSearchData } from '../../../../../udp-utilities/grid/data-converters/transformSearchData';\nimport { LicenseKey } from './license/licenseKey';\nimport { buildSearchPayload } from './ambient-template-functions/buildGroupedSearchPayload';\n// import { FilterElement } from '../../advanced-search/advanced-search-grouped';\nimport * as localforage from 'localforage';\nimport '../../../../../global/app.css';\n// import OverflowMenuHorizontal16 from '@carbon/icons/es/overflow-menu--horizontal/16';\nimport DateTimeCellRenderer from '../renderers/date-time-cell-renderer';\nimport { RenderConfig } from './interfaces/gridInterfaces';\nimport ActionsRenderer from '../renderers/actions-renderer';\nimport { getActionColumnWidth, sortActionItemOrder, splitActionList } from '../../../../../udp-utilities/grid/action-renderers/action-column-util';\nimport { GridApi } from 'ag-grid-enterprise';\nimport { lazySetupAgGridLibrary } from '../../../../../global/ag-grid';\nimport { Memoize } from 'fast-typescript-memoize';\nimport { GridReadyEvent } from 'ag-grid-community';\nimport StatusRenderer from '../renderers/status-renderer';\nimport IconRenderer from '../renderers/icon-renderer';\nimport CurrencyRenderer from '../renderers/currency-renderer';\nimport { cloneDeep } from 'lodash';\nimport { v4 as uuid } from 'uuid';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\n\ntype NotificationStatus = 'error' | 'success' | 'warning';\n\n@Component({\n tag: 'ambient-template-grid',\n styleUrl: './ambient-template-grid.css',\n shadow: true,\n})\nexport class AmbientTemplateGrid {\n private prevPivotMode: boolean;\n //private dynamicFormRef: HTMLUdpDynamicFormElement;\n\n @Event() viewSaved: EventEmitter;\n @Event() externalEmitter: EventEmitter;\n @Event() filterChanged: EventEmitter;\n @Element() el: HTMLElement;\n\n @Prop() columnDefs: any[] = [];\n @Prop() fullViewData: any = {};\n @Prop() rowData: any[] = [];\n @Prop() viewListrowData: any[] = [];\n @Prop() gridState: any[] = [];\n @Prop() gridId: string = '';\n @Prop({ mutable: true }) apiCatalogId: string = '';\n @Prop() userId: string = '';\n @Prop() userPermissions: any[] = [];\n @Prop({ mutable: true }) apiMethodId: string = '';\n @Prop({ mutable: true }) lookupApiMethodId: string = '';\n @Prop({ mutable: true }) entityName: string = '';\n @Prop() menuItems: Array<any> = [];\n @Prop() gridBarTitle: string = '';\n @Prop() viewChips: Array<any> = [];\n @Prop() additionalFilterChips: Array<any> = [];\n @Prop() kpiValues: Array<any> = [];\n @Prop() showAdvancedSearchFeature: boolean = true;\n @Prop() showFilterColumnFeature: boolean = true;\n @Prop() queryId: string = '';\n @Prop() defaultSearchObject: Array<any> = [];\n @Prop() defaultSearchObjectOperator: number = 1; // 1 for AND, 2 for OR\n @Prop() actionId: string = '';\n @Prop() cellClickHandler: (value: any, callback: any) => void;\n @Prop() cellClickHandlerX: (value: any, callback: any) => void;\n @Prop() viewActionClickHandler: (value: any, callback: any) => void;\n @Prop() renderConfigs: RenderConfig[] = [];\n // @Prop() externalPayload: any = {}; // check to see if it fixes the issue with adding an empty object\n @Prop() externalPayload: any = null;\n @Prop() dataEmitter: any = {};\n @Prop() dataEmitterRequest: any = {};\n @Prop() fitGrid: string = '';\n @Prop() hotListIdentifier: string = '';\n @Prop() searchKey: Object = {};\n @Prop({ mutable: true }) filterObject: any = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ];\n @Prop({ mutable: true }) externalSearchFilter: Array<any> = [];\n @Prop() noResults: boolean = false;\n @Prop() maxChipsAllowed: number = 5;\n @Prop() suppressMenuHide: boolean = true; // default show column menu option without hovering\n @Prop() showRank: boolean = false;\n @Prop() showHotlistButton: boolean = false;\n @Prop() columnNames: { [key: string]: string } = {};\n @Prop() buttonTransform: string = '';\n @Prop() rowGrouping: Array<any> = [];\n @Prop() restrictBulkActionsPermissions: boolean = false;\n @Prop() restrictedGridFeatures: { [key: string]: string } = {};\n @Prop() triggerGridUpdate: boolean = false;\n @Prop() hideActionsColumn: boolean = false; //temporary, need better approach\n @Prop() primaryActionLabel: string;\n @Prop() primaryActionOnClick: (e: any) => void;\n @Prop() primaryActionIcon: string;\n @Prop() showInsightsAction: boolean = false;\n @Prop() insightsActionOnClick: (e: any) => void;\n @Prop() hideBulkActions: boolean = false;\n @Prop() enableCheckboxOnColumns: boolean = false;\n @Prop() hiddenColumnsList: Array<string> = [];\n @Prop() hideDefaultSearchFilterChips: boolean = false;\n @Prop() executeBulkAction: (actionId: string, data: any) => void;\n @Prop() bulkActionFunctions: Object = {};\n @Prop() exportFunction: (entityName: string, searchObject: Object) => void;\n @Prop() hiddenActionButtons: Array<string> = [];\n @Prop() rowIdField: string | null = null;\n @Prop() defaultSearchMode: 'advanced' | 'standard' = 'standard';\n @Prop() disableSearchSwitch: boolean = false;\n @Prop() disableGridPersistance: boolean = false;\n\n @State() drawerOpen: boolean = false;\n @State() filterPanelOpen: boolean = true;\n @State() saveDialogOpen: boolean = false;\n @State() editDialogOpen: boolean = false;\n @State() editViewConfirmationDialogOpen: boolean = false;\n @State() gridOptionsDrawerOpen: boolean = false;\n @State() viewListGridOptions: GridOptions;\n @State() filterChips: Array<any> = [];\n @State() promotedEntity: any = {};\n @State() isServerSide: boolean = true;\n @State() showNotification: boolean = false;\n @State() notificationMessage: string = '';\n @State() notificationStatus: NotificationStatus = 'success';\n @State() loadedView: Array<any> = [];\n @State() loadedViewTitle: string = '';\n @State() loadedViewData: string = '';\n @State() currentColumnOrdering: Array<any> = [];\n @State() currentHiddenColumns: Array<any> = [];\n @State() rowsSelected: boolean = false;\n @State() selectedRowCount: number = 0;\n @State() serverColumnDefs: Array<any> = [];\n @State() isSetupComplete: boolean = false;\n @State() extendedSearchFilterList: Array<any> = [];\n @State() viewListRowData: Array<any> = [];\n @State() bulkActions: Array<any> = [];\n @State() sheetContent: string = 'advancedSearch';\n @State() searchObject: SearchObject = { filterElements: [] };\n @State() configuredColumnDefs: Array<any> = [];\n @State() hasConfiguredColumnDefs: boolean = false;\n @State() fullDataColumns: any[] = [];\n @State() filterOn: string = '';\n @State() gridOptions: GridOptions;\n @State() agGrid:\n | undefined\n | {\n api: GridApi<any>;\n // @note As of ag-grid@v31 ColumnApi has been deprecated and all methods will move to api.\n columnApi: ColumnApi;\n };\n @State() hasSearchRank: boolean;\n @State() serverSideDatasource: IServerSideDatasource | undefined;\n @State() tempSearchObject: { searchField: string; searchOperator: string; searchValue: any; groupId: number } = {\n searchField: '',\n searchOperator: '',\n searchValue: '',\n groupId: 1,\n };\n @State() catalogList: any = {};\n @State() dataRowClicked: any = {};\n @State() advancedSearchFilterList: Array<any> = [];\n @State() allHotlists: Array<any> = [];\n @State() externalToggle: string = '';\n @State() viewId: string = '';\n @State() defaultFilterObject: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [\n // {\n // \"searchField\": \"genderCode\",\n // \"searchOperator\": \"=\",\n // \"searchValue\" : \"1\"\n // }\n ],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ];\n\n @State() filterRenderList: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [\n // {\n // \"searchField\": \"Title\",\n // \"searchOperator\": \"IN\",\n // \"searchValue\": \"VP\"\n // }\n ],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ];\n @State() logicalSearchOperator: number = 1;\n @State() lookupsMap: any = null;\n @State() formattedBulkActions: { label: string; value: string }[] = [];\n @State() advancedDrawerOpen: boolean = false;\n @State() viewDrawerOpen: boolean = false;\n @State() hotlistDrawerOpen: boolean = false;\n @State() customSearchDrawerOpen: boolean = false;\n @State() businessObjectKey: string;\n @State() hotListActive: string;\n @State() hotListCount: number = 0;\n @State() hotListId: string;\n @State() loadedHotlistTitle: string = '';\n @State() showHotlistForm: boolean = false;\n @State() confirmDialog: boolean = false;\n @State() confirmDialogDeleteView: boolean = false;\n @State() filteredCount: Array<any> = [];\n @State() hotlistSelectedFull: object = {};\n @State() advancedGroupSearchNodeId: string = '';\n @State() otherId: string = '';\n @State() updateForConfiguredColumnDefs: boolean = true;\n @State() filterObjectsWithGroups: Array<any> = [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: 'AND',\n filters: [],\n },\n ];\n @State() loadedGridView: object = {};\n @State() linearLoading: boolean = false;\n @State() selectedGridId: string = '';\n @State() selectedViewName: string = '';\n @State() selectedViewIsDefault: boolean = false;\n @State() selectedViewGridViewVisibilityTypeId: number;\n @State() selectedGridViewGridConfigurations: any[];\n @State() allFilters: Array<any> = [];\n @State() visibleChips: any[];\n @State() overflowChips: any[];\n @State() overflowActive: boolean = false;\n @State() setSearchStart: boolean = false;\n @State() refreshChips: boolean = false;\n @State() gridUID: string = '';\n @State() recentSearches: any[] = [];\n @State() recentSearchesOptions: any[] = [];\n @State() isRecentSearch: boolean = false;\n @State() gridError: boolean = false;\n @State() gridHeight: string = 'calc(100vh - 200px)';\n @State() openActionPopoverMenu: boolean = false;\n @State() selectedRowParams: ICellRendererParams;\n @State() actionMenuAnchorElement: HTMLElement;\n @State() overflowActionMenuItems: ActionItem[];\n @State() initialFilterData: any = {\n filterObjectsWithGroups: [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: 'AND',\n filters: [],\n },\n ],\n logicalSearchOperator: 1,\n filterObject: [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ],\n filterRenderList: [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ],\n };\n @State() defaultColumnState: any[] = null;\n @State() _distinctValueStore: any = {};\n @State() _distinctsCached: boolean = false;\n @State() shouldForceEmptyResults: boolean = false;\n @State() enableAdvancedSearch: boolean = true;\n @State() toggleSearchModeConfirmationDialogOpen: boolean = false;\n @State() enableDefaultView: boolean = true;\n @State() resetToOriginalColumnDefs: boolean = false;\n @State() prevFilterObject: any[] = [];\n viewListcolumnDefs: any[];\n\n @Watch('triggerGridUpdate')\n handleTriggerGridUpdate(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue && this.agGrid) {\n this.agGrid?.api?.refreshServerSide({ purge: true });\n this.updateServerSideDatasource('', 'advanced search sheet');\n }\n }\n\n @Event() selectedIdsChanged: EventEmitter<number[]>;\n\n @Listen('noDataDetected', { target: 'document' })\n noDataHandler() {\n this.linearLoading = false;\n this.noResults = true;\n }\n\n\n @Watch('catalogList')\n watchHandler(newVal: any, _oldVal: any) {\n if (newVal) {\n this.filterByCatalogObjectName(this.entityName);\n }\n }\n\n @Memoize()\n async getApiCatalogId(): Promise<string> {\n if (this.apiCatalogId) return this.apiCatalogId;\n\n const fetchedData = await getApiCatalogAndProduct();\n return (this.apiCatalogId = fetchedData.apiCatalogId);\n }\n\n async getApiMethodId(): Promise<string> {\n if (this.apiMethodId) return this.apiMethodId;\n\n const apiMethodInstance = await this.getApiMethodInstance();\n const apiMethodId = apiMethodInstance.apiMethodId;\n if (!apiMethodId) {\n throw new Error('apiMethodId not found');\n }\n\n return (this.apiMethodId = apiMethodId);\n }\n\n async getLookupApiMethod(): Promise<string> {\n if (this.lookupApiMethodId) return this.lookupApiMethodId;\n\n const promotedLookupMethod = await this.getPromotedLookupMethod();\n return (this.lookupApiMethodId = promotedLookupMethod?.unityBaseGetDataMethod?.apiMethodId);\n }\n\n @Memoize()\n async getApiMethodInstance() {\n return await getApiMethodInstance(this.queryId);\n }\n\n @Memoize()\n async getApiMethod() {\n return await getApiMethod(await this.getApiMethodId());\n }\n\n @Memoize()\n async getPromotedLookupMethod() {\n return await getPromotedLookupMethod(await this.getApiCatalogId());\n }\n\n @Memoize()\n async getFilterBody() {\n const apiMethodInstance = await this.getApiMethodInstance();\n return apiMethodInstance.body;\n }\n\n /**\n * Get column definitions from props or API Method Instance catalogModification\n */\n async getColumnDefinitions(): Promise<any[]> {\n if (this.columnDefs && this.columnDefs.length > 0) return this.columnDefs;\n\n const apiMethodInstance = await this.getApiMethodInstance();\n return JSON.parse(apiMethodInstance.catalogModification);\n }\n\n async getEntityName() {\n if (this.entityName) return this.entityName;\n\n const apiMethod = await this.getApiMethod();\n return (this.entityName = apiMethod.entityName);\n }\n\n updateFilterObject(recipe: (state: Draft<any[]>) => any[] | void | undefined) {\n this.filterObject = produce(this.filterObject, recipe);\n }\n\n async filterByCatalogObjectName(catalogObjectName: string) {\n if (!this.catalogList) {\n console.warn('catalogList is empty or undefined.');\n return;\n }\n // change to list from UdpGridColumnDefs\n const catalogObjectList = this.catalogList?.ctlg?.catalogObjectList;\n if (Array.isArray(catalogObjectList)) {\n catalogObjectList.forEach(object => {\n if (object.catalogObjectName === catalogObjectName) {\n const names = object.properties.map(property => {\n return { name: property.name };\n });\n this.advancedSearchFilterList = names;\n }\n });\n } else {\n console.warn('catalogObjectList is not an array or is undefined.');\n }\n }\n\n // PUTS apiCatalogData into localStorage\n getExtendedAdvancedSearchFilterList = async () => {\n\n try {\n const apiCatalogId = await this.getApiCatalogId();\n let apiCatalogData: any;\n\n // Retrieve apiCatalogData from localForage or make the API call if not found\n apiCatalogData = await localforage.getItem('apiCatalogData');\n if (!apiCatalogData) {\n // Fetch data from the API if not available in localForage\n apiCatalogData = await getApiCatalogById(apiCatalogId);\n // Store the fetched data in localForage for future use\n await localforage.setItem('apiCatalogData', apiCatalogData);\n }\n\n const transformedData = useTreeDatasource(apiCatalogData, await this.getEntityName(), true, true, '', '', '');\n\n if (transformedData) {\n state.catalogData = apiCatalogData;\n this.extendedSearchFilterList = transformedData;\n } else {\n console.error('No data returned from useTreeDatasource');\n }\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching API Catalog:', error);\n }\n };\n\n constructor() {\n this.changeOperator = this.changeOperator?.bind(this);\n }\n changeOperator(event: CustomEvent) {\n // Convert string to integer\n const convertedValue = parseInt(event.detail, 10);\n // Update the state\n this.logicalSearchOperator = convertedValue;\n }\n\n @Method()\n async updateFilterAndFetch(newFilter: Array<any>) {\n this.updateFilterObject(() => [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [...newFilter],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ]);\n // Now call updateServerSideDatasource\n this.updateServerSideDatasource('', 'updateFilterAndFetch');\n }\n\n buildSearchFilterElements(filterElement, forObject, isInitialFilterElement) {\n let filterElementObject = {\n id: uuid(),\n groupId: 1,\n isInitialFilterElement: isInitialFilterElement,\n originalSearchOperator: filterElement.searchOperator,\n originalSearchValue: filterElement.searchValue,\n searchLabel: this.getHeaderFieldLabel(filterElement.searchField),\n ...filterElement,\n };\n\n if (forObject) {\n filterElementObject = {\n id: uuid(),\n otherId: uuid(),\n level: 0,\n ...filterElementObject,\n };\n }\n\n return filterElementObject;\n }\n\n @Watch('externalSearchFilter')\n @Watch('defaultSearchObject')\n async handleFilteringSetup() {\n const filterBodyStr = await this.getFilterBody();\n const filterBody = !!filterBodyStr && typeof filterBodyStr === 'string' ? JSON.parse(filterBodyStr) : {};\n const intialFilterElements = filterBody?.filterElements || [];\n const updatedInitialFilterElementsForObject = [];\n\n const rootFilterGroupId = uuid();\n intialFilterElements.forEach(filterElement => {\n updatedInitialFilterElementsForObject.push({\n id: uuid(),\n filterGroupId: rootFilterGroupId,\n groupId: 1,\n isInitialFilterElement: true,\n searchLabel: this.getHeaderFieldLabel(filterElement.searchField),\n ...filterElement,\n });\n });\n\n // construct filterElements from defaultSearchObject props\n (this.defaultSearchObject ?? []).forEach(searchObj => {\n updatedInitialFilterElementsForObject.push(this.buildSearchFilterElements(searchObj, false, true));\n });\n\n // construct filterElements from filterObject props\n this.externalSearchFilter.forEach(filterElement => {\n updatedInitialFilterElementsForObject.push(this.buildSearchFilterElements(filterElement, false, false));\n });\n\n this.filterObjectsWithGroups = [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: this.getLogicalOperatorValue(1),\n filters: [],\n children: [\n {\n id: 'default',\n filterGroupId: rootFilterGroupId,\n logicalOperator: this.getLogicalOperatorValue(this.defaultSearchObjectOperator),\n filters: updatedInitialFilterElementsForObject,\n },\n ],\n },\n ];\n\n this.initialFilterData.filterObjectsWithGroups = cloneDeep(this.filterObjectsWithGroups);\n\n this.logicalSearchOperator = filterBody?.logicalSearchOperator || 1;\n this.initialFilterData.logicalSearchOperator = filterBody?.logicalSearchOperator || 1;\n const initialFilterObject = cloneDeep(this.initialFilterData.filterObject);\n initialFilterObject[0].filterElements = [...updatedInitialFilterElementsForObject];\n this.initialFilterData.filterObject = initialFilterObject;\n this.initialFilterData.filterRenderList = cloneDeep(this.initialFilterData.filterObject);\n\n this.filterObject = this.updateFilterGroups(this.filterObjectsWithGroups);\n\n this.filterRenderList = cloneDeep(this.filterObject);\n this.handleColumnSizing();\n this.updateChipLayout();\n }\n\n async componentWillLoad() {\n this.gridError = false;\n\n this.gridUID = this.gridId + '-' + this.queryId;\n\n await this.handleAdditionalSetup();\n\n this.viewListcolumnDefs = [\n {\n headerName: 'Name',\n field: 'name',\n resizable: true, // Enable resizing\n height: 100,\n },\n {\n field: 'gridViewVisibilityTypeId',\n cellRenderer: CustomRenderer,\n height: '100px',\n },\n {\n headerName: 'Actions',\n field: 'gridViewId',\n cellRenderer: CustomActionsRenderer,\n cellRendererParams: {\n onClick: this.handleLoadView,\n },\n },\n ];\n\n // Preload the ag-Grid library\n lazySetupAgGridLibrary({ LicenseKey });\n\n // Grab list of recent searches from local storage\n this.getRecentSearches();\n\n this.enableAdvancedSearch = this.defaultSearchMode === 'advanced';\n }\n\n waitForGrid(callback: () => void) {\n const observer = new MutationObserver(([], observer) => {\n const myGrid = this.el.shadowRoot.querySelector('#myGrid');\n if (myGrid) {\n observer.disconnect(); // Stop observing once the grid is found\n callback();\n }\n });\n\n observer.observe(this.el.shadowRoot, {\n childList: true, // Observe direct children changes\n subtree: true, // Observe nested children changes\n });\n }\n\n componentDidLoad() {\n lazySetupAgGridLibrary({ LicenseKey })\n .then(() => {\n // Initialize the ag-Grid\n this.waitForGrid(() => this.initializeGrid());\n })\n .catch(error => {\n this.gridError = true;\n console.error('Error during grid initialization:', error);\n });\n\n SharedContext.myClickCallback = this.cellClickHandler?.bind(this);\n SharedContext.viewActionCallback = this.viewActionClickHandler?.bind(this);\n SharedContext.thirdActionCallback = this.cellClickHandlerX?.bind(this);\n SharedContext.hotListAddHandler = otherCellValue => {\n this.businessObjectKey = otherCellValue;\n };\n\n // Can handle add or delete hotlist record from a list\n SharedContext.hotListAddHandler = otherCellValue => {\n function findMatchingHotListId(dataObject: any, otherCellValue: any): string | null {\n for (const record of dataObject.records) {\n const parsedData = JSON.parse(record.data);\n\n if (parsedData.businessObjectKey === otherCellValue.businessObjectKey) {\n return record.hotListRecordId;\n }\n }\n return null;\n }\n\n this.businessObjectKey = otherCellValue;\n if (!this.hotListActive) {\n this.hotlistDrawerOpen = true;\n } else {\n const matchingHotListId = findMatchingHotListId(this.hotlistSelectedFull, otherCellValue);\n removeRecordFromHotlist(matchingHotListId);\n const hotlistSelectedFull: HotListObject = this.hotlistSelectedFull as HotListObject;\n this.removeFilterItem({\n searchField: 'contactId',\n searchValue: matchingHotListId,\n });\n this.handleRequestHotlist(hotlistSelectedFull.hotListId);\n }\n };\n\n this.updateChipLayout();\n window.addEventListener('resize', this.updateChipLayout);\n }\n\n handleLinerLoading = (isLoading: boolean) => {\n this.linearLoading = isLoading;\n };\n\n //#region Action Renderer\n updateActionRendererState = (event: any, params: any) => {\n this.openActionPopoverMenu = !this.openActionPopoverMenu;\n this.selectedRowParams = params;\n this.actionMenuAnchorElement = event.currentTarget;\n };\n\n handleOnCloseActionPopover = event => {\n event?.preventDefault();\n this.selectedRowParams = null;\n this.openActionPopoverMenu = false;\n this.actionMenuAnchorElement = null;\n };\n\n getOverflowActionList = (overflowActions, params) => {\n return overflowActions?.map((action: ActionItem) => {\n const disabledAction = action?.checkDisabled ? action?.checkDisabled(params) : action?.disabled ?? false;\n const actionTitle = action?.getTitle ? action?.getTitle(params) : action?.title;\n return (\n <udp-menu-item\n label={actionTitle}\n iconName={action?.iconName}\n disabled={disabledAction}\n handleOnClick={e => {\n action?.handleOnClick(e, params);\n }}\n />\n );\n });\n };\n //#endregion\n\n // Main search call to server (old)\n updateServerSideDatasource(requestType: string, specialType: string) {\n console.warn('(dead branch) updateServerSideDataSouced: ', specialType);\n\n // Optionally close the drawer.\n if (requestType !== 'remove') {\n this.drawerOpen = false;\n this.advancedDrawerOpen = false;\n }\n }\n //#region Column Defs\n @Watch('configuredColumnDefs')\n @Watch('columnNames')\n @Watch('bulkActions')\n changeServerColumnDefs() {\n const updateColumnDefs = serverColumnDefs => {\n // Start with serverColumnDefs and update hide property\n let updatedColumns = serverColumnDefs.map(columnDef => {\n const hide = false;\n return {\n ...columnDef,\n hide: hide,\n };\n });\n\n // Add any columns from fullDataColumns that are not in serverColumnDefs\n this.fullDataColumns.forEach(column => {\n if (!serverColumnDefs.some(serverColumn => serverColumn.field === column.field) && this.showRank) {\n const hide = column.field !== 'searchRank';\n updatedColumns.push({ ...column, hide: hide });\n }\n });\n\n // Update the column header names\n if (this.columnNames) {\n const updatedColumnsWithNewNames = updatedColumns.map(obj => ({\n ...obj,\n headerName: this.columnNames[obj.headerName] || obj.headerName, // Use dictionary value or fallback to original value\n }));\n\n // Update the state or the updatedColumns with the new names\n updatedColumns = updatedColumnsWithNewNames;\n }\n\n // Hide column\n if (rowGroups.length > 0 && rowGroups) {\n let groupProps = null;\n groupProps = rowGroups.map(prop => prop.toLowerCase());\n updatedColumns = updatedColumns.map(column => {\n // Check if this column's field is present in groupProperty\n const hide = groupProps.includes(column.field.toLowerCase());\n return {\n ...column,\n hide: hide,\n };\n });\n }\n\n return updatedColumns;\n };\n const displayColumns = updateColumnDefs(this.configuredColumnDefs);\n\n const modifiedColumnDefs = displayColumns.map(column => {\n // Check if this column's headerName is present in displayColumns\n const isColumnDisplayed = displayColumns.find(displayColumn => displayColumn.headerName === column.headerName);\n // If it's not present, add the 'hide' property\n if (!isColumnDisplayed) {\n if (column.headerName === 'Search Rank') {\n return { ...column, sortable: false, hide: this.hasSearchRank ? false : true };\n } else {\n return { ...column, hide: true };\n }\n }\n // If it is present, return the column as is\n return column;\n });\n\n const addRenderers = (columnDefs, renderConfigs) => {\n return columnDefs.map(colDef => {\n // Find a matching configuration for this column\n const config = renderConfigs.find(cfg => cfg.field === colDef.field);\n if (config) {\n // Merge existing cellRendererParams with ones from config, prioritizing config params\n const cellRendererParams = {\n ...colDef.cellRendererParams,\n ...config.cellRendererParams,\n otherField: config.otherField, // Assuming you might want to keep using this pattern\n callbackId: config.callbackId,\n showViewAction: true,\n showThirdAction:\n this.showHotlistButton &&\n !(this.restrictedGridFeatures?.Hotlist && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Hotlist)),\n };\n\n if (config?.rendererName === 'actionsRenderer') {\n const maximumVisibleActions = 4;\n //set minWidth and maxWidth for action columns\n const actionColumnWidth = getActionColumnWidth(config?.cellRendererParams?.actionList);\n colDef.minWidth = actionColumnWidth;\n colDef.maxWidth = actionColumnWidth;\n\n //sort action list\n const sortedActionList = sortActionItemOrder([...config.cellRendererParams.actionList]);\n\n if (config?.cellRendererParams?.actionList?.length > maximumVisibleActions) {\n // Split the action list if there are more than 4 actions\n const { visibleActions, overflowActions } = splitActionList(sortedActionList, maximumVisibleActions - 1);\n this.overflowActionMenuItems = overflowActions;\n visibleActions.push({\n id: 100,\n iconName: 'overflowMenuVertical',\n title: 'View More',\n handleOnClick: this.updateActionRendererState.bind(this),\n disabled: false,\n });\n\n cellRendererParams.actionList = visibleActions;\n }\n }\n\n if (config.rendererName === 'currencyRenderer') {\n colDef.type = 'rightAligned';\n }\n\n return {\n ...colDef,\n cellRenderer: config.rendererName,\n cellRendererParams: cellRendererParams,\n };\n }\n return colDef; // Return original colDef if no matching config is found\n });\n };\n\n const addActionsColumn = columnDefs => {\n const actionsColumnExists = columnDefs.some(column => column.field === 'actions');\n if (!actionsColumnExists && !this.hideActionsColumn) {\n const actionsColumn = {\n headerName: 'Actions',\n field: 'actions',\n cellRendererParams: {\n shouldDisplayCustomContent: false,\n },\n cellRenderer: 'hotListAddRenderer',\n pinned: 'right',\n };\n columnDefs.push(actionsColumn);\n }\n return columnDefs;\n };\n\n const CHECKBOX_FIELD = 'checkbox';\n const addCheckboxColumn = columnDefs => {\n var bulkActions = this.bulkActions; // check if bulk actions are configured, if not then skip adding checkboxes\n if (bulkActions?.length > 0 || this.enableCheckboxOnColumns) {\n const checkboxColumnExists = columnDefs.some(column => column.field === CHECKBOX_FIELD);\n if (!checkboxColumnExists) {\n columnDefs = columnDefs.map(col => {\n if (col.field !== CHECKBOX_FIELD) {\n return {\n ...col,\n suppressPinned: true,\n suppressMovable: false,\n sortable: true,\n };\n }\n return col;\n });\n\n const checkboxColumn = {\n headerName: '', // No title for the checkbox column\n field: CHECKBOX_FIELD,\n checkboxSelection: true, // This enables the checkbox selection feature\n headerCheckboxSelection: this.enableCheckboxOnColumns, // set to false now as the server-size for select all is not fully implemented\n pinned: 'left', // Pinned to the left\n lockVisible: true, // This prevents the column from being hideable\n maxWidth: 70,\n filter: false, // no need to show filter for this column\n menuTabs: [], // Disables the menu in the column header\n sortable: false, // Disables sorting for this column\n suppressMovable: true,\n lockPosition: true,\n lockPinned: true,\n };\n columnDefs.unshift(checkboxColumn); // Use unshift to add it at the start of the array\n }\n }\n return columnDefs;\n };\n\n const addToolTip = columnDefs => {\n return columnDefs.map(colDef => {\n colDef.tooltipField = colDef.field;\n colDef.headerTooltip = colDef.headerName;\n return { ...colDef };\n });\n };\n\n // Usage of the function to add checkbox column\n const columnDefsWithCheckbox = addCheckboxColumn(modifiedColumnDefs);\n\n // Add the Actions column to the definitions with checkbox\n let columnDefsWithActions = addActionsColumn(columnDefsWithCheckbox);\n\n // Reorder the columns based on the currentColumnOrdering\n if (this.currentColumnOrdering.length > 0) {\n const reorderedColumns = this.currentColumnOrdering.map(currentColOrder => columnDefsWithActions.find(col => col.field === currentColOrder.colId));\n // Update the columnDefs with the reordered columns\n columnDefsWithActions = reorderedColumns;\n }\n\n // Update each column definition's 'hide' property with the value from grid state\n if (this.currentHiddenColumns?.length > 0) {\n columnDefsWithActions = columnDefsWithActions.map(colDef => {\n const hiddenCol = this.currentHiddenColumns.find(hiddenCol => hiddenCol.colId === colDef.field);\n if (hiddenCol) {\n return { ...colDef, hide: hiddenCol.hide };\n }\n return colDef;\n });\n }\n\n const columnDefsWithToolTips = addToolTip(columnDefsWithActions);\n\n // Now pass this updated array to addRenderers or other manipulation functions\n const columnDefsWithRenderers = addRenderers(columnDefsWithToolTips, this.renderConfigs);\n this.serverColumnDefs = cloneDeep(columnDefsWithRenderers);\n }\n\n @Watch('hiddenColumnsList')\n watchHiddenColumnList() {\n if (this.gridIsReady) {\n const newDefaultState = this.defaultColumnState.map(col => {\n const shouldHide = this.hiddenColumnsList.includes(col.colId);\n return {\n ...col,\n hide: shouldHide,\n };\n });\n this.defaultColumnState = newDefaultState;\n //TODO here might not want to apply column state if a view is active\n if (this.loadedView.length === 0) {\n this.agGrid.columnApi.applyColumnState({ state: this.defaultColumnState, applyOrder: true });\n }\n }\n }\n\n @Watch('configuredColumnDefs')\n configuredColumnDefsChanged(newValue: Array<any>) {\n this.hasConfiguredColumnDefs = newValue.length > 0;\n }\n //#endregion\n\n @Watch('isServerSide')\n // @Watch('apiMethodId')\n // @Watch('agGrid')\n @Watch('filterObject')\n @Watch('logicalSearchOperator')\n @Watch('lookupsMap')\n // @Watch('accessToken')\n // @Watch('tenantId')\n changeServerSideDatasource(_newValue?: any, _oldValue?: any, propName?: string) {\n console.log(`changeServerSideDatasource triggered by ${propName || 'unknown'}`);\n this.linearLoading = true;\n\n // Ensure all prerequisites are met before attempting to update the data source.\n if (!this.isServerSide || !this.apiMethodId) {\n this.linearLoading = false;\n console.warn(`Grid update prerequisites not met. isServerSide: ${this.isServerSide}, apiMethodId: ${this.apiMethodId}`);\n return;\n }\n\n if (propName === 'lookupsMap' && !this.lookupsMap) {\n console.warn('lookupsMap is not set, skipping datasource update');\n return;\n }\n\n if (propName === 'filterObject' && this.filterObject === this.prevFilterObject) {\n console.warn('Filter object has not changed, skipping datasource update');\n return;\n }\n this.prevFilterObject = cloneDeep(this.filterObject);\n\n this.noResults = false;\n\n let datasource = SearchServiceDatasource(\n null,\n this.gridUID,\n this.isRecentSearch,\n this.apiMethodId,\n this.hotListActive && this.extractContactIDs(this.hotlistSelectedFull).length === 0,\n this.filterObject,\n this.logicalSearchOperator,\n this.getLookupApiMethod(),\n executeQueryAdHocAndMapLookups,\n this.lookupsMap,\n this.defaultSearchObject,\n (dataFetched, totalCount) => {\n try {\n if (totalCount === 0) {\n this.linearLoading = false;\n }\n\n this.fullDataColumns = convertToAgGridColumns(dataFetched);\n this.hasSearchRank = !!dataFetched?.[0]?.searchRank;\n if (this.agGrid) {\n this.agGrid.api.removeEventListener('modelUpdated', this._onModelUpdated);\n this.agGrid.api.addEventListener('modelUpdated', this._onModelUpdated);\n }\n } catch (error) {\n this.gridError = true;\n console.error('Error processing data fetched for the grid:', error);\n }\n\n // Update list of recent searches\n this.getRecentSearches();\n this.isRecentSearch = false;\n },\n this.handleLinerLoading,\n );\n\n const wrappedDatasource = this.withFilterTracking(datasource);\n this.serverSideDatasource = wrappedDatasource;\n this.getGridState(true);\n }\n\n private _onModelUpdated = () => {\n const rowCount = this.agGrid.api.getDisplayedRowCount();\n this.getExtendedAdvancedSearchFilterList();\n\n if (rowCount === 0) {\n this.linearLoading = false;\n }\n this.handleColumnSizing();\n };\n\n cacheDistinctValues(rowData) {\n rowData.forEach(row => {\n Object.keys(row).forEach(field => {\n if (!this._distinctValueStore[field]) {\n this._distinctValueStore[field] = new Set();\n }\n this._distinctValueStore[field].add(row[field]);\n });\n });\n }\n\n withFilterTracking(datasource) {\n const originalGetRows = datasource.getRows;\n this._distinctValueStore = {};\n this._distinctsCached = false;\n\n datasource.getRows = params => {\n const wrappedParams = {\n ...params,\n success: data => {\n const rowData = data?.rowData || [];\n\n if (!this._distinctsCached) {\n this.cacheDistinctValues(rowData);\n this._distinctsCached = true;\n\n let columnDefinitions = this.populateColumnDefsWithDistinctValues();\n if (this.hiddenColumnsList?.length > 0) {\n columnDefinitions = columnDefinitions.map(colDef => ({\n ...colDef,\n hide: this.hiddenColumnsList.includes(colDef.field),\n }));\n }\n this.agGrid?.api?.setColumnDefs(columnDefinitions);\n this.setDefaultView();\n this.defaultColumnState = this.agGrid?.columnApi?.getColumnState();\n this.handleColumnSizing();\n }\n\n this.noResults = data.rowData.length === 0;\n params.success(data);\n },\n };\n\n originalGetRows(wrappedParams, this.shouldForceEmptyResults);\n };\n return datasource;\n }\n\n populateColumnDefsWithDistinctValues() {\n if (!this.gridIsReady || !this.agGrid?.columnApi) {\n console.warn('Grid is not ready yet, skipping column population');\n return [];\n }\n const stateMap = Object.fromEntries(this.agGrid.columnApi.getColumnState().map(s => [s.colId, s]));\n const agColumns = this.agGrid.columnApi.getColumns();\n const currentDefs = this.resetToOriginalColumnDefs\n ? this.serverColumnDefs ?? []\n : (agColumns?.length ?? 0) > 0\n ? agColumns.map(col => ({\n ...col.getColDef(),\n ...(stateMap?.[col.getColId()] ?? {}),\n }))\n : [];\n\n const newDefs = currentDefs.map(col => {\n if (!col.field) return col;\n return {\n ...col,\n filter: 'agSetColumnFilter',\n filterParams: {\n values: params => {\n const distinct = Array.from(this._distinctValueStore[col.field] || []);\n params.success(distinct);\n },\n refreshValuesOnOpen: true,\n },\n };\n });\n\n this.resetToOriginalColumnDefs = false;\n return newDefs;\n }\n\n @Watch('serverSideDatasource')\n @Watch('agGrid')\n setServerSideDatasource() {\n this.gridError = false;\n // Set the new data source and trigger a refresh.\n if (this.agGrid) {\n try {\n this.agGrid.api.setServerSideDatasource(this.serverSideDatasource);\n // No need to call refreshServerSide() as setting the datasource will implicitly refresh it.\n } catch (error) {\n this.gridError = true;\n console.error('Error setting server-side datasource:', error);\n }\n } else {\n this.serverSideDatasource.getRows({\n api: undefined,\n columnApi: undefined,\n context: undefined,\n request: {\n startRow: 0,\n endRow: 20,\n rowGroupCols: [],\n valueCols: [],\n pivotCols: [],\n pivotMode: false,\n groupKeys: [],\n filterModel: {},\n sortModel: [],\n // @ts-expect-error -- Prefetch property is custom\n prefetch: true,\n },\n fail() {},\n success() {},\n });\n }\n }\n\n adjustGridScroll() {\n const gridViewport = this.el.querySelector('.ag-center-cols-viewport') as HTMLElement;\n if (gridViewport && gridViewport.style) {\n gridViewport.style.overflowY = 'hidden';\n }\n const scrollViewport = this.el.querySelector('.ag-body-viewport.ag-layout-normal') as HTMLElement;\n if (scrollViewport && scrollViewport.style) {\n scrollViewport.style.overflowY = 'hidden';\n }\n }\n\n triggerResizeEvent() {\n let resizeEvent = new CustomEvent('resize');\n window.dispatchEvent(resizeEvent);\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.updateChipLayout();\n }\n\n @Watch('serverColumnDefs')\n serverColumnDefsChanged(newValue: any[]) {\n if (newValue && newValue.length != 0 && !this.isSetupComplete) {\n this.handleSecondarySetup();\n this.isSetupComplete = true;\n }\n this.updateChipLayout();\n }\n\n @Watch('filterRenderList')\n watchChipLayoutChanges() {\n this.updateChipLayout();\n }\n\n private selectedRowMap: Record<string, any> = {};\n private gridIsReady = false;\n initializeGrid() {\n this.gridOptions = {\n animateRows: true,\n ...(this.isServerSide ? { rowModelType: 'serverSide' } : {}),\n ...(this.isServerSide ? { serverSideStoreType: 'partial' } : {}),\n ...(this.isServerSide ? { cacheOverflowSize: 2 } : {}),\n ...(this.isServerSide ? { cacheBlockSize: 20 } : {}),\n ...(this.isServerSide ? { maxConcurrentDatasourceRequests: 1 } : {}),\n pagination: true,\n paginationPageSize: 20,\n rowHeight: 32,\n defaultColDef: {\n filter: !this.enableAdvancedSearch,\n menuTabs: this.enableAdvancedSearch ? ['generalMenuTab', 'columnsMenuTab'] : ['generalMenuTab', 'filterMenuTab', 'columnsMenuTab'],\n resizable: true,\n },\n rowSelection: 'multiple',\n ...(this.rowIdField && {\n getRowId: params => {\n const id = params.data?.[this.rowIdField];\n if (!id) {\n console.warn(`Missing ID for row using rowIdField=\"${this.rowIdField}\"`, params.data);\n return params.rowIndex?.toString(); // fallback\n }\n return id;\n },\n }),\n suppressRowClickSelection: true,\n onRowSelected: event => {\n const node = event.node;\n const rowId = node.id;\n\n if (!rowId) return;\n\n if (node.isSelected()) {\n this.selectedRowMap[rowId] = node.data;\n } else {\n delete this.selectedRowMap[rowId];\n }\n\n this.selectedRowCount = Object.keys(this.selectedRowMap).length;\n this.rowsSelected = this.selectedRowCount > 0;\n },\n onCellClicked: event => {\n this.dataRowClicked = event.data;\n },\n components: {\n emailCellRenderer: EmailCellRenderer,\n openFunctionCellRenderer: OpenFunctionCellRenderer,\n hoverContentCellRenderer: HoverContentCellRenderer,\n hotListAddRenderer: HotListAddRenderer,\n dateTimeCellRenderer: DateTimeCellRenderer,\n actionsRenderer: ActionsRenderer,\n statusRenderer: StatusRenderer,\n iconRenderer: IconRenderer,\n currencyRenderer: CurrencyRenderer,\n },\n columnDefs: this.serverColumnDefs,\n rowData: this.rowData,\n serverSideDatasource: this.serverSideDatasource,\n sideBar: this.filterPanelOpen\n ? {\n toolPanels: [\n {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n },\n {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n toolPanelParams: {\n suppressRowGroups: true,\n suppressValues: true,\n suppressPivots: true,\n suppressPivotMode: true,\n },\n },\n ],\n defaultToolPanel: '',\n }\n : null,\n onGridReady: (event: GridReadyEvent<any>) => {\n this.agGrid = {\n api: event.api,\n columnApi: event.columnApi,\n };\n\n this.gridIsReady = true;\n const tryResize = () => {\n try {\n // If loadedView/loadedViewData aren't ready or throw, fallback to just resizing\n const view = this.loadedView;\n const data = this.loadedViewData;\n\n const skipResize = Array.isArray(view) && Array.isArray(data) ? view.length !== 0 || data.length !== 0 : false;\n\n if (!skipResize) {\n this.handleColumnSizing();\n }\n } catch (error) {\n // Fallback: just attempt resizing if any error occurs\n this.handleColumnSizing();\n }\n };\n\n [500, 1000, 2000, 3000, 4000, 5000, 6000, 10000, 20000].forEach(delay => {\n setTimeout(tryResize, delay);\n });\n\n this.getGridState?.();\n this.adjustGridScroll?.();\n },\n onColumnMoved: () => {\n if (this.gridIsReady) {\n this.currentColumnOrdering = this.agGrid.columnApi.getColumnState();\n }\n this.getGridState(true);\n },\n onColumnVisible: () => {\n if (this.gridIsReady) {\n this.currentHiddenColumns = this.agGrid.columnApi.getColumnState();\n }\n this.getGridState(true);\n },\n onColumnResized: () => {\n let gridFilters = localStorage.getItem('currentGridFilters');\n if (!gridFilters || gridFilters?.length === 0) {\n this.getGridState();\n } else {\n this.getGridState(true);\n }\n },\n onColumnPinned: () => {\n this.getGridState(true);\n },\n onFilterChanged: () => {\n const filterModel = this.agGrid.api.getFilterModel();\n this.transformAndApplyFilters(filterModel);\n this.getGridState(true);\n },\n onSortChanged: () => {\n this.getGridState(true);\n },\n onFirstDataRendered: () => {\n this.getGridState();\n // Here you can also check if pivot mode has changed\n if (this.gridIsReady) {\n const isPivotMode = this.agGrid.columnApi.isPivotMode();\n if (isPivotMode !== this.prevPivotMode) {\n this.getPivotModeState(); // Replace with your actual method\n this.prevPivotMode = isPivotMode;\n }\n this.handleColumnSizing();\n }\n },\n onFilterOpened: params => {\n const field = params.column.getColDef().field;\n const customFilters = this.filterObject?.[0]?.filterElements || [];\n\n // Get all filterElements matching the column and operator '='\n const matchingFilters = customFilters.filter(f => f.searchField.toLowerCase() === field.toLowerCase() && f.searchOperator === '=');\n\n if (matchingFilters.length === 0) return;\n\n const filterInstance = params.api.getFilterInstance(field);\n\n if (filterInstance) {\n const values = matchingFilters.map(f => f.searchValue);\n filterInstance.setModel({\n values,\n });\n\n if (typeof filterInstance.refreshFilterUi === 'function') {\n filterInstance.refreshFilterUi();\n }\n }\n },\n suppressMenuHide: this.suppressMenuHide,\n tooltipShowDelay: 1000,\n } as unknown as GridOptions;\n const myGrid = this.el.shadowRoot.querySelector('#myGrid');\n if (myGrid) {\n new window['agGrid'].Grid(myGrid, this.gridOptions);\n }\n }\n\n handleSearchModeToggle() {\n this.toggleSearchModeConfirmation(true);\n }\n\n confirmSearchModeToggle() {\n this.enableAdvancedSearch = !this.enableAdvancedSearch;\n // switching from advanced to standard\n if (!this.enableAdvancedSearch) {\n this.noResults = true;\n this.refreshOnNoResults();\n } else {\n this.noResults = true;\n this.refreshOnNoResults(false);\n }\n this.toggleSearchModeConfirmation(false);\n }\n\n @Watch('defaultSearchMode')\n handleDefaultSearchModeChange(newValue: 'advanced' | 'standard') {\n this.enableAdvancedSearch = newValue === 'advanced';\n }\n\n @Watch('enableAdvancedSearch')\n onSearchModeChange() {\n this.reinitializeGrid();\n }\n\n toggleSearchModeConfirmation(show: boolean) {\n this.toggleSearchModeConfirmationDialogOpen = show;\n }\n\n reinitializeGrid() {\n if (this.agGrid?.api) {\n this.agGrid.api.destroy();\n this._distinctsCached = false; // Reset distincts cache\n this._distinctValueStore = {}; // Reset distinct value store\n }\n this.initializeGrid();\n }\n\n // After apiCatalogId is pushed into localStorage\n handleGetPromotedLookupMethod = async () => {\n try {\n // Fetch the API Catalog ID, but don't await it since may not be needed yet\n this.getApiCatalogId().then(apiCatalogId => {\n if (!apiCatalogId) {\n this.gridError = true;\n throw new Error('apiCatalogId is undefined');\n }\n });\n\n localStorage.setItem('lookupApiMethodId', await this.getLookupApiMethod());\n\n let productList = state.catalogData;\n this.catalogList = productList;\n } catch (error) {\n this.gridError = true;\n console.error('Error performing API call:', error);\n }\n };\n\n handleGetInstanceAndMethod = async () => {\n localStorage.setItem('apiMethodId', await this.getApiMethodId());\n\n // Save data to local storage\n const catalogModificationP = this.getColumnDefinitions();\n\n const getConfiguredColumnDefs = UdpGridColumnDefs(await catalogModificationP);\n getConfiguredColumnDefs.forEach(column => {\n if (this.rowGrouping.includes(column.field)) {\n column.rowGroup = true;\n column.hide = true;\n }\n });\n this.configuredColumnDefs = getConfiguredColumnDefs;\n this.lookupsMap = this.getLookupsMap(await catalogModificationP);\n };\n\n async getLookupId(lookupsMap: any) {\n if (!lookupsMap) return null;\n\n const lookupToFilterOn = Object.values(lookupsMap).find((item: any) => item.filterOn);\n const lookupId = (lookupToFilterOn as any)?.value || '';\n\n const uuidPattern = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;\n\n if (!lookupId || typeof lookupId !== 'string' || !uuidPattern.test(lookupId)) {\n console.error('Invalid lookupId', lookupId);\n return null;\n }\n\n // Call the function and await its result\n const data = await executeQueryWithParameters(\n {\n data: {\n id: lookupId,\n },\n },\n await this.getLookupApiMethod(),\n );\n this.filterChips = data.data;\n return lookupId;\n }\n\n getLookupsMap(queryColumnsData) {\n if (!queryColumnsData.length) return null;\n const map = {};\n const lookupColumns = queryColumnsData.filter(column => {\n const lookupValue = column.extendedProperties?.lookup;\n return !!lookupValue;\n });\n\n lookupColumns.forEach(lc => {\n map[lc.name] = {\n lookupKeyName: lc.extendedProperties?.lookupKeyName || '',\n lookupValueName: lc.extendedProperties?.lookupValueName || '',\n value: lc.extendedProperties?.lookup || '',\n filterOn: !!lc.filterOn || false,\n };\n });\n this.getLookupId(map);\n const keys = Object.keys(map);\n const keyString = keys[0];\n this.filterOn = keyString;\n return map;\n }\n\n async handleAdditionalSetup() {\n // Ensure handleGetPromotedLookupMethod is awaited to complete before proceeding.\n await this.handleGetPromotedLookupMethod();\n\n // After awaiting, check again for lookupApiMethodId in localStorage.\n if (await this.getLookupApiMethod()) {\n await this.handleGetInstanceAndMethod();\n } else {\n // If lookupApiMethodId is still not set, it means there was an issue in handleGetPromotedLookupMethod.\n console.error('Failed to retrieve lookupApiMethodId - handleAdditionalSetup aborted.');\n // Return or handle the error as needed.\n }\n }\n\n handleSecondarySetup = async () => {\n this.fetchAvailableGridActions();\n this.filterByCatalogObjectName(this.entityName);\n await this.fetchDataForViews();\n this.transformBulkActions();\n this.handleGetAllHotlists();\n };\n\n getGridState(setAutoGridState = false) {\n if (this.gridOptions && this.gridIsReady) {\n const columnState = this.agGrid.columnApi.getColumnState();\n const columnGroupState = this.agGrid.columnApi.getColumnGroupState();\n const filterModel = this.filterObjectsWithGroups;\n const isPivotMode = this.agGrid.columnApi.isPivotMode();\n const sortModel = columnState.filter(column => column.sort != null);\n\n const gridState = [];\n const columnGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column,\n gridId: this.gridId,\n values: JSON.stringify(columnState),\n };\n const columnGroupGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Group,\n gridId: this.gridId,\n values: JSON.stringify(columnGroupState),\n };\n const columnSortGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Sort,\n gridId: this.gridId,\n values: JSON.stringify(sortModel),\n };\n const columnFilterGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Filter,\n gridId: this.gridId,\n values: JSON.stringify(filterModel),\n };\n const pivotGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Pivot_Mode,\n gridId: this.gridId,\n values: JSON.stringify(isPivotMode),\n };\n gridState.push(columnGridConfiguration);\n gridState.push(columnGroupGridConfiguration);\n gridState.push(columnSortGridConfiguration);\n gridState.push(columnFilterGridConfiguration);\n gridState.push(pivotGridConfiguration);\n\n this.gridState = gridState;\n let gridStateObject = {\n state: gridState,\n tenantId: getCurrentTenantId(),\n gridId: this.gridId,\n loadedGridViewName: null,\n };\n\n if (setAutoGridState && !this.disableGridPersistance) {\n let savedGridStatesString = localStorage.getItem('savedGridStates');\n if (!savedGridStatesString) {\n localStorage.setItem('savedGridStates', JSON.stringify([gridStateObject]));\n } else {\n let currentGridStateObj = this.getCurrentGridState();\n if (!currentGridStateObj) {\n let savedGridStatesArray = JSON.parse(savedGridStatesString) ?? [];\n savedGridStatesArray.push(gridStateObject);\n localStorage.setItem('savedGridStates', JSON.stringify(savedGridStatesArray));\n } else {\n this.saveCurrentGridState({\n ...currentGridStateObj,\n state: gridState,\n });\n }\n }\n }\n }\n }\n\n onFirstDataRendered(gridData) {\n if (this.hotListActive) {\n this.handleRemoveHotlist();\n }\n let gridConfigurations = [];\n let gridConfigArray = [];\n if (gridData?.state) {\n gridConfigArray = gridData.state;\n let loadedGridViewName = gridData.loadedGridViewName;\n if (loadedGridViewName?.length > 0) {\n this.loadedViewTitle = loadedGridViewName;\n }\n this.loadedView = gridConfigArray;\n }\n if (gridData?.gridViewGridViewGridConfiguration) {\n this.loadedViewTitle = gridData.name;\n gridConfigArray = gridData?.gridViewGridViewGridConfiguration;\n }\n if (gridConfigArray && gridConfigArray?.length > 0) {\n gridConfigArray.forEach(config => {\n let state = config;\n if (config?.gridViewGridConfigurationGridConfiguration) {\n state = config?.gridViewGridConfigurationGridConfiguration;\n }\n if (state) {\n gridConfigurations.push({\n gridConfigurationId: state?.gridConfigurationId ?? 0,\n gridStateTypeId: state?.gridStateTypeId,\n });\n switch (state.gridStateTypeId) {\n case GridStateTypeEnums.Column:\n this.loadedViewData = state.values;\n if (this.gridIsReady) {\n this.agGrid.columnApi.applyColumnState({\n state: JSON.parse(state.values),\n applyOrder: true,\n });\n }\n break;\n case GridStateTypeEnums.Pivot_Mode:\n if (this.gridIsReady) {\n this.agGrid.columnApi.setPivotMode(JSON.parse(state.values));\n }\n break;\n case GridStateTypeEnums.Column_Sort:\n if (this.gridIsReady) {\n const currentColumnState = this.agGrid.columnApi.getColumnState();\n const newColumnState = JSON.parse(state.values);\n const mergedState = currentColumnState.map(col => newColumnState.find(newCol => newCol.colId === col.colId) || col);\n this.agGrid.columnApi.applyColumnState({ state: mergedState });\n }\n break;\n case GridStateTypeEnums.Column_Filter:\n let filterObjects = JSON.parse(state.values);\n (this.defaultSearchObject ?? []).forEach(defaultFilter => {\n let filterExists = false;\n\n for (let fo of filterObjects) {\n if (Array.isArray(fo.filters)) {\n const match = fo.filters.find(f => f.searchField === defaultFilter.searchField);\n if (match) {\n match.isInitialFilterElement = true;\n filterExists = true;\n break;\n }\n }\n }\n\n if (!filterExists) {\n const newFilter = this.buildSearchFilterElements(defaultFilter, true, true);\n const target = filterObjects.find(fo => Array.isArray(fo.filters));\n if (target) {\n target.filters.push(newFilter);\n } else {\n filterObjects.push({ filters: [newFilter] });\n }\n }\n });\n\n this.filterObject\n .flatMap(({ filterElements }) => filterElements)\n .forEach(filterElement => {\n const exists = filterObjects[0].filters.some(filter => filter.searchField === filterElement.searchField);\n if (!exists) {\n filterObjects[0].filters.push(this.buildSearchFilterElements(filterElement, true, false));\n }\n });\n break;\n case GridStateTypeEnums.Column_Group:\n if (this.gridIsReady) {\n this.agGrid.columnApi.setColumnGroupState(JSON.parse(state.values));\n }\n break;\n default:\n break;\n }\n }\n });\n if (this.filterChips?.length === 0) {\n let currentGridStateObj = this.getCurrentGridState();\n let filters = currentGridStateObj;\n if (currentGridStateObj?.gridViewGridViewGridConfiguration) {\n filters = currentGridStateObj?.gridViewGridViewGridConfiguration;\n }\n if (filters) {\n this.updateChipLayout();\n }\n }\n } else {\n }\n this.selectedGridViewGridConfigurations = gridConfigurations;\n this.handleColumnSizing();\n }\n\n primaryActionClick(type: string) {\n if (type === 'advancedSearch') {\n this.advancedDrawerOpen = !this.advancedDrawerOpen;\n } else if (type === 'views') {\n this.viewDrawerOpen = !this.viewDrawerOpen;\n } else if (type === 'customSearch') {\n this.customSearchDrawerOpen = !this.customSearchDrawerOpen;\n } else {\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n }\n }\n\n // Opens the drop down menu of the gear icon in the header\n showGridOptions() {\n this.gridOptionsDrawerOpen = !this.gridOptionsDrawerOpen;\n }\n\n resetToOriginalFilters() {\n this.filterObjectsWithGroups = cloneDeep(this.initialFilterData.filterObjectsWithGroups);\n this.filterObject = cloneDeep(this.initialFilterData.filterObject);\n this.logicalSearchOperator = cloneDeep(this.initialFilterData.logicalSearchOperator);\n this.filterRenderList = cloneDeep(this.initialFilterData.filterRenderList);\n this.updateChipLayout();\n }\n\n clearViewFilter() {\n if (this.gridOptions && this.agGrid) {\n const { api, columnApi } = this.agGrid;\n\n api.setQuickFilter('');\n columnApi.setRowGroupColumns([]);\n api.setFilterModel(null);\n columnApi.applyColumnState({ state: this.defaultColumnState, applyOrder: true });\n }\n state.hotListActive = '';\n\n let currentGridStateObj = this.getCurrentGridState();\n if (currentGridStateObj) {\n this.saveCurrentGridState({\n ...currentGridStateObj,\n state: null,\n loadedGridViewName: null,\n });\n }\n this.loadedGridView = null;\n this.loadedViewTitle = '';\n this.loadedView = [];\n this.setCurrentViewData('', false, null, null);\n\n this.resetToOriginalColumnDefs = true;\n this.refreshGrid();\n }\n\n clearFilters() {\n this.enableDefaultView = true;\n this.refreshOnNoResults();\n if (this.gridOptions && this.agGrid) {\n const { api } = this.agGrid;\n\n api.setQuickFilter('');\n api.setFilterModel(null);\n }\n }\n\n refreshGrid() {\n this.changeServerSideDatasource();\n this.handleColumnSizing();\n }\n\n handleColumnSizing = () => {\n if (this.fitGrid === 'fit') {\n this.fitColumns();\n } else {\n this.expandColumns();\n }\n };\n\n refreshOnNoResults = (resetFilters: boolean = true) => {\n this.hotListActive = '';\n this.loadedView = [];\n\n if (this.noResults) {\n lazySetupAgGridLibrary({ LicenseKey })\n .then(() => {\n this.handleSecondarySetup();\n })\n .catch(error => {\n this.gridError = true;\n console.error('Error refreshing the grid on no results:', error);\n });\n }\n this.updateServerSideDatasource('', 'advanced search sheet');\n if (resetFilters) {\n this.resetToOriginalFilters();\n }\n\n this.handleColumnSizing();\n this.noResults = false;\n };\n\n // ONCLICK FUNCTIONS for grid-primary-bar and stencil-icon-button-grid-action-header\n exportToCsv() {\n if (this.agGrid) {\n const params = {};\n this.agGrid.api.exportDataAsCsv(params);\n }\n }\n fitColumns() {\n if (this.gridOptions && this.agGrid) {\n this.agGrid.api.sizeColumnsToFit();\n }\n }\n expandColumns() {\n if (this.gridOptions && this.gridIsReady) {\n const allCols = this.agGrid.columnApi.getAllDisplayedColumns();\n const colIds = allCols.map(col => col.getColId());\n this.agGrid.columnApi.autoSizeColumns(colIds);\n }\n }\n togglePanel(panelType) {\n const panelTypes = ['filters', 'columns'];\n panelTypes.forEach(type => {\n if (type !== panelType) {\n const otherPanelOpenKey = `${type}PanelOpen`;\n this[otherPanelOpenKey] = false; // Close other panel if open\n }\n });\n\n const panelOpenKey = `${panelType}PanelOpen`;\n this[panelOpenKey] = !this[panelOpenKey]; // Toggle the current panel\n\n // Create the toolPanel configuration based on the panelType\n const toolPanelConfig = {\n id: panelType,\n labelDefault: panelType.charAt(0).toUpperCase() + panelType.slice(1),\n labelKey: panelType,\n iconKey: panelType === 'filters' ? 'filter' : 'columns',\n toolPanel: panelType === 'filters' ? 'agFiltersToolPanel' : 'agColumnsToolPanel',\n toolPanelParams: {\n suppressRowGroups: true,\n suppressValues: true,\n suppressPivots: true,\n suppressPivotMode: true,\n },\n };\n\n // Update gridOptions to reflect new sidebar settings\n this.gridOptions.sideBar = this[panelOpenKey]\n ? {\n toolPanels: [toolPanelConfig],\n defaultToolPanel: panelType,\n }\n : null;\n\n this.agGrid.api.setSideBarVisible(this[panelOpenKey]);\n\n if (this[panelOpenKey]) {\n this.agGrid.api.openToolPanel(panelType);\n } else {\n this.agGrid.api.closeToolPanel();\n }\n\n // Apply Direct DOM Manipulation\n const sidebarElement = this.el.shadowRoot.querySelector('.ag-side-bar');\n if (sidebarElement instanceof HTMLElement) {\n sidebarElement.style.width = this[panelOpenKey] ? '200px' : 'initial';\n }\n }\n toggleServerSide = () => {\n this.isServerSide = !this.isServerSide;\n };\n getPivotModeState() {\n if (this.gridOptions && this.gridIsReady) {\n return this.agGrid.columnApi.isPivotMode();\n }\n return false;\n }\n\n // VIEW FUNCTIONS\n showViews() {\n this.viewDrawerOpen = !this.viewDrawerOpen;\n this.sheetContent = 'views';\n }\n showViewSave() {\n this.saveDialogOpen = !this.saveDialogOpen;\n }\n resetDefaultView = () => {\n const domain = this.entityName;\n this.viewListRowData.forEach(item => {\n if (item.isDefault === true) {\n try {\n updateView(item.gridViewId, this.userId, this.gridId, this.apiCatalogId, item.name, 0, domain, item.gridViewVisibilityTypeId, data => {\n console.log('updateView, data: ', data);\n });\n } catch (error) {\n console.error('Error updating view, data:', error);\n }\n }\n });\n };\n setCurrentViewData(viewName: string, isDefault: boolean, gridViewVisibilityTypeId: number, gridViewId: string = '') {\n this.selectedGridId = gridViewId || this.selectedGridId;\n this.selectedViewName = viewName;\n this.selectedViewIsDefault = isDefault;\n this.selectedViewGridViewVisibilityTypeId = gridViewVisibilityTypeId;\n }\n openViewEdit(gridViewId: string, viewName: string, isDefault: boolean, gridViewVisibilityTypeId: number) {\n this.editDialogOpen = !this.editDialogOpen;\n this.setCurrentViewData(viewName, isDefault, gridViewVisibilityTypeId, gridViewId);\n }\n closeViewEdit() {\n this.editDialogOpen = !this.editDialogOpen;\n }\n openViewEditConfirmation(name: string, isPrivate: number, isDefault: boolean) {\n this.showViewEditConfirmation(true);\n this.setCurrentViewData(name, isDefault, isPrivate);\n }\n showViewEditConfirmation(show: boolean) {\n this.editViewConfirmationDialogOpen = show;\n }\n\n async handleViewFormSubmit(name: string, isPrivate: number, isDefault: boolean, columnState) {\n const userId = this.userId;\n const gridId = this.gridId;\n const apiCatalogId = this.apiCatalogId;\n const gridConfigurations = columnState; // The columnState from the argument\n const isDefaultNum: number = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n // if newDefault == 1, then we need to make sure any existing view with isDefault=1 is set to =0\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n\n // Now call saveView\n try {\n await saveView(userId, gridId, apiCatalogId, name, domain, gridConfigurations, isPrivate, isDefaultNum, data => {\n this.saveDialogOpen = !this.saveDialogOpen; // closes form\n this.showNotification = true;\n this.notificationMessage = `${data.gridView.name} has been saved successfully.`;\n this.notificationStatus = 'success';\n this.fetchDataForViews();\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n console.error('Error saving data:', error);\n }\n }\n // Ensures each GridConfiguration has the correct GridConfigurationID for updating in the database\n updateGridConfigurationsWithIDsForUpdatingView(gridConfigs: any[]) {\n gridConfigs.forEach(config => {\n if (this.selectedGridViewGridConfigurations) {\n const gridConfigInfo = this.selectedGridViewGridConfigurations.find(item => item.gridStateTypeId === config.gridStateTypeId);\n config.gridConfigurationId = gridConfigInfo?.gridConfigurationId;\n }\n });\n return gridConfigs;\n }\n // Handler for saving changes to an existing GridView and its GridConfigurations\n async handleViewAndConfigurationsUpdate(name: string, isPrivate: number, isDefault: boolean, columnState) {\n const gridConfigurations = this.updateGridConfigurationsWithIDsForUpdatingView(columnState);\n const isDefaultNum: number = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n\n try {\n await updateViewAndConfigurations(\n this.selectedGridId,\n this.userId,\n this.gridId,\n this.apiCatalogId,\n name,\n gridConfigurations,\n isDefaultNum,\n domain,\n isPrivate,\n () => {\n this.saveDialogOpen = !this.saveDialogOpen; // closes form\n this.showViewEditConfirmation(false);\n this.showNotification = true;\n this.notificationMessage = `${name} has been saved successfully.`;\n this.notificationStatus = 'success';\n this.fetchDataForViews();\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n },\n );\n } catch (error) {\n console.error('Error saving data:', error);\n }\n }\n\n // Used for both hotlists and views\n toggleDeleteDialog = type => {\n switch (type) {\n case 'hotlist':\n this.confirmDialog = !this.confirmDialog;\n break;\n case 'view':\n this.confirmDialogDeleteView = !this.confirmDialogDeleteView;\n break;\n default:\n break;\n }\n };\n updateDefaultView = item => {\n var newDefault = item.isDefault ? 0 : 1;\n const domain = this.entityName;\n // if newDefault == 1, then we need to make sure any existing view with isDefault=1 is set to =0\n if (newDefault == 1) {\n this.resetDefaultView();\n }\n try {\n updateView(\n item.gridViewId,\n this.userId,\n this.gridId,\n this.apiCatalogId,\n item.name,\n newDefault,\n domain,\n item.gridViewVisibilityTypeId,\n data => {\n console.log('updateView, data:', data);\n },\n ).then(() => {\n this.fetchDataForViews();\n this.confirmDialog = false;\n this.showNotification = true;\n this.notificationMessage = `Updated default view.`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n this.gridError = true;\n console.error('Error updating view, data:', error);\n }\n };\n\n getCurrentGridState = () => {\n let savedStatesString = localStorage.getItem('savedGridStates');\n let currentGridStateObj = null;\n if (savedStatesString) {\n let savedStatesArray = JSON.parse(savedStatesString) ?? [];\n if (savedStatesArray?.length > 0) {\n currentGridStateObj = savedStatesArray?.filter((i: any) => i?.tenantId && i?.tenantId === getCurrentTenantId() && i?.gridId && i?.gridId === this.gridId)[0];\n } else {\n }\n }\n return currentGridStateObj;\n };\n\n saveCurrentGridState = (gridStateObject: any) => {\n let savedGridStatesString = localStorage.getItem('savedGridStates');\n if (savedGridStatesString) {\n let savedGridStatesArray = JSON.parse(savedGridStatesString) ?? [];\n let newArray = savedGridStatesArray.map((s: any) => {\n if (s?.tenantId && s?.tenantId === getCurrentTenantId() && s?.gridId && s?.gridId === this.gridId) {\n s = gridStateObject;\n }\n return s;\n });\n localStorage.setItem('savedGridStates', JSON.stringify(newArray));\n } else {\n localStorage.setItem('savedGridStates', JSON.stringify([gridStateObject]));\n }\n };\n\n async handleViewUpdate(gridId: any, name: string, isPrivate: number, isDefault: boolean) {\n var isDefaultNum = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n\n // if this isDefault is true, then we need to make sure any existing view with isDefault=1 is set to =0\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n try {\n updateView(gridId, this.userId, this.gridId, this.apiCatalogId, name, isDefaultNum, domain, isPrivate, data => {\n console.log('updateView, data:', data);\n }).then(() => {\n this.fetchDataForViews();\n this.confirmDialog = false;\n this.showNotification = true;\n this.notificationMessage = `Updated view.`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n this.gridError = true;\n console.error('Error updating view, data:', error);\n }\n }\n fetchDataForViews = async () => {\n try {\n const apiCatalogId = await this.getApiCatalogId();\n if (!apiCatalogId) {\n console.warn('apiCatalogId is not yet defined');\n return;\n }\n\n const entityName = await this.getEntityName();\n const data = await new Promise<any[]>(resolve => {\n getAvailableViews(this.userId, this.gridId, apiCatalogId, entityName, resolve);\n });\n\n this.viewListRowData = data;\n this.setDefaultView();\n this.updateForConfiguredColumnDefs = false;\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching data for views:', error);\n }\n };\n\n renderViewCallback = data => {\n this.onFirstDataRendered(data);\n this.loadedGridView = data;\n if (data?.name) {\n this.loadedViewTitle = data.name;\n\n let currentGridStateObject = this.getCurrentGridState();\n if (currentGridStateObject) {\n this.saveCurrentGridState({\n ...currentGridStateObject,\n loadedGridViewName: data?.name,\n });\n } else {\n this.saveCurrentGridState({\n gridId: this.gridId,\n gridState: null,\n loadedGridViewName: data?.name,\n });\n }\n }\n this.getGridState(true);\n };\n\n setDefaultView = () => {\n if (this.enableDefaultView) {\n const defaultViewObj = this.viewListRowData.find(item => item.isDefault === true);\n if (defaultViewObj) {\n this.setCurrentViewData(defaultViewObj.name, true, defaultViewObj.gridViewVisibilityTypeId, defaultViewObj.gridViewId);\n getSelectedView(defaultViewObj.gridViewId, this.renderViewCallback);\n }\n }\n\n if (!this.disableGridPersistance) {\n let currentGridStateObj = this.getCurrentGridState();\n if (currentGridStateObj) {\n this.onFirstDataRendered(currentGridStateObj);\n }\n }\n };\n openDeleteViewConfirmation = gridViewId => {\n this.viewId = gridViewId;\n this.confirmDialogDeleteView = true;\n };\n handleDeleteView = () => {\n this.confirmDialogDeleteView = false;\n const callback = () => {\n // Will send to grid to update view\n getAvailableViews(this.userId, this.gridId, this.apiCatalogId, this.entityName, data => {\n this.viewListRowData = data; // Ensure this correctly updates the state\n });\n };\n deleteSelectedView(this.viewId, callback);\n this.showNotification = true;\n this.notificationMessage = `Deleted view`;\n this.notificationStatus = 'success';\n\n // remove view if deleted view is applied view\n if ((this.loadedGridView as any)?.gridViewId === this.viewId) {\n this.clearViewFilter();\n }\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n };\n\n // HOTLIST FUNCTIONS\n showHotlist() {\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n this.businessObjectKey = null;\n this.logicalSearchOperator = 2;\n }\n // set hotlist form open\n toggleHotlistForm = () => {\n this.showHotlistForm = !this.showHotlistForm;\n };\n handleGetAllHotlists = async () => {\n try {\n const hotlistData = await getAllHotlists();\n this.allHotlists = hotlistData;\n } catch (error) {\n console.error('Error fetching hotlists:', error);\n }\n };\n // Add a hotlist item single\n handleSetSingleHotlistItem = id => {\n this.showNotification = true;\n this.notificationMessage = `Record added to hotlist`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n const businessObjectKey = this.dataRowClicked.businessObjectKey;\n // Update the dataObject\n const dataObject = {\n hotListId: id, // Assuming id is already defined\n contextDate: '2023/01/01',\n data: JSON.stringify(this.dataRowClicked),\n entityBusinessObjectKey: businessObjectKey,\n currentUserId: '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380',\n };\n addRecordToAHotlist(dataObject);\n };\n // delete a selected hotlist\n confirmRequestDelete = hotListId => {\n this.confirmDialog = !this.confirmDialog;\n this.hotListId = hotListId;\n };\n handleRequestDeleteHotlist = () => {\n deleteAHotlist(this.hotListId)\n .then(() => {\n this.handleGetAllHotlists();\n this.confirmDialog = false;\n })\n .catch(error => {\n console.error('Error deleting hotlist:', error);\n // handle any errors here\n });\n };\n // convert hotlist to payload\n mapHotlistsToPayload(hotlistIdentifiers) {\n return hotlistIdentifiers.map(keyID => ({\n searchField: this.hotListIdentifier,\n searchOperator: '=',\n searchValue: keyID,\n }));\n }\n updateFilterObjectWithPayload(hotlistSearchKeys) {\n // clear view if active\n this.loadedView = [];\n this.resetToOriginalFilters();\n this.updateChipLayout();\n\n const payload = this.mapHotlistsToPayload(hotlistSearchKeys);\n this.hotListCount = payload.length;\n this.updateFilterObject(() => [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: payload,\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'hotlist',\n },\n ]);\n this.updateServerSideDatasource('', 'updateFilterObjectWithPayload');\n this.hotlistDrawerOpen = false;\n }\n // extract id to process for search object\n extractContactIDs = payload => {\n const contactIDs = payload.records.map(record => {\n const dataObject = JSON.parse(record.data);\n return dataObject[this.hotListIdentifier];\n });\n return contactIDs;\n };\n // view a selected hotlist\n handleRequestHotlist = async hotlistID => {\n try {\n // Await for the Promise to resolve and then store the result\n const hotloadList = await loadAHotlist(hotlistID);\n\n // Process the data with extractContactIDs\n const contactIDs = this.extractContactIDs(hotloadList);\n this.hotListActive = hotloadList.name;\n state.hotListActive = this.hotListActive;\n\n // Set full list hotlist data\n this.hotlistSelectedFull = hotloadList;\n\n // Send the processed data to sendAsSearchObject\n this.updateFilterObjectWithPayload(contactIDs);\n } catch (error) {\n // Handle any errors that occur during the API call\n this.gridError = true;\n console.error('Error in handleRequestHotlist:', error);\n }\n };\n handleLoadView = cellValue => {\n getSelectedView(cellValue, this.renderViewCallback);\n this.viewDrawerOpen = !this.viewDrawerOpen;\n };\n // Submit to save hotlist\n handleSaveHotlist = async (name: string, isPrivate: boolean) => {\n const hostListRequestBody = {\n domain: this.entityName,\n name: name,\n tenantId: getCurrentTenantId(),\n isPrivate: isPrivate,\n createdBy: this.userId,\n hotListDataSourceId: 1,\n hotListTypeId: 2,\n };\n\n try {\n await createAHotlist(hostListRequestBody);\n this.showHotlistForm = false;\n this.handleGetAllHotlists();\n } catch (error) {\n console.error('Error creating hotlist:', error);\n // handle any errors here\n }\n };\n\n // FILTER CHIP FUNCTIONS\n hasInitializedDefaultFilter = false; // Add this flag as a property in your class\n defaultFilterElements: any; // Replace any with your specific type\n activeChips: any[] = [];\n\n handleViewChipDelete = () => {\n this.loadedView = [];\n this.enableDefaultView = false;\n this.clearViewFilter();\n };\n\n handleRemoveHotlist = () => {\n this.hotListActive = '';\n this.loadedView = [];\n this.clearViewFilter();\n state.hotListActive = '';\n };\n\n fullClearSearch = () => {\n // this.filterObjectsWithGroups[0].filters.length = 0; // clears the form UI\n\n // this.updateFilterObject(() => [\n // {\n // pageNumber: 1,\n // pageSize: 20,\n // filterElements: [],\n // orderElements: [],\n // groupingType: '',\n // groupProperty: [],\n // groupOperationList: [],\n // eagerLoad: false,\n // logicalSearchOperator: 2,\n // type: 'advanced',\n // },\n // ]);\n this.resetToOriginalFilters();\n\n this.hotListActive = null;\n state.hotListActive = null;\n this.updateServerSideDatasource('', 'clearSearch');\n };\n\n setFilterFromChips(chipText: string) {\n const isChipValid = this.filterChips.some(chip => chip.description === chipText);\n if (!isChipValid) {\n return;\n }\n\n const index = this.activeChips.findIndex(chip => chip.description === chipText);\n // Initialize defaultFilterElements once, and only once\n if (!this.hasInitializedDefaultFilter) {\n if (this.filterObject && this.filterObject[0] && this.filterObject[0].filterElements) {\n this.defaultFilterElements = JSON.parse(JSON.stringify(this.filterObject[0].filterElements));\n this.hasInitializedDefaultFilter = true;\n }\n }\n\n // Toggle the chip on or off in activeChips\n if (index !== -1) {\n this.activeChips.splice(index, 1);\n } else {\n const chip = this.filterChips.find(chip => chip.description === chipText);\n this.activeChips.push(chip);\n }\n\n this.updateFilterObject(filterObject => {\n // Clear existing FirstName filters from filterElements\n filterObject[0].filterElements = filterObject[0].filterElements.filter(element => {\n return element.searchField !== this.filterOn;\n });\n\n // Re-add filters based on activeChips\n for (const chip of this.activeChips) {\n const searchValue = chip[this.filterOn] ? chip[this.filterOn] : chip.description;\n filterObject[0].filterElements.push({\n searchField: this.filterOn, // @todo: make this dynamic from api\n searchOperator: '=',\n searchValue: searchValue,\n });\n }\n\n // If all chips are deactivated, revert to default pre-set filter\n if (this.activeChips.length === 0) {\n filterObject[0].filterElements = JSON.parse(JSON.stringify(this.defaultFilterElements));\n }\n });\n\n this.logicalSearchOperator = 2;\n // Update the server-side datasource to apply the new filters\n this.updateServerSideDatasource('', 'setFilterChips');\n }\n\n setFilterSelections(filter) {\n const currentFilterObject = this.filterRenderList[0];\n currentFilterObject.filterElements = [...currentFilterObject.filterElements, filter];\n // Update the filterRenderList with the modified filter object\n this.filterRenderList = [currentFilterObject, ...this.filterRenderList.slice(1)];\n }\n\n // ADVANCED SEARCH FUNCTIONS\n showCustomSearch() {\n this.customSearchDrawerOpen = !this.customSearchDrawerOpen;\n }\n showAdvancedSearch() {\n this.advancedDrawerOpen = !this.advancedDrawerOpen;\n this.logicalSearchOperator = 1;\n this.setSearchStart = false;\n }\n\n setGroupedFilterSelections(filter: any) {\n // Try to find corresponding domain field from configuredColumnDefs because only grid columns configured in query builder could have an alias.\n const searchFieldAlias = this.configuredColumnDefs?.find(col => col.field.toLowerCase() === filter.searchField.toLowerCase())?.headerName;\n\n // Prepare the filter object with the new ID\n const newFilter = { ...filter, searchFieldAlias: searchFieldAlias };\n\n // Function to recursively find and update the correct node\n const addFilterToNode = (nodes: any[], nodeId: string, filter: any) => {\n for (const node of nodes) {\n if (node.filterGroupId === nodeId) {\n const newFilter = { ...filter, id: uuid(), filterGroupId: node.filterGroupId };\n node.filters.push(newFilter);\n return true; // Stop searching when the correct node is updated\n }\n if (node.children && node.children.length > 0) {\n if (addFilterToNode(node.children, nodeId, filter)) {\n return true; // Stop searching if the correct node was found in the children\n }\n }\n }\n return false; // Node not found in this branch\n };\n\n addFilterToNode(this.filterObjectsWithGroups, this.advancedGroupSearchNodeId, newFilter);\n this.handleSearchItemChange();\n }\n\n setGroupedSearchSections(groupId: string, filterGroupId: string, logicalOperator: 'AND' | 'OR') {\n const newChild = {\n id: uuid(),\n filterGroupId: filterGroupId,\n logicalOperator: logicalOperator,\n filters: [],\n children: [],\n };\n\n // Recursive function to find the correct node and add the new child\n const addChildToNode = (nodes: any[], nodeId: string, child: any) => {\n for (const node of nodes) {\n if (node.id === nodeId) {\n if (!node.children) {\n node.children = []; // Ensure the children array exists\n }\n node.children.push(child);\n return true; // Node updated, stop the search\n }\n if (node.children && node.children.length > 0) {\n if (addChildToNode(node.children, nodeId, child)) {\n return true; // Child added in a deeper level\n }\n }\n }\n return false; // Node not found in this branch\n };\n\n // Attempt to add the new child to the node identified by groupId\n addChildToNode(this.filterObjectsWithGroups, groupId, newChild);\n\n // Trigger a state update to reflect the change\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n\n updateGroupLogicalOperator(groupId: string, logicalOperator: 'AND' | 'OR') {\n const updateOperator = (nodes: any[], nodeId: string, newOperator: 'AND' | 'OR') => {\n for (const node of nodes) {\n if (node.filterGroupId === nodeId) {\n if (node.id === 'root') {\n this.logicalSearchOperator = this.getLogicalOperatorCode(newOperator);\n }\n node.logicalOperator = newOperator; // Update the logical operator here\n return true; // Successfully updated, stop the search\n }\n if (node.children && updateOperator(node.children, nodeId, newOperator)) {\n return true; // Successfully updated in a deeper level\n }\n }\n return false; // Node not found\n };\n\n // Attempt to update the logical operator in the node identified by groupId\n if (updateOperator(this.filterObjectsWithGroups, groupId, logicalOperator)) {\n // If the group was found and updated, trigger a state update\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n }\n\n removeFilterItem(filter) {\n this.setFilterFromChips(filter.searchValue);\n this.externalToggle = filter.searchValue;\n\n const group = this.findGroupById(this.filterObjectsWithGroups, filter.filterGroupId);\n if (group) {\n group.filters = group.filters.filter(item => item.id !== filter.id);\n\n this.filterObjectsWithGroups = this.filterObjectsWithGroups.map(g => (g.filterGroupId === group.filterGroupId ? { ...group } : g));\n }\n\n this.filtersChangedHandler();\n\n this.agGrid.api.setFilterModel(this.filterObject[0].filterElements);\n this.getGridState();\n }\n\n handleGroupDelete(groupId) {\n let groupRemoved = false;\n\n // Recursive function to search for and remove the group by ID\n const searchAndRemoveGroup = (groups, groupId) => {\n return groups.reduce((acc, group) => {\n // If the current group matches the groupId, do not add it to the accumulator\n if (group.filterGroupId === groupId) {\n groupRemoved = true;\n return acc;\n }\n\n // Otherwise, add the group to the accumulator\n const newGroup = { ...group };\n\n // If the group has children, recurse to potentially remove from children\n if (newGroup.children && newGroup.children.length > 0) {\n newGroup.children = searchAndRemoveGroup(newGroup.children, groupId);\n }\n\n acc.push(newGroup);\n return acc;\n }, []);\n };\n\n // Start the recursive search and remove process\n this.filterObjectsWithGroups = searchAndRemoveGroup(this.filterObjectsWithGroups, groupId);\n if (groupRemoved) {\n this.filtersChangedHandler();\n }\n }\n\n // Function to update filter list with groups\n updateFilterObjectsWithGroups = (\n searchField: string,\n searchOperator: string,\n searchValues: string[],\n searchFieldAlias: string,\n originalSearchOperator: string,\n originalSearchValue: string,\n targetFilterGroupId: string,\n ) => {\n let found = false;\n\n const traverse = group => {\n if (group.filterGroupId === targetFilterGroupId) {\n // Remove any existing filters for this fieldId (optional)\n group.filters = [];\n\n // Add new filters for each searchValue\n for (let val of searchValues) {\n group.filters.push({\n id: uuid(),\n searchField,\n searchOperator,\n searchValue: val,\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n filterGroupId: targetFilterGroupId,\n });\n }\n\n found = true;\n return;\n }\n\n for (let child of group.children || []) {\n if (found) return;\n traverse(child);\n }\n };\n\n for (let group of this.filterObjectsWithGroups) {\n traverse(group);\n if (found) break;\n }\n\n // If target group not found, fallback to root\n if (!found) {\n for (let val of searchValues) {\n this.filterObjectsWithGroups[0].filters.push({\n id: uuid(),\n searchField,\n searchOperator,\n searchValue: val,\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n });\n }\n }\n };\n\n getLogicalOperatorCode(op: string) {\n return op === 'AND' ? 1 : 2;\n }\n\n getLogicalOperatorValue(op: number) {\n return op.toString() === '1' ? 'AND' : 'OR';\n }\n\n findGroupById(groups, id) {\n for (const group of groups) {\n if (group.filterGroupId === id) return group;\n const result = group.children && this.findGroupById(group.children, id);\n if (result) return result;\n }\n return null;\n }\n\n updateFilterGroups(groupedFilterObjects) {\n let groupIdCounter = 1;\n const groupIdMap = new Map();\n\n const filterElements = [];\n const filterGroups = [];\n\n const transformGroup = (group, parentGroupId = null) => {\n let currentGroupId = null;\n\n if (group.filters.length === 0 && group.id === 'default') {\n return;\n }\n\n if (group.filterGroupId) {\n if (!groupIdMap.has(group.filterGroupId)) {\n groupIdMap.set(group.filterGroupId, groupIdCounter++);\n }\n currentGroupId = groupIdMap.get(group.filterGroupId);\n\n filterGroups.push({\n groupId: currentGroupId,\n logicalSearchOperator: this.getLogicalOperatorCode(group.logicalOperator),\n parentGroupId: parentGroupId,\n });\n }\n\n // Add all filters in this group\n (group.filters || []).forEach(filter => {\n filterElements.push({\n searchField: filter.searchField,\n searchOperator: filter.searchOperator,\n searchValue: filter.searchValue,\n fieldId: filter.otherId,\n groupId: currentGroupId,\n });\n });\n\n // Recurse children\n (group.children || []).forEach(child => {\n transformGroup(child, currentGroupId);\n });\n };\n\n // Start with each top-level group (usually just one root)\n groupedFilterObjects.forEach(rootGroup => {\n transformGroup(rootGroup);\n });\n\n return [\n {\n pageNumber: 1,\n pageSize: 20,\n type: 'advanced',\n eagerLoad: false,\n logicalSearchOperator: 1,\n filterElements,\n filterGroups,\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n },\n ];\n }\n\n @Listen('searchOperatorChanged')\n filtersChangedHandler() {\n const updatedFilterList = this.updateFilterGroups(this.filterObjectsWithGroups);\n const deepClonedList = cloneDeep(updatedFilterList);\n\n this.filterObject = deepClonedList;\n this.filterRenderList = deepClonedList;\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n\n @Listen('filterChanged')\n @Listen('searchItemChanged')\n searchItemChangedHandler(event: CustomEvent) {\n let { searchField, searchOperator, searchValue, searchFieldAlias, type, originalSearchOperator, originalSearchValue } = event.detail;\n this.refreshChips = true;\n this.setSearchStart = true;\n let updatedFilterList = [...this.filterObject];\n\n if (!type && type === 'agGridColumnFilter') {\n // Only apply the following logic if event is not from the native ag grid column filter\n let advancedSearchFilter = this.extendedSearchFilterList?.find(filter => filter.name.toLowerCase() === searchField.toLowerCase());\n if (advancedSearchFilter?.type?.toLowerCase() === 'datetime') {\n const configuredColumnDef = this.configuredColumnDefs?.find(col => col.field.toLowerCase() === searchField.toLowerCase());\n searchFieldAlias = configuredColumnDef?.headerName;\n if (searchOperator === this.filterOptions['equals'] && configuredColumnDef?.treatAsDate) {\n let dateFrom = new Date(searchValue);\n let dateTo = new Date(dateFrom);\n\n // Set dateTo to one day ahead\n dateTo.setDate(dateFrom.getDate() + 1);\n\n // Convert the dates to the required format (YYYY-MM-DD HH:mm:ss)\n const formatDate = (date, dateOnly: boolean = false) => {\n const year = date.getFullYear();\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n return dateOnly ? `${year}-${month}-${day}` : `${year}-${month}-${day} 00:00:00`;\n };\n originalSearchOperator = searchOperator;\n originalSearchValue = searchValue;\n searchOperator = this.filterOptions['inRange'];\n searchValue = formatDate(dateFrom) + ',' + formatDate(dateTo);\n }\n }\n this.getGridState(true);\n }\n\n if (type === 'set') {\n if (searchValue.length > 0) {\n if (!this.findGroupById(this.filterObjectsWithGroups, `set-${searchField}-group`)) {\n this.handleAddNewGroup('root', searchOperator, `set-${searchField}-group`);\n }\n this.updateFilterObjectsWithGroups(\n searchField,\n searchOperator.value ? searchOperator.value : searchOperator,\n searchValue,\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n `set-${searchField}-group`,\n );\n\n // update the AG Grid filter model explicitly\n const currentModel = this.agGrid.api.getFilterModel() || {};\n currentModel[searchField] = {\n filterType: 'set',\n values: searchValue,\n };\n this.agGrid.api.setFilterModel(currentModel);\n } else {\n this.handleGroupDelete(`set-${searchField}-group`);\n return;\n }\n }\n updatedFilterList = this.updateFilterGroups(this.filterObjectsWithGroups);\n\n // Immutably update the state for both lists\n this.filterObject = [...updatedFilterList];\n this.filterRenderList = [...updatedFilterList];\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n\n if (type !== 'set') {\n this.agGrid.api.setFilterModel(this.convertFilterToAgGridFilterModel(this.filterObject[0].filterElements));\n this.filterObject[0].filterElements.forEach(filter => {\n if (filter.searchOperator === '=') {\n const filterInstance = this.agGrid.api.getFilterInstance(filter.searchField);\n\n if (filterInstance && 'setModel' in filterInstance && 'onFilterChanged' in filterInstance) {\n (filterInstance as any).setModel({ values: [filter.searchValue] });\n (filterInstance as any).onFilterChanged();\n }\n }\n });\n }\n }\n\n convertFilterToAgGridFilterModel(customFilters) {\n const agGridModel = {};\n\n customFilters.forEach(filter => {\n if (filter.searchOperator === '=') {\n agGridModel[filter.searchField] = {\n filterType: 'set',\n values: [filter.searchValue],\n };\n }\n });\n\n return agGridModel;\n }\n\n updateSearchObject(detail: { searchField: string; searchOperator: string; searchValue: any }) {\n this.updateFilterObject(filterObject => {\n // Append the new filter element to filterElements array\n filterObject[0].filterElements.push(detail);\n });\n [500, 1000, 2000, 3000, 4000, 5000, 6000, 10000, 20000].forEach(delay => {\n setTimeout(() => {\n this.getGridState(true);\n }, delay);\n });\n }\n\n // Commented out filter options are currently not suppored in the regex\n filterOptions = {\n equals: '=',\n contains: 'LIKE',\n // notContains: 'NOT LIKE',\n notEqual: '<>',\n greaterThan: '>',\n lessThan: '<',\n greaterThanOrEqual: '>=',\n lessThanOrEqual: '<=',\n startsWith: 'STARTSWITH',\n // endsWith: 'ENDSWITH',\n blank: 'IS NULL',\n // notBlank: 'IS NOT NULL',\n inRange: 'BETWEEN',\n };\n\n // FOR HANDLING NATIVE AG-grid filter\n capitalizeFirstLetter(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n applyFilterDetail(\n column: string,\n selectedFilterOptions: string,\n value: string,\n searchFieldAlias: string | undefined,\n originalSearchOperator: string,\n originalSearchValue: string,\n groupCount: number,\n groupedFilterElements: {\n groupId: number;\n searchField: string;\n searchOperator: string;\n searchValue: string;\n searchFieldAlias?: string;\n originalSearchOperator: string;\n originalSearchValue: string;\n }[],\n filterObjectsWithGroupsFilters: {\n searchField: string;\n searchOperator: string;\n searchValue: string;\n otherId: string;\n parentName: string;\n parentPath: string;\n searchFieldAlias?: string;\n originalSearchOperator: string;\n originalSearchValue: string;\n }[],\n ) {\n const setDetail = {\n searchField: column,\n searchOperator: selectedFilterOptions,\n searchValue: value,\n searchFieldAlias: searchFieldAlias,\n originalSearchOperator: originalSearchOperator || '',\n originalSearchValue: originalSearchValue || '',\n };\n\n if (this.hotListActive) {\n groupedFilterElements.push({\n groupId: groupCount,\n searchField: this.capitalizeFirstLetter(setDetail.searchField),\n searchOperator: setDetail.searchOperator,\n searchValue: String(setDetail.searchValue),\n searchFieldAlias: setDetail.searchFieldAlias,\n originalSearchOperator: setDetail.originalSearchOperator,\n originalSearchValue: setDetail.originalSearchValue,\n });\n filterObjectsWithGroupsFilters.push({\n searchField: setDetail.searchField,\n searchOperator: setDetail.searchOperator,\n searchValue: setDetail.searchValue,\n otherId: uuid(),\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias: setDetail.searchFieldAlias,\n originalSearchOperator: setDetail.originalSearchOperator,\n originalSearchValue: setDetail.originalSearchValue,\n });\n if (groupCount === 1) {\n groupCount = 3;\n } else {\n groupCount++;\n }\n return true;\n }\n\n //this.updateSearchObject(detail);\n this.searchItemChangedHandler({\n detail: setDetail,\n initCustomEvent: function (): void {\n throw new Error('Function not implemented.');\n },\n bubbles: false,\n cancelBubble: false,\n cancelable: false,\n composed: false,\n currentTarget: undefined,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n returnValue: false,\n srcElement: undefined,\n target: undefined,\n timeStamp: 0,\n type: 'agGridColumnFilter',\n composedPath: function (): EventTarget[] {\n throw new Error('Function not implemented.');\n },\n initEvent: function (): void {\n throw new Error('Function not implemented.');\n },\n preventDefault: function (): void {\n throw new Error('Function not implemented.');\n },\n stopImmediatePropagation: function (): void {\n throw new Error('Function not implemented.');\n },\n stopPropagation: function (): void {\n throw new Error('Function not implemented.');\n },\n NONE: 0,\n CAPTURING_PHASE: 1,\n AT_TARGET: 2,\n BUBBLING_PHASE: 3,\n });\n return false;\n }\n\n transformAndApplyFilters(filterModel: { [key: string]: FilterDetail }) {\n let groupedFilterElements;\n let filterObjectsWithGroupsFilters = [];\n\n if (this.hotListActive) {\n // first group all the hotlist origin filters\n groupedFilterElements = this.filterObject[0].filterElements.map(element => ({\n ...element,\n searchField: this.capitalizeFirstLetter(element.searchField),\n groupId: 2,\n }));\n\n // slicing because need to remove duplicate native filters\n let slicedGroupedFilterElements = groupedFilterElements.slice(0, this.hotListCount);\n groupedFilterElements = slicedGroupedFilterElements;\n\n // this.filterRenderList = [...this.filterRenderList, ...groupedFilterElements]\n this.filterObject[0].filterElements.map(element => this.filterRenderList.push(element));\n }\n var groupCount = 1;\n const formatDate = (date: Date, dateOnly: boolean = false) => {\n const year = date.getFullYear();\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n return dateOnly ? `${year}-${month}-${day}` : `${year}-${month}-${day} 00:00:00`;\n };\n\n if (Object.entries(filterModel).length === 0) {\n this.shouldForceEmptyResults = false;\n this.noResults = false;\n }\n\n for (const [column, filterDetails] of Object.entries(filterModel)) {\n if (!filterDetails || !(filterDetails.type || filterDetails.filterType)) continue;\n\n const configuredColumnDef = this.configuredColumnDefs?.find(col => col.field === column);\n const searchFieldAlias = configuredColumnDef?.headerName;\n const treatAsDate = configuredColumnDef?.treatAsDate;\n\n const filterType = filterDetails.filterType;\n let selectedFilterOptions = this.filterOptions[filterDetails.type] || this.filterOptions['equals'];\n\n let value = '';\n let originalSearchOperator = '';\n let originalSearchValue = '';\n\n let shouldApply = true;\n switch (filterType) {\n case 'date':\n if (filterDetails.type === 'inRange') {\n value = `${filterDetails.dateFrom},${filterDetails.dateTo}`;\n } else if (filterDetails.type === 'equals' && treatAsDate) {\n const dateFrom = new Date(filterDetails.dateFrom);\n const dateTo = new Date(dateFrom);\n dateTo.setDate(dateFrom.getDate() + 1);\n\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = formatDate(dateFrom, treatAsDate);\n\n selectedFilterOptions = this.filterOptions['inRange'];\n value = `${formatDate(dateFrom)},${formatDate(dateTo)}`;\n } else {\n value = filterDetails.dateFrom;\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = value;\n }\n break;\n case 'number':\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = filterDetails.filter;\n value = filterDetails.type === 'inRange' ? `${filterDetails.filter},${filterDetails.filterTo}` : filterDetails.filter;\n break;\n case 'text':\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = value = filterDetails.filter;\n break;\n case 'set':\n const values = (filterDetails as { values: string[] }).values || [];\n this.shouldForceEmptyResults = false;\n this.noResults = false;\n\n if (values.length === 0) {\n this.noResults = true;\n this.shouldForceEmptyResults = true;\n\n shouldApply = false;\n continue;\n }\n\n this.filterChanged.emit({\n searchField: configuredColumnDef?.field,\n searchOperator: selectedFilterOptions,\n searchValue: values,\n searchFieldAlias,\n type: 'set',\n originalSearchOperator,\n originalSearchValue,\n });\n\n shouldApply = false;\n continue;\n default:\n shouldApply = false;\n continue;\n }\n\n if (shouldApply) {\n const shouldSkip = this.applyFilterDetail(\n column,\n selectedFilterOptions,\n value,\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n groupCount,\n groupedFilterElements,\n filterObjectsWithGroupsFilters,\n );\n\n if (shouldSkip) {\n groupCount = groupCount === 1 ? 3 : groupCount + 1;\n }\n }\n }\n\n const allFilterFields = this.configuredColumnDefs?.filter(col => col.filter).map(col => col.field) ?? [];\n const filteredFields = Object.keys(filterModel);\n const fieldsToReset = allFilterFields.filter(field => !filteredFields.includes(field));\n\n for (const field of fieldsToReset) {\n this.filterChanged.emit({\n searchField: field,\n searchOperator: null,\n searchValue: [],\n searchFieldAlias: this.configuredColumnDefs?.find(c => c.field === field)?.headerName,\n type: 'set',\n originalSearchOperator: null,\n originalSearchValue: null,\n });\n }\n\n if (this.hotListActive) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements = groupedFilterElements;\n filterObject[0].filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: 1,\n parentGroupId: null,\n },\n {\n groupId: 2,\n logicalSearchOperator: 2,\n parentGroupId: 1,\n },\n ];\n\n // Adds additional native grid filters\n for (let i = 3; i < groupCount; i++) {\n filterObject[0].filterGroups.push({\n groupId: i,\n logicalSearchOperator: 1,\n parentGroupId: 1,\n });\n }\n\n filterObject[0].logicalSearchOperator = 1;\n filterObject[0].type = 'advanced';\n });\n\n this.logicalSearchOperator = 1;\n this.updateChipLayout();\n\n this.filterObjectsWithGroups[0].filters = filterObjectsWithGroupsFilters;\n this.refreshChips = true;\n }\n }\n\n handleSideSheetButtonClick = async () => {\n this.groupFilter();\n this.customSearchDrawerOpen = false;\n };\n\n // advanced search grouping\n handleAddNewFilter = (filterGroupId: string) => {\n this.advancedGroupSearchNodeId = filterGroupId;\n };\n\n handleAddNewGroup = (groupId: string, logicalOperator: 'AND' | 'OR', filterGroupId = null) => {\n this.setGroupedSearchSections(groupId, filterGroupId ?? uuid(), logicalOperator);\n };\n\n updateLogicalOperator = (groupId: string, logicalOperator: 'AND' | 'OR') => {\n // Implement the logic to update the logical operator for the group\n this.updateGroupLogicalOperator(groupId, logicalOperator);\n };\n\n @Watch('externalPayload')\n externalPayloadChanged(newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n this.handleTransformSearchData();\n }\n }\n\n @Watch('dataEmitterRequest')\n dataEmitterChanged(newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n this.handleDataEmitterRequest(newValue);\n }\n }\n\n isEmptyObject = obj => {\n return obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n };\n\n handleDataEmitterRequest = async newValue => {\n // Check if newValue is null, undefined, or an empty object\n if (newValue === null || newValue === undefined || this.isEmptyObject(newValue)) {\n // Handle the case where newValue is not usable\n return;\n }\n\n const emitterSearchObject = {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [newValue],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n };\n\n try {\n const response = await executeQueryAdHoc(emitterSearchObject, await this.getApiMethodId(), '');\n this.externalEmitter.emit(response); // Emitting the response data\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching data:', error);\n }\n };\n\n handleTransformSearchData = () => {\n const modifiedSearchObjects = transformSearchData(this.externalPayload, this.searchKey);\n\n // Merge the filterElements\n if (modifiedSearchObjects.filterElements) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements.push(...modifiedSearchObjects.filterElements);\n });\n }\n\n // Handle filterGroups (assuming you want to replace the existing ones)\n if (modifiedSearchObjects.filterGroups) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterGroups = modifiedSearchObjects.filterGroups;\n });\n }\n\n // Extract the first element to send as an individual object\n const firstFilterElement = this.filterObject[0].filterElements[0];\n\n // Create a new CustomEvent with the first object as detail (instead of the entire array)\n const filterElementEvent = new CustomEvent('filterElementChange', {\n detail: firstFilterElement,\n });\n\n // Pass the event to the handler function\n this.searchItemChangedHandler(filterElementEvent);\n\n this.updateServerSideDatasource('', 'handleTransformSearchData');\n };\n\n // FOR HANDLING IF SELECT OR GROUPING IN ADVANCED SEARCH\n groupFilter = () => {\n const searchGroupFilterPayload = buildSearchPayload(this.filterObjectsWithGroups);\n this.updateFilterObject(() => [searchGroupFilterPayload]);\n this.setSearchStart = true;\n };\n\n handleSearchItemChange() {\n const updatedFilterObjectsWithGroups = cloneDeep(this.filterObjectsWithGroups);\n const updatedFilterObject = cloneDeep(this.filterObject);\n\n this.filterObjectsWithGroups = updatedFilterObjectsWithGroups;\n this.filterObject = updatedFilterObject;\n }\n\n collectAllFilters(filterGroup, level = 0) {\n let allFilters = [];\n\n // Collect top-level filters and include the current level\n if (filterGroup.filters && filterGroup.filters.length > 0) {\n allFilters = allFilters.concat(filterGroup.filters.map(filter => ({ ...filter, level })));\n }\n\n // Recursively collect filters from children, incrementing the level\n if (filterGroup.children && filterGroup.children.length > 0) {\n filterGroup.children.forEach(child => {\n allFilters = allFilters.concat(this.collectAllFilters(child, level + 1));\n });\n }\n\n return allFilters;\n }\n\n updateChipLayout = () => {\n requestAnimationFrame(() => {\n const chipsContainer = this.el.shadowRoot ? this.el.shadowRoot.getElementById('advanced-group-search-chips') : document.getElementById('advanced-group-search-chips');\n\n if (chipsContainer) {\n // Force reflow if necessary\n chipsContainer.offsetWidth;\n\n const containerWidth = chipsContainer.getBoundingClientRect().width;\n let totalChipWidth = 0;\n const chipWidths = Array.from(chipsContainer.querySelectorAll('stencil-chip')).map(chip => chip.getBoundingClientRect().width);\n let maxVisible = 1;\n\n for (let width of chipWidths) {\n if (totalChipWidth + width + 400 > containerWidth) break;\n if (maxVisible >= this.maxChipsAllowed) break; // Limit the number of visible chips to 7, but only after width check\n totalChipWidth += width;\n maxVisible++;\n }\n this.allFilters = this.filterObjectsWithGroups.reduce((acc, curr) => {\n return acc.concat(this.collectAllFilters(curr));\n }, []);\n\n if (this.hideDefaultSearchFilterChips) {\n this.allFilters = this.allFilters.filter(f => !f.isInitialFilterElement);\n }\n this.refreshChips = false;\n } else {\n console.warn('Chips container not found');\n }\n });\n };\n\n // Fetch recentSearches from local storage\n getRecentSearches = () => {\n const recentSearchesString = localStorage.getItem('recentSearches');\n if (recentSearchesString == null) {\n return;\n }\n const recentSearches: any[] = JSON.parse(recentSearchesString);\n var currentGridSearchHistoryObj = recentSearches.find(item => item.gridUID === this.gridUID);\n if (!currentGridSearchHistoryObj) {\n this.recentSearches = [];\n } else {\n this.recentSearches = recentSearches.length > 0 ? currentGridSearchHistoryObj.searchHistory : [];\n }\n this.recentSearchesOptions = this.recentSearches.map(item => ({\n label: item.timestamp,\n value: item.searchObj,\n }));\n };\n // Handle selecting a recent search from the drop down udp-selector\n selectRecentSearch = e => {\n this.fullClearSearch(); // Clear previous searches first\n var selectedSearchObj = e.detail.value;\n this.updateFilterObject(filterObject => {\n filterObject[0] = selectedSearchObj;\n });\n this.filterRenderList[0] = selectedSearchObj;\n this.isRecentSearch = true;\n this.updateServerSideDatasource('', 'advanced grouped search');\n // this.customSearchDrawerOpen = false; // uncomment if want advanced search sidesheet to close after clicking\n\n var filterObjectsWithGroupsTemp = this.filterObjectsWithGroups;\n selectedSearchObj.filterElements.map((tempFilter, index) => {\n filterObjectsWithGroupsTemp[0].filters[index] = { ...tempFilter };\n });\n this.filterObjectsWithGroups = filterObjectsWithGroupsTemp;\n };\n\n @Watch('allFilters')\n allFiltersChanged() {\n if (this.refreshChips) {\n this.updateChipLayout();\n }\n }\n\n // BULK ACTIONS FUNCTIONS\n fetchAvailableGridActions = () => {\n if (this.restrictedGridFeatures?.BulkActions && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.BulkActions)) {\n localStorage.setItem('bulkActions', JSON.stringify([]));\n return;\n }\n const callback = data => {\n // Will send to grid to update view\n localStorage.setItem('bulkActions', JSON.stringify(data));\n this.bulkActions = data;\n };\n\n\n getAvailableGridActions(this.gridId, this.restrictBulkActionsPermissions, this.userPermissions, callback);\n\n this.updateServerSideDatasource('', 'configuredColumnDefs');\n };\n\n async handleSelectedBulkOption(event: CustomEvent) {\n // Assuming `event.detail` includes the selected option's identifier, like `value`\n const { value } = event.detail; // You might need to adjust based on the actual structure\n // Find the index of the selected option based on its value\n\n if (this.gridOptions && this.agGrid) {\n const selectedNodes = this.agGrid.api.getSelectedNodes();\n\n // Extract the data from selected nodes\n let selectedData = selectedNodes.map(node => node.data);\n\n // Extract just the ids from the selectedData\n const selectedIds = selectedData.map(data => data.id);\n\n // Emit the selectedIds array so parent components can listen to it\n this.selectedIdsChanged.emit(selectedIds);\n\n let actionData;\n\n if (this.bulkActionFunctions[value.value]) {\n //There exists a bulk action function corresponding to the actions value. Passing the function as the actionData to the action executor\n const selectedBulkActionFunction = this.bulkActionFunctions[value.value];\n actionData = { execute: () => selectedBulkActionFunction(selectedData) };\n } else {\n actionData = selectedData;\n }\n\n await this.executeBulkAction(value.actionId, actionData);\n }\n }\n\n @Watch('bulkActions')\n transformBulkActions() {\n if (this.bulkActions) {\n this.formattedBulkActions = this.bulkActions.map(action => ({\n label: action.name,\n value: action,\n }));\n }\n }\n\n getSelectedRows() {\n return Object.values(this.selectedRowMap);\n }\n\n getHeaderFieldLabel = (fieldName: string) => {\n const columnDef = this.configuredColumnDefs.find(col => col.field.toLowerCase() === fieldName.toLowerCase());\n if (columnDef) {\n return columnDef.headerName || fieldName;\n }\n return fieldName;\n };\n\n render() {\n const filterPanelWidth = this.filterPanelOpen ? '200px' : 'initial';\n const shouldShowSecondRow =\n (this.setSearchStart && this.filterObjectsWithGroups?.[0]?.filters?.[0]?.searchValue) ||\n this.filterChips.length > 0 ||\n this.loadedViewTitle.length > 0 ||\n this.hotListActive ||\n this.kpiValues.length > 0 ||\n this.selectedRowCount > 0;\n\n const shouldHideSecondRow = !shouldShowSecondRow;\n if (shouldShowSecondRow) {\n this.gridHeight = 'calc(100vh - 245px)';\n } else {\n this.gridHeight = 'calc(100vh - 200px)';\n }\n\n const actionMenuItems = this.getOverflowActionList(this.overflowActionMenuItems, this.selectedRowParams);\n return (\n <div>\n {this.openActionPopoverMenu && (\n <udp-pop-over\n isOpen={this.openActionPopoverMenu}\n anchorElement={this.actionMenuAnchorElement}\n popoverWidth=\"170px\"\n popoverMaxHeight=\"250px\"\n handleOnClose={event => {\n this.handleOnCloseActionPopover(event);\n }}\n >\n <div class=\"overflowActionButtons\">{actionMenuItems}</div>\n </udp-pop-over>\n )}\n <div>\n {this.showNotification && (\n <udp-notification\n active={this.showNotification}\n message={this.notificationMessage}\n status={this.notificationStatus}\n userCancel\n style={{ zIndex: '999991', transform: 'translateY(20px)' }}\n ></udp-notification>\n )}\n </div>\n <style>\n {`:host ::slotted(.ag-side-bar) {\n width: ${filterPanelWidth} !important;\n }`}\n </style>\n\n <grid-primary-bar\n title={this.gridBarTitle}\n customSaveViewClick={() => this.showViewSave()}\n customShowViewClick={() => this.showViews()}\n customShowHotlistClick={() => this.showHotlist()}\n customShowCustomSearchClick={() => this.showCustomSearch()}\n customClearClick={() => this.clearFilters()}\n customRefreshClick={() => this.refreshGrid()}\n customExpandClick={() => this.expandColumns()}\n customExportClick={this.exportFunction ? () => this.exportFunction(this.entityName, this.filterRenderList[0]) : () => this.exportToCsv()}\n customInsightsClick={e => {\n this.insightsActionOnClick(e);\n }}\n showInsightsAction={this.showInsightsAction}\n hiddenActionButtons={this.hiddenActionButtons}\n primaryActionLabel={this.primaryActionLabel}\n primaryActionClick={e => {\n this.primaryActionOnClick(e);\n }}\n primaryActionIcon={this.primaryActionIcon}\n customColumnViewClick={() => this.togglePanel('columns')}\n customFitColumnClick={() => this.fitColumns()}\n customFilterViewClick={() => this.togglePanel('filters')}\n customToggleServerClientClick={() => this.toggleServerSide()}\n customAdvancedSearchClick={() => this.showAdvancedSearch()}\n customShowGridOptionsClick={() => this.showGridOptions()}\n showAdvancedSearchFeature={this.showAdvancedSearchFeature}\n showFilterColumnFeature={this.showFilterColumnFeature}\n showHotlistButton={\n this.showHotlistButton && !(this.restrictedGridFeatures?.Hotlist && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Hotlist))\n }\n hideExport={this.restrictedGridFeatures?.Export && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Export)}\n enableAdvancedSearch={this.enableAdvancedSearch}\n ></grid-primary-bar>\n\n <udp-pop-over-grid-action-header\n isOpen={this.gridOptionsDrawerOpen}\n anchorElement={document.querySelector('grid-primary-bar') as unknown as HTMLElement}\n >\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.togglePanel('columns');\n this.showGridOptions();\n }}\n tooltip=\"Show/Hide Columns\"\n >\n <unity-typography variant=\"button\">Show/Hide Columns</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"100%\"></udp-divider>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.fitColumns();\n this.showGridOptions();\n }}\n tooltip=\"Fit to Column\"\n >\n <unity-typography variant=\"button\">Fit to Column</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"0px\"></udp-divider>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.expandColumns();\n this.showGridOptions();\n }}\n tooltip=\"Expand Grid\"\n >\n <unity-typography variant=\"button\">Expand Grid</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"0px\"></udp-divider>\n {!this.disableSearchSwitch && (\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.handleSearchModeToggle();\n this.showGridOptions();\n }}\n tooltip={this.enableAdvancedSearch ? 'Standard Search' : 'Advanced Search'}\n >\n <unity-typography variant=\"button\">{this.enableAdvancedSearch ? 'Standard Search' : 'Advanced Search'}</unity-typography>\n </stencil-icon-button-grid-action-header>\n )}\n </udp-pop-over-grid-action-header>\n\n <div class=\"second-row\" style={{ display: shouldHideSecondRow ? 'none' : '' }}>\n {!this.hideBulkActions && this.rowsSelected && (\n <div class=\"bulk-select\">\n <udp-badge content={this.selectedRowCount}>\n <udp-selector options={this.bulkActions.length > 0 ? this.formattedBulkActions : []} onChange={(e: CustomEvent) => this.handleSelectedBulkOption(e)}></udp-selector>\n </udp-badge>\n </div>\n )}\n\n {this.loadedViewTitle?.length !== 0 && (\n <div class=\"chip-wrapper\">\n <stencil-chip\n text={this.loadedViewTitle}\n // onOnDelete={this.handleDelete as any}\n onOnDelete={this.handleViewChipDelete}\n color=\"secondary\"\n defaultToggled={true}\n leftIcon={Star16}\n showLeftIcon={this.selectedViewIsDefault}\n ></stencil-chip>\n <udp-divider variant=\"vertical\" size=\"30px\"></udp-divider>\n </div>\n )}\n\n {this.hotListActive && (\n <div class=\"chip-wrapper\">\n <stencil-chip text={this.hotListActive} color=\"secondary\" onOnDelete={this.handleRemoveHotlist} defaultToggled={true} leftIcon={List16}></stencil-chip>\n <udp-divider variant=\"vertical\" size=\"30px\"></udp-divider>\n </div>\n )}\n\n <div class=\"chip-section\">\n {this.filterChips.length > 0 && (\n <udp-dynamic-container-with-menu\n id=\"filterChipsContainer\"\n externalToggle={this.externalToggle}\n onUdpChipClicked={(event: CustomEvent) => this.setFilterFromChips(event.detail)}\n menuItems={this.filterChips}\n ></udp-dynamic-container-with-menu>\n )}\n </div>\n <div class=\"kpi\">\n <kpi-list kpiValues={this.kpiValues}></kpi-list>\n </div>\n </div>\n\n {this.gridError && (\n <div>\n <upd-alert-banner type=\"error\" message={`An error occurred with loading the grid with data.`}></upd-alert-banner>\n </div>\n )}\n\n <div style={{ height: '4px', backgroundColor: shouldHideSecondRow ? 'var(--accent-color)' : 'rgb(247, 245, 243)', overflow: 'hidden' }}>\n {this.linearLoading && <udp-linear-loader />}\n </div>\n\n {this.noResults && (\n <div>\n <upd-alert-banner onClick={() => this.refreshOnNoResults()} type=\"info\" message=\"Sorry, no records meet your search criteria\"></upd-alert-banner>\n </div>\n )}\n\n <div>\n <ag-table gridOptions={this.gridOptions} licensekey={LicenseKey} height={this.gridHeight}></ag-table>\n </div>\n\n <side-sheet\n sideSheetButtonLabel=\"Search\"\n handleSideSheetButton={() => this.updateServerSideDatasource('', 'advanced search sheet')}\n title=\"Advanced Search\"\n open={this.advancedDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('advancedSearch')}\n position=\"right\"\n >\n <div style={{ width: '1200px' }}>\n <advanced-search\n handleDelete={filter => this.removeFilterItem(filter)}\n filterRenderList={this.filterRenderList}\n filterList={this.extendedSearchFilterList} // list that shows available filters\n handleItemClick={headerName => this.setFilterSelections(headerName)}\n onAdvancedSearchItemChange={(event: CustomEvent) => this.updateSearchObject(event.detail)}\n handleValueChanged={this.changeOperator}\n fetchFilters={() => this.getExtendedAdvancedSearchFilterList()}\n getHeaderFieldLabel={this.getHeaderFieldLabel}\n />\n </div>\n </side-sheet>\n\n <side-sheet widthOption=\"short\" title=\"Views\" open={this.viewDrawerOpen} toggleDrawer={() => this.primaryActionClick('views')} position=\"right\">\n <div>\n <div style={{ width: '450px', marginBottom: '8px' }}>\n <hint-panel\n hint=\"Quickly access and manage your pre-configured table/grid views. These views are designed to help you focus on specific sets of data and streamline your workflow.\"\n hideHintText=\"Hide Hint\"\n ></hint-panel>\n </div>\n\n <div style={{ width: '446px' }}>\n {this.viewListRowData &&\n this.viewListRowData.map(item => {\n if (item.gridViewVisibilityTypeId === 2 || item.userId.toLowerCase() === this.userId.toLocaleLowerCase()) {\n return (\n <tree-list-item\n // key={index}\n showEditOption\n showDeleteOption\n label={item.name}\n fieldName={item.name}\n onClick={() => {\n this.handleLoadView(item.gridViewId);\n this.setCurrentViewData(item.name, item.isDefault, item.gridViewVisibilityTypeId, item.gridViewId);\n }}\n editHandler={() => this.openViewEdit(item.gridViewId, item.name, item.isDefault, item.gridViewVisibilityTypeId)}\n deleteHandler={() => this.openDeleteViewConfirmation(item.gridViewId)}\n showUpdateDefaultOption={true}\n updateDefaultHandler={() => this.updateDefaultView(item)}\n isDefault={item.isDefault}\n gridViewVisibilityTypeId={item.gridViewVisibilityTypeId}\n showAdd={false}\n showViewOption={false}\n ></tree-list-item>\n );\n }\n })}\n </div>\n </div>\n </side-sheet>\n\n <side-sheet\n title=\"Search\"\n sideSheetButtonLabel=\"Search\"\n handleSideSheetButton={this.handleSideSheetButtonClick}\n open={this.customSearchDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('customSearch')}\n position=\"right\"\n buttonTransform={this.buttonTransform}\n >\n <advanced-search-grouped\n getLogicalOperatorValue={this.getLogicalOperatorValue}\n getLogicalOperatorCode={this.getLogicalOperatorCode}\n handleAddNewFilter={this.handleAddNewFilter}\n handleAddNewGroup={this.handleAddNewGroup}\n handleDelete={filter => this.removeFilterItem(filter)}\n filterRenderList={this.filterRenderList}\n filterList={this.extendedSearchFilterList} // list that shows available filters\n handleItemClick={headerName => this.setGroupedFilterSelections(headerName)}\n onAdvancedSearchItemChange={(event: CustomEvent) => this.updateSearchObject(event.detail)}\n handleValueChanged={this.changeOperator}\n filterObjectsWithGroups={this.filterObjectsWithGroups}\n fetchFilters={() => this.getExtendedAdvancedSearchFilterList()}\n // onSearchItemChanged={() => this.handleSearchItemChange()}\n updateLogicalOperator={this.updateLogicalOperator?.bind(this)}\n handleGroupDelete={groupId => this.handleGroupDelete(groupId)}\n recentSearchesOptions={this.recentSearchesOptions}\n selectRecentSearch={this.selectRecentSearch}\n fullClearSearch={this.fullClearSearch}\n findGroupById={this.findGroupById}\n getHeaderFieldLabel={this.getHeaderFieldLabel}\n />\n </side-sheet>\n\n <side-sheet\n disabled={this.showHotlistForm}\n widthOption=\"short\"\n sideSheetButtonLabel=\"Create New Hotlist\"\n handleSideSheetButton={() => this.toggleHotlistForm()}\n title=\"Hot Lists\"\n open={this.hotlistDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('hotlists')}\n position=\"right\"\n >\n <div>\n {this.showHotlistForm && <udp-hotlist-form handleFormSubmit={this.handleSaveHotlist} handleCancelClick={() => this.toggleHotlistForm()}></udp-hotlist-form>}\n\n <div style={{ width: '446px' }}>\n {this.allHotlists &&\n this.allHotlists.map(item => {\n if (item.domain === this.entityName) {\n return (\n <tree-list-item\n label={item.name}\n fieldName={item.name}\n showViewOption={true}\n showAdd={this.businessObjectKey ? true : false}\n showDeleteOption={true}\n viewHandler={() => this.handleRequestHotlist(item.hotListId)}\n deleteHandler={() => this.confirmRequestDelete(item.hotListId)}\n onClick={() => this.handleSetSingleHotlistItem(item.hotListId)}\n statusValue={item.isPrivate}\n statusClasses={{\n true: 'default',\n false: 'neutral',\n }}\n statusLabel={item.isPrivate ? 'Private' : 'Shared'}\n ></tree-list-item>\n );\n }\n })}\n </div>\n </div>\n </side-sheet>\n\n <save-view-form-dialog\n open={this.saveDialogOpen}\n title={this.selectedViewName ? 'Current View' : 'New View'}\n closeDialog={() => this.showViewSave()}\n currentGridViewId={this.selectedGridId}\n currentName={this.selectedViewName}\n currentIsPrivate={this.selectedViewGridViewVisibilityTypeId}\n currentIsDefault={this.selectedViewIsDefault}\n handleFormSubmit={(name: string, isPrivate: number, isDefault: boolean) => {\n // Assuming this.columnState exists in this component's scope\n this.handleViewFormSubmit(name, isPrivate, isDefault, this.gridState);\n }}\n handleViewAndConfigurationSubmit={(name: string, isPrivate: number, isDefault: boolean) => {\n if (this.selectedGridId) {\n if (this.selectedViewGridViewVisibilityTypeId === 2) {\n this.openViewEditConfirmation(name, isPrivate, isDefault);\n } else {\n this.setCurrentViewData(name, isDefault, isPrivate);\n this.handleViewAndConfigurationsUpdate(this.selectedViewName, this.selectedViewGridViewVisibilityTypeId, this.selectedViewIsDefault, this.gridState);\n }\n }\n }}\n />\n\n <edit-view-form-dialog\n open={this.editDialogOpen}\n title=\"Edit View\"\n closeDialog={() => this.closeViewEdit()}\n currentGridId={this.selectedGridId}\n currentName={this.selectedViewName}\n currentGridViewVisibilityTypeId={this.selectedViewGridViewVisibilityTypeId}\n currentIsDefault={this.selectedViewIsDefault}\n handleFormSubmit={(gridId: any, name: string, isPrivate: number, isDefault: boolean) => {\n this.handleViewUpdate(gridId, name, isPrivate, isDefault);\n }}\n />\n\n <div />\n <fluent-dialog\n title=\"Delete Hotlist\"\n message=\"Are you sure you want to delete this hotlist?\"\n actionOne={() => this.handleRequestDeleteHotlist()}\n actionTwo={() => this.toggleDeleteDialog('hotlist')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.confirmDialog} // Use state to control dialog visibility\n >\n <div>\n This will not delete any of the data but only the records <br />\n from the hotlist and the hotlist itself.{' '}\n </div>\n </fluent-dialog>\n\n <fluent-dialog\n title=\"Delete View\"\n message=\"Are you sure you want to delete this view?\"\n actionOne={() => this.handleDeleteView()}\n actionTwo={() => this.toggleDeleteDialog('View')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.confirmDialogDeleteView} // Use state to control dialog visibility\n >\n <div>\n This will not delete any of the data but only the settings <br />\n saved to display this view.{' '}\n </div>\n </fluent-dialog>\n\n <fluent-dialog\n title=\"Update View\"\n message=\"Are you sure you want to update this view?\"\n actionOne={() => this.handleViewAndConfigurationsUpdate(this.selectedViewName, this.selectedViewGridViewVisibilityTypeId, this.selectedViewIsDefault, this.gridState)}\n actionTwo={() => this.showViewEditConfirmation(false)}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.editViewConfirmationDialogOpen}\n >\n <div>This is a public view. Any changes made to it will be seen by others when they load this view. </div>\n </fluent-dialog>\n\n <fluent-dialog\n title={'Toggle Search Mode to ' + (this.enableAdvancedSearch ? 'Standard' : 'Advanced') + ' Search'}\n message={\n this.enableAdvancedSearch\n ? `Are you sure you want to toggle the search mode to standard search?`\n : `Are you sure you want to toggle the search mode to advanced search?`\n }\n actionOne={() => this.confirmSearchModeToggle()}\n actionTwo={() => this.toggleSearchModeConfirmation(false)}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.toggleSearchModeConfirmationDialogOpen}\n >\n <div>\n {this.enableAdvancedSearch\n ? 'The advanced search functionality will be disabled, all advanced search filters will be cleared and the grid will be reset to its default state.'\n : 'The standard search functionality will be disabled and any existing standard filters will persist to the advanced search.'}\n </div>\n </fluent-dialog>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ambient-template-grid.js","sourceRoot":"","sources":["../../../../../../src/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAS,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAgB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAE3D,OAAO,cAAc,MAAM,4DAA4D,CAAC;AACxF,OAAO,qBAAqB,MAAM,oEAAoE,CAAC;AACvG,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,uEAAuE,CAAC;AAC3H,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAClG,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,GACb,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,sCAAsC,CAAC;AAC9C,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,wBAAwB,MAAM,0CAA0C,CAAC;AAChF,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,wBAAwB,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uEAAuE,CAAC;AAC5G,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,iFAAiF;AACjF,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,+BAA+B,CAAC;AACvC,wFAAwF;AACxF,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AAExE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uEAAuE,CAAC;AAEnJ,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAI1E;;;GAGG;AAOH,MAAM,OAAO,mBAAmB;IA4R9B,uBAAuB,CAAC,QAAiB,EAAE,QAAiB;;QAC1D,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACzC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAKD,aAAa;QACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAID,YAAY,CAAC,MAAW,EAAE,OAAY;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAEhD,MAAM,WAAW,GAAG,MAAM,uBAAuB,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAE9C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,kBAAkB;;QACtB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAE1D,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,sBAAsB,0CAAE,WAAW,CAAC,CAAC;IAC9F,CAAC;IAGK,AAAN,KAAK,CAAC,oBAAoB;QACxB,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,YAAY,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACzD,CAAC;IAGK,AAAN,KAAK,CAAC,uBAAuB;QAC3B,OAAO,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACrE,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa;QACjB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,OAAO,iBAAiB,CAAC,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAE1E,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAE5C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,kBAAkB,CAAC,MAAyD;QAC1E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,iBAAyB;;QACvD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,wCAAwC;QACxC,MAAM,iBAAiB,GAAG,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,iBAAiB,CAAC;QACpE,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACjC,IAAI,MAAM,CAAC,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;oBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACjC,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBACxC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAgCD;;QAlaQ,eAAU,GAAU,EAAE,CAAC;QACvB,iBAAY,GAAQ,EAAE,CAAC;QACvB,YAAO,GAAU,EAAE,CAAC;QACpB,oBAAe,GAAU,EAAE,CAAC;QAC5B,cAAS,GAAU,EAAE,CAAC;QACtB,WAAM,GAAW,EAAE,CAAC;QACH,iBAAY,GAAW,EAAE,CAAC;QAC3C,WAAM,GAAW,EAAE,CAAC;QACpB,oBAAe,GAAU,EAAE,CAAC;QACX,gBAAW,GAAW,EAAE,CAAC;QACzB,sBAAiB,GAAW,EAAE,CAAC;QAC/B,eAAU,GAAW,EAAE,CAAC;QACzC,cAAS,GAAe,EAAE,CAAC;QAC3B,iBAAY,GAAW,EAAE,CAAC;QAC1B,cAAS,GAAe,EAAE,CAAC;QAC3B,0BAAqB,GAAe,EAAE,CAAC;QACvC,cAAS,GAAe,EAAE,CAAC;QAC3B,8BAAyB,GAAY,IAAI,CAAC;QAC1C,4BAAuB,GAAY,IAAI,CAAC;QACxC,YAAO,GAAW,EAAE,CAAC;QACrB,wBAAmB,GAAe,EAAE,CAAC;QACrC,gCAA2B,GAAW,CAAC,CAAC,CAAC,sBAAsB;QAC/D,aAAQ,GAAW,EAAE,CAAC;QAItB,kBAAa,GAAmB,EAAE,CAAC;QAC3C,uGAAuG;QAC/F,oBAAe,GAAQ,IAAI,CAAC;QAC5B,gBAAW,GAAQ,EAAE,CAAC;QACtB,uBAAkB,GAAQ,EAAE,CAAC;QAC7B,YAAO,GAAW,EAAE,CAAC;QACrB,sBAAiB,GAAW,EAAE,CAAC;QAC/B,cAAS,GAAW,EAAE,CAAC;QACN,iBAAY,GAAQ;YAC3C;gBACE,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,EAAE;gBAClB,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,IAAI,EAAE,UAAU;aACjB;SACF,CAAC;QACuB,yBAAoB,GAAe,EAAE,CAAC;QACvD,cAAS,GAAY,KAAK,CAAC;QAC3B,oBAAe,GAAW,CAAC,CAAC;QAC5B,qBAAgB,GAAY,IAAI,CAAC,CAAC,mDAAmD;QACrF,aAAQ,GAAY,KAAK,CAAC;QAC1B,sBAAiB,GAAY,KAAK,CAAC;QACnC,gBAAW,GAA8B,EAAE,CAAC;QAC5C,oBAAe,GAAW,EAAE,CAAC;QAC7B,gBAAW,GAAe,EAAE,CAAC;QAC7B,mCAA8B,GAAY,KAAK,CAAC;QAChD,2BAAsB,GAA8B,EAAE,CAAC;QACvD,sBAAiB,GAAY,KAAK,CAAC;QACnC,sBAAiB,GAAY,KAAK,CAAC,CAAC,iCAAiC;QAIrE,uBAAkB,GAAY,KAAK,CAAC;QAEpC,oBAAe,GAAY,KAAK,CAAC;QACjC,4BAAuB,GAAY,KAAK,CAAC;QACzC,sBAAiB,GAAkB,EAAE,CAAC;QACtC,iCAA4B,GAAY,KAAK,CAAC;QAE9C,wBAAmB,GAAW,EAAE,CAAC;QAEjC,wBAAmB,GAAkB,EAAE,CAAC;QACxC,eAAU,GAAkB,IAAI,CAAC;QACjC,sBAAiB,GAA4B,UAAU,CAAC;QACxD,wBAAmB,GAAY,KAAK,CAAC;QACrC,2BAAsB,GAAY,KAAK,CAAC;QAEvC,eAAU,GAAY,KAAK,CAAC;QAC5B,oBAAe,GAAY,IAAI,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,mCAA8B,GAAY,KAAK,CAAC;QAChD,0BAAqB,GAAY,KAAK,CAAC;QAEvC,gBAAW,GAAe,EAAE,CAAC;QAC7B,mBAAc,GAAQ,EAAE,CAAC;QACzB,iBAAY,GAAY,IAAI,CAAC;QAC7B,qBAAgB,GAAY,KAAK,CAAC;QAClC,wBAAmB,GAAW,EAAE,CAAC;QACjC,uBAAkB,GAAuB,SAAS,CAAC;QACnD,eAAU,GAAe,EAAE,CAAC;QAC5B,oBAAe,GAAW,EAAE,CAAC;QAC7B,mBAAc,GAAW,EAAE,CAAC;QAC5B,0BAAqB,GAAe,EAAE,CAAC;QACvC,yBAAoB,GAAe,EAAE,CAAC;QACtC,iBAAY,GAAY,KAAK,CAAC;QAC9B,qBAAgB,GAAW,CAAC,CAAC;QAC7B,qBAAgB,GAAe,EAAE,CAAC;QAClC,oBAAe,GAAY,KAAK,CAAC;QACjC,6BAAwB,GAAe,EAAE,CAAC;QAC1C,oBAAe,GAAe,EAAE,CAAC;QACjC,gBAAW,GAAe,EAAE,CAAC;QAC7B,iBAAY,GAAW,gBAAgB,CAAC;QACxC,iBAAY,GAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QACpD,yBAAoB,GAAe,EAAE,CAAC;QACtC,4BAAuB,GAAY,KAAK,CAAC;QACzC,oBAAe,GAAU,EAAE,CAAC;QAC5B,aAAQ,GAAW,EAAE,CAAC;QAWtB,qBAAgB,GAAuF;YAC9G,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,CAAC;SACX,CAAC;QACO,gBAAW,GAAQ,EAAE,CAAC;QACtB,mBAAc,GAAQ,EAAE,CAAC;QACzB,6BAAwB,GAAe,EAAE,CAAC;QAC1C,gBAAW,GAAe,EAAE,CAAC;QAC7B,mBAAc,GAAW,EAAE,CAAC;QAC5B,WAAM,GAAW,EAAE,CAAC;QACpB,wBAAmB,GAAe;YACzC;gBACE,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE;gBACd,MAAM;gBACN,mCAAmC;gBACnC,6BAA6B;gBAC7B,0BAA0B;gBAC1B,IAAI;iBACL;gBACD,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,IAAI,EAAE,UAAU;aACjB;SACF,CAAC;QAEO,qBAAgB,GAAe;YACtC;gBACE,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE;gBACd,MAAM;gBACN,8BAA8B;gBAC9B,8BAA8B;gBAC9B,0BAA0B;gBAC1B,IAAI;iBACL;gBACD,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,IAAI,EAAE,UAAU;aACjB;SACF,CAAC;QACO,0BAAqB,GAAW,CAAC,CAAC;QAClC,eAAU,GAAQ,IAAI,CAAC;QACvB,yBAAoB,GAAuC,EAAE,CAAC;QAC9D,uBAAkB,GAAY,KAAK,CAAC;QACpC,mBAAc,GAAY,KAAK,CAAC;QAChC,sBAAiB,GAAY,KAAK,CAAC;QACnC,2BAAsB,GAAY,KAAK,CAAC;QAGxC,iBAAY,GAAW,CAAC,CAAC;QAEzB,uBAAkB,GAAW,EAAE,CAAC;QAChC,oBAAe,GAAY,KAAK,CAAC;QACjC,kBAAa,GAAY,KAAK,CAAC;QAC/B,4BAAuB,GAAY,KAAK,CAAC;QACzC,kBAAa,GAAe,EAAE,CAAC;QAC/B,wBAAmB,GAAW,EAAE,CAAC;QACjC,8BAAyB,GAAW,EAAE,CAAC;QACvC,YAAO,GAAW,EAAE,CAAC;QACrB,kCAA6B,GAAY,IAAI,CAAC;QAC9C,4BAAuB,GAAe;YAC7C;gBACE,EAAE,EAAE,MAAM;gBACV,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,KAAK;gBACtB,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;QACO,mBAAc,GAAW,EAAE,CAAC;QAC5B,kBAAa,GAAY,KAAK,CAAC;QAC/B,mBAAc,GAAW,EAAE,CAAC;QAC5B,qBAAgB,GAAW,EAAE,CAAC;QAC9B,0BAAqB,GAAY,KAAK,CAAC;QAGvC,eAAU,GAAe,EAAE,CAAC;QAG5B,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,iBAAY,GAAY,KAAK,CAAC;QAC9B,YAAO,GAAW,EAAE,CAAC;QACrB,mBAAc,GAAU,EAAE,CAAC;QAC3B,0BAAqB,GAAU,EAAE,CAAC;QAClC,mBAAc,GAAY,KAAK,CAAC;QAChC,cAAS,GAAY,KAAK,CAAC;QAC3B,eAAU,GAAW,qBAAqB,CAAC;QAC3C,0BAAqB,GAAY,KAAK,CAAC;QAIvC,sBAAiB,GAAQ;YAChC,uBAAuB,EAAE;gBACvB;oBACE,EAAE,EAAE,MAAM;oBACV,aAAa,EAAE,IAAI;oBACnB,eAAe,EAAE,KAAK;oBACtB,OAAO,EAAE,EAAE;iBACZ;aACF;YACD,qBAAqB,EAAE,CAAC;YACxB,YAAY,EAAE;gBACZ;oBACE,UAAU,EAAE,CAAC;oBACb,QAAQ,EAAE,EAAE;oBACZ,cAAc,EAAE,EAAE;oBAClB,aAAa,EAAE,EAAE;oBACjB,YAAY,EAAE,EAAE;oBAChB,aAAa,EAAE,EAAE;oBACjB,kBAAkB,EAAE,EAAE;oBACtB,SAAS,EAAE,KAAK;oBAChB,qBAAqB,EAAE,CAAC;oBACxB,IAAI,EAAE,UAAU;iBACjB;aACF;YACD,gBAAgB,EAAE;gBAChB;oBACE,UAAU,EAAE,CAAC;oBACb,QAAQ,EAAE,EAAE;oBACZ,cAAc,EAAE,EAAE;oBAClB,aAAa,EAAE,EAAE;oBACjB,YAAY,EAAE,EAAE;oBAChB,aAAa,EAAE,EAAE;oBACjB,kBAAkB,EAAE,EAAE;oBACtB,SAAS,EAAE,KAAK;oBAChB,qBAAqB,EAAE,CAAC;oBACxB,IAAI,EAAE,UAAU;iBACjB;aACF;SACF,CAAC;QACO,uBAAkB,GAAU,IAAI,CAAC;QACjC,wBAAmB,GAAQ,EAAE,CAAC;QAC9B,qBAAgB,GAAY,KAAK,CAAC;QAClC,4BAAuB,GAAY,KAAK,CAAC;QACzC,yBAAoB,GAAY,IAAI,CAAC;QACrC,2CAAsC,GAAY,KAAK,CAAC;QACxD,sBAAiB,GAAY,IAAI,CAAC;QAClC,8BAAyB,GAAY,KAAK,CAAC;QAC3C,qBAAgB,GAAU,EAAE,CAAC;QAqHtC,wCAAwC;QACxC,wCAAmC,GAAG,KAAK,IAAI,EAAE;YAE/C,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClD,IAAI,cAAmB,CAAC;gBAExB,6EAA6E;gBAC7E,cAAc,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,0DAA0D;oBAC1D,cAAc,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;oBACvD,uDAAuD;oBACvD,MAAM,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;gBAC9D,CAAC;gBAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAE9G,IAAI,eAAe,EAAE,CAAC;oBACpB,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;oBACnC,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC;QA6NF,uBAAkB,GAAG,CAAC,SAAkB,EAAE,EAAE;YAC1C,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC;QAEF,yBAAyB;QACzB,8BAAyB,GAAG,CAAC,KAAU,EAAE,MAAW,EAAE,EAAE;YACtD,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACzD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;YAChC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC;QACrD,CAAC,CAAC;QAEF,+BAA0B,GAAG,KAAK,CAAC,EAAE;YACnC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC;QAEF,0BAAqB,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE;YAClD,OAAO,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,GAAG,CAAC,CAAC,MAAkB,EAAE,EAAE;;gBACjD,MAAM,cAAc,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,EAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,KAAK,CAAC;gBACzG,MAAM,WAAW,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC;gBAChF,OAAO,CACL,qBACE,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAC1B,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,CAAC,CAAC,EAAE;wBACjB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBACnC,CAAC,GACD,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAyUM,oBAAe,GAAG,GAAG,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACxD,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAE3C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC,CAAC;QA8JM,mBAAc,GAAwB,EAAE,CAAC;QACzC,gBAAW,GAAG,KAAK,CAAC;QAyO5B,iDAAiD;QACjD,kCAA6B,GAAG,KAAK,IAAI,EAAE;YACzC,IAAI,CAAC;gBACH,2EAA2E;gBAC3E,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;oBACzC,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAE3E,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QAEF,+BAA0B,GAAG,KAAK,IAAI,EAAE;YACtC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAEjE,6BAA6B;YAC7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAEzD,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,MAAM,oBAAoB,CAAC,CAAC;YAC9E,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;YACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,oBAAoB,CAAC,CAAC;QACnE,CAAC,CAAC;QAiEF,yBAAoB,GAAG,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC;QA8PF,uBAAkB,GAAG,GAAG,EAAE;YACxB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,eAAwB,IAAI,EAAE,EAAE;YACpD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YAErB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC;qBACnC,IAAI,CAAC,GAAG,EAAE;oBACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;YACP,CAAC;YACD,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC7D,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,CAAC;YAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAsEF,qBAAgB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC;QAgBF,qBAAgB,GAAG,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,EAAE;4BACnI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;wBAC1C,CAAC,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAiGF,mCAAmC;QACnC,uBAAkB,GAAG,IAAI,CAAC,EAAE;YAC1B,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,SAAS;oBACZ,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;oBACzC,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;oBAC7D,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;QACH,CAAC,CAAC;QACF,sBAAiB,GAAG,IAAI,CAAC,EAAE;YACzB,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/B,gGAAgG;YAChG,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC;gBACH,UAAU,CACR,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,IAAI,EACT,UAAU,EACV,MAAM,EACN,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,EAAE;oBACL,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;gBACzC,CAAC,CACF,CAAC,IAAI,CAAC,GAAG,EAAE;oBACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAC7B,IAAI,CAAC,mBAAmB,GAAG,uBAAuB,CAAC;oBACnD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;oBACpC,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBACjD,CAAC,EAAE,IAAI,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QAEF,wBAAmB,GAAG,GAAG,EAAE;;YACzB,IAAI,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAChE,IAAI,mBAAmB,GAAG,IAAI,CAAC;YAC/B,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,gBAAgB,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,mCAAI,EAAE,CAAC;gBAC3D,IAAI,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;oBACjC,mBAAmB,GAAG,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,KAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,MAAK,kBAAkB,EAAE,KAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC/J,CAAC;qBAAM,CAAC;gBACR,CAAC;YACH,CAAC;YACD,OAAO,mBAAmB,CAAC;QAC7B,CAAC,CAAC;QAEF,yBAAoB,GAAG,CAAC,eAAoB,EAAE,EAAE;;YAC9C,IAAI,qBAAqB,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACpE,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,IAAI,oBAAoB,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,mCAAI,EAAE,CAAC;gBACnE,IAAI,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;oBACjD,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,KAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,MAAK,kBAAkB,EAAE,KAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAK,IAAI,CAAC,MAAM,EAAE,CAAC;wBAClG,CAAC,GAAG,eAAe,CAAC;oBACtB,CAAC;oBACD,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;gBACH,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,CAAC;QA4BF,sBAAiB,GAAG,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAQ,OAAO,CAAC,EAAE;oBAC9C,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBACjF,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC;QAEF,uBAAkB,GAAG,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEjC,IAAI,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACxD,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,IAAI,CAAC,oBAAoB,iCACpB,sBAAsB,KACzB,kBAAkB,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,IAC9B,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,oBAAoB,CAAC;wBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS,EAAE,IAAI;wBACf,kBAAkB,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;qBAC/B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;gBAClF,IAAI,cAAc,EAAE,CAAC;oBACnB,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,wBAAwB,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;oBACvH,eAAe,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjC,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACrD,IAAI,mBAAmB,EAAE,CAAC;oBACxB,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,+BAA0B,GAAG,UAAU,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC;QACF,qBAAgB,GAAG,GAAG,EAAE;;YACtB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACpB,mCAAmC;gBACnC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAG,IAAI,CAAC,EAAE;oBACtF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,0CAA0C;gBACzE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAG,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC;YAC1C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YAEpC,8CAA8C;YAC9C,IAAI,CAAA,MAAC,IAAI,CAAC,cAAsB,0CAAE,UAAU,MAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;YACD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACjD,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC;QAQF,wBAAwB;QACxB,sBAAiB,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC/C,CAAC,CAAC;QACF,yBAAoB,GAAG,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;QACF,4BAA4B;QAC5B,+BAA0B,GAAG,EAAE,CAAC,EAAE;YAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC;YACrD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACpC,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACjD,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAChE,wBAAwB;YACxB,MAAM,UAAU,GAAG;gBACjB,SAAS,EAAE,EAAE,EAAE,iCAAiC;gBAChD,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;gBACzC,uBAAuB,EAAE,iBAAiB;gBAC1C,aAAa,EAAE,sCAAsC;aACtD,CAAC;YACF,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,4BAA4B;QAC5B,yBAAoB,GAAG,SAAS,CAAC,EAAE;YACjC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC,CAAC;QACF,+BAA0B,GAAG,GAAG,EAAE;YAChC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC3B,IAAI,CAAC,GAAG,EAAE;gBACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC7B,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;gBAChD,yBAAyB;YAC3B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAkCF,0CAA0C;QAC1C,sBAAiB,GAAG,OAAO,CAAC,EAAE;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QACF,0BAA0B;QAC1B,yBAAoB,GAAG,KAAK,EAAC,SAAS,EAAC,EAAE;YACvC,IAAI,CAAC;gBACH,6DAA6D;gBAC7D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;gBAElD,0CAA0C;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBACvD,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC;gBACtC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;gBAEzC,6BAA6B;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;gBAEvC,gDAAgD;gBAChD,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mDAAmD;gBACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC;QACF,mBAAc,GAAG,SAAS,CAAC,EAAE;YAC3B,eAAe,CAAC,SAAS,EAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7C,CAAC,CAAC;QACF,yBAAyB;QACzB,sBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,SAAkB,EAAE,EAAE;YAC7D,MAAM,mBAAmB,GAAG;gBAC1B,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,kBAAkB,EAAE;gBAC9B,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,mBAAmB,EAAE,CAAC;gBACtB,aAAa,EAAE,CAAC;aACjB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,cAAc,CAAC,mBAAmB,CAAC,CAAC;gBAC1C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;gBAChD,yBAAyB;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,wBAAwB;QACxB,gCAA2B,GAAG,KAAK,CAAC,CAAC,4CAA4C;QAEjF,gBAAW,GAAU,EAAE,CAAC;QAExB,yBAAoB,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,wBAAmB,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,oBAAe,GAAG,GAAG,EAAE;YACrB,4EAA4E;YAE5E,kCAAkC;YAClC,MAAM;YACN,qBAAqB;YACrB,oBAAoB;YACpB,0BAA0B;YAC1B,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,8BAA8B;YAC9B,wBAAwB;YACxB,gCAAgC;YAChC,wBAAwB;YACxB,OAAO;YACP,MAAM;YACN,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC,CAAC;QA6MF,6CAA6C;QAC7C,kCAA6B,GAAG,CAC9B,WAAmB,EACnB,cAAsB,EACtB,YAAsB,EACtB,gBAAwB,EACxB,sBAA8B,EAC9B,mBAA2B,EAC3B,mBAA2B,EAC3B,EAAE;YACF,IAAI,KAAK,GAAG,KAAK,CAAC;YAElB,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE;gBACvB,IAAI,KAAK,CAAC,aAAa,KAAK,mBAAmB,EAAE,CAAC;oBAChD,0DAA0D;oBAC1D,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;oBAEnB,uCAAuC;oBACvC,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;wBAC7B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;4BACjB,EAAE,EAAE,IAAI,EAAE;4BACV,WAAW;4BACX,cAAc;4BACd,WAAW,EAAE,GAAG;4BAChB,UAAU,EAAE,EAAE;4BACd,UAAU,EAAE,sCAAsC;4BAClD,gBAAgB;4BAChB,sBAAsB;4BACtB,mBAAmB;4BACnB,aAAa,EAAE,mBAAmB;yBACnC,CAAC,CAAC;oBACL,CAAC;oBAED,KAAK,GAAG,IAAI,CAAC;oBACb,OAAO;gBACT,CAAC;gBAED,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACvC,IAAI,KAAK;wBAAE,OAAO;oBAClB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC;YAEF,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/C,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,IAAI,KAAK;oBAAE,MAAM;YACnB,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;oBAC7B,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC3C,EAAE,EAAE,IAAI,EAAE;wBACV,WAAW;wBACX,cAAc;wBACd,WAAW,EAAE,GAAG;wBAChB,UAAU,EAAE,EAAE;wBACd,UAAU,EAAE,sCAAsC;wBAClD,gBAAgB;wBAChB,sBAAsB;wBACtB,mBAAmB;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAgNF,uEAAuE;QACvE,kBAAa,GAAG;YACd,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,MAAM;YAChB,2BAA2B;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,GAAG;YAChB,QAAQ,EAAE,GAAG;YACb,kBAAkB,EAAE,IAAI;YACxB,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,YAAY;YACxB,wBAAwB;YACxB,KAAK,EAAE,SAAS;YAChB,2BAA2B;YAC3B,OAAO,EAAE,SAAS;SACnB,CAAC;QAsSF,+BAA0B,GAAG,KAAK,IAAI,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtC,CAAC,CAAC;QAEF,2BAA2B;QAC3B,uBAAkB,GAAG,CAAC,aAAqB,EAAE,EAAE;YAC7C,IAAI,CAAC,yBAAyB,GAAG,aAAa,CAAC;QACjD,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,OAAe,EAAE,eAA6B,EAAE,aAAa,GAAG,IAAI,EAAE,EAAE;YAC3F,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;QACnF,CAAC,CAAC;QAEF,0BAAqB,GAAG,CAAC,OAAe,EAAE,eAA6B,EAAE,EAAE;YACzE,mEAAmE;YACnE,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC5D,CAAC,CAAC;QAgBF,kBAAa,GAAG,GAAG,CAAC,EAAE;YACpB,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAC5E,CAAC,CAAC;QAEF,6BAAwB,GAAG,KAAK,EAAC,QAAQ,EAAC,EAAE;YAC1C,2DAA2D;YAC3D,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChF,+CAA+C;gBAC/C,OAAO;YACT,CAAC;YAED,MAAM,mBAAmB,GAAG;gBAC1B,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,CAAC,QAAQ,CAAC;gBAC1B,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,IAAI,EAAE,UAAU;aACjB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/F,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,6BAA6B;YACpE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC;QAEF,8BAAyB,GAAG,GAAG,EAAE;YAC/B,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAExF,2BAA2B;YAC3B,IAAI,qBAAqB,CAAC,cAAc,EAAE,CAAC;gBACzC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;oBACrC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBAC/E,CAAC,CAAC,CAAC;YACL,CAAC;YAED,uEAAuE;YACvE,IAAI,qBAAqB,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;oBACrC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,qBAAqB,CAAC,YAAY,CAAC;gBACpE,CAAC,CAAC,CAAC;YACL,CAAC;YAED,4DAA4D;YAC5D,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAElE,yFAAyF;YACzF,MAAM,kBAAkB,GAAG,IAAI,WAAW,CAAC,qBAAqB,EAAE;gBAChE,MAAM,EAAE,kBAAkB;aAC3B,CAAC,CAAC;YAEH,yCAAyC;YACzC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;YAElD,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACnE,CAAC,CAAC;QAEF,wDAAwD;QACxD,gBAAW,GAAG,GAAG,EAAE;YACjB,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAClF,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC;QA4BF,qBAAgB,GAAG,GAAG,EAAE;YACtB,qBAAqB,CAAC,GAAG,EAAE;gBACzB,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;gBAEtK,IAAI,cAAc,EAAE,CAAC;oBACnB,4BAA4B;oBAC5B,cAAc,CAAC,WAAW,CAAC;oBAE3B,MAAM,cAAc,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;oBACpE,IAAI,cAAc,GAAG,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC/H,IAAI,UAAU,GAAG,CAAC,CAAC;oBAEnB,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;wBAC7B,IAAI,cAAc,GAAG,KAAK,GAAG,GAAG,GAAG,cAAc;4BAAE,MAAM;wBACzD,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe;4BAAE,MAAM,CAAC,qEAAqE;wBACpH,cAAc,IAAI,KAAK,CAAC;wBACxB,UAAU,EAAE,CAAC;oBACf,CAAC;oBACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;wBAClE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClD,CAAC,EAAE,EAAE,CAAC,CAAC;oBAEP,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;wBACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;oBAC3E,CAAC;oBACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,0CAA0C;QAC1C,sBAAiB,GAAG,GAAG,EAAE;YACvB,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACpE,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,MAAM,cAAc,GAAU,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC/D,IAAI,2BAA2B,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7F,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5D,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;aACtB,CAAC,CAAC,CAAC;QACN,CAAC,CAAC;QACF,mEAAmE;QACnE,uBAAkB,GAAG,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,gCAAgC;YACxD,IAAI,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;gBACrC,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAC/D,8GAA8G;YAE9G,IAAI,2BAA2B,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC/D,iBAAiB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBACzD,2BAA2B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAQ,UAAU,CAAE,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,GAAG,2BAA2B,CAAC;QAC7D,CAAC,CAAC;QASF,yBAAyB;QACzB,8BAAyB,GAAG,GAAG,EAAE;;YAC/B,IAAI,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,WAAW,KAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtJ,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;gBACtB,mCAAmC;gBACnC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC,CAAC;YAGF,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAG,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAE3G,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAC9D,CAAC,CAAC;QA+CF,wBAAmB,GAAG,CAAC,SAAiB,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7G,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC;YAC3C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QA57FA,IAAI,CAAC,cAAc,GAAG,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvD;IACD,cAAc,CAAC,KAAkB;QAC/B,4BAA4B;QAC5B,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,mBAAmB;QACnB,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC;IAC9C,CAAC;IAGD,KAAK,CAAC,oBAAoB,CAAC,SAAqB;QAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;YAC5B;gBACE,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC;gBAC9B,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,IAAI,EAAE,UAAU;aACjB;SACF,CAAC,CAAC;QACH,sCAAsC;QACtC,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAC9D,CAAC;IAED,yBAAyB,CAAC,aAAa,EAAE,SAAS,EAAE,sBAAsB;QACxE,IAAI,mBAAmB,mBACrB,EAAE,EAAE,IAAI,EAAE,EACV,OAAO,EAAE,CAAC,EACV,sBAAsB,EAAE,sBAAsB,EAC9C,sBAAsB,EAAE,aAAa,CAAC,cAAc,EACpD,mBAAmB,EAAE,aAAa,CAAC,WAAW,EAC9C,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,IAC7D,aAAa,CACjB,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,mBAAmB,mBACjB,EAAE,EAAE,IAAI,EAAE,EACV,OAAO,EAAE,IAAI,EAAE,EACf,KAAK,EAAE,CAAC,IACL,mBAAmB,CACvB,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAID,KAAK,CAAC,oBAAoB;;QACxB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,MAAM,oBAAoB,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,KAAI,EAAE,CAAC;QAC9D,MAAM,qCAAqC,GAAG,EAAE,CAAC;QAEjD,MAAM,iBAAiB,GAAG,IAAI,EAAE,CAAC;QACjC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YAC3C,qCAAqC,CAAC,IAAI,iBACxC,EAAE,EAAE,IAAI,EAAE,EACV,aAAa,EAAE,iBAAiB,EAChC,OAAO,EAAE,CAAC,EACV,sBAAsB,EAAE,IAAI,EAC5B,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,IAC7D,aAAa,EAChB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,CAAC,MAAA,IAAI,CAAC,mBAAmB,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACnD,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YAChD,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uBAAuB,GAAG;YAC7B;gBACE,EAAE,EAAE,MAAM;gBACV,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAChD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,SAAS;wBACb,aAAa,EAAE,iBAAiB;wBAChC,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,2BAA2B,CAAC;wBAC/E,OAAO,EAAE,qCAAqC;qBAC/C;iBACF;aACF;SACF,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEzF,IAAI,CAAC,qBAAqB,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,qBAAqB,KAAI,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,qBAAqB,KAAI,CAAC,CAAC;QACtF,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3E,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,qCAAqC,CAAC,CAAC;QACnF,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,mBAAmB,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEzF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE1E,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAEhD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEnC,IAAI,CAAC,kBAAkB,GAAG;YACxB;gBACE,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,IAAI,EAAE,kBAAkB;gBACnC,MAAM,EAAE,GAAG;aACZ;YACD;gBACE,KAAK,EAAE,0BAA0B;gBACjC,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,OAAO;aAChB;YACD;gBACE,UAAU,EAAE,SAAS;gBACrB,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,qBAAqB;gBACnC,kBAAkB,EAAE;oBAClB,OAAO,EAAE,IAAI,CAAC,cAAc;iBAC7B;aACF;SACF,CAAC;QAEF,8BAA8B;QAC9B,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvC,kDAAkD;QAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAC;IACpE,CAAC;IAED,WAAW,CAAC,QAAoB;QAC9B,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,wCAAwC;gBAC/D,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;YACnC,SAAS,EAAE,IAAI,EAAE,kCAAkC;YACnD,OAAO,EAAE,IAAI,EAAE,kCAAkC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;;QACd,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC;aACnC,IAAI,CAAC,GAAG,EAAE;YACT,yBAAyB;YACzB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEL,aAAa,CAAC,eAAe,GAAG,MAAA,IAAI,CAAC,gBAAgB,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,aAAa,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,sBAAsB,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,aAAa,CAAC,mBAAmB,GAAG,MAAA,IAAI,CAAC,iBAAiB,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAAC,EAAE;YACjD,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC;QAC1C,CAAC,CAAC;QAEF,sDAAsD;QACtD,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAAC,EAAE;YACjD,SAAS,qBAAqB,CAAC,UAAe,EAAE,cAAmB;gBACjE,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAE3C,IAAI,UAAU,CAAC,iBAAiB,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;wBACtE,OAAO,MAAM,CAAC,eAAe,CAAC;oBAChC,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;gBAC1F,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBAC3C,MAAM,mBAAmB,GAAkB,IAAI,CAAC,mBAAoC,CAAC;gBACrF,IAAI,CAAC,gBAAgB,CAAC;oBACpB,WAAW,EAAE,WAAW;oBACxB,WAAW,EAAE,iBAAiB;iBAC/B,CAAC,CAAC;gBACH,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC;IAoCD,YAAY;IAEZ,mCAAmC;IACnC,0BAA0B,CAAC,WAAmB,EAAE,WAAmB;QACjE,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,WAAW,CAAC,CAAC;QAExE,+BAA+B;QAC/B,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAClC,CAAC;IACH,CAAC;IACD,qBAAqB;IAIrB,sBAAsB;;QACpB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,EAAE;YAC1C,uDAAuD;YACvD,IAAI,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACpD,MAAM,IAAI,GAAG,KAAK,CAAC;gBACnB,uCACK,SAAS,KACZ,IAAI,EAAE,IAAI,IACV;YACJ,CAAC,CAAC,CAAC;YAEH,wEAAwE;YACxE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACjG,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC;oBAC3C,cAAc,CAAC,IAAI,iCAAM,MAAM,KAAE,IAAI,EAAE,IAAI,IAAG,CAAC;gBACjD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iCAAiC;YACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,0BAA0B,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,iCACxD,GAAG,KACN,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,IAC9D,CAAC,CAAC;gBAEJ,4DAA4D;gBAC5D,cAAc,GAAG,0BAA0B,CAAC;YAC9C,CAAC;YAED,cAAc;YACd,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;gBACtC,IAAI,UAAU,GAAG,IAAI,CAAC;gBACtB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvD,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBAC3C,2DAA2D;oBAC3D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC7D,uCACK,MAAM,KACT,IAAI,EAAE,IAAI,IACV;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEnE,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACrD,iEAAiE;YACjE,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/G,+CAA+C;YAC/C,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,IAAI,MAAM,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;oBACxC,uCAAY,MAAM,KAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAG;gBACjF,CAAC;qBAAM,CAAC;oBACN,uCAAY,MAAM,KAAE,IAAI,EAAE,IAAI,IAAG;gBACnC,CAAC;YACH,CAAC;YACD,4CAA4C;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE;YACjD,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;;gBAC7B,gDAAgD;gBAChD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrE,IAAI,MAAM,EAAE,CAAC;oBACX,sFAAsF;oBACtF,MAAM,kBAAkB,iDACnB,MAAM,CAAC,kBAAkB,GACzB,MAAM,CAAC,kBAAkB,KAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,cAAc,EAAE,IAAI,EACpB,eAAe,EACb,IAAI,CAAC,iBAAiB;4BACtB,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,OAAO,KAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAC/I,CAAC;oBAEF,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAK,iBAAiB,EAAE,CAAC;wBAC/C,MAAM,qBAAqB,GAAG,CAAC,CAAC;wBAChC,8CAA8C;wBAC9C,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,kBAAkB,0CAAE,UAAU,CAAC,CAAC;wBACvF,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC;wBACpC,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC;wBAEpC,kBAAkB;wBAClB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;wBAExF,IAAI,CAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,kBAAkB,0CAAE,UAAU,0CAAE,MAAM,IAAG,qBAAqB,EAAE,CAAC;4BAC3E,yDAAyD;4BACzD,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,CAAC,CAAC,CAAC;4BACzG,IAAI,CAAC,uBAAuB,GAAG,eAAe,CAAC;4BAC/C,cAAc,CAAC,IAAI,CAAC;gCAClB,EAAE,EAAE,GAAG;gCACP,QAAQ,EAAE,sBAAsB;gCAChC,KAAK,EAAE,WAAW;gCAClB,aAAa,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;gCACxD,QAAQ,EAAE,KAAK;6BAChB,CAAC,CAAC;4BAEH,kBAAkB,CAAC,UAAU,GAAG,cAAc,CAAC;wBACjD,CAAC;oBACH,CAAC;oBAED,IAAI,MAAM,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;wBAC/C,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC;oBAC/B,CAAC;oBAED,uCACK,MAAM,KACT,YAAY,EAAE,MAAM,CAAC,YAAY,EACjC,kBAAkB,EAAE,kBAAkB,IACtC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC,CAAC,wDAAwD;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,UAAU,CAAC,EAAE;YACpC,MAAM,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YAClF,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACpD,MAAM,aAAa,GAAG;oBACpB,UAAU,EAAE,SAAS;oBACrB,KAAK,EAAE,SAAS;oBAChB,kBAAkB,EAAE;wBAClB,0BAA0B,EAAE,KAAK;qBAClC;oBACD,YAAY,EAAE,oBAAoB;oBAClC,MAAM,EAAE,OAAO;iBAChB,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,UAAU,CAAC;QAClC,MAAM,iBAAiB,GAAG,UAAU,CAAC,EAAE;YACrC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,2EAA2E;YAC/G,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,IAAG,CAAC,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC5D,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;gBACxF,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBAChC,IAAI,GAAG,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;4BACjC,uCACK,GAAG,KACN,cAAc,EAAE,IAAI,EACpB,eAAe,EAAE,KAAK,EACtB,QAAQ,EAAE,IAAI,IACd;wBACJ,CAAC;wBACD,OAAO,GAAG,CAAC;oBACb,CAAC,CAAC,CAAC;oBAEH,MAAM,cAAc,GAAG;wBACrB,UAAU,EAAE,EAAE,EAAE,mCAAmC;wBACnD,KAAK,EAAE,cAAc;wBACrB,iBAAiB,EAAE,IAAI,EAAE,8CAA8C;wBACvE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,8EAA8E;wBACrI,MAAM,EAAE,MAAM,EAAE,qBAAqB;wBACrC,WAAW,EAAE,IAAI,EAAE,+CAA+C;wBAClE,QAAQ,EAAE,EAAE;wBACZ,MAAM,EAAE,KAAK,EAAE,yCAAyC;wBACxD,QAAQ,EAAE,EAAE,EAAE,yCAAyC;wBACvD,QAAQ,EAAE,KAAK,EAAE,mCAAmC;wBACpD,eAAe,EAAE,IAAI;wBACrB,YAAY,EAAE,IAAI;wBAClB,UAAU,EAAE,IAAI;qBACjB,CAAC;oBACF,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,kDAAkD;gBACxF,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,EAAE;YAC9B,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAC7B,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;gBACnC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;gBACzC,yBAAY,MAAM,EAAG;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,+CAA+C;QAC/C,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QAErE,0DAA0D;QAC1D,IAAI,qBAAqB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QAErE,yDAAyD;QACzD,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACnJ,mDAAmD;YACnD,qBAAqB,GAAG,gBAAgB,CAAC;QAC3C,CAAC;QAED,iFAAiF;QACjF,IAAI,CAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;YAC1C,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACzD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChG,IAAI,SAAS,EAAE,CAAC;oBACd,uCAAY,MAAM,KAAE,IAAI,EAAE,SAAS,CAAC,IAAI,IAAG;gBAC7C,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,sBAAsB,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAEjE,8EAA8E;QAC9E,MAAM,uBAAuB,GAAG,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzF,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC7D,CAAC;IAGD,qBAAqB;QACnB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9D,uCACK,GAAG,KACN,IAAI,EAAE,UAAU,IAChB;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC;YAC1C,oEAAoE;YACpE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;IACH,CAAC;IAGD,2BAA2B,CAAC,QAAoB;QAC9C,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,YAAY;IAQZ,wBAAwB;IACxB,qBAAqB;IACrB,0BAA0B,CAAC,SAAe,EAAE,SAAe,EAAE,QAAiB;QAC5E,OAAO,CAAC,GAAG,CAAC,2CAA2C,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,gFAAgF;QAChF,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,oDAAoD,IAAI,CAAC,YAAY,kBAAkB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACxH,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,KAAK,cAAc,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,UAAU,GAAG,uBAAuB,CACtC,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,KAAK,CAAC,EACnF,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,kBAAkB,EAAE,EACzB,8BAA8B,EAC9B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,mBAAmB,EACxB,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;;YAC1B,IAAI,CAAC;gBACH,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC7B,CAAC;gBAED,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;gBAC3D,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,0CAAE,UAAU,CAAA,CAAC;gBACpD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACtE,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC,EACD,IAAI,CAAC,kBAAkB,CACxB,CAAC;QAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAYD,mBAAmB,CAAC,OAAO;QACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC9C,CAAC;gBACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,UAAU;QAC3B,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE;YAC5B,MAAM,aAAa,mCACd,MAAM,KACT,OAAO,EAAE,IAAI,CAAC,EAAE;;oBACd,MAAM,OAAO,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC;oBAEpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC3B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;wBAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;wBAE7B,IAAI,iBAAiB,GAAG,IAAI,CAAC,oCAAoC,EAAE,CAAC;wBACpE,IAAI,CAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;4BACvC,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iCAC/C,MAAM,KACT,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IACnD,CAAC,CAAC;wBACN,CAAC;wBACD,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;wBACnD,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtB,IAAI,CAAC,kBAAkB,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,0CAAE,cAAc,EAAE,CAAC;wBACnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,CAAC;oBAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;oBAC3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC,GACF,CAAC;YAEF,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oCAAoC;;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB;YAChD,CAAC,CAAC,MAAA,IAAI,CAAC,gBAAgB,mCAAI,EAAE;YAC7B,CAAC,CAAC,CAAC,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC;gBAC9B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;;oBAAC,OAAA,iCAChB,GAAG,CAAC,SAAS,EAAE,GACf,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,mCAAI,EAAE,CAAC,EACrC,CAAA;iBAAA,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC;YAC3B,uCACK,GAAG,KACN,MAAM,EAAE,mBAAmB,EAC3B,YAAY,EAAE;oBACZ,MAAM,EAAE,MAAM,CAAC,EAAE;wBACf,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBACvE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC3B,CAAC;oBACD,mBAAmB,EAAE,IAAI;iBAC1B,IACD;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAID,uBAAuB;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,iDAAiD;QACjD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACnE,4FAA4F;YAC9F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBAChC,GAAG,EAAE,SAAS;gBACd,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE;oBACP,QAAQ,EAAE,CAAC;oBACX,MAAM,EAAE,EAAE;oBACV,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,EAAE;oBACb,SAAS,EAAE,EAAE;oBACb,SAAS,EAAE,KAAK;oBAChB,SAAS,EAAE,EAAE;oBACb,WAAW,EAAE,EAAE;oBACf,SAAS,EAAE,EAAE;oBACb,kDAAkD;oBAClD,QAAQ,EAAE,IAAI;iBACf;gBACD,IAAI,KAAI,CAAC;gBACT,OAAO,KAAI,CAAC;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,0BAA0B,CAAgB,CAAC;QACtF,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;YACvC,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1C,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oCAAoC,CAAgB,CAAC;QAClG,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YAC3C,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAGD,YAAY;QACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAGD,uBAAuB,CAAC,QAAe;QACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9D,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAGD,sBAAsB;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAID,cAAc;QACZ,IAAI,CAAC,WAAW,GAAG,kHACjB,WAAW,EAAE,IAAI,IACd,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACzD,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC7D,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACnD,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACjD,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACpE,UAAU,EAAE,IAAI,EAChB,kBAAkB,EAAE,EAAE,EACtB,SAAS,EAAE,EAAE,EACb,aAAa,EAAE;gBACb,MAAM,EAAE,CAAC,IAAI,CAAC,oBAAoB;gBAClC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,CAAC;gBAClI,SAAS,EAAE,IAAI;aAChB,EACD,YAAY,EAAE,UAAU,KACrB,CAAC,IAAI,CAAC,UAAU,IAAI;YACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;;gBACjB,MAAM,EAAE,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtF,OAAO,MAAA,MAAM,CAAC,QAAQ,0CAAE,QAAQ,EAAE,CAAC,CAAC,WAAW;gBACjD,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC,KACF,yBAAyB,EAAE,IAAI,EAC/B,aAAa,EAAE,KAAK,CAAC,EAAE;gBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;gBAEtB,IAAI,CAAC,KAAK;oBAAE,OAAO;gBAEnB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;gBAED,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;gBAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAChD,CAAC,EACD,aAAa,EAAE,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;YACnC,CAAC,EACD,UAAU,EAAE;gBACV,iBAAiB,EAAE,iBAAiB;gBACpC,wBAAwB,EAAE,wBAAwB;gBAClD,wBAAwB,EAAE,wBAAwB;gBAClD,kBAAkB,EAAE,kBAAkB;gBACtC,oBAAoB,EAAE,oBAAoB;gBAC1C,eAAe,EAAE,eAAe;gBAChC,cAAc,EAAE,cAAc;gBAC9B,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,gBAAgB;aACnC,EACD,UAAU,EAAE,IAAI,CAAC,gBAAgB,EACjC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,OAAO,EAAE,IAAI,CAAC,eAAe;gBAC3B,CAAC,CAAC;oBACE,UAAU,EAAE;wBACV;4BACE,EAAE,EAAE,SAAS;4BACb,YAAY,EAAE,SAAS;4BACvB,QAAQ,EAAE,SAAS;4BACnB,OAAO,EAAE,QAAQ;4BACjB,SAAS,EAAE,oBAAoB;yBAChC;wBACD;4BACE,EAAE,EAAE,SAAS;4BACb,YAAY,EAAE,SAAS;4BACvB,QAAQ,EAAE,SAAS;4BACnB,OAAO,EAAE,SAAS;4BAClB,SAAS,EAAE,oBAAoB;4BAC/B,eAAe,EAAE;gCACf,iBAAiB,EAAE,IAAI;gCACvB,cAAc,EAAE,IAAI;gCACpB,cAAc,EAAE,IAAI;gCACpB,iBAAiB,EAAE,IAAI;6BACxB;yBACF;qBACF;oBACD,gBAAgB,EAAE,EAAE;iBACrB;gBACH,CAAC,CAAC,IAAI,EACR,WAAW,EAAE,CAAC,KAA0B,EAAE,EAAE;;gBAC1C,IAAI,CAAC,MAAM,GAAG;oBACZ,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC;gBAEF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,MAAM,SAAS,GAAG,GAAG,EAAE;oBACrB,IAAI,CAAC;wBACH,gFAAgF;wBAChF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;wBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;wBAEjC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAE/G,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC5B,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,sDAAsD;wBACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,CAAC;gBACH,CAAC,CAAC;gBAEF,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtE,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,MAAA,IAAI,CAAC,YAAY,oDAAI,CAAC;gBACtB,MAAA,IAAI,CAAC,gBAAgB,oDAAI,CAAC;YAC5B,CAAC,EACD,aAAa,EAAE,GAAG,EAAE;gBAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBACtE,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EACD,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBACrE,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EACD,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBAC7D,IAAI,CAAC,WAAW,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,MAAK,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,EACD,cAAc,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EACD,eAAe,EAAE,GAAG,EAAE;gBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBACrD,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EACD,aAAa,EAAE,GAAG,EAAE;gBAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EACD,mBAAmB,EAAE,GAAG,EAAE;gBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,oDAAoD;gBACpD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;oBACxD,IAAI,WAAW,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;wBACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,kCAAkC;wBAC5D,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;oBACnC,CAAC;oBACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC,EACD,cAAc,EAAE,MAAM,CAAC,EAAE;;gBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBAC9C,MAAM,aAAa,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAG,CAAC,CAAC,0CAAE,cAAc,KAAI,EAAE,CAAC;gBAEnE,8DAA8D;gBAC9D,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,CAAC;gBAEnI,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAEzC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAE3D,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;oBACvD,cAAc,CAAC,QAAQ,CAAC;wBACtB,MAAM;qBACP,CAAC,CAAC;oBAEH,IAAI,OAAO,cAAc,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;wBACzD,cAAc,CAAC,eAAe,EAAE,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC,EACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,gBAAgB,EAAE,IAAI,GACG,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACvD,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAGD,6BAA6B,CAAC,QAAiC;QAC7D,IAAI,CAAC,oBAAoB,GAAG,QAAQ,KAAK,UAAU,CAAC;IACtD,CAAC;IAGD,kBAAkB;QAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,4BAA4B,CAAC,IAAa;QACxC,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,gBAAgB;;QACd,IAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,wBAAwB;YACvD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,6BAA6B;QAC9D,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAwCD,KAAK,CAAC,WAAW,CAAC,UAAe;QAC/B,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,CAAC,gBAAwB,aAAxB,gBAAgB,uBAAhB,gBAAgB,CAAU,KAAK,KAAI,EAAE,CAAC;QAExD,MAAM,WAAW,GAAG,4FAA4F,CAAC;QAEjH,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7E,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yCAAyC;QACzC,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAC3C;YACE,IAAI,EAAE;gBACJ,EAAE,EAAE,QAAQ;aACb;SACF,EACD,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAChC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,gBAAgB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;;YACrD,MAAM,WAAW,GAAG,MAAA,MAAM,CAAC,kBAAkB,0CAAE,MAAM,CAAC;YACtD,OAAO,CAAC,CAAC,WAAW,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;;YACzB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;gBACb,aAAa,EAAE,CAAA,MAAA,EAAE,CAAC,kBAAkB,0CAAE,aAAa,KAAI,EAAE;gBACzD,eAAe,EAAE,CAAA,MAAA,EAAE,CAAC,kBAAkB,0CAAE,eAAe,KAAI,EAAE;gBAC7D,KAAK,EAAE,CAAA,MAAA,EAAE,CAAC,kBAAkB,0CAAE,MAAM,KAAI,EAAE;gBAC1C,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,KAAK;aACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,iFAAiF;QACjF,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAE3C,qEAAqE;QACrE,IAAI,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,uGAAuG;YACvG,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;YACvF,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAUD,YAAY,CAAC,gBAAgB,GAAG,KAAK;;QACnC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;YACrE,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEpE,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,MAAM,uBAAuB,GAAG;gBAC9B,eAAe,mCAA2B;gBAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aACpC,CAAC;YACF,MAAM,4BAA4B,GAAG;gBACnC,eAAe,yCAAiC;gBAChD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;aACzC,CAAC;YACF,MAAM,2BAA2B,GAAG;gBAClC,eAAe,wCAAgC;gBAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aAClC,CAAC;YACF,MAAM,6BAA6B,GAAG;gBACpC,eAAe,0CAAkC;gBACjD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aACpC,CAAC;YACF,MAAM,sBAAsB,GAAG;gBAC7B,eAAe,uCAA+B;gBAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aACpC,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,eAAe,GAAG;gBACpB,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,kBAAkB,EAAE;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,kBAAkB,EAAE,IAAI;aACzB,CAAC;YAEF,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACrD,IAAI,qBAAqB,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACpE,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC3B,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBACzB,IAAI,oBAAoB,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,mCAAI,EAAE,CAAC;wBACnE,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC3C,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAChF,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,oBAAoB,iCACpB,mBAAmB,KACtB,KAAK,EAAE,SAAS,IAChB,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,QAAQ;;QAC1B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAC;YACpB,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC;YACjC,IAAI,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;YACrD,IAAI,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;QACpC,CAAC;QACD,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,iCAAiC,EAAE,CAAC;YAChD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;YACrC,eAAe,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,iCAAiC,CAAC;QAChE,CAAC;QACD,IAAI,eAAe,IAAI,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;YACnD,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;;gBAC/B,IAAI,KAAK,GAAG,MAAM,CAAC;gBACnB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,0CAA0C,EAAE,CAAC;oBACvD,KAAK,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,0CAA0C,CAAC;gBAC7D,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,kBAAkB,CAAC,IAAI,CAAC;wBACtB,mBAAmB,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,mBAAmB,mCAAI,CAAC;wBACpD,eAAe,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe;qBACxC,CAAC,CAAC;oBACH,QAAQ,KAAK,CAAC,eAAe,EAAE,CAAC;wBAC9B;4BACE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;4BACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;oCACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oCAC/B,UAAU,EAAE,IAAI;iCACjB,CAAC,CAAC;4BACL,CAAC;4BACD,MAAM;wBACR;4BACE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;4BAC/D,CAAC;4BACD,MAAM;wBACR;4BACE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gCAClE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gCAChD,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gCACpH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;4BACjE,CAAC;4BACD,MAAM;wBACR;4BACE,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BAC7C,CAAC,MAAA,IAAI,CAAC,mBAAmB,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gCACvD,IAAI,YAAY,GAAG,KAAK,CAAC;gCAEzB,KAAK,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;oCAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;wCAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;wCAChF,IAAI,KAAK,EAAE,CAAC;4CACV,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;4CACpC,YAAY,GAAG,IAAI,CAAC;4CACpB,MAAM;wCACR,CAAC;oCACH,CAAC;gCACH,CAAC;gCAED,IAAI,CAAC,YAAY,EAAE,CAAC;oCAClB,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oCAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;oCACnE,IAAI,MAAM,EAAE,CAAC;wCACX,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oCACjC,CAAC;yCAAM,CAAC;wCACN,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oCAC/C,CAAC;gCACH,CAAC;4BACH,CAAC,CAAC,CAAC;4BAEH,IAAI,CAAC,YAAY;iCACd,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC;iCAC/C,OAAO,CAAC,aAAa,CAAC,EAAE;gCACvB,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;gCACzG,IAAI,CAAC,MAAM,EAAE,CAAC;oCACZ,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gCAC5F,CAAC;4BACH,CAAC,CAAC,CAAC;4BACL,MAAM;wBACR;4BACE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;4BACtE,CAAC;4BACD,MAAM;wBACR;4BACE,MAAM;oBACV,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,MAAM,MAAK,CAAC,EAAE,CAAC;gBACnC,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACrD,IAAI,OAAO,GAAG,mBAAmB,CAAC;gBAClC,IAAI,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,iCAAiC,EAAE,CAAC;oBAC3D,OAAO,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,iCAAiC,CAAC;gBACnE,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;QACR,CAAC;QACD,IAAI,CAAC,kCAAkC,GAAG,kBAAkB,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC7B,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACrD,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACnD,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,eAAe;QACb,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC3D,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACzF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAEvC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACvB,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACjC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;QAEzB,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,CAAC,oBAAoB,iCACpB,mBAAmB,KACtB,KAAK,EAAE,IAAI,EACX,kBAAkB,EAAE,IAAI,IACxB,CAAC;QACL,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAE5B,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACvB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAiCD,oFAAoF;IACpF,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,UAAU;QACR,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IACD,aAAa;QACX,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,WAAW,CAAC,SAAS;QACnB,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,iBAAiB,GAAG,GAAG,IAAI,WAAW,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,CAAC,4BAA4B;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,GAAG,SAAS,WAAW,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,2BAA2B;QAErE,4DAA4D;QAC5D,MAAM,eAAe,GAAG;YACtB,EAAE,EAAE,SAAS;YACb,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACvD,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB;YAChF,eAAe,EAAE;gBACf,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC;QAEF,qDAAqD;QACrD,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3C,CAAC,CAAC;gBACE,UAAU,EAAE,CAAC,eAAe,CAAC;gBAC7B,gBAAgB,EAAE,SAAS;aAC5B;YACH,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;QAED,gCAAgC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACxE,IAAI,cAAc,YAAY,WAAW,EAAE,CAAC;YAC1C,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,CAAC;IACH,CAAC;IAID,iBAAiB;QACf,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iBAAiB;IACjB,SAAS;QACP,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IACD,YAAY;QACV,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IAC7C,CAAC;IAeD,kBAAkB,CAAC,QAAgB,EAAE,SAAkB,EAAE,wBAAgC,EAAE,aAAqB,EAAE;QAChH,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,oCAAoC,GAAG,wBAAwB,CAAC;IACvE,CAAC;IACD,YAAY,CAAC,UAAkB,EAAE,QAAgB,EAAE,SAAkB,EAAE,wBAAgC;QACrG,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,wBAAwB,EAAE,UAAU,CAAC,CAAC;IACrF,CAAC;IACD,aAAa;QACX,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IAC7C,CAAC;IACD,wBAAwB,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB;QAC1E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IACD,wBAAwB,CAAC,IAAa;QACpC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,WAAW;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,oCAAoC;QAC5E,MAAM,YAAY,GAAW,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,gGAAgG;QAChG,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE;gBAC7G,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,cAAc;gBAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,+BAA+B,CAAC;gBAChF,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACjD,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,kGAAkG;IAClG,8CAA8C,CAAC,WAAkB;QAC/D,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,kCAAkC,EAAE,CAAC;gBAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC7H,MAAM,CAAC,mBAAmB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,mBAAmB,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,gFAAgF;IAChF,KAAK,CAAC,iCAAiC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,WAAW;QACtG,MAAM,kBAAkB,GAAG,IAAI,CAAC,8CAA8C,CAAC,WAAW,CAAC,CAAC;QAC5F,MAAM,YAAY,GAAW,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,2BAA2B,CAC/B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,EACJ,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,EAAE;gBACH,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,cAAc;gBAC1D,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,GAAG,IAAI,+BAA+B,CAAC;gBAClE,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACjD,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAgFD,KAAK,CAAC,gBAAgB,CAAC,MAAW,EAAE,IAAY,EAAE,SAAiB,EAAE,SAAkB;QACrF,IAAI,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1C,uGAAuG;QACvG,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC;YACH,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;gBAC5G,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC;gBAC3C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACjD,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAwFD,oBAAoB;IACpB,WAAW;QACT,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACjC,CAAC;IAiDD,6BAA6B;IAC7B,oBAAoB,CAAC,kBAAkB;QACrC,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,WAAW,EAAE,IAAI,CAAC,iBAAiB;YACnC,cAAc,EAAE,GAAG;YACnB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IACD,6BAA6B,CAAC,iBAAiB;QAC7C,uBAAuB;QACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;YAC5B;gBACE,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,OAAO;gBACvB,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,IAAI,EAAE,SAAS;aAChB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;QACrE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IAmGD,kBAAkB,CAAC,QAAgB;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;QAChF,uDAAuD;QACvD,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACrF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;YAC1E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;YACrC,uDAAuD;YACvD,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC/E,OAAO,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,sCAAsC;YACtC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;gBACjF,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;oBAClC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,oCAAoC;oBAChE,cAAc,EAAE,GAAG;oBACnB,WAAW,EAAE,WAAW;iBACzB,CAAC,CAAC;YACL,CAAC;YAED,iEAAiE;YACjE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,6DAA6D;QAC7D,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB,CAAC,MAAM;QACxB,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACrD,mBAAmB,CAAC,cAAc,GAAG,CAAC,GAAG,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrF,8DAA8D;QAC9D,IAAI,CAAC,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,4BAA4B;IAC5B,gBAAgB;QACd,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAC7D,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,0BAA0B,CAAC,MAAW;;QACpC,8IAA8I;QAC9I,MAAM,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,0CAAE,UAAU,CAAC;QAE1I,4CAA4C;QAC5C,MAAM,SAAS,mCAAQ,MAAM,KAAE,gBAAgB,EAAE,gBAAgB,GAAE,CAAC;QAEpE,2DAA2D;QAC3D,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,MAAc,EAAE,MAAW,EAAE,EAAE;YACpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBAClC,MAAM,SAAS,mCAAQ,MAAM,KAAE,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,GAAE,CAAC;oBAC/E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,OAAO,IAAI,CAAC,CAAC,kDAAkD;gBACjE,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;wBACnD,OAAO,IAAI,CAAC,CAAC,+DAA+D;oBAC9E,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,gCAAgC;QAChD,CAAC,CAAC;QAEF,eAAe,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;QACzF,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,wBAAwB,CAAC,OAAe,EAAE,aAAqB,EAAE,eAA6B;QAC5F,MAAM,QAAQ,GAAG;YACf,EAAE,EAAE,IAAI,EAAE;YACV,aAAa,EAAE,aAAa;YAC5B,eAAe,EAAE,eAAe;YAChC,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,oEAAoE;QACpE,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,MAAc,EAAE,KAAU,EAAE,EAAE;YAClE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,mCAAmC;oBACzD,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,OAAO,IAAI,CAAC,CAAC,gCAAgC;gBAC/C,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;wBACjD,OAAO,IAAI,CAAC,CAAC,gCAAgC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,gCAAgC;QAChD,CAAC,CAAC;QAEF,iEAAiE;QACjE,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEhE,+CAA+C;QAC/C,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnE,CAAC;IAED,0BAA0B,CAAC,OAAe,EAAE,eAA6B;QACvE,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,MAAc,EAAE,WAAyB,EAAE,EAAE;YACjF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;wBACvB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;oBACxE,CAAC;oBACD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,CAAC,mCAAmC;oBACvE,OAAO,IAAI,CAAC,CAAC,wCAAwC;gBACvD,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;oBACxE,OAAO,IAAI,CAAC,CAAC,yCAAyC;gBACxD,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,iBAAiB;QACjC,CAAC,CAAC;QAEF,2EAA2E;QAC3E,IAAI,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3E,6DAA6D;YAC7D,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,MAAM;QACrB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACrF,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrI,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,OAAO;QACvB,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,8DAA8D;QAC9D,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAClC,6EAA6E;gBAC7E,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;oBACpC,YAAY,GAAG,IAAI,CAAC;oBACpB,OAAO,GAAG,CAAC;gBACb,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,QAAQ,qBAAQ,KAAK,CAAE,CAAC;gBAE9B,yEAAyE;gBACzE,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtD,QAAQ,CAAC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACvE,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnB,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC,CAAC;QAEF,gDAAgD;QAChD,IAAI,CAAC,uBAAuB,GAAG,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAC3F,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAoED,sBAAsB,CAAC,EAAU;QAC/B,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB,CAAC,EAAU;QAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,MAAM,EAAE,EAAE;QACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,aAAa,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,oBAAoB;QACrC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE7B,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,EAAE;YACrD,IAAI,cAAc,GAAG,IAAI,CAAC;YAE1B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;oBACzC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAErD,YAAY,CAAC,IAAI,CAAC;oBAChB,OAAO,EAAE,cAAc;oBACvB,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,CAAC;oBACzE,aAAa,EAAE,aAAa;iBAC7B,CAAC,CAAC;YACL,CAAC;YAED,gCAAgC;YAChC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACrC,cAAc,CAAC,IAAI,CAAC;oBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,mBAAmB;YACnB,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,0DAA0D;QAC1D,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,OAAO;YACL;gBACE,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,KAAK;gBAChB,qBAAqB,EAAE,CAAC;gBACxB,cAAc;gBACd,YAAY;gBACZ,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;aACvB;SACF,CAAC;IACJ,CAAC;IAGD,qBAAqB;QACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAEpD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;QACvC,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnE,CAAC;IAID,wBAAwB,CAAC,KAAkB;;QACzC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACrI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC3C,uFAAuF;YACvF,IAAI,oBAAoB,GAAG,MAAA,IAAI,CAAC,wBAAwB,0CAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;YAClI,IAAI,CAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI,0CAAE,WAAW,EAAE,MAAK,UAAU,EAAE,CAAC;gBAC7D,MAAM,mBAAmB,GAAG,MAAA,IAAI,CAAC,oBAAoB,0CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1H,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,CAAC;gBACnD,IAAI,cAAc,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAI,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,CAAA,EAAE,CAAC;oBACxF,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;oBACrC,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAEhC,8BAA8B;oBAC9B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBAEvC,iEAAiE;oBACjE,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,WAAoB,KAAK,EAAE,EAAE;wBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;wBAChC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtD,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC;oBACnF,CAAC,CAAC;oBACF,sBAAsB,GAAG,cAAc,CAAC;oBACxC,mBAAmB,GAAG,WAAW,CAAC;oBAClC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;oBAC/C,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,WAAW,QAAQ,CAAC,EAAE,CAAC;oBAClF,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,WAAW,QAAQ,CAAC,CAAC;gBAC7E,CAAC;gBACD,IAAI,CAAC,6BAA6B,CAChC,WAAW,EACX,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAC5D,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,OAAO,WAAW,QAAQ,CAC3B,CAAC;gBAEF,6CAA6C;gBAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC5D,YAAY,CAAC,WAAW,CAAC,GAAG;oBAC1B,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,WAAW;iBACpB,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,iBAAiB,CAAC,OAAO,WAAW,QAAQ,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;QACH,CAAC;QACD,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE1E,4CAA4C;QAC5C,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAC/C,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEjE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAC3G,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACnD,IAAI,MAAM,CAAC,cAAc,KAAK,GAAG,EAAE,CAAC;oBAClC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAE7E,IAAI,cAAc,IAAI,UAAU,IAAI,cAAc,IAAI,iBAAiB,IAAI,cAAc,EAAE,CAAC;wBACzF,cAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAClE,cAAsB,CAAC,eAAe,EAAE,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gCAAgC,CAAC,aAAa;QAC5C,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,IAAI,MAAM,CAAC,cAAc,KAAK,GAAG,EAAE,CAAC;gBAClC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;oBAChC,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;iBAC7B,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,MAAyE;QAC1F,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;YACrC,wDAAwD;YACxD,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAmBD,qCAAqC;IACrC,qBAAqB,CAAC,GAAW;QAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,iBAAiB,CACf,MAAc,EACd,qBAA6B,EAC7B,KAAa,EACb,gBAAoC,EACpC,sBAA8B,EAC9B,mBAA2B,EAC3B,UAAkB,EAClB,qBAQG,EACH,8BAUG;QAEH,MAAM,SAAS,GAAG;YAChB,WAAW,EAAE,MAAM;YACnB,cAAc,EAAE,qBAAqB;YACrC,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,gBAAgB;YAClC,sBAAsB,EAAE,sBAAsB,IAAI,EAAE;YACpD,mBAAmB,EAAE,mBAAmB,IAAI,EAAE;SAC/C,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,qBAAqB,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC;gBAC9D,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;gBAC1C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;gBAC5C,sBAAsB,EAAE,SAAS,CAAC,sBAAsB;gBACxD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;aACnD,CAAC,CAAC;YACH,8BAA8B,CAAC,IAAI,CAAC;gBAClC,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,OAAO,EAAE,IAAI,EAAE;gBACf,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,sCAAsC;gBAClD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;gBAC5C,sBAAsB,EAAE,SAAS,CAAC,sBAAsB;gBACxD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;aACnD,CAAC,CAAC;YACH,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,UAAU,EAAE,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,wBAAwB,CAAC;YAC5B,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,SAAS;YACxB,gBAAgB,EAAE,KAAK;YACvB,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,oBAAoB;YAC1B,YAAY,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,SAAS,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,cAAc,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,wBAAwB,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,eAAe,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,EAAE,CAAC;YACP,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,CAAC;SAClB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAwB,CAAC,WAA4C;;QACnE,IAAI,qBAAqB,CAAC;QAC1B,IAAI,8BAA8B,GAAG,EAAE,CAAC;QAExC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,6CAA6C;YAC7C,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,iCACtE,OAAO,KACV,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,EAC5D,OAAO,EAAE,CAAC,IACV,CAAC,CAAC;YAEJ,0DAA0D;YAC1D,IAAI,2BAA2B,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACpF,qBAAqB,GAAG,2BAA2B,CAAC;YAEpD,+EAA+E;YAC/E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,WAAoB,KAAK,EAAE,EAAE;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC;QACnF,CAAC,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,UAAU,CAAC;gBAAE,SAAS;YAElF,MAAM,mBAAmB,GAAG,MAAA,IAAI,CAAC,oBAAoB,0CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;YACzF,MAAM,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,UAAU,CAAC;YACzD,MAAM,WAAW,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,CAAC;YAErD,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;YAC5C,IAAI,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEnG,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,sBAAsB,GAAG,EAAE,CAAC;YAChC,IAAI,mBAAmB,GAAG,EAAE,CAAC;YAE7B,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACrC,KAAK,GAAG,GAAG,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC9D,CAAC;yBAAM,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,EAAE,CAAC;wBAC1D,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBAClD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAClC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;wBAEvC,sBAAsB,GAAG,qBAAqB,CAAC;wBAC/C,mBAAmB,GAAG,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAExD,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;wBACtD,KAAK,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC;wBAC/B,sBAAsB,GAAG,qBAAqB,CAAC;wBAC/C,mBAAmB,GAAG,KAAK,CAAC;oBAC9B,CAAC;oBACD,MAAM;gBACR,KAAK,QAAQ;oBACX,sBAAsB,GAAG,qBAAqB,CAAC;oBAC/C,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC3C,KAAK,GAAG,aAAa,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;oBACtH,MAAM;gBACR,KAAK,MAAM;oBACT,sBAAsB,GAAG,qBAAqB,CAAC;oBAC/C,mBAAmB,GAAG,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC;oBACnD,MAAM;gBACR,KAAK,KAAK;oBACR,MAAM,MAAM,GAAI,aAAsC,CAAC,MAAM,IAAI,EAAE,CAAC;oBACpE,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBAEvB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACtB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;wBAEpC,WAAW,GAAG,KAAK,CAAC;wBACpB,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBACtB,WAAW,EAAE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,KAAK;wBACvC,cAAc,EAAE,qBAAqB;wBACrC,WAAW,EAAE,MAAM;wBACnB,gBAAgB;wBAChB,IAAI,EAAE,KAAK;wBACX,sBAAsB;wBACtB,mBAAmB;qBACpB,CAAC,CAAC;oBAEH,WAAW,GAAG,KAAK,CAAC;oBACpB,SAAS;gBACX;oBACE,WAAW,GAAG,KAAK,CAAC;oBACpB,SAAS;YACb,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CACvC,MAAM,EACN,qBAAqB,EACrB,KAAK,EACL,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,UAAU,EACV,qBAAqB,EACrB,8BAA8B,CAC/B,CAAC;gBAEF,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,MAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;QACzG,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,WAAW,EAAE,KAAK;gBAClB,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,EAAE;gBACf,gBAAgB,EAAE,MAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,0CAAE,UAAU;gBACrF,IAAI,EAAE,KAAK;gBACX,sBAAsB,EAAE,IAAI;gBAC5B,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;gBACrC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,qBAAqB,CAAC;gBACvD,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG;oBAC7B;wBACE,OAAO,EAAE,CAAC;wBACV,qBAAqB,EAAE,CAAC;wBACxB,aAAa,EAAE,IAAI;qBACpB;oBACD;wBACE,OAAO,EAAE,CAAC;wBACV,qBAAqB,EAAE,CAAC;wBACxB,aAAa,EAAE,CAAC;qBACjB;iBACF,CAAC;gBAEF,sCAAsC;gBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;wBAChC,OAAO,EAAE,CAAC;wBACV,qBAAqB,EAAE,CAAC;wBACxB,aAAa,EAAE,CAAC;qBACjB,CAAC,CAAC;gBACL,CAAC;gBAED,YAAY,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC;gBAC1C,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,8BAA8B,CAAC;YACzE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAsBD,sBAAsB,CAAC,QAAa,EAAE,QAAa;QACjD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAGD,kBAAkB,CAAC,QAAa,EAAE,QAAa;QAC7C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAyED,sBAAsB;QACpB,MAAM,8BAA8B,GAAG,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,uBAAuB,GAAG,8BAA8B,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;QACtC,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,0DAA0D;QAC1D,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iCAAM,MAAM,KAAE,KAAK,IAAG,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,oEAAoE;QACpE,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAyED,iBAAiB;QACf,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAoBD,KAAK,CAAC,wBAAwB,CAAC,KAAkB;QAC/C,kFAAkF;QAClF,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,yDAAyD;QACzF,2DAA2D;QAE3D,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAEzD,uCAAuC;YACvC,IAAI,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExD,6CAA6C;YAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtD,mEAAmE;YACnE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1C,IAAI,UAAU,CAAC;YAEf,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,uIAAuI;gBACvI,MAAM,0BAA0B,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzE,UAAU,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,YAAY,CAAC;YAC5B,CAAC;YAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAGD,oBAAoB;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1D,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,eAAe;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAUD,MAAM;;QACJ,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,mBAAmB,GACvB,CAAC,IAAI,CAAC,cAAc,KAAI,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,uBAAuB,0CAAG,CAAC,CAAC,0CAAE,OAAO,0CAAG,CAAC,CAAC,0CAAE,WAAW,CAAA,CAAC;YACrF,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAC/B,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAE5B,MAAM,mBAAmB,GAAG,CAAC,mBAAmB,CAAC;QACjD,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC;QAC1C,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzG,OAAO,CACL;YACG,IAAI,CAAC,qBAAqB,IAAI,CAC7B,qEACE,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAClC,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAC3C,YAAY,EAAC,OAAO,EACpB,gBAAgB,EAAC,OAAO,EACxB,aAAa,EAAE,KAAK,CAAC,EAAE;oBACrB,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;gBACzC,CAAC;gBAED,4DAAK,KAAK,EAAC,uBAAuB,IAAE,eAAe,CAAO,CAC7C,CAChB;YACD,8DACG,IAAI,CAAC,gBAAgB,IAAI,CACxB,yEACE,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAC7B,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAC/B,UAAU,QACV,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,GACxC,CACrB,CACG;YACN,gEACG;qBACU,gBAAgB;YACzB,CACI;YAER,yEACE,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAC9C,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAC3C,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAChD,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAC1D,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAC3C,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAC5C,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAC7C,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EACxI,mBAAmB,EAAE,CAAC,CAAC,EAAE;oBACvB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC,EACD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAC7C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,kBAAkB,EAAE,CAAC,CAAC,EAAE;oBACtB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC,EACD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EACxD,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAC7C,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EACxD,6BAA6B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAC5D,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAC1D,0BAA0B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EACxD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,EACzD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,iBAAiB,EACf,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,OAAO,KAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAExK,UAAU,EAAE,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,MAAM,KAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EACnJ,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,GAC7B;YAEpB,wFACE,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAClC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAA2B;gBAEnF,+FACE,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC,EACD,OAAO,EAAC,mBAAmB;oBAE3B,yEAAkB,OAAO,EAAC,QAAQ,wBAAqC,CAChC;gBACzC,oEAAa,IAAI,EAAC,MAAM,GAAe;gBACvC,+FACE,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,UAAU,EAAE,CAAC;wBAClB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC,EACD,OAAO,EAAC,eAAe;oBAEvB,yEAAkB,OAAO,EAAC,QAAQ,oBAAiC,CAC5B;gBACzC,oEAAa,IAAI,EAAC,KAAK,GAAe;gBACtC,+FACE,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC,EACD,OAAO,EAAC,aAAa;oBAErB,yEAAkB,OAAO,EAAC,QAAQ,kBAA+B,CAC1B;gBACzC,oEAAa,IAAI,EAAC,KAAK,GAAe;gBACrC,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAC5B,+FACE,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC,EACD,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB;oBAE1E,yEAAkB,OAAO,EAAC,QAAQ,IAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAoB,CAClF,CAC1C,CAC+B;YAElC,4DAAK,KAAK,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1E,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,IAAI,CAC7C,4DAAK,KAAK,EAAC,aAAa;oBACtB,kEAAW,OAAO,EAAE,IAAI,CAAC,gBAAgB;wBACvC,qEAAc,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAiB,CAC1J,CACR,CACP;gBAEA,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,MAAM,MAAK,CAAC,IAAI,CACrC,4DAAK,KAAK,EAAC,cAAc;oBACvB,qEACE,IAAI,EAAE,IAAI,CAAC,eAAe;wBAC1B,wCAAwC;wBACxC,UAAU,EAAE,IAAI,CAAC,oBAAoB,EACrC,KAAK,EAAC,WAAW,EACjB,cAAc,EAAE,IAAI,EACpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,IAAI,CAAC,qBAAqB,GAC1B;oBAChB,oEAAa,OAAO,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,GAAe,CACtD,CACP;gBAEA,IAAI,CAAC,aAAa,IAAI,CACrB,4DAAK,KAAK,EAAC,cAAc;oBACvB,qEAAc,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAC,WAAW,EAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAiB;oBACvJ,oEAAa,OAAO,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,GAAe,CACtD,CACP;gBAED,4DAAK,KAAK,EAAC,cAAc,IACtB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,wFACE,EAAE,EAAC,sBAAsB,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,gBAAgB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAC/E,SAAS,EAAE,IAAI,CAAC,WAAW,GACM,CACpC,CACG;gBACN,4DAAK,KAAK,EAAC,KAAK;oBACd,iEAAU,SAAS,EAAE,IAAI,CAAC,SAAS,GAAa,CAC5C,CACF;YAEL,IAAI,CAAC,SAAS,IAAI,CACjB;gBACE,yEAAkB,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,oDAAoD,GAAqB,CAC7G,CACP;YAED,4DAAK,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IACnI,IAAI,CAAC,aAAa,IAAI,2EAAqB,CACxC;YAEL,IAAI,CAAC,SAAS,IAAI,CACjB;gBACE,yEAAkB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,6CAA6C,GAAoB,CAC7I,CACP;YAED;gBACE,iEAAU,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,GAAa,CACjG;YAEN,mEACE,oBAAoB,EAAC,QAAQ,EAC7B,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,uBAAuB,CAAC,EACzF,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAC7D,QAAQ,EAAC,OAAO;gBAEhB,4DAAK,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC7B,wEACE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,wBAAwB,EACzC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EACnE,0BAA0B,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EACzF,kBAAkB,EAAE,IAAI,CAAC,cAAc,EACvC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAC9D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,GAC7C,CACE,CACK;YAEb,mEAAY,WAAW,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAC,OAAO;gBAC7I;oBACE,4DAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE;wBACjD,mEACE,IAAI,EAAC,mKAAmK,EACxK,YAAY,EAAC,WAAW,GACZ,CACV;oBAEN,4DAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAC3B,IAAI,CAAC,eAAe;wBACnB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BAC9B,IAAI,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;gCACzG,OAAO,CACL;oCACE,cAAc;oCACd,cAAc,QACd,gBAAgB,QAChB,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,SAAS,EAAE,IAAI,CAAC,IAAI,EACpB,OAAO,EAAE,GAAG,EAAE;wCACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wCACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oCACrG,CAAC,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,EAC/G,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EACrE,uBAAuB,EAAE,IAAI,EAC7B,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EACxD,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EACvD,OAAO,EAAE,KAAK,EACd,cAAc,EAAE,KAAK,GACL,CACnB,CAAC;4BACJ,CAAC;wBACH,CAAC,CAAC,CACA,CACF,CACK;YAEb,mEACE,KAAK,EAAC,QAAQ,EACd,oBAAoB,EAAC,QAAQ,EAC7B,qBAAqB,EAAE,IAAI,CAAC,0BAA0B,EACtD,IAAI,EAAE,IAAI,CAAC,sBAAsB,EACjC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAC3D,QAAQ,EAAC,OAAO,EAChB,eAAe,EAAE,IAAI,CAAC,eAAe;gBAErC,gFACE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,wBAAwB,EACzC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAC1E,0BAA0B,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EACzF,kBAAkB,EAAE,IAAI,CAAC,cAAc,EACvC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE;oBAC9D,4DAA4D;oBAC5D,qBAAqB,EAAE,MAAA,IAAI,CAAC,qBAAqB,0CAAE,IAAI,CAAC,IAAI,CAAC,EAC7D,iBAAiB,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAC7D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAC3C,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,GAC7C,CACS;YAEb,mEACE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAC9B,WAAW,EAAC,OAAO,EACnB,oBAAoB,EAAC,oBAAoB,EACzC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EACrD,KAAK,EAAC,WAAW,EACjB,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAC5B,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACvD,QAAQ,EAAC,OAAO;gBAEhB;oBACG,IAAI,CAAC,eAAe,IAAI,yEAAkB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAqB;oBAE3J,4DAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAC3B,IAAI,CAAC,WAAW;wBACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;gCACpC,OAAO,CACL,sBACE,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,SAAS,EAAE,IAAI,CAAC,IAAI,EACpB,cAAc,EAAE,IAAI,EACpB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAC9C,gBAAgB,EAAE,IAAI,EACtB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAC5D,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9D,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9D,WAAW,EAAE,IAAI,CAAC,SAAS,EAC3B,aAAa,EAAE;wCACb,IAAI,EAAE,SAAS;wCACf,KAAK,EAAE,SAAS;qCACjB,EACD,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAClC,CACnB,CAAC;4BACJ,CAAC;wBACH,CAAC,CAAC,CACA,CACF,CACK;YAEb,8EACE,IAAI,EAAE,IAAI,CAAC,cAAc,EACzB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAC1D,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EACtC,iBAAiB,EAAE,IAAI,CAAC,cAAc,EACtC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAClC,gBAAgB,EAAE,IAAI,CAAC,oCAAoC,EAC3D,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,EAC5C,gBAAgB,EAAE,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,EAAE;oBACxE,6DAA6D;oBAC7D,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxE,CAAC,EACD,gCAAgC,EAAE,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,EAAE;oBACxF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;wBACxB,IAAI,IAAI,CAAC,oCAAoC,KAAK,CAAC,EAAE,CAAC;4BACpD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;wBAC5D,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;4BACpD,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;wBACvJ,CAAC;oBACH,CAAC;gBACH,CAAC,GACD;YAEF,8EACE,IAAI,EAAE,IAAI,CAAC,cAAc,EACzB,KAAK,EAAC,WAAW,EACjB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EACvC,aAAa,EAAE,IAAI,CAAC,cAAc,EAClC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAClC,+BAA+B,EAAE,IAAI,CAAC,oCAAoC,EAC1E,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,EAC5C,gBAAgB,EAAE,CAAC,MAAW,EAAE,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,EAAE;oBACrF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC5D,CAAC,GACD;YAEF,6DAAO;YACP,sEACE,KAAK,EAAC,gBAAgB,EACtB,OAAO,EAAC,+CAA+C,EACvD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAClD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EACnD,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,IAAI,CAAC,aAAa;gBAExB;;oBAC4D,4DAAM;;oBACvB,GAAG,CACxC,CACQ;YAEhB,sEACE,KAAK,EAAC,aAAa,EACnB,OAAO,EAAC,4CAA4C,EACpD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EACxC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAChD,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,IAAI,CAAC,uBAAuB;gBAElC;;oBAC6D,4DAAM;;oBACrC,GAAG,CAC3B,CACQ;YAEhB,sEACE,KAAK,EAAC,aAAa,EACnB,OAAO,EAAC,4CAA4C,EACpD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,EACrK,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EACrD,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,IAAI,CAAC,8BAA8B;gBAEzC,gKAA0G,CAC5F;YAEhB,sEACE,KAAK,EAAE,wBAAwB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,EACnG,OAAO,EACL,IAAI,CAAC,oBAAoB;oBACvB,CAAC,CAAC,qEAAqE;oBACvE,CAAC,CAAC,qEAAqE,EAE3E,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAC/C,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EACzD,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAE,IAAI,CAAC,sCAAsC;gBAEjD,8DACG,IAAI,CAAC,oBAAoB;oBACxB,CAAC,CAAC,kJAAkJ;oBACpJ,CAAC,CAAC,2HAA2H,CAC3H,CACQ,CACZ,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF;AA1+GO;IADL,OAAO,EAAE;0DAMT;AAsBK;IADL,OAAO,EAAE;+DAGT;AAGK;IADL,OAAO,EAAE;uDAGT;AAGK;IADL,OAAO,EAAE;kEAGT;AAGK;IADL,OAAO,EAAE;wDAIT","sourcesContent":["import { Draft, produce } from 'immer';\nimport { Component, Element, h, State, Prop, Event, EventEmitter, Watch, Listen, Method } from '@stencil/core';\nimport { state } from '../../../../../store/catalog-store';\nimport type { ColumnApi, GridOptions, ICellRendererParams, IServerSideDatasource } from 'ag-grid-enterprise';\nimport CustomRenderer from '../../../../my-component/UI/grid/renderers/custom-renderer';\nimport CustomActionsRenderer from '../../../../my-component/UI/grid/renderers/custom-actions-renderer';\nimport Star16 from '@carbon/icons/es/star/16';\nimport List16 from '@carbon/icons/es/list/16';\nimport { SearchServiceDatasource, rowGroups } from '../../../../../udp-utilities/grid/data-source/SearchServiceDatasource';\nimport { convertToAgGridColumns } from '../../../../../udp-utilities/grid/convertToAgGridColumns';\nimport {\n getSelectedView,\n getAvailableViews,\n saveView,\n updateView,\n updateViewAndConfigurations,\n getAvailableGridActions,\n getPromotedLookupMethod,\n executeQueryAdHocAndMapLookups,\n executeQueryWithParameters,\n getApiCatalogAndProduct,\n getApiCatalogById,\n executeQueryAdHoc,\n getAllHotlists,\n createAHotlist,\n deleteAHotlist,\n addRecordToAHotlist,\n loadAHotlist,\n removeRecordFromHotlist,\n deleteSelectedView,\n getApiMethodInstance,\n getApiMethod,\n} from '../../../../../udp-utilities/api-udp/apiUtils';\nimport { UdpGridColumnDefs, useTreeDatasource } from '../conversionFunctions/conversionFunctions';\nimport '../../../../my-component/ag-grid.css';\nimport EmailCellRenderer from '../renderers/email-cell-renderer';\nimport OpenFunctionCellRenderer from '../renderers/open-function-cell-renderer';\nimport HotListAddRenderer from '../renderers/hot-list-add-renderer';\nimport { SharedContext } from '../renderers/sharedContext';\nimport HoverContentCellRenderer from '../renderers/hover-content-cell-renderer';\nimport { GridStateTypeEnums } from './enums/gridEnums';\nimport { SearchObject, FilterDetail, HotListObject, ActionItem } from './interfaces/gridInterfaces';\nimport { transformSearchData } from '../../../../../udp-utilities/grid/data-converters/transformSearchData';\nimport { LicenseKey } from './license/licenseKey';\nimport { buildSearchPayload } from './ambient-template-functions/buildGroupedSearchPayload';\n// import { FilterElement } from '../../advanced-search/advanced-search-grouped';\nimport * as localforage from 'localforage';\nimport '../../../../../global/app.css';\n// import OverflowMenuHorizontal16 from '@carbon/icons/es/overflow-menu--horizontal/16';\nimport DateTimeCellRenderer from '../renderers/date-time-cell-renderer';\nimport { RenderConfig } from './interfaces/gridInterfaces';\nimport ActionsRenderer from '../renderers/actions-renderer';\nimport { getActionColumnWidth, sortActionItemOrder, splitActionList } from '../../../../../udp-utilities/grid/action-renderers/action-column-util';\nimport { GridApi } from 'ag-grid-enterprise';\nimport { lazySetupAgGridLibrary } from '../../../../../global/ag-grid';\nimport { Memoize } from 'fast-typescript-memoize';\nimport { GridReadyEvent } from 'ag-grid-community';\nimport StatusRenderer from '../renderers/status-renderer';\nimport IconRenderer from '../renderers/icon-renderer';\nimport CurrencyRenderer from '../renderers/currency-renderer';\nimport { cloneDeep } from 'lodash';\nimport { v4 as uuid } from 'uuid';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\n\ntype NotificationStatus = 'error' | 'success' | 'warning';\n\n/**\n * @deprecated This component is deprecated and will be removed in a future version.\n * Please use `search-method-grid` instead\n */\n\n@Component({\n tag: 'ambient-template-grid',\n styleUrl: './ambient-template-grid.css',\n shadow: true,\n})\nexport class AmbientTemplateGrid {\n private prevPivotMode: boolean;\n //private dynamicFormRef: HTMLUdpDynamicFormElement;\n\n @Event() viewSaved: EventEmitter;\n @Event() externalEmitter: EventEmitter;\n @Event() filterChanged: EventEmitter;\n @Element() el: HTMLElement;\n\n @Prop() columnDefs: any[] = [];\n @Prop() fullViewData: any = {};\n @Prop() rowData: any[] = [];\n @Prop() viewListrowData: any[] = [];\n @Prop() gridState: any[] = [];\n @Prop() gridId: string = '';\n @Prop({ mutable: true }) apiCatalogId: string = '';\n @Prop() userId: string = '';\n @Prop() userPermissions: any[] = [];\n @Prop({ mutable: true }) apiMethodId: string = '';\n @Prop({ mutable: true }) lookupApiMethodId: string = '';\n @Prop({ mutable: true }) entityName: string = '';\n @Prop() menuItems: Array<any> = [];\n @Prop() gridBarTitle: string = '';\n @Prop() viewChips: Array<any> = [];\n @Prop() additionalFilterChips: Array<any> = [];\n @Prop() kpiValues: Array<any> = [];\n @Prop() showAdvancedSearchFeature: boolean = true;\n @Prop() showFilterColumnFeature: boolean = true;\n @Prop() queryId: string = '';\n @Prop() defaultSearchObject: Array<any> = [];\n @Prop() defaultSearchObjectOperator: number = 1; // 1 for AND, 2 for OR\n @Prop() actionId: string = '';\n @Prop() cellClickHandler: (value: any, callback: any) => void;\n @Prop() cellClickHandlerX: (value: any, callback: any) => void;\n @Prop() viewActionClickHandler: (value: any, callback: any) => void;\n @Prop() renderConfigs: RenderConfig[] = [];\n // @Prop() externalPayload: any = {}; // check to see if it fixes the issue with adding an empty object\n @Prop() externalPayload: any = null;\n @Prop() dataEmitter: any = {};\n @Prop() dataEmitterRequest: any = {};\n @Prop() fitGrid: string = '';\n @Prop() hotListIdentifier: string = '';\n @Prop() searchKey: Object = {};\n @Prop({ mutable: true }) filterObject: any = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ];\n @Prop({ mutable: true }) externalSearchFilter: Array<any> = [];\n @Prop() noResults: boolean = false;\n @Prop() maxChipsAllowed: number = 5;\n @Prop() suppressMenuHide: boolean = true; // default show column menu option without hovering\n @Prop() showRank: boolean = false;\n @Prop() showHotlistButton: boolean = false;\n @Prop() columnNames: { [key: string]: string } = {};\n @Prop() buttonTransform: string = '';\n @Prop() rowGrouping: Array<any> = [];\n @Prop() restrictBulkActionsPermissions: boolean = false;\n @Prop() restrictedGridFeatures: { [key: string]: string } = {};\n @Prop() triggerGridUpdate: boolean = false;\n @Prop() hideActionsColumn: boolean = false; //temporary, need better approach\n @Prop() primaryActionLabel: string;\n @Prop() primaryActionOnClick: (e: any) => void;\n @Prop() primaryActionIcon: string;\n @Prop() showInsightsAction: boolean = false;\n @Prop() insightsActionOnClick: (e: any) => void;\n @Prop() hideBulkActions: boolean = false;\n @Prop() enableCheckboxOnColumns: boolean = false;\n @Prop() hiddenColumnsList: Array<string> = [];\n @Prop() hideDefaultSearchFilterChips: boolean = false;\n @Prop() executeBulkAction: (actionId: string, data: any) => void;\n @Prop() bulkActionFunctions: Object = {};\n @Prop() exportFunction: (entityName: string, searchObject: Object) => void;\n @Prop() hiddenActionButtons: Array<string> = [];\n @Prop() rowIdField: string | null = null;\n @Prop() defaultSearchMode: 'advanced' | 'standard' = 'standard';\n @Prop() disableSearchSwitch: boolean = false;\n @Prop() disableGridPersistance: boolean = false;\n\n @State() drawerOpen: boolean = false;\n @State() filterPanelOpen: boolean = true;\n @State() saveDialogOpen: boolean = false;\n @State() editDialogOpen: boolean = false;\n @State() editViewConfirmationDialogOpen: boolean = false;\n @State() gridOptionsDrawerOpen: boolean = false;\n @State() viewListGridOptions: GridOptions;\n @State() filterChips: Array<any> = [];\n @State() promotedEntity: any = {};\n @State() isServerSide: boolean = true;\n @State() showNotification: boolean = false;\n @State() notificationMessage: string = '';\n @State() notificationStatus: NotificationStatus = 'success';\n @State() loadedView: Array<any> = [];\n @State() loadedViewTitle: string = '';\n @State() loadedViewData: string = '';\n @State() currentColumnOrdering: Array<any> = [];\n @State() currentHiddenColumns: Array<any> = [];\n @State() rowsSelected: boolean = false;\n @State() selectedRowCount: number = 0;\n @State() serverColumnDefs: Array<any> = [];\n @State() isSetupComplete: boolean = false;\n @State() extendedSearchFilterList: Array<any> = [];\n @State() viewListRowData: Array<any> = [];\n @State() bulkActions: Array<any> = [];\n @State() sheetContent: string = 'advancedSearch';\n @State() searchObject: SearchObject = { filterElements: [] };\n @State() configuredColumnDefs: Array<any> = [];\n @State() hasConfiguredColumnDefs: boolean = false;\n @State() fullDataColumns: any[] = [];\n @State() filterOn: string = '';\n @State() gridOptions: GridOptions;\n @State() agGrid:\n | undefined\n | {\n api: GridApi<any>;\n // @note As of ag-grid@v31 ColumnApi has been deprecated and all methods will move to api.\n columnApi: ColumnApi;\n };\n @State() hasSearchRank: boolean;\n @State() serverSideDatasource: IServerSideDatasource | undefined;\n @State() tempSearchObject: { searchField: string; searchOperator: string; searchValue: any; groupId: number } = {\n searchField: '',\n searchOperator: '',\n searchValue: '',\n groupId: 1,\n };\n @State() catalogList: any = {};\n @State() dataRowClicked: any = {};\n @State() advancedSearchFilterList: Array<any> = [];\n @State() allHotlists: Array<any> = [];\n @State() externalToggle: string = '';\n @State() viewId: string = '';\n @State() defaultFilterObject: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [\n // {\n // \"searchField\": \"genderCode\",\n // \"searchOperator\": \"=\",\n // \"searchValue\" : \"1\"\n // }\n ],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ];\n\n @State() filterRenderList: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [\n // {\n // \"searchField\": \"Title\",\n // \"searchOperator\": \"IN\",\n // \"searchValue\": \"VP\"\n // }\n ],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ];\n @State() logicalSearchOperator: number = 1;\n @State() lookupsMap: any = null;\n @State() formattedBulkActions: { label: string; value: string }[] = [];\n @State() advancedDrawerOpen: boolean = false;\n @State() viewDrawerOpen: boolean = false;\n @State() hotlistDrawerOpen: boolean = false;\n @State() customSearchDrawerOpen: boolean = false;\n @State() businessObjectKey: string;\n @State() hotListActive: string;\n @State() hotListCount: number = 0;\n @State() hotListId: string;\n @State() loadedHotlistTitle: string = '';\n @State() showHotlistForm: boolean = false;\n @State() confirmDialog: boolean = false;\n @State() confirmDialogDeleteView: boolean = false;\n @State() filteredCount: Array<any> = [];\n @State() hotlistSelectedFull: object = {};\n @State() advancedGroupSearchNodeId: string = '';\n @State() otherId: string = '';\n @State() updateForConfiguredColumnDefs: boolean = true;\n @State() filterObjectsWithGroups: Array<any> = [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: 'AND',\n filters: [],\n },\n ];\n @State() loadedGridView: object = {};\n @State() linearLoading: boolean = false;\n @State() selectedGridId: string = '';\n @State() selectedViewName: string = '';\n @State() selectedViewIsDefault: boolean = false;\n @State() selectedViewGridViewVisibilityTypeId: number;\n @State() selectedGridViewGridConfigurations: any[];\n @State() allFilters: Array<any> = [];\n @State() visibleChips: any[];\n @State() overflowChips: any[];\n @State() overflowActive: boolean = false;\n @State() setSearchStart: boolean = false;\n @State() refreshChips: boolean = false;\n @State() gridUID: string = '';\n @State() recentSearches: any[] = [];\n @State() recentSearchesOptions: any[] = [];\n @State() isRecentSearch: boolean = false;\n @State() gridError: boolean = false;\n @State() gridHeight: string = 'calc(100vh - 200px)';\n @State() openActionPopoverMenu: boolean = false;\n @State() selectedRowParams: ICellRendererParams;\n @State() actionMenuAnchorElement: HTMLElement;\n @State() overflowActionMenuItems: ActionItem[];\n @State() initialFilterData: any = {\n filterObjectsWithGroups: [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: 'AND',\n filters: [],\n },\n ],\n logicalSearchOperator: 1,\n filterObject: [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ],\n filterRenderList: [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ],\n };\n @State() defaultColumnState: any[] = null;\n @State() _distinctValueStore: any = {};\n @State() _distinctsCached: boolean = false;\n @State() shouldForceEmptyResults: boolean = false;\n @State() enableAdvancedSearch: boolean = true;\n @State() toggleSearchModeConfirmationDialogOpen: boolean = false;\n @State() enableDefaultView: boolean = true;\n @State() resetToOriginalColumnDefs: boolean = false;\n @State() prevFilterObject: any[] = [];\n viewListcolumnDefs: any[];\n\n @Watch('triggerGridUpdate')\n handleTriggerGridUpdate(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue && this.agGrid) {\n this.agGrid?.api?.refreshServerSide({ purge: true });\n this.updateServerSideDatasource('', 'advanced search sheet');\n }\n }\n\n @Event() selectedIdsChanged: EventEmitter<number[]>;\n\n @Listen('noDataDetected', { target: 'document' })\n noDataHandler() {\n this.linearLoading = false;\n this.noResults = true;\n }\n\n\n @Watch('catalogList')\n watchHandler(newVal: any, _oldVal: any) {\n if (newVal) {\n this.filterByCatalogObjectName(this.entityName);\n }\n }\n\n @Memoize()\n async getApiCatalogId(): Promise<string> {\n if (this.apiCatalogId) return this.apiCatalogId;\n\n const fetchedData = await getApiCatalogAndProduct();\n return (this.apiCatalogId = fetchedData.apiCatalogId);\n }\n\n async getApiMethodId(): Promise<string> {\n if (this.apiMethodId) return this.apiMethodId;\n\n const apiMethodInstance = await this.getApiMethodInstance();\n const apiMethodId = apiMethodInstance.apiMethodId;\n if (!apiMethodId) {\n throw new Error('apiMethodId not found');\n }\n\n return (this.apiMethodId = apiMethodId);\n }\n\n async getLookupApiMethod(): Promise<string> {\n if (this.lookupApiMethodId) return this.lookupApiMethodId;\n\n const promotedLookupMethod = await this.getPromotedLookupMethod();\n return (this.lookupApiMethodId = promotedLookupMethod?.unityBaseGetDataMethod?.apiMethodId);\n }\n\n @Memoize()\n async getApiMethodInstance() {\n return await getApiMethodInstance(this.queryId);\n }\n\n @Memoize()\n async getApiMethod() {\n return await getApiMethod(await this.getApiMethodId());\n }\n\n @Memoize()\n async getPromotedLookupMethod() {\n return await getPromotedLookupMethod(await this.getApiCatalogId());\n }\n\n @Memoize()\n async getFilterBody() {\n const apiMethodInstance = await this.getApiMethodInstance();\n return apiMethodInstance.body;\n }\n\n /**\n * Get column definitions from props or API Method Instance catalogModification\n */\n async getColumnDefinitions(): Promise<any[]> {\n if (this.columnDefs && this.columnDefs.length > 0) return this.columnDefs;\n\n const apiMethodInstance = await this.getApiMethodInstance();\n return JSON.parse(apiMethodInstance.catalogModification);\n }\n\n async getEntityName() {\n if (this.entityName) return this.entityName;\n\n const apiMethod = await this.getApiMethod();\n return (this.entityName = apiMethod.entityName);\n }\n\n updateFilterObject(recipe: (state: Draft<any[]>) => any[] | void | undefined) {\n this.filterObject = produce(this.filterObject, recipe);\n }\n\n async filterByCatalogObjectName(catalogObjectName: string) {\n if (!this.catalogList) {\n console.warn('catalogList is empty or undefined.');\n return;\n }\n // change to list from UdpGridColumnDefs\n const catalogObjectList = this.catalogList?.ctlg?.catalogObjectList;\n if (Array.isArray(catalogObjectList)) {\n catalogObjectList.forEach(object => {\n if (object.catalogObjectName === catalogObjectName) {\n const names = object.properties.map(property => {\n return { name: property.name };\n });\n this.advancedSearchFilterList = names;\n }\n });\n } else {\n console.warn('catalogObjectList is not an array or is undefined.');\n }\n }\n\n // PUTS apiCatalogData into localStorage\n getExtendedAdvancedSearchFilterList = async () => {\n\n try {\n const apiCatalogId = await this.getApiCatalogId();\n let apiCatalogData: any;\n\n // Retrieve apiCatalogData from localForage or make the API call if not found\n apiCatalogData = await localforage.getItem('apiCatalogData');\n if (!apiCatalogData) {\n // Fetch data from the API if not available in localForage\n apiCatalogData = await getApiCatalogById(apiCatalogId);\n // Store the fetched data in localForage for future use\n await localforage.setItem('apiCatalogData', apiCatalogData);\n }\n\n const transformedData = useTreeDatasource(apiCatalogData, await this.getEntityName(), true, true, '', '', '');\n\n if (transformedData) {\n state.catalogData = apiCatalogData;\n this.extendedSearchFilterList = transformedData;\n } else {\n console.error('No data returned from useTreeDatasource');\n }\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching API Catalog:', error);\n }\n };\n\n constructor() {\n this.changeOperator = this.changeOperator?.bind(this);\n }\n changeOperator(event: CustomEvent) {\n // Convert string to integer\n const convertedValue = parseInt(event.detail, 10);\n // Update the state\n this.logicalSearchOperator = convertedValue;\n }\n\n @Method()\n async updateFilterAndFetch(newFilter: Array<any>) {\n this.updateFilterObject(() => [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [...newFilter],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ]);\n // Now call updateServerSideDatasource\n this.updateServerSideDatasource('', 'updateFilterAndFetch');\n }\n\n buildSearchFilterElements(filterElement, forObject, isInitialFilterElement) {\n let filterElementObject = {\n id: uuid(),\n groupId: 1,\n isInitialFilterElement: isInitialFilterElement,\n originalSearchOperator: filterElement.searchOperator,\n originalSearchValue: filterElement.searchValue,\n searchLabel: this.getHeaderFieldLabel(filterElement.searchField),\n ...filterElement,\n };\n\n if (forObject) {\n filterElementObject = {\n id: uuid(),\n otherId: uuid(),\n level: 0,\n ...filterElementObject,\n };\n }\n\n return filterElementObject;\n }\n\n @Watch('externalSearchFilter')\n @Watch('defaultSearchObject')\n async handleFilteringSetup() {\n const filterBodyStr = await this.getFilterBody();\n const filterBody = !!filterBodyStr && typeof filterBodyStr === 'string' ? JSON.parse(filterBodyStr) : {};\n const intialFilterElements = filterBody?.filterElements || [];\n const updatedInitialFilterElementsForObject = [];\n\n const rootFilterGroupId = uuid();\n intialFilterElements.forEach(filterElement => {\n updatedInitialFilterElementsForObject.push({\n id: uuid(),\n filterGroupId: rootFilterGroupId,\n groupId: 1,\n isInitialFilterElement: true,\n searchLabel: this.getHeaderFieldLabel(filterElement.searchField),\n ...filterElement,\n });\n });\n\n // construct filterElements from defaultSearchObject props\n (this.defaultSearchObject ?? []).forEach(searchObj => {\n updatedInitialFilterElementsForObject.push(this.buildSearchFilterElements(searchObj, false, true));\n });\n\n // construct filterElements from filterObject props\n this.externalSearchFilter.forEach(filterElement => {\n updatedInitialFilterElementsForObject.push(this.buildSearchFilterElements(filterElement, false, false));\n });\n\n this.filterObjectsWithGroups = [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: this.getLogicalOperatorValue(1),\n filters: [],\n children: [\n {\n id: 'default',\n filterGroupId: rootFilterGroupId,\n logicalOperator: this.getLogicalOperatorValue(this.defaultSearchObjectOperator),\n filters: updatedInitialFilterElementsForObject,\n },\n ],\n },\n ];\n\n this.initialFilterData.filterObjectsWithGroups = cloneDeep(this.filterObjectsWithGroups);\n\n this.logicalSearchOperator = filterBody?.logicalSearchOperator || 1;\n this.initialFilterData.logicalSearchOperator = filterBody?.logicalSearchOperator || 1;\n const initialFilterObject = cloneDeep(this.initialFilterData.filterObject);\n initialFilterObject[0].filterElements = [...updatedInitialFilterElementsForObject];\n this.initialFilterData.filterObject = initialFilterObject;\n this.initialFilterData.filterRenderList = cloneDeep(this.initialFilterData.filterObject);\n\n this.filterObject = this.updateFilterGroups(this.filterObjectsWithGroups);\n\n this.filterRenderList = cloneDeep(this.filterObject);\n this.handleColumnSizing();\n this.updateChipLayout();\n }\n\n async componentWillLoad() {\n this.gridError = false;\n\n this.gridUID = this.gridId + '-' + this.queryId;\n\n await this.handleAdditionalSetup();\n\n this.viewListcolumnDefs = [\n {\n headerName: 'Name',\n field: 'name',\n resizable: true, // Enable resizing\n height: 100,\n },\n {\n field: 'gridViewVisibilityTypeId',\n cellRenderer: CustomRenderer,\n height: '100px',\n },\n {\n headerName: 'Actions',\n field: 'gridViewId',\n cellRenderer: CustomActionsRenderer,\n cellRendererParams: {\n onClick: this.handleLoadView,\n },\n },\n ];\n\n // Preload the ag-Grid library\n lazySetupAgGridLibrary({ LicenseKey });\n\n // Grab list of recent searches from local storage\n this.getRecentSearches();\n\n this.enableAdvancedSearch = this.defaultSearchMode === 'advanced';\n }\n\n waitForGrid(callback: () => void) {\n const observer = new MutationObserver(([], observer) => {\n const myGrid = this.el.shadowRoot.querySelector('#myGrid');\n if (myGrid) {\n observer.disconnect(); // Stop observing once the grid is found\n callback();\n }\n });\n\n observer.observe(this.el.shadowRoot, {\n childList: true, // Observe direct children changes\n subtree: true, // Observe nested children changes\n });\n }\n\n componentDidLoad() {\n lazySetupAgGridLibrary({ LicenseKey })\n .then(() => {\n // Initialize the ag-Grid\n this.waitForGrid(() => this.initializeGrid());\n })\n .catch(error => {\n this.gridError = true;\n console.error('Error during grid initialization:', error);\n });\n\n SharedContext.myClickCallback = this.cellClickHandler?.bind(this);\n SharedContext.viewActionCallback = this.viewActionClickHandler?.bind(this);\n SharedContext.thirdActionCallback = this.cellClickHandlerX?.bind(this);\n SharedContext.hotListAddHandler = otherCellValue => {\n this.businessObjectKey = otherCellValue;\n };\n\n // Can handle add or delete hotlist record from a list\n SharedContext.hotListAddHandler = otherCellValue => {\n function findMatchingHotListId(dataObject: any, otherCellValue: any): string | null {\n for (const record of dataObject.records) {\n const parsedData = JSON.parse(record.data);\n\n if (parsedData.businessObjectKey === otherCellValue.businessObjectKey) {\n return record.hotListRecordId;\n }\n }\n return null;\n }\n\n this.businessObjectKey = otherCellValue;\n if (!this.hotListActive) {\n this.hotlistDrawerOpen = true;\n } else {\n const matchingHotListId = findMatchingHotListId(this.hotlistSelectedFull, otherCellValue);\n removeRecordFromHotlist(matchingHotListId);\n const hotlistSelectedFull: HotListObject = this.hotlistSelectedFull as HotListObject;\n this.removeFilterItem({\n searchField: 'contactId',\n searchValue: matchingHotListId,\n });\n this.handleRequestHotlist(hotlistSelectedFull.hotListId);\n }\n };\n\n this.updateChipLayout();\n window.addEventListener('resize', this.updateChipLayout);\n }\n\n handleLinerLoading = (isLoading: boolean) => {\n this.linearLoading = isLoading;\n };\n\n //#region Action Renderer\n updateActionRendererState = (event: any, params: any) => {\n this.openActionPopoverMenu = !this.openActionPopoverMenu;\n this.selectedRowParams = params;\n this.actionMenuAnchorElement = event.currentTarget;\n };\n\n handleOnCloseActionPopover = event => {\n event?.preventDefault();\n this.selectedRowParams = null;\n this.openActionPopoverMenu = false;\n this.actionMenuAnchorElement = null;\n };\n\n getOverflowActionList = (overflowActions, params) => {\n return overflowActions?.map((action: ActionItem) => {\n const disabledAction = action?.checkDisabled ? action?.checkDisabled(params) : action?.disabled ?? false;\n const actionTitle = action?.getTitle ? action?.getTitle(params) : action?.title;\n return (\n <udp-menu-item\n label={actionTitle}\n iconName={action?.iconName}\n disabled={disabledAction}\n handleOnClick={e => {\n action?.handleOnClick(e, params);\n }}\n />\n );\n });\n };\n //#endregion\n\n // Main search call to server (old)\n updateServerSideDatasource(requestType: string, specialType: string) {\n console.warn('(dead branch) updateServerSideDataSouced: ', specialType);\n\n // Optionally close the drawer.\n if (requestType !== 'remove') {\n this.drawerOpen = false;\n this.advancedDrawerOpen = false;\n }\n }\n //#region Column Defs\n @Watch('configuredColumnDefs')\n @Watch('columnNames')\n @Watch('bulkActions')\n changeServerColumnDefs() {\n const updateColumnDefs = serverColumnDefs => {\n // Start with serverColumnDefs and update hide property\n let updatedColumns = serverColumnDefs.map(columnDef => {\n const hide = false;\n return {\n ...columnDef,\n hide: hide,\n };\n });\n\n // Add any columns from fullDataColumns that are not in serverColumnDefs\n this.fullDataColumns.forEach(column => {\n if (!serverColumnDefs.some(serverColumn => serverColumn.field === column.field) && this.showRank) {\n const hide = column.field !== 'searchRank';\n updatedColumns.push({ ...column, hide: hide });\n }\n });\n\n // Update the column header names\n if (this.columnNames) {\n const updatedColumnsWithNewNames = updatedColumns.map(obj => ({\n ...obj,\n headerName: this.columnNames[obj.headerName] || obj.headerName, // Use dictionary value or fallback to original value\n }));\n\n // Update the state or the updatedColumns with the new names\n updatedColumns = updatedColumnsWithNewNames;\n }\n\n // Hide column\n if (rowGroups.length > 0 && rowGroups) {\n let groupProps = null;\n groupProps = rowGroups.map(prop => prop.toLowerCase());\n updatedColumns = updatedColumns.map(column => {\n // Check if this column's field is present in groupProperty\n const hide = groupProps.includes(column.field.toLowerCase());\n return {\n ...column,\n hide: hide,\n };\n });\n }\n\n return updatedColumns;\n };\n const displayColumns = updateColumnDefs(this.configuredColumnDefs);\n\n const modifiedColumnDefs = displayColumns.map(column => {\n // Check if this column's headerName is present in displayColumns\n const isColumnDisplayed = displayColumns.find(displayColumn => displayColumn.headerName === column.headerName);\n // If it's not present, add the 'hide' property\n if (!isColumnDisplayed) {\n if (column.headerName === 'Search Rank') {\n return { ...column, sortable: false, hide: this.hasSearchRank ? false : true };\n } else {\n return { ...column, hide: true };\n }\n }\n // If it is present, return the column as is\n return column;\n });\n\n const addRenderers = (columnDefs, renderConfigs) => {\n return columnDefs.map(colDef => {\n // Find a matching configuration for this column\n const config = renderConfigs.find(cfg => cfg.field === colDef.field);\n if (config) {\n // Merge existing cellRendererParams with ones from config, prioritizing config params\n const cellRendererParams = {\n ...colDef.cellRendererParams,\n ...config.cellRendererParams,\n otherField: config.otherField, // Assuming you might want to keep using this pattern\n callbackId: config.callbackId,\n showViewAction: true,\n showThirdAction:\n this.showHotlistButton &&\n !(this.restrictedGridFeatures?.Hotlist && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Hotlist)),\n };\n\n if (config?.rendererName === 'actionsRenderer') {\n const maximumVisibleActions = 4;\n //set minWidth and maxWidth for action columns\n const actionColumnWidth = getActionColumnWidth(config?.cellRendererParams?.actionList);\n colDef.minWidth = actionColumnWidth;\n colDef.maxWidth = actionColumnWidth;\n\n //sort action list\n const sortedActionList = sortActionItemOrder([...config.cellRendererParams.actionList]);\n\n if (config?.cellRendererParams?.actionList?.length > maximumVisibleActions) {\n // Split the action list if there are more than 4 actions\n const { visibleActions, overflowActions } = splitActionList(sortedActionList, maximumVisibleActions - 1);\n this.overflowActionMenuItems = overflowActions;\n visibleActions.push({\n id: 100,\n iconName: 'overflowMenuVertical',\n title: 'View More',\n handleOnClick: this.updateActionRendererState.bind(this),\n disabled: false,\n });\n\n cellRendererParams.actionList = visibleActions;\n }\n }\n\n if (config.rendererName === 'currencyRenderer') {\n colDef.type = 'rightAligned';\n }\n\n return {\n ...colDef,\n cellRenderer: config.rendererName,\n cellRendererParams: cellRendererParams,\n };\n }\n return colDef; // Return original colDef if no matching config is found\n });\n };\n\n const addActionsColumn = columnDefs => {\n const actionsColumnExists = columnDefs.some(column => column.field === 'actions');\n if (!actionsColumnExists && !this.hideActionsColumn) {\n const actionsColumn = {\n headerName: 'Actions',\n field: 'actions',\n cellRendererParams: {\n shouldDisplayCustomContent: false,\n },\n cellRenderer: 'hotListAddRenderer',\n pinned: 'right',\n };\n columnDefs.push(actionsColumn);\n }\n return columnDefs;\n };\n\n const CHECKBOX_FIELD = 'checkbox';\n const addCheckboxColumn = columnDefs => {\n var bulkActions = this.bulkActions; // check if bulk actions are configured, if not then skip adding checkboxes\n if (bulkActions?.length > 0 || this.enableCheckboxOnColumns) {\n const checkboxColumnExists = columnDefs.some(column => column.field === CHECKBOX_FIELD);\n if (!checkboxColumnExists) {\n columnDefs = columnDefs.map(col => {\n if (col.field !== CHECKBOX_FIELD) {\n return {\n ...col,\n suppressPinned: true,\n suppressMovable: false,\n sortable: true,\n };\n }\n return col;\n });\n\n const checkboxColumn = {\n headerName: '', // No title for the checkbox column\n field: CHECKBOX_FIELD,\n checkboxSelection: true, // This enables the checkbox selection feature\n headerCheckboxSelection: this.enableCheckboxOnColumns, // set to false now as the server-size for select all is not fully implemented\n pinned: 'left', // Pinned to the left\n lockVisible: true, // This prevents the column from being hideable\n maxWidth: 70,\n filter: false, // no need to show filter for this column\n menuTabs: [], // Disables the menu in the column header\n sortable: false, // Disables sorting for this column\n suppressMovable: true,\n lockPosition: true,\n lockPinned: true,\n };\n columnDefs.unshift(checkboxColumn); // Use unshift to add it at the start of the array\n }\n }\n return columnDefs;\n };\n\n const addToolTip = columnDefs => {\n return columnDefs.map(colDef => {\n colDef.tooltipField = colDef.field;\n colDef.headerTooltip = colDef.headerName;\n return { ...colDef };\n });\n };\n\n // Usage of the function to add checkbox column\n const columnDefsWithCheckbox = addCheckboxColumn(modifiedColumnDefs);\n\n // Add the Actions column to the definitions with checkbox\n let columnDefsWithActions = addActionsColumn(columnDefsWithCheckbox);\n\n // Reorder the columns based on the currentColumnOrdering\n if (this.currentColumnOrdering.length > 0) {\n const reorderedColumns = this.currentColumnOrdering.map(currentColOrder => columnDefsWithActions.find(col => col.field === currentColOrder.colId));\n // Update the columnDefs with the reordered columns\n columnDefsWithActions = reorderedColumns;\n }\n\n // Update each column definition's 'hide' property with the value from grid state\n if (this.currentHiddenColumns?.length > 0) {\n columnDefsWithActions = columnDefsWithActions.map(colDef => {\n const hiddenCol = this.currentHiddenColumns.find(hiddenCol => hiddenCol.colId === colDef.field);\n if (hiddenCol) {\n return { ...colDef, hide: hiddenCol.hide };\n }\n return colDef;\n });\n }\n\n const columnDefsWithToolTips = addToolTip(columnDefsWithActions);\n\n // Now pass this updated array to addRenderers or other manipulation functions\n const columnDefsWithRenderers = addRenderers(columnDefsWithToolTips, this.renderConfigs);\n this.serverColumnDefs = cloneDeep(columnDefsWithRenderers);\n }\n\n @Watch('hiddenColumnsList')\n watchHiddenColumnList() {\n if (this.gridIsReady) {\n const newDefaultState = this.defaultColumnState.map(col => {\n const shouldHide = this.hiddenColumnsList.includes(col.colId);\n return {\n ...col,\n hide: shouldHide,\n };\n });\n this.defaultColumnState = newDefaultState;\n //TODO here might not want to apply column state if a view is active\n if (this.loadedView.length === 0) {\n this.agGrid.columnApi.applyColumnState({ state: this.defaultColumnState, applyOrder: true });\n }\n }\n }\n\n @Watch('configuredColumnDefs')\n configuredColumnDefsChanged(newValue: Array<any>) {\n this.hasConfiguredColumnDefs = newValue.length > 0;\n }\n //#endregion\n\n @Watch('isServerSide')\n // @Watch('apiMethodId')\n // @Watch('agGrid')\n @Watch('filterObject')\n @Watch('logicalSearchOperator')\n @Watch('lookupsMap')\n // @Watch('accessToken')\n // @Watch('tenantId')\n changeServerSideDatasource(_newValue?: any, _oldValue?: any, propName?: string) {\n console.log(`changeServerSideDatasource triggered by ${propName || 'unknown'}`);\n this.linearLoading = true;\n\n // Ensure all prerequisites are met before attempting to update the data source.\n if (!this.isServerSide || !this.apiMethodId) {\n this.linearLoading = false;\n console.warn(`Grid update prerequisites not met. isServerSide: ${this.isServerSide}, apiMethodId: ${this.apiMethodId}`);\n return;\n }\n\n if (propName === 'lookupsMap' && !this.lookupsMap) {\n console.warn('lookupsMap is not set, skipping datasource update');\n return;\n }\n\n if (propName === 'filterObject' && this.filterObject === this.prevFilterObject) {\n console.warn('Filter object has not changed, skipping datasource update');\n return;\n }\n this.prevFilterObject = cloneDeep(this.filterObject);\n\n this.noResults = false;\n\n let datasource = SearchServiceDatasource(\n null,\n this.gridUID,\n this.isRecentSearch,\n this.apiMethodId,\n this.hotListActive && this.extractContactIDs(this.hotlistSelectedFull).length === 0,\n this.filterObject,\n this.logicalSearchOperator,\n this.getLookupApiMethod(),\n executeQueryAdHocAndMapLookups,\n this.lookupsMap,\n this.defaultSearchObject,\n (dataFetched, totalCount) => {\n try {\n if (totalCount === 0) {\n this.linearLoading = false;\n }\n\n this.fullDataColumns = convertToAgGridColumns(dataFetched);\n this.hasSearchRank = !!dataFetched?.[0]?.searchRank;\n if (this.agGrid) {\n this.agGrid.api.removeEventListener('modelUpdated', this._onModelUpdated);\n this.agGrid.api.addEventListener('modelUpdated', this._onModelUpdated);\n }\n } catch (error) {\n this.gridError = true;\n console.error('Error processing data fetched for the grid:', error);\n }\n\n // Update list of recent searches\n this.getRecentSearches();\n this.isRecentSearch = false;\n },\n this.handleLinerLoading,\n );\n\n const wrappedDatasource = this.withFilterTracking(datasource);\n this.serverSideDatasource = wrappedDatasource;\n this.getGridState(true);\n }\n\n private _onModelUpdated = () => {\n const rowCount = this.agGrid.api.getDisplayedRowCount();\n this.getExtendedAdvancedSearchFilterList();\n\n if (rowCount === 0) {\n this.linearLoading = false;\n }\n this.handleColumnSizing();\n };\n\n cacheDistinctValues(rowData) {\n rowData.forEach(row => {\n Object.keys(row).forEach(field => {\n if (!this._distinctValueStore[field]) {\n this._distinctValueStore[field] = new Set();\n }\n this._distinctValueStore[field].add(row[field]);\n });\n });\n }\n\n withFilterTracking(datasource) {\n const originalGetRows = datasource.getRows;\n this._distinctValueStore = {};\n this._distinctsCached = false;\n\n datasource.getRows = params => {\n const wrappedParams = {\n ...params,\n success: data => {\n const rowData = data?.rowData || [];\n\n if (!this._distinctsCached) {\n this.cacheDistinctValues(rowData);\n this._distinctsCached = true;\n\n let columnDefinitions = this.populateColumnDefsWithDistinctValues();\n if (this.hiddenColumnsList?.length > 0) {\n columnDefinitions = columnDefinitions.map(colDef => ({\n ...colDef,\n hide: this.hiddenColumnsList.includes(colDef.field),\n }));\n }\n this.agGrid?.api?.setColumnDefs(columnDefinitions);\n this.setDefaultView();\n this.defaultColumnState = this.agGrid?.columnApi?.getColumnState();\n this.handleColumnSizing();\n }\n\n this.noResults = data.rowData.length === 0;\n params.success(data);\n },\n };\n\n originalGetRows(wrappedParams, this.shouldForceEmptyResults);\n };\n return datasource;\n }\n\n populateColumnDefsWithDistinctValues() {\n if (!this.gridIsReady || !this.agGrid?.columnApi) {\n console.warn('Grid is not ready yet, skipping column population');\n return [];\n }\n const stateMap = Object.fromEntries(this.agGrid.columnApi.getColumnState().map(s => [s.colId, s]));\n const agColumns = this.agGrid.columnApi.getColumns();\n const currentDefs = this.resetToOriginalColumnDefs\n ? this.serverColumnDefs ?? []\n : (agColumns?.length ?? 0) > 0\n ? agColumns.map(col => ({\n ...col.getColDef(),\n ...(stateMap?.[col.getColId()] ?? {}),\n }))\n : [];\n\n const newDefs = currentDefs.map(col => {\n if (!col.field) return col;\n return {\n ...col,\n filter: 'agSetColumnFilter',\n filterParams: {\n values: params => {\n const distinct = Array.from(this._distinctValueStore[col.field] || []);\n params.success(distinct);\n },\n refreshValuesOnOpen: true,\n },\n };\n });\n\n this.resetToOriginalColumnDefs = false;\n return newDefs;\n }\n\n @Watch('serverSideDatasource')\n @Watch('agGrid')\n setServerSideDatasource() {\n this.gridError = false;\n // Set the new data source and trigger a refresh.\n if (this.agGrid) {\n try {\n this.agGrid.api.setServerSideDatasource(this.serverSideDatasource);\n // No need to call refreshServerSide() as setting the datasource will implicitly refresh it.\n } catch (error) {\n this.gridError = true;\n console.error('Error setting server-side datasource:', error);\n }\n } else {\n this.serverSideDatasource.getRows({\n api: undefined,\n columnApi: undefined,\n context: undefined,\n request: {\n startRow: 0,\n endRow: 20,\n rowGroupCols: [],\n valueCols: [],\n pivotCols: [],\n pivotMode: false,\n groupKeys: [],\n filterModel: {},\n sortModel: [],\n // @ts-expect-error -- Prefetch property is custom\n prefetch: true,\n },\n fail() {},\n success() {},\n });\n }\n }\n\n adjustGridScroll() {\n const gridViewport = this.el.querySelector('.ag-center-cols-viewport') as HTMLElement;\n if (gridViewport && gridViewport.style) {\n gridViewport.style.overflowY = 'hidden';\n }\n const scrollViewport = this.el.querySelector('.ag-body-viewport.ag-layout-normal') as HTMLElement;\n if (scrollViewport && scrollViewport.style) {\n scrollViewport.style.overflowY = 'hidden';\n }\n }\n\n triggerResizeEvent() {\n let resizeEvent = new CustomEvent('resize');\n window.dispatchEvent(resizeEvent);\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.updateChipLayout();\n }\n\n @Watch('serverColumnDefs')\n serverColumnDefsChanged(newValue: any[]) {\n if (newValue && newValue.length != 0 && !this.isSetupComplete) {\n this.handleSecondarySetup();\n this.isSetupComplete = true;\n }\n this.updateChipLayout();\n }\n\n @Watch('filterRenderList')\n watchChipLayoutChanges() {\n this.updateChipLayout();\n }\n\n private selectedRowMap: Record<string, any> = {};\n private gridIsReady = false;\n initializeGrid() {\n this.gridOptions = {\n animateRows: true,\n ...(this.isServerSide ? { rowModelType: 'serverSide' } : {}),\n ...(this.isServerSide ? { serverSideStoreType: 'partial' } : {}),\n ...(this.isServerSide ? { cacheOverflowSize: 2 } : {}),\n ...(this.isServerSide ? { cacheBlockSize: 20 } : {}),\n ...(this.isServerSide ? { maxConcurrentDatasourceRequests: 1 } : {}),\n pagination: true,\n paginationPageSize: 20,\n rowHeight: 32,\n defaultColDef: {\n filter: !this.enableAdvancedSearch,\n menuTabs: this.enableAdvancedSearch ? ['generalMenuTab', 'columnsMenuTab'] : ['generalMenuTab', 'filterMenuTab', 'columnsMenuTab'],\n resizable: true,\n },\n rowSelection: 'multiple',\n ...(this.rowIdField && {\n getRowId: params => {\n const id = params.data?.[this.rowIdField];\n if (!id) {\n console.warn(`Missing ID for row using rowIdField=\"${this.rowIdField}\"`, params.data);\n return params.rowIndex?.toString(); // fallback\n }\n return id;\n },\n }),\n suppressRowClickSelection: true,\n onRowSelected: event => {\n const node = event.node;\n const rowId = node.id;\n\n if (!rowId) return;\n\n if (node.isSelected()) {\n this.selectedRowMap[rowId] = node.data;\n } else {\n delete this.selectedRowMap[rowId];\n }\n\n this.selectedRowCount = Object.keys(this.selectedRowMap).length;\n this.rowsSelected = this.selectedRowCount > 0;\n },\n onCellClicked: event => {\n this.dataRowClicked = event.data;\n },\n components: {\n emailCellRenderer: EmailCellRenderer,\n openFunctionCellRenderer: OpenFunctionCellRenderer,\n hoverContentCellRenderer: HoverContentCellRenderer,\n hotListAddRenderer: HotListAddRenderer,\n dateTimeCellRenderer: DateTimeCellRenderer,\n actionsRenderer: ActionsRenderer,\n statusRenderer: StatusRenderer,\n iconRenderer: IconRenderer,\n currencyRenderer: CurrencyRenderer,\n },\n columnDefs: this.serverColumnDefs,\n rowData: this.rowData,\n serverSideDatasource: this.serverSideDatasource,\n sideBar: this.filterPanelOpen\n ? {\n toolPanels: [\n {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n },\n {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n toolPanelParams: {\n suppressRowGroups: true,\n suppressValues: true,\n suppressPivots: true,\n suppressPivotMode: true,\n },\n },\n ],\n defaultToolPanel: '',\n }\n : null,\n onGridReady: (event: GridReadyEvent<any>) => {\n this.agGrid = {\n api: event.api,\n columnApi: event.columnApi,\n };\n\n this.gridIsReady = true;\n const tryResize = () => {\n try {\n // If loadedView/loadedViewData aren't ready or throw, fallback to just resizing\n const view = this.loadedView;\n const data = this.loadedViewData;\n\n const skipResize = Array.isArray(view) && Array.isArray(data) ? view.length !== 0 || data.length !== 0 : false;\n\n if (!skipResize) {\n this.handleColumnSizing();\n }\n } catch (error) {\n // Fallback: just attempt resizing if any error occurs\n this.handleColumnSizing();\n }\n };\n\n [500, 1000, 2000, 3000, 4000, 5000, 6000, 10000, 20000].forEach(delay => {\n setTimeout(tryResize, delay);\n });\n\n this.getGridState?.();\n this.adjustGridScroll?.();\n },\n onColumnMoved: () => {\n if (this.gridIsReady) {\n this.currentColumnOrdering = this.agGrid.columnApi.getColumnState();\n }\n this.getGridState(true);\n },\n onColumnVisible: () => {\n if (this.gridIsReady) {\n this.currentHiddenColumns = this.agGrid.columnApi.getColumnState();\n }\n this.getGridState(true);\n },\n onColumnResized: () => {\n let gridFilters = localStorage.getItem('currentGridFilters');\n if (!gridFilters || gridFilters?.length === 0) {\n this.getGridState();\n } else {\n this.getGridState(true);\n }\n },\n onColumnPinned: () => {\n this.getGridState(true);\n },\n onFilterChanged: () => {\n const filterModel = this.agGrid.api.getFilterModel();\n this.transformAndApplyFilters(filterModel);\n this.getGridState(true);\n },\n onSortChanged: () => {\n this.getGridState(true);\n },\n onFirstDataRendered: () => {\n this.getGridState();\n // Here you can also check if pivot mode has changed\n if (this.gridIsReady) {\n const isPivotMode = this.agGrid.columnApi.isPivotMode();\n if (isPivotMode !== this.prevPivotMode) {\n this.getPivotModeState(); // Replace with your actual method\n this.prevPivotMode = isPivotMode;\n }\n this.handleColumnSizing();\n }\n },\n onFilterOpened: params => {\n const field = params.column.getColDef().field;\n const customFilters = this.filterObject?.[0]?.filterElements || [];\n\n // Get all filterElements matching the column and operator '='\n const matchingFilters = customFilters.filter(f => f.searchField.toLowerCase() === field.toLowerCase() && f.searchOperator === '=');\n\n if (matchingFilters.length === 0) return;\n\n const filterInstance = params.api.getFilterInstance(field);\n\n if (filterInstance) {\n const values = matchingFilters.map(f => f.searchValue);\n filterInstance.setModel({\n values,\n });\n\n if (typeof filterInstance.refreshFilterUi === 'function') {\n filterInstance.refreshFilterUi();\n }\n }\n },\n suppressMenuHide: this.suppressMenuHide,\n tooltipShowDelay: 1000,\n } as unknown as GridOptions;\n const myGrid = this.el.shadowRoot.querySelector('#myGrid');\n if (myGrid) {\n new window['agGrid'].Grid(myGrid, this.gridOptions);\n }\n }\n\n handleSearchModeToggle() {\n this.toggleSearchModeConfirmation(true);\n }\n\n confirmSearchModeToggle() {\n this.enableAdvancedSearch = !this.enableAdvancedSearch;\n // switching from advanced to standard\n if (!this.enableAdvancedSearch) {\n this.noResults = true;\n this.refreshOnNoResults();\n } else {\n this.noResults = true;\n this.refreshOnNoResults(false);\n }\n this.toggleSearchModeConfirmation(false);\n }\n\n @Watch('defaultSearchMode')\n handleDefaultSearchModeChange(newValue: 'advanced' | 'standard') {\n this.enableAdvancedSearch = newValue === 'advanced';\n }\n\n @Watch('enableAdvancedSearch')\n onSearchModeChange() {\n this.reinitializeGrid();\n }\n\n toggleSearchModeConfirmation(show: boolean) {\n this.toggleSearchModeConfirmationDialogOpen = show;\n }\n\n reinitializeGrid() {\n if (this.agGrid?.api) {\n this.agGrid.api.destroy();\n this._distinctsCached = false; // Reset distincts cache\n this._distinctValueStore = {}; // Reset distinct value store\n }\n this.initializeGrid();\n }\n\n // After apiCatalogId is pushed into localStorage\n handleGetPromotedLookupMethod = async () => {\n try {\n // Fetch the API Catalog ID, but don't await it since may not be needed yet\n this.getApiCatalogId().then(apiCatalogId => {\n if (!apiCatalogId) {\n this.gridError = true;\n throw new Error('apiCatalogId is undefined');\n }\n });\n\n localStorage.setItem('lookupApiMethodId', await this.getLookupApiMethod());\n\n let productList = state.catalogData;\n this.catalogList = productList;\n } catch (error) {\n this.gridError = true;\n console.error('Error performing API call:', error);\n }\n };\n\n handleGetInstanceAndMethod = async () => {\n localStorage.setItem('apiMethodId', await this.getApiMethodId());\n\n // Save data to local storage\n const catalogModificationP = this.getColumnDefinitions();\n\n const getConfiguredColumnDefs = UdpGridColumnDefs(await catalogModificationP);\n getConfiguredColumnDefs.forEach(column => {\n if (this.rowGrouping.includes(column.field)) {\n column.rowGroup = true;\n column.hide = true;\n }\n });\n this.configuredColumnDefs = getConfiguredColumnDefs;\n this.lookupsMap = this.getLookupsMap(await catalogModificationP);\n };\n\n async getLookupId(lookupsMap: any) {\n if (!lookupsMap) return null;\n\n const lookupToFilterOn = Object.values(lookupsMap).find((item: any) => item.filterOn);\n const lookupId = (lookupToFilterOn as any)?.value || '';\n\n const uuidPattern = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;\n\n if (!lookupId || typeof lookupId !== 'string' || !uuidPattern.test(lookupId)) {\n console.error('Invalid lookupId', lookupId);\n return null;\n }\n\n // Call the function and await its result\n const data = await executeQueryWithParameters(\n {\n data: {\n id: lookupId,\n },\n },\n await this.getLookupApiMethod(),\n );\n this.filterChips = data.data;\n return lookupId;\n }\n\n getLookupsMap(queryColumnsData) {\n if (!queryColumnsData.length) return null;\n const map = {};\n const lookupColumns = queryColumnsData.filter(column => {\n const lookupValue = column.extendedProperties?.lookup;\n return !!lookupValue;\n });\n\n lookupColumns.forEach(lc => {\n map[lc.name] = {\n lookupKeyName: lc.extendedProperties?.lookupKeyName || '',\n lookupValueName: lc.extendedProperties?.lookupValueName || '',\n value: lc.extendedProperties?.lookup || '',\n filterOn: !!lc.filterOn || false,\n };\n });\n this.getLookupId(map);\n const keys = Object.keys(map);\n const keyString = keys[0];\n this.filterOn = keyString;\n return map;\n }\n\n async handleAdditionalSetup() {\n // Ensure handleGetPromotedLookupMethod is awaited to complete before proceeding.\n await this.handleGetPromotedLookupMethod();\n\n // After awaiting, check again for lookupApiMethodId in localStorage.\n if (await this.getLookupApiMethod()) {\n await this.handleGetInstanceAndMethod();\n } else {\n // If lookupApiMethodId is still not set, it means there was an issue in handleGetPromotedLookupMethod.\n console.error('Failed to retrieve lookupApiMethodId - handleAdditionalSetup aborted.');\n // Return or handle the error as needed.\n }\n }\n\n handleSecondarySetup = async () => {\n this.fetchAvailableGridActions();\n this.filterByCatalogObjectName(this.entityName);\n await this.fetchDataForViews();\n this.transformBulkActions();\n this.handleGetAllHotlists();\n };\n\n getGridState(setAutoGridState = false) {\n if (this.gridOptions && this.gridIsReady) {\n const columnState = this.agGrid.columnApi.getColumnState();\n const columnGroupState = this.agGrid.columnApi.getColumnGroupState();\n const filterModel = this.filterObjectsWithGroups;\n const isPivotMode = this.agGrid.columnApi.isPivotMode();\n const sortModel = columnState.filter(column => column.sort != null);\n\n const gridState = [];\n const columnGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column,\n gridId: this.gridId,\n values: JSON.stringify(columnState),\n };\n const columnGroupGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Group,\n gridId: this.gridId,\n values: JSON.stringify(columnGroupState),\n };\n const columnSortGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Sort,\n gridId: this.gridId,\n values: JSON.stringify(sortModel),\n };\n const columnFilterGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Filter,\n gridId: this.gridId,\n values: JSON.stringify(filterModel),\n };\n const pivotGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Pivot_Mode,\n gridId: this.gridId,\n values: JSON.stringify(isPivotMode),\n };\n gridState.push(columnGridConfiguration);\n gridState.push(columnGroupGridConfiguration);\n gridState.push(columnSortGridConfiguration);\n gridState.push(columnFilterGridConfiguration);\n gridState.push(pivotGridConfiguration);\n\n this.gridState = gridState;\n let gridStateObject = {\n state: gridState,\n tenantId: getCurrentTenantId(),\n gridId: this.gridId,\n loadedGridViewName: null,\n };\n\n if (setAutoGridState && !this.disableGridPersistance) {\n let savedGridStatesString = localStorage.getItem('savedGridStates');\n if (!savedGridStatesString) {\n localStorage.setItem('savedGridStates', JSON.stringify([gridStateObject]));\n } else {\n let currentGridStateObj = this.getCurrentGridState();\n if (!currentGridStateObj) {\n let savedGridStatesArray = JSON.parse(savedGridStatesString) ?? [];\n savedGridStatesArray.push(gridStateObject);\n localStorage.setItem('savedGridStates', JSON.stringify(savedGridStatesArray));\n } else {\n this.saveCurrentGridState({\n ...currentGridStateObj,\n state: gridState,\n });\n }\n }\n }\n }\n }\n\n onFirstDataRendered(gridData) {\n if (this.hotListActive) {\n this.handleRemoveHotlist();\n }\n let gridConfigurations = [];\n let gridConfigArray = [];\n if (gridData?.state) {\n gridConfigArray = gridData.state;\n let loadedGridViewName = gridData.loadedGridViewName;\n if (loadedGridViewName?.length > 0) {\n this.loadedViewTitle = loadedGridViewName;\n }\n this.loadedView = gridConfigArray;\n }\n if (gridData?.gridViewGridViewGridConfiguration) {\n this.loadedViewTitle = gridData.name;\n gridConfigArray = gridData?.gridViewGridViewGridConfiguration;\n }\n if (gridConfigArray && gridConfigArray?.length > 0) {\n gridConfigArray.forEach(config => {\n let state = config;\n if (config?.gridViewGridConfigurationGridConfiguration) {\n state = config?.gridViewGridConfigurationGridConfiguration;\n }\n if (state) {\n gridConfigurations.push({\n gridConfigurationId: state?.gridConfigurationId ?? 0,\n gridStateTypeId: state?.gridStateTypeId,\n });\n switch (state.gridStateTypeId) {\n case GridStateTypeEnums.Column:\n this.loadedViewData = state.values;\n if (this.gridIsReady) {\n this.agGrid.columnApi.applyColumnState({\n state: JSON.parse(state.values),\n applyOrder: true,\n });\n }\n break;\n case GridStateTypeEnums.Pivot_Mode:\n if (this.gridIsReady) {\n this.agGrid.columnApi.setPivotMode(JSON.parse(state.values));\n }\n break;\n case GridStateTypeEnums.Column_Sort:\n if (this.gridIsReady) {\n const currentColumnState = this.agGrid.columnApi.getColumnState();\n const newColumnState = JSON.parse(state.values);\n const mergedState = currentColumnState.map(col => newColumnState.find(newCol => newCol.colId === col.colId) || col);\n this.agGrid.columnApi.applyColumnState({ state: mergedState });\n }\n break;\n case GridStateTypeEnums.Column_Filter:\n let filterObjects = JSON.parse(state.values);\n (this.defaultSearchObject ?? []).forEach(defaultFilter => {\n let filterExists = false;\n\n for (let fo of filterObjects) {\n if (Array.isArray(fo.filters)) {\n const match = fo.filters.find(f => f.searchField === defaultFilter.searchField);\n if (match) {\n match.isInitialFilterElement = true;\n filterExists = true;\n break;\n }\n }\n }\n\n if (!filterExists) {\n const newFilter = this.buildSearchFilterElements(defaultFilter, true, true);\n const target = filterObjects.find(fo => Array.isArray(fo.filters));\n if (target) {\n target.filters.push(newFilter);\n } else {\n filterObjects.push({ filters: [newFilter] });\n }\n }\n });\n\n this.filterObject\n .flatMap(({ filterElements }) => filterElements)\n .forEach(filterElement => {\n const exists = filterObjects[0].filters.some(filter => filter.searchField === filterElement.searchField);\n if (!exists) {\n filterObjects[0].filters.push(this.buildSearchFilterElements(filterElement, true, false));\n }\n });\n break;\n case GridStateTypeEnums.Column_Group:\n if (this.gridIsReady) {\n this.agGrid.columnApi.setColumnGroupState(JSON.parse(state.values));\n }\n break;\n default:\n break;\n }\n }\n });\n if (this.filterChips?.length === 0) {\n let currentGridStateObj = this.getCurrentGridState();\n let filters = currentGridStateObj;\n if (currentGridStateObj?.gridViewGridViewGridConfiguration) {\n filters = currentGridStateObj?.gridViewGridViewGridConfiguration;\n }\n if (filters) {\n this.updateChipLayout();\n }\n }\n } else {\n }\n this.selectedGridViewGridConfigurations = gridConfigurations;\n this.handleColumnSizing();\n }\n\n primaryActionClick(type: string) {\n if (type === 'advancedSearch') {\n this.advancedDrawerOpen = !this.advancedDrawerOpen;\n } else if (type === 'views') {\n this.viewDrawerOpen = !this.viewDrawerOpen;\n } else if (type === 'customSearch') {\n this.customSearchDrawerOpen = !this.customSearchDrawerOpen;\n } else {\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n }\n }\n\n // Opens the drop down menu of the gear icon in the header\n showGridOptions() {\n this.gridOptionsDrawerOpen = !this.gridOptionsDrawerOpen;\n }\n\n resetToOriginalFilters() {\n this.filterObjectsWithGroups = cloneDeep(this.initialFilterData.filterObjectsWithGroups);\n this.filterObject = cloneDeep(this.initialFilterData.filterObject);\n this.logicalSearchOperator = cloneDeep(this.initialFilterData.logicalSearchOperator);\n this.filterRenderList = cloneDeep(this.initialFilterData.filterRenderList);\n this.updateChipLayout();\n }\n\n clearViewFilter() {\n if (this.gridOptions && this.agGrid) {\n const { api, columnApi } = this.agGrid;\n\n api.setQuickFilter('');\n columnApi.setRowGroupColumns([]);\n api.setFilterModel(null);\n columnApi.applyColumnState({ state: this.defaultColumnState, applyOrder: true });\n }\n state.hotListActive = '';\n\n let currentGridStateObj = this.getCurrentGridState();\n if (currentGridStateObj) {\n this.saveCurrentGridState({\n ...currentGridStateObj,\n state: null,\n loadedGridViewName: null,\n });\n }\n this.loadedGridView = null;\n this.loadedViewTitle = '';\n this.loadedView = [];\n this.setCurrentViewData('', false, null, null);\n\n this.resetToOriginalColumnDefs = true;\n this.refreshGrid();\n }\n\n clearFilters() {\n this.enableDefaultView = true;\n this.refreshOnNoResults();\n if (this.gridOptions && this.agGrid) {\n const { api } = this.agGrid;\n\n api.setQuickFilter('');\n api.setFilterModel(null);\n }\n }\n\n refreshGrid() {\n this.changeServerSideDatasource();\n this.handleColumnSizing();\n }\n\n handleColumnSizing = () => {\n if (this.fitGrid === 'fit') {\n this.fitColumns();\n } else {\n this.expandColumns();\n }\n };\n\n refreshOnNoResults = (resetFilters: boolean = true) => {\n this.hotListActive = '';\n this.loadedView = [];\n\n if (this.noResults) {\n lazySetupAgGridLibrary({ LicenseKey })\n .then(() => {\n this.handleSecondarySetup();\n })\n .catch(error => {\n this.gridError = true;\n console.error('Error refreshing the grid on no results:', error);\n });\n }\n this.updateServerSideDatasource('', 'advanced search sheet');\n if (resetFilters) {\n this.resetToOriginalFilters();\n }\n\n this.handleColumnSizing();\n this.noResults = false;\n };\n\n // ONCLICK FUNCTIONS for grid-primary-bar and stencil-icon-button-grid-action-header\n exportToCsv() {\n if (this.agGrid) {\n const params = {};\n this.agGrid.api.exportDataAsCsv(params);\n }\n }\n fitColumns() {\n if (this.gridOptions && this.agGrid) {\n this.agGrid.api.sizeColumnsToFit();\n }\n }\n expandColumns() {\n if (this.gridOptions && this.gridIsReady) {\n const allCols = this.agGrid.columnApi.getAllDisplayedColumns();\n const colIds = allCols.map(col => col.getColId());\n this.agGrid.columnApi.autoSizeColumns(colIds);\n }\n }\n togglePanel(panelType) {\n const panelTypes = ['filters', 'columns'];\n panelTypes.forEach(type => {\n if (type !== panelType) {\n const otherPanelOpenKey = `${type}PanelOpen`;\n this[otherPanelOpenKey] = false; // Close other panel if open\n }\n });\n\n const panelOpenKey = `${panelType}PanelOpen`;\n this[panelOpenKey] = !this[panelOpenKey]; // Toggle the current panel\n\n // Create the toolPanel configuration based on the panelType\n const toolPanelConfig = {\n id: panelType,\n labelDefault: panelType.charAt(0).toUpperCase() + panelType.slice(1),\n labelKey: panelType,\n iconKey: panelType === 'filters' ? 'filter' : 'columns',\n toolPanel: panelType === 'filters' ? 'agFiltersToolPanel' : 'agColumnsToolPanel',\n toolPanelParams: {\n suppressRowGroups: true,\n suppressValues: true,\n suppressPivots: true,\n suppressPivotMode: true,\n },\n };\n\n // Update gridOptions to reflect new sidebar settings\n this.gridOptions.sideBar = this[panelOpenKey]\n ? {\n toolPanels: [toolPanelConfig],\n defaultToolPanel: panelType,\n }\n : null;\n\n this.agGrid.api.setSideBarVisible(this[panelOpenKey]);\n\n if (this[panelOpenKey]) {\n this.agGrid.api.openToolPanel(panelType);\n } else {\n this.agGrid.api.closeToolPanel();\n }\n\n // Apply Direct DOM Manipulation\n const sidebarElement = this.el.shadowRoot.querySelector('.ag-side-bar');\n if (sidebarElement instanceof HTMLElement) {\n sidebarElement.style.width = this[panelOpenKey] ? '200px' : 'initial';\n }\n }\n toggleServerSide = () => {\n this.isServerSide = !this.isServerSide;\n };\n getPivotModeState() {\n if (this.gridOptions && this.gridIsReady) {\n return this.agGrid.columnApi.isPivotMode();\n }\n return false;\n }\n\n // VIEW FUNCTIONS\n showViews() {\n this.viewDrawerOpen = !this.viewDrawerOpen;\n this.sheetContent = 'views';\n }\n showViewSave() {\n this.saveDialogOpen = !this.saveDialogOpen;\n }\n resetDefaultView = () => {\n const domain = this.entityName;\n this.viewListRowData.forEach(item => {\n if (item.isDefault === true) {\n try {\n updateView(item.gridViewId, this.userId, this.gridId, this.apiCatalogId, item.name, 0, domain, item.gridViewVisibilityTypeId, data => {\n console.log('updateView, data: ', data);\n });\n } catch (error) {\n console.error('Error updating view, data:', error);\n }\n }\n });\n };\n setCurrentViewData(viewName: string, isDefault: boolean, gridViewVisibilityTypeId: number, gridViewId: string = '') {\n this.selectedGridId = gridViewId || this.selectedGridId;\n this.selectedViewName = viewName;\n this.selectedViewIsDefault = isDefault;\n this.selectedViewGridViewVisibilityTypeId = gridViewVisibilityTypeId;\n }\n openViewEdit(gridViewId: string, viewName: string, isDefault: boolean, gridViewVisibilityTypeId: number) {\n this.editDialogOpen = !this.editDialogOpen;\n this.setCurrentViewData(viewName, isDefault, gridViewVisibilityTypeId, gridViewId);\n }\n closeViewEdit() {\n this.editDialogOpen = !this.editDialogOpen;\n }\n openViewEditConfirmation(name: string, isPrivate: number, isDefault: boolean) {\n this.showViewEditConfirmation(true);\n this.setCurrentViewData(name, isDefault, isPrivate);\n }\n showViewEditConfirmation(show: boolean) {\n this.editViewConfirmationDialogOpen = show;\n }\n\n async handleViewFormSubmit(name: string, isPrivate: number, isDefault: boolean, columnState) {\n const userId = this.userId;\n const gridId = this.gridId;\n const apiCatalogId = this.apiCatalogId;\n const gridConfigurations = columnState; // The columnState from the argument\n const isDefaultNum: number = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n // if newDefault == 1, then we need to make sure any existing view with isDefault=1 is set to =0\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n\n // Now call saveView\n try {\n await saveView(userId, gridId, apiCatalogId, name, domain, gridConfigurations, isPrivate, isDefaultNum, data => {\n this.saveDialogOpen = !this.saveDialogOpen; // closes form\n this.showNotification = true;\n this.notificationMessage = `${data.gridView.name} has been saved successfully.`;\n this.notificationStatus = 'success';\n this.fetchDataForViews();\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n console.error('Error saving data:', error);\n }\n }\n // Ensures each GridConfiguration has the correct GridConfigurationID for updating in the database\n updateGridConfigurationsWithIDsForUpdatingView(gridConfigs: any[]) {\n gridConfigs.forEach(config => {\n if (this.selectedGridViewGridConfigurations) {\n const gridConfigInfo = this.selectedGridViewGridConfigurations.find(item => item.gridStateTypeId === config.gridStateTypeId);\n config.gridConfigurationId = gridConfigInfo?.gridConfigurationId;\n }\n });\n return gridConfigs;\n }\n // Handler for saving changes to an existing GridView and its GridConfigurations\n async handleViewAndConfigurationsUpdate(name: string, isPrivate: number, isDefault: boolean, columnState) {\n const gridConfigurations = this.updateGridConfigurationsWithIDsForUpdatingView(columnState);\n const isDefaultNum: number = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n\n try {\n await updateViewAndConfigurations(\n this.selectedGridId,\n this.userId,\n this.gridId,\n this.apiCatalogId,\n name,\n gridConfigurations,\n isDefaultNum,\n domain,\n isPrivate,\n () => {\n this.saveDialogOpen = !this.saveDialogOpen; // closes form\n this.showViewEditConfirmation(false);\n this.showNotification = true;\n this.notificationMessage = `${name} has been saved successfully.`;\n this.notificationStatus = 'success';\n this.fetchDataForViews();\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n },\n );\n } catch (error) {\n console.error('Error saving data:', error);\n }\n }\n\n // Used for both hotlists and views\n toggleDeleteDialog = type => {\n switch (type) {\n case 'hotlist':\n this.confirmDialog = !this.confirmDialog;\n break;\n case 'view':\n this.confirmDialogDeleteView = !this.confirmDialogDeleteView;\n break;\n default:\n break;\n }\n };\n updateDefaultView = item => {\n var newDefault = item.isDefault ? 0 : 1;\n const domain = this.entityName;\n // if newDefault == 1, then we need to make sure any existing view with isDefault=1 is set to =0\n if (newDefault == 1) {\n this.resetDefaultView();\n }\n try {\n updateView(\n item.gridViewId,\n this.userId,\n this.gridId,\n this.apiCatalogId,\n item.name,\n newDefault,\n domain,\n item.gridViewVisibilityTypeId,\n data => {\n console.log('updateView, data:', data);\n },\n ).then(() => {\n this.fetchDataForViews();\n this.confirmDialog = false;\n this.showNotification = true;\n this.notificationMessage = `Updated default view.`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n this.gridError = true;\n console.error('Error updating view, data:', error);\n }\n };\n\n getCurrentGridState = () => {\n let savedStatesString = localStorage.getItem('savedGridStates');\n let currentGridStateObj = null;\n if (savedStatesString) {\n let savedStatesArray = JSON.parse(savedStatesString) ?? [];\n if (savedStatesArray?.length > 0) {\n currentGridStateObj = savedStatesArray?.filter((i: any) => i?.tenantId && i?.tenantId === getCurrentTenantId() && i?.gridId && i?.gridId === this.gridId)[0];\n } else {\n }\n }\n return currentGridStateObj;\n };\n\n saveCurrentGridState = (gridStateObject: any) => {\n let savedGridStatesString = localStorage.getItem('savedGridStates');\n if (savedGridStatesString) {\n let savedGridStatesArray = JSON.parse(savedGridStatesString) ?? [];\n let newArray = savedGridStatesArray.map((s: any) => {\n if (s?.tenantId && s?.tenantId === getCurrentTenantId() && s?.gridId && s?.gridId === this.gridId) {\n s = gridStateObject;\n }\n return s;\n });\n localStorage.setItem('savedGridStates', JSON.stringify(newArray));\n } else {\n localStorage.setItem('savedGridStates', JSON.stringify([gridStateObject]));\n }\n };\n\n async handleViewUpdate(gridId: any, name: string, isPrivate: number, isDefault: boolean) {\n var isDefaultNum = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n\n // if this isDefault is true, then we need to make sure any existing view with isDefault=1 is set to =0\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n try {\n updateView(gridId, this.userId, this.gridId, this.apiCatalogId, name, isDefaultNum, domain, isPrivate, data => {\n console.log('updateView, data:', data);\n }).then(() => {\n this.fetchDataForViews();\n this.confirmDialog = false;\n this.showNotification = true;\n this.notificationMessage = `Updated view.`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n this.gridError = true;\n console.error('Error updating view, data:', error);\n }\n }\n fetchDataForViews = async () => {\n try {\n const apiCatalogId = await this.getApiCatalogId();\n if (!apiCatalogId) {\n console.warn('apiCatalogId is not yet defined');\n return;\n }\n\n const entityName = await this.getEntityName();\n const data = await new Promise<any[]>(resolve => {\n getAvailableViews(this.userId, this.gridId, apiCatalogId, entityName, resolve);\n });\n\n this.viewListRowData = data;\n this.setDefaultView();\n this.updateForConfiguredColumnDefs = false;\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching data for views:', error);\n }\n };\n\n renderViewCallback = data => {\n this.onFirstDataRendered(data);\n this.loadedGridView = data;\n if (data?.name) {\n this.loadedViewTitle = data.name;\n\n let currentGridStateObject = this.getCurrentGridState();\n if (currentGridStateObject) {\n this.saveCurrentGridState({\n ...currentGridStateObject,\n loadedGridViewName: data?.name,\n });\n } else {\n this.saveCurrentGridState({\n gridId: this.gridId,\n gridState: null,\n loadedGridViewName: data?.name,\n });\n }\n }\n this.getGridState(true);\n };\n\n setDefaultView = () => {\n if (this.enableDefaultView) {\n const defaultViewObj = this.viewListRowData.find(item => item.isDefault === true);\n if (defaultViewObj) {\n this.setCurrentViewData(defaultViewObj.name, true, defaultViewObj.gridViewVisibilityTypeId, defaultViewObj.gridViewId);\n getSelectedView(defaultViewObj.gridViewId, this.renderViewCallback);\n }\n }\n\n if (!this.disableGridPersistance) {\n let currentGridStateObj = this.getCurrentGridState();\n if (currentGridStateObj) {\n this.onFirstDataRendered(currentGridStateObj);\n }\n }\n };\n openDeleteViewConfirmation = gridViewId => {\n this.viewId = gridViewId;\n this.confirmDialogDeleteView = true;\n };\n handleDeleteView = () => {\n this.confirmDialogDeleteView = false;\n const callback = () => {\n // Will send to grid to update view\n getAvailableViews(this.userId, this.gridId, this.apiCatalogId, this.entityName, data => {\n this.viewListRowData = data; // Ensure this correctly updates the state\n });\n };\n deleteSelectedView(this.viewId, callback);\n this.showNotification = true;\n this.notificationMessage = `Deleted view`;\n this.notificationStatus = 'success';\n\n // remove view if deleted view is applied view\n if ((this.loadedGridView as any)?.gridViewId === this.viewId) {\n this.clearViewFilter();\n }\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n };\n\n // HOTLIST FUNCTIONS\n showHotlist() {\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n this.businessObjectKey = null;\n this.logicalSearchOperator = 2;\n }\n // set hotlist form open\n toggleHotlistForm = () => {\n this.showHotlistForm = !this.showHotlistForm;\n };\n handleGetAllHotlists = async () => {\n try {\n const hotlistData = await getAllHotlists();\n this.allHotlists = hotlistData;\n } catch (error) {\n console.error('Error fetching hotlists:', error);\n }\n };\n // Add a hotlist item single\n handleSetSingleHotlistItem = id => {\n this.showNotification = true;\n this.notificationMessage = `Record added to hotlist`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n const businessObjectKey = this.dataRowClicked.businessObjectKey;\n // Update the dataObject\n const dataObject = {\n hotListId: id, // Assuming id is already defined\n contextDate: '2023/01/01',\n data: JSON.stringify(this.dataRowClicked),\n entityBusinessObjectKey: businessObjectKey,\n currentUserId: '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380',\n };\n addRecordToAHotlist(dataObject);\n };\n // delete a selected hotlist\n confirmRequestDelete = hotListId => {\n this.confirmDialog = !this.confirmDialog;\n this.hotListId = hotListId;\n };\n handleRequestDeleteHotlist = () => {\n deleteAHotlist(this.hotListId)\n .then(() => {\n this.handleGetAllHotlists();\n this.confirmDialog = false;\n })\n .catch(error => {\n console.error('Error deleting hotlist:', error);\n // handle any errors here\n });\n };\n // convert hotlist to payload\n mapHotlistsToPayload(hotlistIdentifiers) {\n return hotlistIdentifiers.map(keyID => ({\n searchField: this.hotListIdentifier,\n searchOperator: '=',\n searchValue: keyID,\n }));\n }\n updateFilterObjectWithPayload(hotlistSearchKeys) {\n // clear view if active\n this.loadedView = [];\n this.resetToOriginalFilters();\n this.updateChipLayout();\n\n const payload = this.mapHotlistsToPayload(hotlistSearchKeys);\n this.hotListCount = payload.length;\n this.updateFilterObject(() => [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: payload,\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'hotlist',\n },\n ]);\n this.updateServerSideDatasource('', 'updateFilterObjectWithPayload');\n this.hotlistDrawerOpen = false;\n }\n // extract id to process for search object\n extractContactIDs = payload => {\n const contactIDs = payload.records.map(record => {\n const dataObject = JSON.parse(record.data);\n return dataObject[this.hotListIdentifier];\n });\n return contactIDs;\n };\n // view a selected hotlist\n handleRequestHotlist = async hotlistID => {\n try {\n // Await for the Promise to resolve and then store the result\n const hotloadList = await loadAHotlist(hotlistID);\n\n // Process the data with extractContactIDs\n const contactIDs = this.extractContactIDs(hotloadList);\n this.hotListActive = hotloadList.name;\n state.hotListActive = this.hotListActive;\n\n // Set full list hotlist data\n this.hotlistSelectedFull = hotloadList;\n\n // Send the processed data to sendAsSearchObject\n this.updateFilterObjectWithPayload(contactIDs);\n } catch (error) {\n // Handle any errors that occur during the API call\n this.gridError = true;\n console.error('Error in handleRequestHotlist:', error);\n }\n };\n handleLoadView = cellValue => {\n getSelectedView(cellValue, this.renderViewCallback);\n this.viewDrawerOpen = !this.viewDrawerOpen;\n };\n // Submit to save hotlist\n handleSaveHotlist = async (name: string, isPrivate: boolean) => {\n const hostListRequestBody = {\n domain: this.entityName,\n name: name,\n tenantId: getCurrentTenantId(),\n isPrivate: isPrivate,\n createdBy: this.userId,\n hotListDataSourceId: 1,\n hotListTypeId: 2,\n };\n\n try {\n await createAHotlist(hostListRequestBody);\n this.showHotlistForm = false;\n this.handleGetAllHotlists();\n } catch (error) {\n console.error('Error creating hotlist:', error);\n // handle any errors here\n }\n };\n\n // FILTER CHIP FUNCTIONS\n hasInitializedDefaultFilter = false; // Add this flag as a property in your class\n defaultFilterElements: any; // Replace any with your specific type\n activeChips: any[] = [];\n\n handleViewChipDelete = () => {\n this.loadedView = [];\n this.enableDefaultView = false;\n this.clearViewFilter();\n };\n\n handleRemoveHotlist = () => {\n this.hotListActive = '';\n this.loadedView = [];\n this.clearViewFilter();\n state.hotListActive = '';\n };\n\n fullClearSearch = () => {\n // this.filterObjectsWithGroups[0].filters.length = 0; // clears the form UI\n\n // this.updateFilterObject(() => [\n // {\n // pageNumber: 1,\n // pageSize: 20,\n // filterElements: [],\n // orderElements: [],\n // groupingType: '',\n // groupProperty: [],\n // groupOperationList: [],\n // eagerLoad: false,\n // logicalSearchOperator: 2,\n // type: 'advanced',\n // },\n // ]);\n this.resetToOriginalFilters();\n\n this.hotListActive = null;\n state.hotListActive = null;\n this.updateServerSideDatasource('', 'clearSearch');\n };\n\n setFilterFromChips(chipText: string) {\n const isChipValid = this.filterChips.some(chip => chip.description === chipText);\n if (!isChipValid) {\n return;\n }\n\n const index = this.activeChips.findIndex(chip => chip.description === chipText);\n // Initialize defaultFilterElements once, and only once\n if (!this.hasInitializedDefaultFilter) {\n if (this.filterObject && this.filterObject[0] && this.filterObject[0].filterElements) {\n this.defaultFilterElements = JSON.parse(JSON.stringify(this.filterObject[0].filterElements));\n this.hasInitializedDefaultFilter = true;\n }\n }\n\n // Toggle the chip on or off in activeChips\n if (index !== -1) {\n this.activeChips.splice(index, 1);\n } else {\n const chip = this.filterChips.find(chip => chip.description === chipText);\n this.activeChips.push(chip);\n }\n\n this.updateFilterObject(filterObject => {\n // Clear existing FirstName filters from filterElements\n filterObject[0].filterElements = filterObject[0].filterElements.filter(element => {\n return element.searchField !== this.filterOn;\n });\n\n // Re-add filters based on activeChips\n for (const chip of this.activeChips) {\n const searchValue = chip[this.filterOn] ? chip[this.filterOn] : chip.description;\n filterObject[0].filterElements.push({\n searchField: this.filterOn, // @todo: make this dynamic from api\n searchOperator: '=',\n searchValue: searchValue,\n });\n }\n\n // If all chips are deactivated, revert to default pre-set filter\n if (this.activeChips.length === 0) {\n filterObject[0].filterElements = JSON.parse(JSON.stringify(this.defaultFilterElements));\n }\n });\n\n this.logicalSearchOperator = 2;\n // Update the server-side datasource to apply the new filters\n this.updateServerSideDatasource('', 'setFilterChips');\n }\n\n setFilterSelections(filter) {\n const currentFilterObject = this.filterRenderList[0];\n currentFilterObject.filterElements = [...currentFilterObject.filterElements, filter];\n // Update the filterRenderList with the modified filter object\n this.filterRenderList = [currentFilterObject, ...this.filterRenderList.slice(1)];\n }\n\n // ADVANCED SEARCH FUNCTIONS\n showCustomSearch() {\n this.customSearchDrawerOpen = !this.customSearchDrawerOpen;\n }\n showAdvancedSearch() {\n this.advancedDrawerOpen = !this.advancedDrawerOpen;\n this.logicalSearchOperator = 1;\n this.setSearchStart = false;\n }\n\n setGroupedFilterSelections(filter: any) {\n // Try to find corresponding domain field from configuredColumnDefs because only grid columns configured in query builder could have an alias.\n const searchFieldAlias = this.configuredColumnDefs?.find(col => col.field.toLowerCase() === filter.searchField.toLowerCase())?.headerName;\n\n // Prepare the filter object with the new ID\n const newFilter = { ...filter, searchFieldAlias: searchFieldAlias };\n\n // Function to recursively find and update the correct node\n const addFilterToNode = (nodes: any[], nodeId: string, filter: any) => {\n for (const node of nodes) {\n if (node.filterGroupId === nodeId) {\n const newFilter = { ...filter, id: uuid(), filterGroupId: node.filterGroupId };\n node.filters.push(newFilter);\n return true; // Stop searching when the correct node is updated\n }\n if (node.children && node.children.length > 0) {\n if (addFilterToNode(node.children, nodeId, filter)) {\n return true; // Stop searching if the correct node was found in the children\n }\n }\n }\n return false; // Node not found in this branch\n };\n\n addFilterToNode(this.filterObjectsWithGroups, this.advancedGroupSearchNodeId, newFilter);\n this.handleSearchItemChange();\n }\n\n setGroupedSearchSections(groupId: string, filterGroupId: string, logicalOperator: 'AND' | 'OR') {\n const newChild = {\n id: uuid(),\n filterGroupId: filterGroupId,\n logicalOperator: logicalOperator,\n filters: [],\n children: [],\n };\n\n // Recursive function to find the correct node and add the new child\n const addChildToNode = (nodes: any[], nodeId: string, child: any) => {\n for (const node of nodes) {\n if (node.id === nodeId) {\n if (!node.children) {\n node.children = []; // Ensure the children array exists\n }\n node.children.push(child);\n return true; // Node updated, stop the search\n }\n if (node.children && node.children.length > 0) {\n if (addChildToNode(node.children, nodeId, child)) {\n return true; // Child added in a deeper level\n }\n }\n }\n return false; // Node not found in this branch\n };\n\n // Attempt to add the new child to the node identified by groupId\n addChildToNode(this.filterObjectsWithGroups, groupId, newChild);\n\n // Trigger a state update to reflect the change\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n\n updateGroupLogicalOperator(groupId: string, logicalOperator: 'AND' | 'OR') {\n const updateOperator = (nodes: any[], nodeId: string, newOperator: 'AND' | 'OR') => {\n for (const node of nodes) {\n if (node.filterGroupId === nodeId) {\n if (node.id === 'root') {\n this.logicalSearchOperator = this.getLogicalOperatorCode(newOperator);\n }\n node.logicalOperator = newOperator; // Update the logical operator here\n return true; // Successfully updated, stop the search\n }\n if (node.children && updateOperator(node.children, nodeId, newOperator)) {\n return true; // Successfully updated in a deeper level\n }\n }\n return false; // Node not found\n };\n\n // Attempt to update the logical operator in the node identified by groupId\n if (updateOperator(this.filterObjectsWithGroups, groupId, logicalOperator)) {\n // If the group was found and updated, trigger a state update\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n }\n\n removeFilterItem(filter) {\n this.setFilterFromChips(filter.searchValue);\n this.externalToggle = filter.searchValue;\n\n const group = this.findGroupById(this.filterObjectsWithGroups, filter.filterGroupId);\n if (group) {\n group.filters = group.filters.filter(item => item.id !== filter.id);\n\n this.filterObjectsWithGroups = this.filterObjectsWithGroups.map(g => (g.filterGroupId === group.filterGroupId ? { ...group } : g));\n }\n\n this.filtersChangedHandler();\n\n this.agGrid.api.setFilterModel(this.filterObject[0].filterElements);\n this.getGridState();\n }\n\n handleGroupDelete(groupId) {\n let groupRemoved = false;\n\n // Recursive function to search for and remove the group by ID\n const searchAndRemoveGroup = (groups, groupId) => {\n return groups.reduce((acc, group) => {\n // If the current group matches the groupId, do not add it to the accumulator\n if (group.filterGroupId === groupId) {\n groupRemoved = true;\n return acc;\n }\n\n // Otherwise, add the group to the accumulator\n const newGroup = { ...group };\n\n // If the group has children, recurse to potentially remove from children\n if (newGroup.children && newGroup.children.length > 0) {\n newGroup.children = searchAndRemoveGroup(newGroup.children, groupId);\n }\n\n acc.push(newGroup);\n return acc;\n }, []);\n };\n\n // Start the recursive search and remove process\n this.filterObjectsWithGroups = searchAndRemoveGroup(this.filterObjectsWithGroups, groupId);\n if (groupRemoved) {\n this.filtersChangedHandler();\n }\n }\n\n // Function to update filter list with groups\n updateFilterObjectsWithGroups = (\n searchField: string,\n searchOperator: string,\n searchValues: string[],\n searchFieldAlias: string,\n originalSearchOperator: string,\n originalSearchValue: string,\n targetFilterGroupId: string,\n ) => {\n let found = false;\n\n const traverse = group => {\n if (group.filterGroupId === targetFilterGroupId) {\n // Remove any existing filters for this fieldId (optional)\n group.filters = [];\n\n // Add new filters for each searchValue\n for (let val of searchValues) {\n group.filters.push({\n id: uuid(),\n searchField,\n searchOperator,\n searchValue: val,\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n filterGroupId: targetFilterGroupId,\n });\n }\n\n found = true;\n return;\n }\n\n for (let child of group.children || []) {\n if (found) return;\n traverse(child);\n }\n };\n\n for (let group of this.filterObjectsWithGroups) {\n traverse(group);\n if (found) break;\n }\n\n // If target group not found, fallback to root\n if (!found) {\n for (let val of searchValues) {\n this.filterObjectsWithGroups[0].filters.push({\n id: uuid(),\n searchField,\n searchOperator,\n searchValue: val,\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n });\n }\n }\n };\n\n getLogicalOperatorCode(op: string) {\n return op === 'AND' ? 1 : 2;\n }\n\n getLogicalOperatorValue(op: number) {\n return op.toString() === '1' ? 'AND' : 'OR';\n }\n\n findGroupById(groups, id) {\n for (const group of groups) {\n if (group.filterGroupId === id) return group;\n const result = group.children && this.findGroupById(group.children, id);\n if (result) return result;\n }\n return null;\n }\n\n updateFilterGroups(groupedFilterObjects) {\n let groupIdCounter = 1;\n const groupIdMap = new Map();\n\n const filterElements = [];\n const filterGroups = [];\n\n const transformGroup = (group, parentGroupId = null) => {\n let currentGroupId = null;\n\n if (group.filters.length === 0 && group.id === 'default') {\n return;\n }\n\n if (group.filterGroupId) {\n if (!groupIdMap.has(group.filterGroupId)) {\n groupIdMap.set(group.filterGroupId, groupIdCounter++);\n }\n currentGroupId = groupIdMap.get(group.filterGroupId);\n\n filterGroups.push({\n groupId: currentGroupId,\n logicalSearchOperator: this.getLogicalOperatorCode(group.logicalOperator),\n parentGroupId: parentGroupId,\n });\n }\n\n // Add all filters in this group\n (group.filters || []).forEach(filter => {\n filterElements.push({\n searchField: filter.searchField,\n searchOperator: filter.searchOperator,\n searchValue: filter.searchValue,\n fieldId: filter.otherId,\n groupId: currentGroupId,\n });\n });\n\n // Recurse children\n (group.children || []).forEach(child => {\n transformGroup(child, currentGroupId);\n });\n };\n\n // Start with each top-level group (usually just one root)\n groupedFilterObjects.forEach(rootGroup => {\n transformGroup(rootGroup);\n });\n\n return [\n {\n pageNumber: 1,\n pageSize: 20,\n type: 'advanced',\n eagerLoad: false,\n logicalSearchOperator: 1,\n filterElements,\n filterGroups,\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n },\n ];\n }\n\n @Listen('searchOperatorChanged')\n filtersChangedHandler() {\n const updatedFilterList = this.updateFilterGroups(this.filterObjectsWithGroups);\n const deepClonedList = cloneDeep(updatedFilterList);\n\n this.filterObject = deepClonedList;\n this.filterRenderList = deepClonedList;\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n\n @Listen('filterChanged')\n @Listen('searchItemChanged')\n searchItemChangedHandler(event: CustomEvent) {\n let { searchField, searchOperator, searchValue, searchFieldAlias, type, originalSearchOperator, originalSearchValue } = event.detail;\n this.refreshChips = true;\n this.setSearchStart = true;\n let updatedFilterList = [...this.filterObject];\n\n if (!type && type === 'agGridColumnFilter') {\n // Only apply the following logic if event is not from the native ag grid column filter\n let advancedSearchFilter = this.extendedSearchFilterList?.find(filter => filter.name.toLowerCase() === searchField.toLowerCase());\n if (advancedSearchFilter?.type?.toLowerCase() === 'datetime') {\n const configuredColumnDef = this.configuredColumnDefs?.find(col => col.field.toLowerCase() === searchField.toLowerCase());\n searchFieldAlias = configuredColumnDef?.headerName;\n if (searchOperator === this.filterOptions['equals'] && configuredColumnDef?.treatAsDate) {\n let dateFrom = new Date(searchValue);\n let dateTo = new Date(dateFrom);\n\n // Set dateTo to one day ahead\n dateTo.setDate(dateFrom.getDate() + 1);\n\n // Convert the dates to the required format (YYYY-MM-DD HH:mm:ss)\n const formatDate = (date, dateOnly: boolean = false) => {\n const year = date.getFullYear();\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n return dateOnly ? `${year}-${month}-${day}` : `${year}-${month}-${day} 00:00:00`;\n };\n originalSearchOperator = searchOperator;\n originalSearchValue = searchValue;\n searchOperator = this.filterOptions['inRange'];\n searchValue = formatDate(dateFrom) + ',' + formatDate(dateTo);\n }\n }\n this.getGridState(true);\n }\n\n if (type === 'set') {\n if (searchValue.length > 0) {\n if (!this.findGroupById(this.filterObjectsWithGroups, `set-${searchField}-group`)) {\n this.handleAddNewGroup('root', searchOperator, `set-${searchField}-group`);\n }\n this.updateFilterObjectsWithGroups(\n searchField,\n searchOperator.value ? searchOperator.value : searchOperator,\n searchValue,\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n `set-${searchField}-group`,\n );\n\n // update the AG Grid filter model explicitly\n const currentModel = this.agGrid.api.getFilterModel() || {};\n currentModel[searchField] = {\n filterType: 'set',\n values: searchValue,\n };\n this.agGrid.api.setFilterModel(currentModel);\n } else {\n this.handleGroupDelete(`set-${searchField}-group`);\n return;\n }\n }\n updatedFilterList = this.updateFilterGroups(this.filterObjectsWithGroups);\n\n // Immutably update the state for both lists\n this.filterObject = [...updatedFilterList];\n this.filterRenderList = [...updatedFilterList];\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n\n if (type !== 'set') {\n this.agGrid.api.setFilterModel(this.convertFilterToAgGridFilterModel(this.filterObject[0].filterElements));\n this.filterObject[0].filterElements.forEach(filter => {\n if (filter.searchOperator === '=') {\n const filterInstance = this.agGrid.api.getFilterInstance(filter.searchField);\n\n if (filterInstance && 'setModel' in filterInstance && 'onFilterChanged' in filterInstance) {\n (filterInstance as any).setModel({ values: [filter.searchValue] });\n (filterInstance as any).onFilterChanged();\n }\n }\n });\n }\n }\n\n convertFilterToAgGridFilterModel(customFilters) {\n const agGridModel = {};\n\n customFilters.forEach(filter => {\n if (filter.searchOperator === '=') {\n agGridModel[filter.searchField] = {\n filterType: 'set',\n values: [filter.searchValue],\n };\n }\n });\n\n return agGridModel;\n }\n\n updateSearchObject(detail: { searchField: string; searchOperator: string; searchValue: any }) {\n this.updateFilterObject(filterObject => {\n // Append the new filter element to filterElements array\n filterObject[0].filterElements.push(detail);\n });\n [500, 1000, 2000, 3000, 4000, 5000, 6000, 10000, 20000].forEach(delay => {\n setTimeout(() => {\n this.getGridState(true);\n }, delay);\n });\n }\n\n // Commented out filter options are currently not suppored in the regex\n filterOptions = {\n equals: '=',\n contains: 'LIKE',\n // notContains: 'NOT LIKE',\n notEqual: '<>',\n greaterThan: '>',\n lessThan: '<',\n greaterThanOrEqual: '>=',\n lessThanOrEqual: '<=',\n startsWith: 'STARTSWITH',\n // endsWith: 'ENDSWITH',\n blank: 'IS NULL',\n // notBlank: 'IS NOT NULL',\n inRange: 'BETWEEN',\n };\n\n // FOR HANDLING NATIVE AG-grid filter\n capitalizeFirstLetter(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n applyFilterDetail(\n column: string,\n selectedFilterOptions: string,\n value: string,\n searchFieldAlias: string | undefined,\n originalSearchOperator: string,\n originalSearchValue: string,\n groupCount: number,\n groupedFilterElements: {\n groupId: number;\n searchField: string;\n searchOperator: string;\n searchValue: string;\n searchFieldAlias?: string;\n originalSearchOperator: string;\n originalSearchValue: string;\n }[],\n filterObjectsWithGroupsFilters: {\n searchField: string;\n searchOperator: string;\n searchValue: string;\n otherId: string;\n parentName: string;\n parentPath: string;\n searchFieldAlias?: string;\n originalSearchOperator: string;\n originalSearchValue: string;\n }[],\n ) {\n const setDetail = {\n searchField: column,\n searchOperator: selectedFilterOptions,\n searchValue: value,\n searchFieldAlias: searchFieldAlias,\n originalSearchOperator: originalSearchOperator || '',\n originalSearchValue: originalSearchValue || '',\n };\n\n if (this.hotListActive) {\n groupedFilterElements.push({\n groupId: groupCount,\n searchField: this.capitalizeFirstLetter(setDetail.searchField),\n searchOperator: setDetail.searchOperator,\n searchValue: String(setDetail.searchValue),\n searchFieldAlias: setDetail.searchFieldAlias,\n originalSearchOperator: setDetail.originalSearchOperator,\n originalSearchValue: setDetail.originalSearchValue,\n });\n filterObjectsWithGroupsFilters.push({\n searchField: setDetail.searchField,\n searchOperator: setDetail.searchOperator,\n searchValue: setDetail.searchValue,\n otherId: uuid(),\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias: setDetail.searchFieldAlias,\n originalSearchOperator: setDetail.originalSearchOperator,\n originalSearchValue: setDetail.originalSearchValue,\n });\n if (groupCount === 1) {\n groupCount = 3;\n } else {\n groupCount++;\n }\n return true;\n }\n\n //this.updateSearchObject(detail);\n this.searchItemChangedHandler({\n detail: setDetail,\n initCustomEvent: function (): void {\n throw new Error('Function not implemented.');\n },\n bubbles: false,\n cancelBubble: false,\n cancelable: false,\n composed: false,\n currentTarget: undefined,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n returnValue: false,\n srcElement: undefined,\n target: undefined,\n timeStamp: 0,\n type: 'agGridColumnFilter',\n composedPath: function (): EventTarget[] {\n throw new Error('Function not implemented.');\n },\n initEvent: function (): void {\n throw new Error('Function not implemented.');\n },\n preventDefault: function (): void {\n throw new Error('Function not implemented.');\n },\n stopImmediatePropagation: function (): void {\n throw new Error('Function not implemented.');\n },\n stopPropagation: function (): void {\n throw new Error('Function not implemented.');\n },\n NONE: 0,\n CAPTURING_PHASE: 1,\n AT_TARGET: 2,\n BUBBLING_PHASE: 3,\n });\n return false;\n }\n\n transformAndApplyFilters(filterModel: { [key: string]: FilterDetail }) {\n let groupedFilterElements;\n let filterObjectsWithGroupsFilters = [];\n\n if (this.hotListActive) {\n // first group all the hotlist origin filters\n groupedFilterElements = this.filterObject[0].filterElements.map(element => ({\n ...element,\n searchField: this.capitalizeFirstLetter(element.searchField),\n groupId: 2,\n }));\n\n // slicing because need to remove duplicate native filters\n let slicedGroupedFilterElements = groupedFilterElements.slice(0, this.hotListCount);\n groupedFilterElements = slicedGroupedFilterElements;\n\n // this.filterRenderList = [...this.filterRenderList, ...groupedFilterElements]\n this.filterObject[0].filterElements.map(element => this.filterRenderList.push(element));\n }\n var groupCount = 1;\n const formatDate = (date: Date, dateOnly: boolean = false) => {\n const year = date.getFullYear();\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n return dateOnly ? `${year}-${month}-${day}` : `${year}-${month}-${day} 00:00:00`;\n };\n\n if (Object.entries(filterModel).length === 0) {\n this.shouldForceEmptyResults = false;\n this.noResults = false;\n }\n\n for (const [column, filterDetails] of Object.entries(filterModel)) {\n if (!filterDetails || !(filterDetails.type || filterDetails.filterType)) continue;\n\n const configuredColumnDef = this.configuredColumnDefs?.find(col => col.field === column);\n const searchFieldAlias = configuredColumnDef?.headerName;\n const treatAsDate = configuredColumnDef?.treatAsDate;\n\n const filterType = filterDetails.filterType;\n let selectedFilterOptions = this.filterOptions[filterDetails.type] || this.filterOptions['equals'];\n\n let value = '';\n let originalSearchOperator = '';\n let originalSearchValue = '';\n\n let shouldApply = true;\n switch (filterType) {\n case 'date':\n if (filterDetails.type === 'inRange') {\n value = `${filterDetails.dateFrom},${filterDetails.dateTo}`;\n } else if (filterDetails.type === 'equals' && treatAsDate) {\n const dateFrom = new Date(filterDetails.dateFrom);\n const dateTo = new Date(dateFrom);\n dateTo.setDate(dateFrom.getDate() + 1);\n\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = formatDate(dateFrom, treatAsDate);\n\n selectedFilterOptions = this.filterOptions['inRange'];\n value = `${formatDate(dateFrom)},${formatDate(dateTo)}`;\n } else {\n value = filterDetails.dateFrom;\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = value;\n }\n break;\n case 'number':\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = filterDetails.filter;\n value = filterDetails.type === 'inRange' ? `${filterDetails.filter},${filterDetails.filterTo}` : filterDetails.filter;\n break;\n case 'text':\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = value = filterDetails.filter;\n break;\n case 'set':\n const values = (filterDetails as { values: string[] }).values || [];\n this.shouldForceEmptyResults = false;\n this.noResults = false;\n\n if (values.length === 0) {\n this.noResults = true;\n this.shouldForceEmptyResults = true;\n\n shouldApply = false;\n continue;\n }\n\n this.filterChanged.emit({\n searchField: configuredColumnDef?.field,\n searchOperator: selectedFilterOptions,\n searchValue: values,\n searchFieldAlias,\n type: 'set',\n originalSearchOperator,\n originalSearchValue,\n });\n\n shouldApply = false;\n continue;\n default:\n shouldApply = false;\n continue;\n }\n\n if (shouldApply) {\n const shouldSkip = this.applyFilterDetail(\n column,\n selectedFilterOptions,\n value,\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n groupCount,\n groupedFilterElements,\n filterObjectsWithGroupsFilters,\n );\n\n if (shouldSkip) {\n groupCount = groupCount === 1 ? 3 : groupCount + 1;\n }\n }\n }\n\n const allFilterFields = this.configuredColumnDefs?.filter(col => col.filter).map(col => col.field) ?? [];\n const filteredFields = Object.keys(filterModel);\n const fieldsToReset = allFilterFields.filter(field => !filteredFields.includes(field));\n\n for (const field of fieldsToReset) {\n this.filterChanged.emit({\n searchField: field,\n searchOperator: null,\n searchValue: [],\n searchFieldAlias: this.configuredColumnDefs?.find(c => c.field === field)?.headerName,\n type: 'set',\n originalSearchOperator: null,\n originalSearchValue: null,\n });\n }\n\n if (this.hotListActive) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements = groupedFilterElements;\n filterObject[0].filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: 1,\n parentGroupId: null,\n },\n {\n groupId: 2,\n logicalSearchOperator: 2,\n parentGroupId: 1,\n },\n ];\n\n // Adds additional native grid filters\n for (let i = 3; i < groupCount; i++) {\n filterObject[0].filterGroups.push({\n groupId: i,\n logicalSearchOperator: 1,\n parentGroupId: 1,\n });\n }\n\n filterObject[0].logicalSearchOperator = 1;\n filterObject[0].type = 'advanced';\n });\n\n this.logicalSearchOperator = 1;\n this.updateChipLayout();\n\n this.filterObjectsWithGroups[0].filters = filterObjectsWithGroupsFilters;\n this.refreshChips = true;\n }\n }\n\n handleSideSheetButtonClick = async () => {\n this.groupFilter();\n this.customSearchDrawerOpen = false;\n };\n\n // advanced search grouping\n handleAddNewFilter = (filterGroupId: string) => {\n this.advancedGroupSearchNodeId = filterGroupId;\n };\n\n handleAddNewGroup = (groupId: string, logicalOperator: 'AND' | 'OR', filterGroupId = null) => {\n this.setGroupedSearchSections(groupId, filterGroupId ?? uuid(), logicalOperator);\n };\n\n updateLogicalOperator = (groupId: string, logicalOperator: 'AND' | 'OR') => {\n // Implement the logic to update the logical operator for the group\n this.updateGroupLogicalOperator(groupId, logicalOperator);\n };\n\n @Watch('externalPayload')\n externalPayloadChanged(newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n this.handleTransformSearchData();\n }\n }\n\n @Watch('dataEmitterRequest')\n dataEmitterChanged(newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n this.handleDataEmitterRequest(newValue);\n }\n }\n\n isEmptyObject = obj => {\n return obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n };\n\n handleDataEmitterRequest = async newValue => {\n // Check if newValue is null, undefined, or an empty object\n if (newValue === null || newValue === undefined || this.isEmptyObject(newValue)) {\n // Handle the case where newValue is not usable\n return;\n }\n\n const emitterSearchObject = {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [newValue],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n };\n\n try {\n const response = await executeQueryAdHoc(emitterSearchObject, await this.getApiMethodId(), '');\n this.externalEmitter.emit(response); // Emitting the response data\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching data:', error);\n }\n };\n\n handleTransformSearchData = () => {\n const modifiedSearchObjects = transformSearchData(this.externalPayload, this.searchKey);\n\n // Merge the filterElements\n if (modifiedSearchObjects.filterElements) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements.push(...modifiedSearchObjects.filterElements);\n });\n }\n\n // Handle filterGroups (assuming you want to replace the existing ones)\n if (modifiedSearchObjects.filterGroups) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterGroups = modifiedSearchObjects.filterGroups;\n });\n }\n\n // Extract the first element to send as an individual object\n const firstFilterElement = this.filterObject[0].filterElements[0];\n\n // Create a new CustomEvent with the first object as detail (instead of the entire array)\n const filterElementEvent = new CustomEvent('filterElementChange', {\n detail: firstFilterElement,\n });\n\n // Pass the event to the handler function\n this.searchItemChangedHandler(filterElementEvent);\n\n this.updateServerSideDatasource('', 'handleTransformSearchData');\n };\n\n // FOR HANDLING IF SELECT OR GROUPING IN ADVANCED SEARCH\n groupFilter = () => {\n const searchGroupFilterPayload = buildSearchPayload(this.filterObjectsWithGroups);\n this.updateFilterObject(() => [searchGroupFilterPayload]);\n this.setSearchStart = true;\n };\n\n handleSearchItemChange() {\n const updatedFilterObjectsWithGroups = cloneDeep(this.filterObjectsWithGroups);\n const updatedFilterObject = cloneDeep(this.filterObject);\n\n this.filterObjectsWithGroups = updatedFilterObjectsWithGroups;\n this.filterObject = updatedFilterObject;\n }\n\n collectAllFilters(filterGroup, level = 0) {\n let allFilters = [];\n\n // Collect top-level filters and include the current level\n if (filterGroup.filters && filterGroup.filters.length > 0) {\n allFilters = allFilters.concat(filterGroup.filters.map(filter => ({ ...filter, level })));\n }\n\n // Recursively collect filters from children, incrementing the level\n if (filterGroup.children && filterGroup.children.length > 0) {\n filterGroup.children.forEach(child => {\n allFilters = allFilters.concat(this.collectAllFilters(child, level + 1));\n });\n }\n\n return allFilters;\n }\n\n updateChipLayout = () => {\n requestAnimationFrame(() => {\n const chipsContainer = this.el.shadowRoot ? this.el.shadowRoot.getElementById('advanced-group-search-chips') : document.getElementById('advanced-group-search-chips');\n\n if (chipsContainer) {\n // Force reflow if necessary\n chipsContainer.offsetWidth;\n\n const containerWidth = chipsContainer.getBoundingClientRect().width;\n let totalChipWidth = 0;\n const chipWidths = Array.from(chipsContainer.querySelectorAll('stencil-chip')).map(chip => chip.getBoundingClientRect().width);\n let maxVisible = 1;\n\n for (let width of chipWidths) {\n if (totalChipWidth + width + 400 > containerWidth) break;\n if (maxVisible >= this.maxChipsAllowed) break; // Limit the number of visible chips to 7, but only after width check\n totalChipWidth += width;\n maxVisible++;\n }\n this.allFilters = this.filterObjectsWithGroups.reduce((acc, curr) => {\n return acc.concat(this.collectAllFilters(curr));\n }, []);\n\n if (this.hideDefaultSearchFilterChips) {\n this.allFilters = this.allFilters.filter(f => !f.isInitialFilterElement);\n }\n this.refreshChips = false;\n } else {\n console.warn('Chips container not found');\n }\n });\n };\n\n // Fetch recentSearches from local storage\n getRecentSearches = () => {\n const recentSearchesString = localStorage.getItem('recentSearches');\n if (recentSearchesString == null) {\n return;\n }\n const recentSearches: any[] = JSON.parse(recentSearchesString);\n var currentGridSearchHistoryObj = recentSearches.find(item => item.gridUID === this.gridUID);\n if (!currentGridSearchHistoryObj) {\n this.recentSearches = [];\n } else {\n this.recentSearches = recentSearches.length > 0 ? currentGridSearchHistoryObj.searchHistory : [];\n }\n this.recentSearchesOptions = this.recentSearches.map(item => ({\n label: item.timestamp,\n value: item.searchObj,\n }));\n };\n // Handle selecting a recent search from the drop down udp-selector\n selectRecentSearch = e => {\n this.fullClearSearch(); // Clear previous searches first\n var selectedSearchObj = e.detail.value;\n this.updateFilterObject(filterObject => {\n filterObject[0] = selectedSearchObj;\n });\n this.filterRenderList[0] = selectedSearchObj;\n this.isRecentSearch = true;\n this.updateServerSideDatasource('', 'advanced grouped search');\n // this.customSearchDrawerOpen = false; // uncomment if want advanced search sidesheet to close after clicking\n\n var filterObjectsWithGroupsTemp = this.filterObjectsWithGroups;\n selectedSearchObj.filterElements.map((tempFilter, index) => {\n filterObjectsWithGroupsTemp[0].filters[index] = { ...tempFilter };\n });\n this.filterObjectsWithGroups = filterObjectsWithGroupsTemp;\n };\n\n @Watch('allFilters')\n allFiltersChanged() {\n if (this.refreshChips) {\n this.updateChipLayout();\n }\n }\n\n // BULK ACTIONS FUNCTIONS\n fetchAvailableGridActions = () => {\n if (this.restrictedGridFeatures?.BulkActions && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.BulkActions)) {\n localStorage.setItem('bulkActions', JSON.stringify([]));\n return;\n }\n const callback = data => {\n // Will send to grid to update view\n localStorage.setItem('bulkActions', JSON.stringify(data));\n this.bulkActions = data;\n };\n\n\n getAvailableGridActions(this.gridId, this.restrictBulkActionsPermissions, this.userPermissions, callback);\n\n this.updateServerSideDatasource('', 'configuredColumnDefs');\n };\n\n async handleSelectedBulkOption(event: CustomEvent) {\n // Assuming `event.detail` includes the selected option's identifier, like `value`\n const { value } = event.detail; // You might need to adjust based on the actual structure\n // Find the index of the selected option based on its value\n\n if (this.gridOptions && this.agGrid) {\n const selectedNodes = this.agGrid.api.getSelectedNodes();\n\n // Extract the data from selected nodes\n let selectedData = selectedNodes.map(node => node.data);\n\n // Extract just the ids from the selectedData\n const selectedIds = selectedData.map(data => data.id);\n\n // Emit the selectedIds array so parent components can listen to it\n this.selectedIdsChanged.emit(selectedIds);\n\n let actionData;\n\n if (this.bulkActionFunctions[value.value]) {\n //There exists a bulk action function corresponding to the actions value. Passing the function as the actionData to the action executor\n const selectedBulkActionFunction = this.bulkActionFunctions[value.value];\n actionData = { execute: () => selectedBulkActionFunction(selectedData) };\n } else {\n actionData = selectedData;\n }\n\n await this.executeBulkAction(value.actionId, actionData);\n }\n }\n\n @Watch('bulkActions')\n transformBulkActions() {\n if (this.bulkActions) {\n this.formattedBulkActions = this.bulkActions.map(action => ({\n label: action.name,\n value: action,\n }));\n }\n }\n\n getSelectedRows() {\n return Object.values(this.selectedRowMap);\n }\n\n getHeaderFieldLabel = (fieldName: string) => {\n const columnDef = this.configuredColumnDefs.find(col => col.field.toLowerCase() === fieldName.toLowerCase());\n if (columnDef) {\n return columnDef.headerName || fieldName;\n }\n return fieldName;\n };\n\n render() {\n const filterPanelWidth = this.filterPanelOpen ? '200px' : 'initial';\n const shouldShowSecondRow =\n (this.setSearchStart && this.filterObjectsWithGroups?.[0]?.filters?.[0]?.searchValue) ||\n this.filterChips.length > 0 ||\n this.loadedViewTitle.length > 0 ||\n this.hotListActive ||\n this.kpiValues.length > 0 ||\n this.selectedRowCount > 0;\n\n const shouldHideSecondRow = !shouldShowSecondRow;\n if (shouldShowSecondRow) {\n this.gridHeight = 'calc(100vh - 245px)';\n } else {\n this.gridHeight = 'calc(100vh - 200px)';\n }\n\n const actionMenuItems = this.getOverflowActionList(this.overflowActionMenuItems, this.selectedRowParams);\n return (\n <div>\n {this.openActionPopoverMenu && (\n <udp-pop-over\n isOpen={this.openActionPopoverMenu}\n anchorElement={this.actionMenuAnchorElement}\n popoverWidth=\"170px\"\n popoverMaxHeight=\"250px\"\n handleOnClose={event => {\n this.handleOnCloseActionPopover(event);\n }}\n >\n <div class=\"overflowActionButtons\">{actionMenuItems}</div>\n </udp-pop-over>\n )}\n <div>\n {this.showNotification && (\n <udp-notification\n active={this.showNotification}\n message={this.notificationMessage}\n status={this.notificationStatus}\n userCancel\n style={{ zIndex: '999991', transform: 'translateY(20px)' }}\n ></udp-notification>\n )}\n </div>\n <style>\n {`:host ::slotted(.ag-side-bar) {\n width: ${filterPanelWidth} !important;\n }`}\n </style>\n\n <grid-primary-bar\n title={this.gridBarTitle}\n customSaveViewClick={() => this.showViewSave()}\n customShowViewClick={() => this.showViews()}\n customShowHotlistClick={() => this.showHotlist()}\n customShowCustomSearchClick={() => this.showCustomSearch()}\n customClearClick={() => this.clearFilters()}\n customRefreshClick={() => this.refreshGrid()}\n customExpandClick={() => this.expandColumns()}\n customExportClick={this.exportFunction ? () => this.exportFunction(this.entityName, this.filterRenderList[0]) : () => this.exportToCsv()}\n customInsightsClick={e => {\n this.insightsActionOnClick(e);\n }}\n showInsightsAction={this.showInsightsAction}\n hiddenActionButtons={this.hiddenActionButtons}\n primaryActionLabel={this.primaryActionLabel}\n primaryActionClick={e => {\n this.primaryActionOnClick(e);\n }}\n primaryActionIcon={this.primaryActionIcon}\n customColumnViewClick={() => this.togglePanel('columns')}\n customFitColumnClick={() => this.fitColumns()}\n customFilterViewClick={() => this.togglePanel('filters')}\n customToggleServerClientClick={() => this.toggleServerSide()}\n customAdvancedSearchClick={() => this.showAdvancedSearch()}\n customShowGridOptionsClick={() => this.showGridOptions()}\n showAdvancedSearchFeature={this.showAdvancedSearchFeature}\n showFilterColumnFeature={this.showFilterColumnFeature}\n showHotlistButton={\n this.showHotlistButton && !(this.restrictedGridFeatures?.Hotlist && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Hotlist))\n }\n hideExport={this.restrictedGridFeatures?.Export && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Export)}\n enableAdvancedSearch={this.enableAdvancedSearch}\n ></grid-primary-bar>\n\n <udp-pop-over-grid-action-header\n isOpen={this.gridOptionsDrawerOpen}\n anchorElement={document.querySelector('grid-primary-bar') as unknown as HTMLElement}\n >\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.togglePanel('columns');\n this.showGridOptions();\n }}\n tooltip=\"Show/Hide Columns\"\n >\n <unity-typography variant=\"button\">Show/Hide Columns</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"100%\"></udp-divider>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.fitColumns();\n this.showGridOptions();\n }}\n tooltip=\"Fit to Column\"\n >\n <unity-typography variant=\"button\">Fit to Column</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"0px\"></udp-divider>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.expandColumns();\n this.showGridOptions();\n }}\n tooltip=\"Expand Grid\"\n >\n <unity-typography variant=\"button\">Expand Grid</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"0px\"></udp-divider>\n {!this.disableSearchSwitch && (\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.handleSearchModeToggle();\n this.showGridOptions();\n }}\n tooltip={this.enableAdvancedSearch ? 'Standard Search' : 'Advanced Search'}\n >\n <unity-typography variant=\"button\">{this.enableAdvancedSearch ? 'Standard Search' : 'Advanced Search'}</unity-typography>\n </stencil-icon-button-grid-action-header>\n )}\n </udp-pop-over-grid-action-header>\n\n <div class=\"second-row\" style={{ display: shouldHideSecondRow ? 'none' : '' }}>\n {!this.hideBulkActions && this.rowsSelected && (\n <div class=\"bulk-select\">\n <udp-badge content={this.selectedRowCount}>\n <udp-selector options={this.bulkActions.length > 0 ? this.formattedBulkActions : []} onChange={(e: CustomEvent) => this.handleSelectedBulkOption(e)}></udp-selector>\n </udp-badge>\n </div>\n )}\n\n {this.loadedViewTitle?.length !== 0 && (\n <div class=\"chip-wrapper\">\n <stencil-chip\n text={this.loadedViewTitle}\n // onOnDelete={this.handleDelete as any}\n onOnDelete={this.handleViewChipDelete}\n color=\"secondary\"\n defaultToggled={true}\n leftIcon={Star16}\n showLeftIcon={this.selectedViewIsDefault}\n ></stencil-chip>\n <udp-divider variant=\"vertical\" size=\"30px\"></udp-divider>\n </div>\n )}\n\n {this.hotListActive && (\n <div class=\"chip-wrapper\">\n <stencil-chip text={this.hotListActive} color=\"secondary\" onOnDelete={this.handleRemoveHotlist} defaultToggled={true} leftIcon={List16}></stencil-chip>\n <udp-divider variant=\"vertical\" size=\"30px\"></udp-divider>\n </div>\n )}\n\n <div class=\"chip-section\">\n {this.filterChips.length > 0 && (\n <udp-dynamic-container-with-menu\n id=\"filterChipsContainer\"\n externalToggle={this.externalToggle}\n onUdpChipClicked={(event: CustomEvent) => this.setFilterFromChips(event.detail)}\n menuItems={this.filterChips}\n ></udp-dynamic-container-with-menu>\n )}\n </div>\n <div class=\"kpi\">\n <kpi-list kpiValues={this.kpiValues}></kpi-list>\n </div>\n </div>\n\n {this.gridError && (\n <div>\n <upd-alert-banner type=\"error\" message={`An error occurred with loading the grid with data.`}></upd-alert-banner>\n </div>\n )}\n\n <div style={{ height: '4px', backgroundColor: shouldHideSecondRow ? 'var(--accent-color)' : 'rgb(247, 245, 243)', overflow: 'hidden' }}>\n {this.linearLoading && <udp-linear-loader />}\n </div>\n\n {this.noResults && (\n <div>\n <upd-alert-banner onClick={() => this.refreshOnNoResults()} type=\"info\" message=\"Sorry, no records meet your search criteria\"></upd-alert-banner>\n </div>\n )}\n\n <div>\n <ag-table gridOptions={this.gridOptions} licensekey={LicenseKey} height={this.gridHeight}></ag-table>\n </div>\n\n <side-sheet\n sideSheetButtonLabel=\"Search\"\n handleSideSheetButton={() => this.updateServerSideDatasource('', 'advanced search sheet')}\n title=\"Advanced Search\"\n open={this.advancedDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('advancedSearch')}\n position=\"right\"\n >\n <div style={{ width: '1200px' }}>\n <advanced-search\n handleDelete={filter => this.removeFilterItem(filter)}\n filterRenderList={this.filterRenderList}\n filterList={this.extendedSearchFilterList} // list that shows available filters\n handleItemClick={headerName => this.setFilterSelections(headerName)}\n onAdvancedSearchItemChange={(event: CustomEvent) => this.updateSearchObject(event.detail)}\n handleValueChanged={this.changeOperator}\n fetchFilters={() => this.getExtendedAdvancedSearchFilterList()}\n getHeaderFieldLabel={this.getHeaderFieldLabel}\n />\n </div>\n </side-sheet>\n\n <side-sheet widthOption=\"short\" title=\"Views\" open={this.viewDrawerOpen} toggleDrawer={() => this.primaryActionClick('views')} position=\"right\">\n <div>\n <div style={{ width: '450px', marginBottom: '8px' }}>\n <hint-panel\n hint=\"Quickly access and manage your pre-configured table/grid views. These views are designed to help you focus on specific sets of data and streamline your workflow.\"\n hideHintText=\"Hide Hint\"\n ></hint-panel>\n </div>\n\n <div style={{ width: '446px' }}>\n {this.viewListRowData &&\n this.viewListRowData.map(item => {\n if (item.gridViewVisibilityTypeId === 2 || item.userId.toLowerCase() === this.userId.toLocaleLowerCase()) {\n return (\n <tree-list-item\n // key={index}\n showEditOption\n showDeleteOption\n label={item.name}\n fieldName={item.name}\n onClick={() => {\n this.handleLoadView(item.gridViewId);\n this.setCurrentViewData(item.name, item.isDefault, item.gridViewVisibilityTypeId, item.gridViewId);\n }}\n editHandler={() => this.openViewEdit(item.gridViewId, item.name, item.isDefault, item.gridViewVisibilityTypeId)}\n deleteHandler={() => this.openDeleteViewConfirmation(item.gridViewId)}\n showUpdateDefaultOption={true}\n updateDefaultHandler={() => this.updateDefaultView(item)}\n isDefault={item.isDefault}\n gridViewVisibilityTypeId={item.gridViewVisibilityTypeId}\n showAdd={false}\n showViewOption={false}\n ></tree-list-item>\n );\n }\n })}\n </div>\n </div>\n </side-sheet>\n\n <side-sheet\n title=\"Search\"\n sideSheetButtonLabel=\"Search\"\n handleSideSheetButton={this.handleSideSheetButtonClick}\n open={this.customSearchDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('customSearch')}\n position=\"right\"\n buttonTransform={this.buttonTransform}\n >\n <advanced-search-grouped\n getLogicalOperatorValue={this.getLogicalOperatorValue}\n getLogicalOperatorCode={this.getLogicalOperatorCode}\n handleAddNewFilter={this.handleAddNewFilter}\n handleAddNewGroup={this.handleAddNewGroup}\n handleDelete={filter => this.removeFilterItem(filter)}\n filterRenderList={this.filterRenderList}\n filterList={this.extendedSearchFilterList} // list that shows available filters\n handleItemClick={headerName => this.setGroupedFilterSelections(headerName)}\n onAdvancedSearchItemChange={(event: CustomEvent) => this.updateSearchObject(event.detail)}\n handleValueChanged={this.changeOperator}\n filterObjectsWithGroups={this.filterObjectsWithGroups}\n fetchFilters={() => this.getExtendedAdvancedSearchFilterList()}\n // onSearchItemChanged={() => this.handleSearchItemChange()}\n updateLogicalOperator={this.updateLogicalOperator?.bind(this)}\n handleGroupDelete={groupId => this.handleGroupDelete(groupId)}\n recentSearchesOptions={this.recentSearchesOptions}\n selectRecentSearch={this.selectRecentSearch}\n fullClearSearch={this.fullClearSearch}\n findGroupById={this.findGroupById}\n getHeaderFieldLabel={this.getHeaderFieldLabel}\n />\n </side-sheet>\n\n <side-sheet\n disabled={this.showHotlistForm}\n widthOption=\"short\"\n sideSheetButtonLabel=\"Create New Hotlist\"\n handleSideSheetButton={() => this.toggleHotlistForm()}\n title=\"Hot Lists\"\n open={this.hotlistDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('hotlists')}\n position=\"right\"\n >\n <div>\n {this.showHotlistForm && <udp-hotlist-form handleFormSubmit={this.handleSaveHotlist} handleCancelClick={() => this.toggleHotlistForm()}></udp-hotlist-form>}\n\n <div style={{ width: '446px' }}>\n {this.allHotlists &&\n this.allHotlists.map(item => {\n if (item.domain === this.entityName) {\n return (\n <tree-list-item\n label={item.name}\n fieldName={item.name}\n showViewOption={true}\n showAdd={this.businessObjectKey ? true : false}\n showDeleteOption={true}\n viewHandler={() => this.handleRequestHotlist(item.hotListId)}\n deleteHandler={() => this.confirmRequestDelete(item.hotListId)}\n onClick={() => this.handleSetSingleHotlistItem(item.hotListId)}\n statusValue={item.isPrivate}\n statusClasses={{\n true: 'default',\n false: 'neutral',\n }}\n statusLabel={item.isPrivate ? 'Private' : 'Shared'}\n ></tree-list-item>\n );\n }\n })}\n </div>\n </div>\n </side-sheet>\n\n <save-view-form-dialog\n open={this.saveDialogOpen}\n title={this.selectedViewName ? 'Current View' : 'New View'}\n closeDialog={() => this.showViewSave()}\n currentGridViewId={this.selectedGridId}\n currentName={this.selectedViewName}\n currentIsPrivate={this.selectedViewGridViewVisibilityTypeId}\n currentIsDefault={this.selectedViewIsDefault}\n handleFormSubmit={(name: string, isPrivate: number, isDefault: boolean) => {\n // Assuming this.columnState exists in this component's scope\n this.handleViewFormSubmit(name, isPrivate, isDefault, this.gridState);\n }}\n handleViewAndConfigurationSubmit={(name: string, isPrivate: number, isDefault: boolean) => {\n if (this.selectedGridId) {\n if (this.selectedViewGridViewVisibilityTypeId === 2) {\n this.openViewEditConfirmation(name, isPrivate, isDefault);\n } else {\n this.setCurrentViewData(name, isDefault, isPrivate);\n this.handleViewAndConfigurationsUpdate(this.selectedViewName, this.selectedViewGridViewVisibilityTypeId, this.selectedViewIsDefault, this.gridState);\n }\n }\n }}\n />\n\n <edit-view-form-dialog\n open={this.editDialogOpen}\n title=\"Edit View\"\n closeDialog={() => this.closeViewEdit()}\n currentGridId={this.selectedGridId}\n currentName={this.selectedViewName}\n currentGridViewVisibilityTypeId={this.selectedViewGridViewVisibilityTypeId}\n currentIsDefault={this.selectedViewIsDefault}\n handleFormSubmit={(gridId: any, name: string, isPrivate: number, isDefault: boolean) => {\n this.handleViewUpdate(gridId, name, isPrivate, isDefault);\n }}\n />\n\n <div />\n <fluent-dialog\n title=\"Delete Hotlist\"\n message=\"Are you sure you want to delete this hotlist?\"\n actionOne={() => this.handleRequestDeleteHotlist()}\n actionTwo={() => this.toggleDeleteDialog('hotlist')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.confirmDialog} // Use state to control dialog visibility\n >\n <div>\n This will not delete any of the data but only the records <br />\n from the hotlist and the hotlist itself.{' '}\n </div>\n </fluent-dialog>\n\n <fluent-dialog\n title=\"Delete View\"\n message=\"Are you sure you want to delete this view?\"\n actionOne={() => this.handleDeleteView()}\n actionTwo={() => this.toggleDeleteDialog('View')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.confirmDialogDeleteView} // Use state to control dialog visibility\n >\n <div>\n This will not delete any of the data but only the settings <br />\n saved to display this view.{' '}\n </div>\n </fluent-dialog>\n\n <fluent-dialog\n title=\"Update View\"\n message=\"Are you sure you want to update this view?\"\n actionOne={() => this.handleViewAndConfigurationsUpdate(this.selectedViewName, this.selectedViewGridViewVisibilityTypeId, this.selectedViewIsDefault, this.gridState)}\n actionTwo={() => this.showViewEditConfirmation(false)}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.editViewConfirmationDialogOpen}\n >\n <div>This is a public view. Any changes made to it will be seen by others when they load this view. </div>\n </fluent-dialog>\n\n <fluent-dialog\n title={'Toggle Search Mode to ' + (this.enableAdvancedSearch ? 'Standard' : 'Advanced') + ' Search'}\n message={\n this.enableAdvancedSearch\n ? `Are you sure you want to toggle the search mode to standard search?`\n : `Are you sure you want to toggle the search mode to advanced search?`\n }\n actionOne={() => this.confirmSearchModeToggle()}\n actionTwo={() => this.toggleSearchModeConfirmation(false)}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.toggleSearchModeConfirmationDialogOpen}\n >\n <div>\n {this.enableAdvancedSearch\n ? 'The advanced search functionality will be disabled, all advanced search filters will be cleared and the grid will be reset to its default state.'\n : 'The standard search functionality will be disabled and any existing standard filters will persist to the advanced search.'}\n </div>\n </fluent-dialog>\n </div>\n );\n }\n}\n"]}