@alfresco/aca-content 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/{lib/components/create-menu/create-menu.component.d.ts → about/about.component.d.ts} +15 -16
  2. package/about/aca-about.module.d.ts +9 -0
  3. package/about/assets/about.plugin.json +47 -0
  4. package/about/dev-mode.tokens.d.ts +25 -0
  5. package/about/index.d.ts +5 -0
  6. package/about/package-json.token.d.ts +25 -0
  7. package/about/public-api.d.ts +27 -0
  8. package/assets/app.extensions.json +158 -131
  9. package/assets/i18n/ar.json +10 -26
  10. package/assets/i18n/cs.json +10 -26
  11. package/assets/i18n/da.json +9 -25
  12. package/assets/i18n/de.json +8 -24
  13. package/assets/i18n/en.json +9 -25
  14. package/assets/i18n/es.json +8 -24
  15. package/assets/i18n/fi.json +9 -25
  16. package/assets/i18n/fr.json +9 -25
  17. package/assets/i18n/it.json +9 -25
  18. package/assets/i18n/ja.json +9 -25
  19. package/assets/i18n/nb.json +9 -25
  20. package/assets/i18n/nl.json +8 -24
  21. package/assets/i18n/pl.json +10 -26
  22. package/assets/i18n/pt-BR.json +9 -25
  23. package/assets/i18n/ru.json +10 -26
  24. package/assets/i18n/sv.json +9 -25
  25. package/assets/i18n/zh-CN.json +8 -24
  26. package/esm2020/about/about.component.mjs +73 -0
  27. package/esm2020/about/aca-about.module.mjs +46 -0
  28. package/esm2020/about/alfresco-aca-content-about.mjs +5 -0
  29. package/esm2020/about/dev-mode.tokens.mjs +26 -0
  30. package/esm2020/about/package-json.token.mjs +26 -0
  31. package/esm2020/about/public-api.mjs +28 -0
  32. package/esm2020/folder-rules/alfresco-aca-content-folder-rules.mjs +5 -0
  33. package/esm2020/folder-rules/folder-rules.module.mjs +123 -0
  34. package/esm2020/folder-rules/folder-rules.rules.mjs +28 -0
  35. package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +240 -0
  36. package/esm2020/folder-rules/model/action-parameter-constraint.model.mjs +25 -0
  37. package/esm2020/folder-rules/model/rule-action.model.mjs +26 -0
  38. package/esm2020/folder-rules/model/rule-composite-condition.model.mjs +25 -0
  39. package/esm2020/folder-rules/model/rule-grouping-item.model.mjs +25 -0
  40. package/esm2020/folder-rules/model/rule-set.model.mjs +25 -0
  41. package/esm2020/folder-rules/model/rule-simple-condition.model.mjs +25 -0
  42. package/esm2020/folder-rules/model/rule.model.mjs +25 -0
  43. package/esm2020/folder-rules/public-api.mjs +26 -0
  44. package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +112 -0
  45. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +277 -0
  46. package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +159 -0
  47. package/esm2020/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +87 -0
  48. package/esm2020/folder-rules/rule-details/conditions/rule-condition-fields.mjs +62 -0
  49. package/esm2020/folder-rules/rule-details/conditions/rule-mime-types.mjs +25 -0
  50. package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +144 -0
  51. package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +70 -0
  52. package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +134 -0
  53. package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +166 -0
  54. package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +85 -0
  55. package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +37 -0
  56. package/esm2020/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +31 -0
  57. package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +142 -0
  58. package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +77 -0
  59. package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +56 -0
  60. package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +104 -0
  61. package/esm2020/folder-rules/services/actions.service.mjs +114 -0
  62. package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +221 -0
  63. package/esm2020/folder-rules/services/folder-rules.service.mjs +193 -0
  64. package/esm2020/lib/aca-content.module.mjs +55 -90
  65. package/esm2020/lib/aca-content.routes.mjs +2 -2
  66. package/esm2020/lib/components/common/common.module.mjs +8 -39
  67. package/esm2020/lib/components/common/language-picker/language-picker.component.mjs +18 -11
  68. package/esm2020/lib/components/common/location-link/location-link.component.mjs +17 -16
  69. package/esm2020/lib/components/common/logout/logout.component.mjs +16 -9
  70. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +29 -18
  71. package/esm2020/lib/components/common/user-info/user-info.component.mjs +24 -13
  72. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +16 -10
  73. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +5 -4
  74. package/esm2020/lib/components/context-menu/context-menu.component.mjs +29 -15
  75. package/esm2020/lib/components/context-menu/context-menu.service.mjs +5 -6
  76. package/esm2020/lib/components/details/details.component.mjs +41 -23
  77. package/esm2020/lib/components/dl-custom-components/document-list-custom-components.module.mjs +7 -15
  78. package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +16 -16
  79. package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +34 -12
  80. package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +32 -15
  81. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +17 -28
  82. package/esm2020/lib/components/favorites/favorites.component.mjs +18 -34
  83. package/esm2020/lib/components/files/files.component.mjs +28 -43
  84. package/esm2020/lib/components/home/home.component.mjs +7 -6
  85. package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +15 -10
  86. package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +28 -47
  87. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +39 -17
  88. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +10 -7
  89. package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +13 -12
  90. package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +18 -10
  91. package/esm2020/lib/components/libraries/libraries.component.mjs +17 -27
  92. package/esm2020/lib/components/recent-files/recent-files.component.mjs +18 -37
  93. package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +3 -3
  94. package/esm2020/lib/components/search/search-input/search-input.component.mjs +11 -6
  95. package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +5 -5
  96. package/esm2020/lib/components/search/search-input.module.mjs +4 -4
  97. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +5 -6
  98. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +21 -30
  99. package/esm2020/lib/components/search/search-navigation.service.mjs +3 -3
  100. package/esm2020/lib/components/search/search-results/search-results.component.mjs +33 -41
  101. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +6 -7
  102. package/esm2020/lib/components/search/search-results.module.mjs +31 -23
  103. package/esm2020/lib/components/shared-files/shared-files.component.mjs +18 -34
  104. package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +9 -7
  105. package/esm2020/lib/components/shared-link-view/shared-link-view.module.mjs +5 -9
  106. package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +5 -5
  107. package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +5 -5
  108. package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +5 -5
  109. package/esm2020/lib/components/sidenav/directives/action.directive.mjs +3 -3
  110. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +3 -3
  111. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +3 -3
  112. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +3 -3
  113. package/esm2020/lib/components/sidenav/sidenav.component.mjs +3 -3
  114. package/esm2020/lib/components/sidenav/sidenav.module.mjs +11 -9
  115. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +96 -0
  116. package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +10 -17
  117. package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +3 -3
  118. package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +3 -3
  119. package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +3 -3
  120. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +3 -3
  121. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +3 -3
  122. package/esm2020/lib/components/toolbar/toolbar.module.mjs +7 -13
  123. package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +3 -3
  124. package/esm2020/lib/components/trashcan/trashcan.component.mjs +37 -29
  125. package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +3 -3
  126. package/esm2020/lib/components/view-profile/view-profile.component.mjs +35 -16
  127. package/esm2020/lib/components/view-profile/view-profile.guard.mjs +5 -5
  128. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +16 -15
  129. package/esm2020/lib/directives/directives.module.mjs +4 -4
  130. package/esm2020/lib/directives/document-list.directive.mjs +3 -3
  131. package/esm2020/lib/extensions/core.extensions.module.mjs +4 -4
  132. package/esm2020/lib/material.module.mjs +4 -4
  133. package/esm2020/lib/services/content-management.service.mjs +3 -3
  134. package/esm2020/lib/services/content-service-extension.service.mjs +3 -3
  135. package/esm2020/lib/services/content-url.service.mjs +3 -3
  136. package/esm2020/lib/services/node-actions.service.mjs +5 -5
  137. package/esm2020/lib/services/node-template.service.mjs +3 -3
  138. package/esm2020/lib/store/app-store.module.mjs +4 -4
  139. package/esm2020/lib/store/effects/app.effects.mjs +3 -3
  140. package/esm2020/lib/store/effects/contextmenu.effects.mjs +3 -3
  141. package/esm2020/lib/store/effects/download.effects.mjs +3 -3
  142. package/esm2020/lib/store/effects/favorite.effects.mjs +3 -3
  143. package/esm2020/lib/store/effects/library.effects.mjs +3 -3
  144. package/esm2020/lib/store/effects/node.effects.mjs +3 -3
  145. package/esm2020/lib/store/effects/search.effects.mjs +3 -3
  146. package/esm2020/lib/store/effects/template.effects.mjs +3 -3
  147. package/esm2020/lib/store/effects/upload.effects.mjs +5 -5
  148. package/esm2020/lib/store/effects/viewer.effects.mjs +5 -5
  149. package/esm2020/ms-office/actions/aos.actions.mjs +31 -0
  150. package/esm2020/ms-office/alfresco-aca-content-ms-office.mjs +5 -0
  151. package/esm2020/ms-office/aos-extension.module.mjs +54 -0
  152. package/esm2020/ms-office/aos-extension.service.mjs +134 -0
  153. package/esm2020/ms-office/effects/aos.effects.mjs +48 -0
  154. package/esm2020/ms-office/public-api.mjs +28 -0
  155. package/fesm2015/alfresco-aca-content-about.mjs +194 -0
  156. package/fesm2015/alfresco-aca-content-about.mjs.map +1 -0
  157. package/fesm2015/alfresco-aca-content-folder-rules.mjs +2479 -0
  158. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -0
  159. package/fesm2015/alfresco-aca-content-ms-office.mjs +260 -0
  160. package/fesm2015/alfresco-aca-content-ms-office.mjs.map +1 -0
  161. package/fesm2015/alfresco-aca-content.mjs +3457 -3847
  162. package/fesm2015/alfresco-aca-content.mjs.map +1 -1
  163. package/fesm2020/alfresco-aca-content-about.mjs +194 -0
  164. package/fesm2020/alfresco-aca-content-about.mjs.map +1 -0
  165. package/fesm2020/alfresco-aca-content-folder-rules.mjs +2538 -0
  166. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -0
  167. package/fesm2020/alfresco-aca-content-ms-office.mjs +282 -0
  168. package/fesm2020/alfresco-aca-content-ms-office.mjs.map +1 -0
  169. package/fesm2020/alfresco-aca-content.mjs +4622 -4995
  170. package/fesm2020/alfresco-aca-content.mjs.map +1 -1
  171. package/folder-rules/assets/folder-rules.plugin.json +71 -0
  172. package/folder-rules/assets/i18n/ar.json +144 -0
  173. package/folder-rules/assets/i18n/cs.json +144 -0
  174. package/folder-rules/assets/i18n/da.json +144 -0
  175. package/folder-rules/assets/i18n/de.json +144 -0
  176. package/folder-rules/assets/i18n/en.json +144 -0
  177. package/folder-rules/assets/i18n/es.json +144 -0
  178. package/folder-rules/assets/i18n/fi.json +144 -0
  179. package/folder-rules/assets/i18n/fr.json +144 -0
  180. package/folder-rules/assets/i18n/it.json +144 -0
  181. package/folder-rules/assets/i18n/ja.json +144 -0
  182. package/folder-rules/assets/i18n/nb.json +144 -0
  183. package/folder-rules/assets/i18n/nl.json +144 -0
  184. package/folder-rules/assets/i18n/pl.json +144 -0
  185. package/folder-rules/assets/i18n/pt-BR.json +144 -0
  186. package/folder-rules/assets/i18n/ru.json +144 -0
  187. package/folder-rules/assets/i18n/sv.json +144 -0
  188. package/folder-rules/assets/i18n/zh-CN.json +144 -0
  189. package/folder-rules/folder-rules.module.d.ts +51 -0
  190. package/folder-rules/folder-rules.rules.d.ts +27 -0
  191. package/folder-rules/index.d.ts +5 -0
  192. package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +87 -0
  193. package/folder-rules/model/action-parameter-constraint.model.d.ts +31 -0
  194. package/folder-rules/model/rule-action.model.d.ts +48 -0
  195. package/folder-rules/model/rule-composite-condition.model.d.ts +30 -0
  196. package/folder-rules/model/rule-grouping-item.model.d.ts +34 -0
  197. package/folder-rules/model/rule-set.model.d.ts +34 -0
  198. package/folder-rules/model/rule-simple-condition.model.d.ts +28 -0
  199. package/folder-rules/model/rule.model.d.ts +58 -0
  200. package/folder-rules/public-api.d.ts +25 -0
  201. package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +47 -0
  202. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +75 -0
  203. package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +60 -0
  204. package/folder-rules/rule-details/conditions/rule-condition-comparators.d.ts +30 -0
  205. package/folder-rules/rule-details/conditions/rule-condition-fields.d.ts +31 -0
  206. package/folder-rules/rule-details/conditions/rule-mime-types.d.ts +27 -0
  207. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +62 -0
  208. package/folder-rules/rule-details/edit-rule-dialog.ui-component.d.ts +53 -0
  209. package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +55 -0
  210. package/folder-rules/rule-details/rule-details.ui-component.d.ts +54 -0
  211. package/folder-rules/rule-details/triggers/rule-triggers.ui-component.d.ts +43 -0
  212. package/folder-rules/rule-details/validators/rule-actions.validator.d.ts +27 -0
  213. package/folder-rules/rule-details/validators/rule-composite-condition.validator.d.ts +25 -0
  214. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +57 -0
  215. package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +44 -0
  216. package/{lib/components/node-version/node-version-form.component.d.ts → folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts} +10 -21
  217. package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +61 -0
  218. package/folder-rules/services/actions.service.d.ts +28 -0
  219. package/folder-rules/services/folder-rule-sets.service.d.ts +49 -0
  220. package/folder-rules/services/folder-rules.service.d.ts +41 -0
  221. package/lib/aca-content.module.d.ts +37 -37
  222. package/lib/components/common/common.module.d.ts +29 -17
  223. package/lib/components/common/language-picker/language-picker.component.d.ts +1 -1
  224. package/lib/components/common/location-link/location-link.component.d.ts +1 -6
  225. package/lib/components/common/logout/logout.component.d.ts +2 -3
  226. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +9 -6
  227. package/lib/components/common/user-info/user-info.component.d.ts +15 -3
  228. package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
  229. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +1 -1
  230. package/lib/components/context-menu/context-menu.component.d.ts +1 -1
  231. package/lib/components/details/details.component.d.ts +3 -6
  232. package/lib/components/dl-custom-components/document-list-custom-components.module.d.ts +4 -8
  233. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -3
  234. package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +5 -28
  235. package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +32 -12
  236. package/lib/components/favorite-libraries/favorite-libraries.component.d.ts +3 -8
  237. package/lib/components/favorites/favorites.component.d.ts +2 -12
  238. package/lib/components/files/files.component.d.ts +6 -15
  239. package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +28 -3
  240. package/lib/components/info-drawer/info.drawer.module.d.ts +5 -12
  241. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +5 -4
  242. package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
  243. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +2 -2
  244. package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
  245. package/lib/components/libraries/libraries.component.d.ts +2 -31
  246. package/lib/components/recent-files/recent-files.component.d.ts +2 -13
  247. package/lib/components/search/search-input/search-input.component.d.ts +2 -1
  248. package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +2 -31
  249. package/lib/components/search/search-results/search-results.component.d.ts +7 -13
  250. package/lib/components/search/search-results-row/search-results-row.component.d.ts +1 -1
  251. package/lib/components/search/search-results.module.d.ts +7 -5
  252. package/lib/components/shared-files/shared-files.component.d.ts +2 -11
  253. package/lib/components/shared-link-view/shared-link-view.component.d.ts +3 -2
  254. package/lib/components/shared-link-view/shared-link-view.module.d.ts +5 -6
  255. package/lib/components/sidenav/sidenav.module.d.ts +5 -5
  256. package/lib/components/sidenav/user-menu/user-menu.component.d.ts +58 -0
  257. package/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.d.ts +2 -1
  258. package/lib/components/toolbar/toolbar.module.d.ts +13 -15
  259. package/lib/components/trashcan/trashcan.component.d.ts +4 -35
  260. package/lib/components/view-profile/view-profile.component.d.ts +11 -4
  261. package/lib/components/view-profile/view-profile.guard.d.ts +2 -2
  262. package/lib/dialogs/node-template/create-from-template.dialog.d.ts +2 -2
  263. package/lib/store/effects/upload.effects.d.ts +3 -3
  264. package/ms-office/actions/aos.actions.d.ts +31 -0
  265. package/ms-office/aos-extension.module.d.ts +34 -0
  266. package/ms-office/aos-extension.service.d.ts +48 -0
  267. package/ms-office/assets/aos.plugin.json +74 -0
  268. package/ms-office/assets/i18n/ar.json +10 -0
  269. package/ms-office/assets/i18n/cs.json +10 -0
  270. package/ms-office/assets/i18n/da.json +10 -0
  271. package/ms-office/assets/i18n/de.json +10 -0
  272. package/ms-office/assets/i18n/en.json +10 -0
  273. package/ms-office/assets/i18n/es.json +10 -0
  274. package/ms-office/assets/i18n/fi.json +10 -0
  275. package/ms-office/assets/i18n/fr.json +10 -0
  276. package/ms-office/assets/i18n/it.json +10 -0
  277. package/ms-office/assets/i18n/ja.json +10 -0
  278. package/ms-office/assets/i18n/nb.json +10 -0
  279. package/ms-office/assets/i18n/nl.json +10 -0
  280. package/ms-office/assets/i18n/pl.json +10 -0
  281. package/ms-office/assets/i18n/pt-BR.json +10 -0
  282. package/ms-office/assets/i18n/ru.json +10 -0
  283. package/ms-office/assets/i18n/sv.json +10 -0
  284. package/ms-office/assets/i18n/zh-CN.json +10 -0
  285. package/ms-office/effects/aos.effects.d.ts +11 -0
  286. package/ms-office/index.d.ts +5 -0
  287. package/ms-office/public-api.d.ts +27 -0
  288. package/package.json +37 -2
  289. package/ui/application.scss +8 -0
  290. package/ui/overrides/adf-about.theme.scss +0 -5
  291. package/ui/overrides/adf-pagination.theme.scss +0 -1
  292. package/ui/overrides/ay11.scss +1 -1
  293. package/ui/variables/variables.scss +6 -13
  294. package/esm2020/lib/components/context-menu/context-menu.module.mjs +0 -76
  295. package/esm2020/lib/components/create-menu/create-menu.component.mjs +0 -73
  296. package/esm2020/lib/components/create-menu/create-menu.module.mjs +0 -44
  297. package/esm2020/lib/components/node-version/node-version-form.component.mjs +0 -70
  298. package/esm2020/lib/components/node-version/node-version.module.mjs +0 -78
  299. package/esm2020/lib/components/toolbar/document-display-mode/document-display-mode.component.mjs +0 -84
  300. package/esm2020/lib/components/trashcan/trashcan.module.mjs +0 -74
  301. package/esm2020/lib/components/view-profile/view-profile.module.mjs +0 -42
  302. package/lib/components/context-menu/context-menu.module.d.ts +0 -18
  303. package/lib/components/create-menu/create-menu.module.d.ts +0 -10
  304. package/lib/components/node-version/node-version.module.d.ts +0 -16
  305. package/lib/components/toolbar/document-display-mode/document-display-mode.component.d.ts +0 -13
  306. package/lib/components/trashcan/trashcan.module.d.ts +0 -16
  307. package/lib/components/view-profile/view-profile.module.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"alfresco-aca-content.mjs","sources":["../../../../projects/aca-content/src/lib/services/node-actions.service.ts","../../../../projects/aca-content/src/lib/services/content-management.service.ts","../../../../projects/aca-content/src/lib/directives/document-list.directive.ts","../../../../projects/aca-content/src/lib/components/files/files.component.ts","../../../../projects/aca-content/src/lib/components/files/files.component.html","../../../../projects/aca-content/src/lib/components/libraries/libraries.component.ts","../../../../projects/aca-content/src/lib/components/libraries/libraries.component.html","../../../../projects/aca-content/src/lib/components/favorite-libraries/favorite-libraries.component.ts","../../../../projects/aca-content/src/lib/components/favorite-libraries/favorite-libraries.component.html","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.component.ts","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.component.html","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.module.ts","../../../../projects/aca-content/src/lib/store/initial-state.ts","../../../../projects/aca-content/src/lib/store/reducers/app.reducer.ts","../../../../projects/aca-content/src/lib/store/effects/app.effects.ts","../../../../projects/aca-content/src/lib/services/content-url.service.ts","../../../../projects/aca-content/src/lib/store/effects/download.effects.ts","../../../../projects/aca-content/src/lib/store/effects/favorite.effects.ts","../../../../projects/aca-content/src/lib/store/effects/node.effects.ts","../../../../projects/aca-content/src/lib/store/effects/viewer.effects.ts","../../../../projects/aca-content/src/lib/components/search/search-navigation.service.ts","../../../../projects/aca-content/src/lib/store/effects/search.effects.ts","../../../../projects/aca-content/src/lib/store/effects/library.effects.ts","../../../../projects/aca-content/src/lib/store/effects/upload.effects.ts","../../../../projects/aca-content/src/lib/dialogs/node-template/create-from-template.dialog.ts","../../../../projects/aca-content/src/lib/dialogs/node-template/create-from-template.dialog.html","../../../../projects/aca-content/src/lib/services/node-template.service.ts","../../../../projects/aca-content/src/lib/store/effects/template.effects.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-overlay.ts","../../../../projects/aca-content/src/lib/components/context-menu/direction.token.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-item.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-item.component.html","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-outside-event.directive.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.component.html","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.service.ts","../../../../projects/aca-content/src/lib/store/effects/contextmenu.effects.ts","../../../../projects/aca-content/src/lib/store/effects.ts","../../../../projects/aca-content/src/lib/store/app-store.module.ts","../../../../projects/aca-content/src/lib/material.module.ts","../../../../projects/aca-content/src/lib/services/content-service-extension.service.ts","../../../../projects/aca-content/src/lib/extensions/core.extensions.module.ts","../../../../projects/aca-content/src/lib/directives/directives.module.ts","../../../../projects/aca-content/src/lib/components/info-drawer/comments-tab/comments-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/metadata-tab/metadata-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.html","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/versions-tab/versions-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/info.drawer.module.ts","../../../../projects/aca-content/src/lib/components/common/location-link/location-link.component.ts","../../../../projects/aca-content/src/lib/components/common/toggle-shared/toggle-shared.component.ts","../../../../projects/aca-content/src/lib/components/common/toggle-shared/toggle-shared.component.html","../../../../projects/aca-content/src/lib/components/common/language-picker/language-picker.component.ts","../../../../projects/aca-content/src/lib/components/common/logout/logout.component.ts","../../../../projects/aca-content/src/lib/components/common/user-info/user-info.component.ts","../../../../projects/aca-content/src/lib/components/common/user-info/user-info.component.html","../../../../projects/aca-content/src/lib/components/common/common.module.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.module.ts","../../../../projects/aca-content/src/lib/components/toolbar/document-display-mode/document-display-mode.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-favorite/toggle-favorite.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/view-node/view-node.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toolbar.module.ts","../../../../projects/aca-content/src/lib/components/create-menu/create-menu.component.ts","../../../../projects/aca-content/src/lib/components/create-menu/create-menu.component.html","../../../../projects/aca-content/src/lib/components/create-menu/create-menu.module.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/expansion-panel.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/menu-panel.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/action.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/active-link.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/expand-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/expand-menu.component.html","../../../../projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.html","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.component.html","../../../../projects/aca-content/src/lib/components/sidenav/components/button-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/button-menu.component.html","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.module.ts","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-query-builder.service.ts","../../../../projects/aca-content/src/lib/components/search/search-input-control/search-input-control.component.ts","../../../../projects/aca-content/src/lib/components/search/search-input-control/search-input-control.component.html","../../../../projects/aca-content/src/lib/components/search/search-input/search-input.component.ts","../../../../projects/aca-content/src/lib/components/search/search-input/search-input.component.html","../../../../projects/aca-content/src/lib/components/search/search-input.module.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/name-column/name-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/name-column/name-column.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/tags-column/tags-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/document-list-custom-components.module.ts","../../../../projects/aca-content/src/lib/components/search/search-results-row/search-results-row.component.ts","../../../../projects/aca-content/src/lib/components/search/search-results-row/search-results-row.component.html","../../../../projects/aca-content/src/lib/components/search/search-action-menu/search-action-menu.component.ts","../../../../projects/aca-content/src/lib/components/search/search-action-menu/search-action-menu.component.html","../../../../projects/aca-content/src/lib/components/search/search-results/search-results.component.ts","../../../../projects/aca-content/src/lib/components/search/search-results/search-results.component.html","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-results.component.ts","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-results.component.html","../../../../projects/aca-content/src/lib/components/search/search-results.module.ts","../../../../projects/aca-content/src/lib/components/node-version/node-version-form.component.ts","../../../../projects/aca-content/src/lib/components/node-version/node-version-form.component.html","../../../../projects/aca-content/src/lib/components/node-version/node-version.module.ts","../../../../projects/aca-content/src/lib/components/favorites/favorites.component.ts","../../../../projects/aca-content/src/lib/components/favorites/favorites.component.html","../../../../projects/aca-content/src/lib/components/recent-files/recent-files.component.ts","../../../../projects/aca-content/src/lib/components/recent-files/recent-files.component.html","../../../../projects/aca-content/src/lib/components/shared-files/shared-files.component.ts","../../../../projects/aca-content/src/lib/components/shared-files/shared-files.component.html","../../../../projects/aca-content/src/lib/components/details/details.component.ts","../../../../projects/aca-content/src/lib/components/details/details.component.html","../../../../projects/aca-content/src/lib/components/home/home.component.ts","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.guard.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.component.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.component.html","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.component.ts","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.component.html","../../../../projects/aca-content/src/lib/aca-content.routes.ts","../../../../projects/aca-content/src/lib/components/upload-files-dialog/upload-files-dialog.component.ts","../../../../projects/aca-content/src/lib/components/upload-files-dialog/upload-files-dialog.component.html","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.module.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.module.ts","../../../../projects/aca-content/src/lib/aca-content.module.ts","../../../../projects/aca-content/src/public-api.ts","../../../../projects/aca-content/src/alfresco-aca-content.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, Subject, of, zip, from } from 'rxjs';\nimport { AlfrescoApiService, DataColumn, TranslationService, ThumbnailService } from '@alfresco/adf-core';\nimport {\n DocumentListService,\n ContentNodeSelectorComponent,\n ContentNodeSelectorComponentData,\n ContentNodeDialogService,\n ShareDataRow,\n NodeAction,\n ContentService\n} from '@alfresco/adf-content-services';\nimport {\n MinimalNodeEntity,\n MinimalNodeEntryEntity,\n SitePaging,\n NodeChildAssociationPaging,\n NodeChildAssociationEntry,\n NodesApi\n} from '@alfresco/js-api';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\n\ntype BatchOperationType = Extract<NodeAction, NodeAction.COPY | NodeAction.MOVE>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodeActionsService {\n contentCopied: Subject<MinimalNodeEntity[]> = new Subject<MinimalNodeEntity[]>();\n contentMoved: Subject<any> = new Subject<any>();\n moveDeletedEntries: any[] = [];\n isSitesDestinationAvailable = false;\n\n _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n return this._nodesApi;\n }\n\n constructor(\n private contentService: ContentService,\n private contentApi: ContentApiService,\n private dialog: MatDialog,\n private documentListService: DocumentListService,\n private apiService: AlfrescoApiService,\n private translation: TranslationService,\n private thumbnailService: ThumbnailService\n ) {}\n\n /**\n * Copy node list\n *\n * @param contentEntities nodes to copy\n * @param permission permission which is needed to apply the action\n * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n */\n copyNodes(contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n return this.doBatchOperation(NodeAction.COPY, contentEntities, permission, focusedElementOnCloseSelector);\n }\n\n /**\n * Move node list\n *\n * @param contentEntities nodes to move\n * @param permission permission which is needed to apply the action\n * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n */\n moveNodes(contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n return this.doBatchOperation(NodeAction.MOVE, contentEntities, permission, focusedElementOnCloseSelector);\n }\n\n /**\n * General method for performing the given operation (copy|move) to multiple nodes\n *\n * @param action the action to perform (copy|move)\n * @param contentEntities the contentEntities which have to have the action performed on\n * @param permission permission which is needed to apply the action\n * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n */\n doBatchOperation(action: BatchOperationType, contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n const observable: Subject<string> = new Subject<string>();\n\n if (!this.isEntryEntitiesArray(contentEntities)) {\n observable.error(new Error(JSON.stringify({ error: { statusCode: 400 } })));\n } else if (this.checkPermission(action, contentEntities, permission)) {\n const destinationSelection = this.getContentNodeSelection(action, contentEntities, focusedElementOnCloseSelector);\n destinationSelection.subscribe((selections: MinimalNodeEntryEntity[]) => {\n const contentEntry = contentEntities[0].entry;\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n const type = contentEntry.isFolder ? 'folder' : 'content';\n const batch: any[] = [];\n\n // consider only first item in the selection\n const selection = selections[0];\n let action$: Observable<any>;\n\n if (action === NodeAction.MOVE && contentEntities.length === 1 && type === 'content') {\n action$ = this.documentListService.moveNode(contentEntryId, selection.id);\n } else {\n contentEntities.forEach((node) => {\n // batch.push(this.copyNodeAction(node.entry, selection.id));\n batch.push(this[`${action.toLowerCase()}NodeAction`](node.entry, selection.id));\n });\n action$ = zip(...batch);\n }\n\n action$.subscribe((newContent) => {\n observable.next(`OPERATION.SUCCESS.${type.toUpperCase()}.${action.toUpperCase()}`);\n\n const processedData = this.processResponse(newContent);\n if (action === NodeAction.COPY) {\n this.contentCopied.next(processedData.succeeded);\n } else if (action === NodeAction.MOVE) {\n this.contentMoved.next(processedData);\n }\n }, observable.error.bind(observable));\n });\n } else {\n observable.error(new Error(JSON.stringify({ error: { statusCode: 403 } })));\n }\n\n return observable;\n }\n\n isEntryEntitiesArray(contentEntities: any[]): boolean {\n if (contentEntities && contentEntities.length) {\n const nonEntryNode = contentEntities.find((node) => !node || !node.entry || !(node.entry.nodeId || node.entry.id));\n return !nonEntryNode;\n }\n return false;\n }\n\n checkPermission(action: BatchOperationType, contentEntities: any[], permission?: string) {\n const notAllowedNode = contentEntities.find((node) => !this.isActionAllowed(action, node.entry, permission));\n return !notAllowedNode;\n }\n\n getEntryParentId(nodeEntry: MinimalNodeEntryEntity) {\n let entryParentId = '';\n\n if (nodeEntry.parentId) {\n entryParentId = nodeEntry.parentId;\n } else if (nodeEntry.path && nodeEntry.path.elements && nodeEntry.path.elements.length) {\n entryParentId = nodeEntry.path.elements[nodeEntry.path.elements.length - 1].id;\n }\n\n return entryParentId;\n }\n\n getContentNodeSelection(\n action: NodeAction,\n contentEntities: MinimalNodeEntity[],\n focusedElementOnCloseSelector?: string\n ): Subject<MinimalNodeEntryEntity[]> {\n const currentParentFolderId = this.getEntryParentId(contentEntities[0].entry);\n\n const customDropdown = new SitePaging({\n list: {\n entries: [\n {\n entry: {\n guid: '-my-',\n title: this.translation.instant('APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL')\n }\n },\n {\n entry: {\n guid: '-mysites-',\n title: this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.SIDENAV_LINK.LABEL')\n }\n }\n ]\n }\n });\n\n const title = this.getTitleTranslation(action, contentEntities);\n\n this.isSitesDestinationAvailable = false;\n const data: ContentNodeSelectorComponentData = {\n selectionMode: 'single',\n title,\n currentFolderId: currentParentFolderId,\n actionName: action,\n dropdownHideMyFiles: true,\n dropdownSiteList: customDropdown,\n rowFilter: this.rowFilter.bind(this),\n imageResolver: this.imageResolver.bind(this),\n isSelectionValid: this.canCopyMoveInsideIt.bind(this),\n breadcrumbTransform: this.customizeBreadcrumb.bind(this),\n select: new Subject<MinimalNodeEntryEntity[]>(),\n excludeSiteContent: ContentNodeDialogService.nonDocumentSiteContent\n };\n\n this.dialog\n .open(ContentNodeSelectorComponent, {\n data,\n panelClass: 'adf-content-node-selector-dialog',\n width: '630px',\n role: 'dialog'\n })\n .afterClosed()\n .subscribe(() => this.focusAfterClose(focusedElementOnCloseSelector));\n\n data.select.subscribe({\n complete: this.close.bind(this)\n });\n\n return data.select;\n }\n\n getTitleTranslation(action: string, nodes: MinimalNodeEntity[] = []): string {\n let keyPrefix = 'ITEMS';\n let name = '';\n\n if (nodes.length === 1 && nodes[0].entry.name) {\n name = nodes[0].entry.name;\n keyPrefix = 'ITEM';\n }\n\n const number = nodes.length;\n return this.translation.instant(`NODE_SELECTOR.${action.toUpperCase()}_${keyPrefix}`, { name, number });\n }\n\n private canCopyMoveInsideIt(entry: MinimalNodeEntryEntity): boolean {\n return this.hasEntityCreatePermission(entry) && !this.isSite(entry);\n }\n\n private hasEntityCreatePermission(entry: MinimalNodeEntryEntity): boolean {\n return this.contentService.hasAllowableOperations(entry, 'create');\n }\n\n private isSite(entry) {\n return !!entry.guid || entry.nodeType === 'st:site' || entry.nodeType === 'st:sites';\n }\n\n close() {\n this.dialog.closeAll();\n }\n\n // todo: review this approach once 5.2.3 is out\n private customizeBreadcrumb(node: MinimalNodeEntryEntity) {\n if (node && node.path && node.path.elements) {\n const elements = node.path.elements;\n\n if (elements.length > 1) {\n if (elements[1].name === 'User Homes') {\n elements.splice(0, 2);\n\n // make sure first item is 'Personal Files'\n if (elements[0]) {\n elements[0].name = this.translation.instant('APP.BROWSE.PERSONAL.TITLE');\n elements[0].id = '-my-';\n } else {\n node.name = this.translation.instant('APP.BROWSE.PERSONAL.TITLE');\n }\n } else if (elements[1].name === 'Sites') {\n this.normalizeSitePath(node);\n }\n } else if (elements.length === 1) {\n if (node.name === 'Sites') {\n node.name = this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE');\n elements.splice(0, 1);\n }\n }\n } else if (node === null && this.isSitesDestinationAvailable) {\n node = {\n name: this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE'),\n path: { elements: [] }\n } as any;\n }\n\n return node;\n }\n\n // todo: review this approach once 5.2.3 is out\n private normalizeSitePath(node: MinimalNodeEntryEntity) {\n const elements = node.path.elements;\n\n // remove 'Company Home'\n elements.splice(0, 1);\n\n // replace first item with 'File Libraries'\n elements[0].name = this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE');\n elements[0].id = '-mysites-';\n\n if (this.isSiteContainer(node)) {\n // rename 'documentLibrary' entry to the target site display name\n // clicking on the breadcrumb entry loads the site content\n node.name = elements[1].name;\n\n // remove the site entry\n elements.splice(1, 1);\n } else {\n // remove 'documentLibrary' in the middle of the path\n const docLib = elements.findIndex((el) => el.name === 'documentLibrary');\n if (docLib > -1) {\n elements.splice(docLib, 1);\n }\n }\n }\n\n isSiteContainer(node: MinimalNodeEntryEntity): boolean {\n if (node && node.aspectNames && node.aspectNames.length > 0) {\n return node.aspectNames.indexOf('st:siteContainer') >= 0;\n }\n return false;\n }\n\n copyNodeAction(nodeEntry: any, selectionId: string): Observable<any> {\n if (nodeEntry.isFolder) {\n return this.copyFolderAction(nodeEntry, selectionId);\n } else {\n // any other type is treated as 'content'\n return this.copyContentAction(nodeEntry, selectionId);\n }\n }\n\n copyContentAction(contentEntry: any, selectionId: string, oldName?: string): Observable<any> {\n const _oldName = oldName || contentEntry.name;\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n\n // use local method until new name parameter is added on ADF copyNode\n return this.copyNode(contentEntryId, selectionId, _oldName).pipe(\n catchError((err) => {\n let errStatusCode;\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n errStatusCode = statusCode;\n } catch (e) {\n //\n }\n\n if (errStatusCode && errStatusCode === 409) {\n return this.copyContentAction(contentEntry, selectionId, this.getNewNameFrom(_oldName, contentEntry.name));\n } else {\n // do not throw error, to be able to show message in case of partial copy of files\n return of(err || 'Server error');\n }\n })\n );\n }\n\n copyFolderAction(contentEntry: any, selectionId: string): Observable<any> {\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n let $destinationFolder: Observable<any>;\n let $childrenToCopy: Observable<any>;\n let newDestinationFolder;\n\n return this.copyNode(contentEntryId, selectionId, contentEntry.name).pipe(\n catchError((err) => {\n let errStatusCode;\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n errStatusCode = statusCode;\n } catch {}\n\n if (errStatusCode && errStatusCode === 409) {\n $destinationFolder = this.getChildByName(selectionId, contentEntry.name);\n $childrenToCopy = this.getNodeChildren(contentEntryId);\n\n return $destinationFolder.pipe(\n mergeMap((destination) => {\n newDestinationFolder = destination;\n return $childrenToCopy;\n }),\n mergeMap((nodesToCopy) => {\n const batch = [];\n nodesToCopy.list.entries.forEach((node) => {\n if (node.entry.isFolder) {\n batch.push(this.copyFolderAction(node.entry, newDestinationFolder.entry.id));\n } else {\n batch.push(this.copyContentAction(node.entry, newDestinationFolder.entry.id));\n }\n });\n\n if (!batch.length) {\n return of({});\n }\n return zip(...batch);\n })\n );\n } else {\n // do not throw error, to be able to show message in case of partial copy of files\n return of(err || 'Server error');\n }\n })\n );\n }\n\n moveNodeAction(nodeEntry, selectionId: string): Observable<any> {\n this.moveDeletedEntries = [];\n\n if (nodeEntry.isFolder) {\n const initialParentId = nodeEntry.parentId;\n\n return this.moveFolderAction(nodeEntry, selectionId).pipe(\n mergeMap((newContent) => {\n // take no extra action, if folder is moved to the same location\n if (initialParentId === selectionId) {\n return of(newContent);\n }\n\n const flattenResponse = this.flatten(newContent);\n const processedData = this.processResponse(flattenResponse);\n\n // else, check if moving this nodeEntry succeeded for ALL of its nodes\n if (processedData.failed.length === 0) {\n // check if folder still exists on location\n return this.getChildByName(initialParentId, nodeEntry.name).pipe(\n mergeMap((folderOnInitialLocation) => {\n if (folderOnInitialLocation) {\n // Check if there's nodeId for Shared Files\n const nodeEntryId = nodeEntry.nodeId || nodeEntry.id;\n // delete it from location\n return this.contentApi.deleteNode(nodeEntryId).pipe(\n mergeMap(() => {\n this.moveDeletedEntries.push(nodeEntry);\n return of(newContent);\n })\n );\n }\n return of(newContent);\n })\n );\n }\n return of(newContent);\n })\n );\n } else {\n // any other type is treated as 'content'\n return this.moveContentAction(nodeEntry, selectionId);\n }\n }\n\n moveFolderAction(contentEntry, selectionId: string): Observable<any> {\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n const initialParentId = this.getEntryParentId(contentEntry);\n let $destinationFolder: Observable<any>;\n let $childrenToMove: Observable<any>;\n let newDestinationFolder;\n\n return this.documentListService.moveNode(contentEntryId, selectionId).pipe(\n map((itemMoved) => ({ itemMoved, initialParentId })),\n catchError((err) => {\n let errStatusCode;\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n errStatusCode = statusCode;\n } catch (e) {\n //\n }\n\n if (errStatusCode && errStatusCode === 409) {\n $destinationFolder = this.getChildByName(selectionId, contentEntry.name);\n $childrenToMove = this.getNodeChildren(contentEntryId);\n\n return $destinationFolder.pipe(\n mergeMap((destination) => {\n newDestinationFolder = destination;\n return $childrenToMove;\n }),\n mergeMap((childrenToMove) => {\n const batch: any[] = [];\n childrenToMove.list.entries.forEach((node) => {\n if (node.entry.isFolder) {\n batch.push(this.moveFolderAction(node.entry, newDestinationFolder.entry.id));\n } else {\n batch.push(this.moveContentAction(node.entry, newDestinationFolder.entry.id));\n }\n });\n\n if (!batch.length) {\n return of(batch);\n }\n return zip(...batch);\n })\n );\n } else {\n // do not throw error, to be able to show message in case of partial move of files\n return of(err);\n }\n })\n );\n }\n\n moveContentAction(contentEntry: any, selectionId: string) {\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n const initialParentId = this.getEntryParentId(contentEntry);\n\n return this.documentListService.moveNode(contentEntryId, selectionId).pipe(\n map((itemMoved) => ({ itemMoved, initialParentId })),\n catchError((err) =>\n // do not throw error, to be able to show message in case of partial move of files\n of(err)\n )\n );\n }\n\n getChildByName(parentId: string, name: string): Subject<NodeChildAssociationEntry> {\n const matchedNodes = new Subject<any>();\n\n this.getNodeChildren(parentId).subscribe(\n (childrenNodes: NodeChildAssociationPaging) => {\n const result = childrenNodes.list.entries.find((node) => node.entry.name === name);\n\n if (result) {\n matchedNodes.next(result);\n } else {\n matchedNodes.next(null);\n }\n },\n (err) => matchedNodes.error(err)\n );\n return matchedNodes;\n }\n\n private isActionAllowed(action: BatchOperationType, node: MinimalNodeEntryEntity, permission?: string): boolean {\n if (action === NodeAction.COPY) {\n return true;\n }\n return this.contentService.hasAllowableOperations(node, permission);\n }\n\n private rowFilter(row: ShareDataRow): boolean {\n const node: MinimalNodeEntryEntity = row.node.entry;\n\n this.isSitesDestinationAvailable = !!node['guid'];\n return !node.isFile && node.nodeType !== 'app:folderlink';\n }\n\n private imageResolver(row: ShareDataRow, _: DataColumn): string | null {\n const entry: MinimalNodeEntryEntity = row.node.entry;\n if (!this.contentService.hasAllowableOperations(entry, 'update')) {\n return this.thumbnailService.getMimeTypeIcon('disable/folder');\n }\n\n return null;\n }\n\n public getNewNameFrom(name: string, baseName?: string) {\n const extensionMatch = name.match(/\\.[^/.]+$/);\n\n // remove extension in case there is one\n const fileExtension = extensionMatch ? extensionMatch[0] : '';\n let extensionFree = extensionMatch ? name.slice(0, extensionMatch.index) : name;\n\n let prefixNumber = 1;\n let baseExtensionFree;\n\n if (baseName) {\n const baseExtensionMatch = baseName.match(/\\.[^/.]+$/);\n\n // remove extension in case there is one\n baseExtensionFree = baseExtensionMatch ? baseName.slice(0, baseExtensionMatch.index) : baseName;\n }\n\n if (!baseExtensionFree || baseExtensionFree !== extensionFree) {\n // check if name already has integer appended on end:\n const oldPrefix = extensionFree.match('-[0-9]+$');\n if (oldPrefix) {\n // if so, try to get the number at the end\n const oldPrefixNumber = parseInt(oldPrefix[0].slice(1), 10);\n if (oldPrefixNumber.toString() === oldPrefix[0].slice(1)) {\n extensionFree = extensionFree.slice(0, oldPrefix.index);\n prefixNumber = oldPrefixNumber + 1;\n }\n }\n }\n return extensionFree + '-' + prefixNumber + fileExtension;\n }\n\n /**\n * Get children nodes of given parent node\n *\n * @param nodeId The id of the parent node\n * @param params optional parameters\n */\n getNodeChildren(nodeId: string, params?: any): Observable<NodeChildAssociationPaging> {\n return from(this.nodesApi.listNodeChildren(nodeId, params));\n }\n\n // Copied from ADF document-list.service, and added the name parameter\n /**\n * Copy a node to destination node\n *\n * @param nodeId The id of the node to be copied\n * @param targetParentId The id of the folder-node where the node have to be copied to\n * @param name The new name for the copy that would be added on the destination folder\n */\n copyNode(nodeId: string, targetParentId: string, name?: string) {\n return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }));\n }\n\n public flatten(nDimArray: any[]) {\n if (!Array.isArray(nDimArray)) {\n return nDimArray;\n }\n\n const nodeQueue = nDimArray.slice(0);\n const resultingArray: any[] = [];\n\n do {\n nodeQueue.forEach((node) => {\n if (Array.isArray(node)) {\n nodeQueue.push(...node);\n } else {\n resultingArray.push(node);\n }\n\n const nodeIndex = nodeQueue.indexOf(node);\n nodeQueue.splice(nodeIndex, 1);\n });\n } while (nodeQueue.length);\n\n return resultingArray;\n }\n\n processResponse(data: any): any {\n const moveStatus = {\n succeeded: [],\n failed: [],\n partiallySucceeded: []\n };\n\n if (Array.isArray(data)) {\n return data.reduce((acc, next) => {\n if (next instanceof Error) {\n acc.failed.push(next);\n } else if (Array.isArray(next)) {\n // if content of a folder was moved\n\n const folderMoveResponseData = this.flatten(next);\n const foundError = folderMoveResponseData.find((node) => node instanceof Error);\n // data might contain also items of form: { itemMoved, initialParentId }\n const foundEntry = folderMoveResponseData.find((node) => (node.itemMoved && node.itemMoved.entry) || (node && node.entry));\n\n if (!foundError) {\n // consider success if NONE of the items from the folder move response is an error\n acc.succeeded.push(next);\n } else if (!foundEntry) {\n // consider failed if NONE of the items has an entry\n acc.failed.push(next);\n } else {\n // partially move folder\n acc.partiallySucceeded.push(next);\n }\n } else {\n acc.succeeded.push(next);\n }\n\n return acc;\n }, moveStatus);\n } else {\n if ((data.itemMoved && data.itemMoved.entry) || (data && data.entry)) {\n moveStatus.succeeded.push(data);\n } else {\n moveStatus.failed.push(data);\n }\n\n return moveStatus;\n }\n }\n\n private focusAfterClose(focusedElementSelector: string): void {\n if (focusedElementSelector) {\n document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppHookService, ContentApiService, NodePermissionService } from '@alfresco/aca-shared';\nimport {\n AppStore,\n DeletedNodeInfo,\n DeleteStatus,\n getAppSelection,\n getSharedUrl,\n NavigateRouteAction,\n NavigateToParentFolder,\n NodeInfo,\n ReloadDocumentListAction,\n SetSelectedNodesAction,\n ShowLoaderAction,\n SnackbarAction,\n SnackbarErrorAction,\n SnackbarInfoAction,\n SnackbarUserAction,\n SnackbarWarningAction,\n UndoDeleteNodesAction,\n UnlockWriteAction,\n ViewNodeVersionAction\n} from '@alfresco/aca-shared/store';\nimport {\n ConfirmDialogComponent,\n FolderDialogComponent,\n LibraryDialogComponent,\n ShareDialogComponent,\n NodeAspectService,\n NewVersionUploaderService,\n NewVersionUploaderDialogData,\n NewVersionUploaderData,\n NewVersionUploaderDataAction,\n NodesApiService\n} from '@alfresco/adf-content-services';\nimport { TranslationService, NotificationService } from '@alfresco/adf-core';\nimport {\n DeletedNodesPaging,\n MinimalNodeEntity,\n MinimalNodeEntryEntity,\n Node,\n NodeEntry,\n PathInfoEntity,\n SiteBody,\n SiteEntry\n} from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, Observable, of, zip } from 'rxjs';\nimport { catchError, map, mergeMap, take, tap } from 'rxjs/operators';\nimport { NodeActionsService } from './node-actions.service';\nimport { Router } from '@angular/router';\n\ninterface RestoredNode {\n status: number;\n entry: MinimalNodeEntryEntity;\n statusCode?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentManagementService {\n private readonly createMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.create\"]';\n\n constructor(\n private nodesApiService: NodesApiService,\n private store: Store<AppStore>,\n private contentApi: ContentApiService,\n private permission: NodePermissionService,\n private dialogRef: MatDialog,\n private nodeActionsService: NodeActionsService,\n private translation: TranslationService,\n private notificationService: NotificationService,\n private nodeAspectService: NodeAspectService,\n private appHookService: AppHookService,\n private newVersionUploaderService: NewVersionUploaderService,\n private router: Router\n ) {}\n\n addFavorite(nodes: Array<MinimalNodeEntity>) {\n if (nodes && nodes.length > 0) {\n this.contentApi.addFavorite(nodes).subscribe(() => {\n const favoriteNodes = nodes.map((node) => {\n const newNode = JSON.parse(JSON.stringify(node));\n newNode.entry.isFavorite = true;\n return newNode;\n });\n\n this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n });\n }\n }\n\n removeFavorite(nodes: Array<MinimalNodeEntity>) {\n if (nodes && nodes.length > 0) {\n this.contentApi.removeFavorite(nodes).subscribe(() => {\n const favoriteNodes = nodes.map((node) => {\n const newNode = JSON.parse(JSON.stringify(node));\n newNode.entry.isFavorite = false;\n return newNode;\n });\n\n this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n });\n }\n }\n\n manageVersions(node: any, focusedElementOnCloseSelector?: string) {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || (node as any).entry.guid;\n\n if (id) {\n this.contentApi.getNodeInfo(id).subscribe((entry) => {\n this.openVersionManagerDialog(entry, focusedElementOnCloseSelector);\n });\n } else {\n this.openVersionManagerDialog(node.entry, focusedElementOnCloseSelector);\n }\n }\n }\n\n manageAspects(node: any, focusedElementOnCloseSelector?: string) {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || (node as any).entry.guid;\n\n if (id) {\n this.contentApi.getNodeInfo(id).subscribe((entry) => {\n this.openAspectListDialog(entry, focusedElementOnCloseSelector);\n });\n } else {\n this.openAspectListDialog(node.entry, focusedElementOnCloseSelector);\n }\n }\n }\n\n versionUpdateDialog(node, file) {\n this.contentApi.getNodeVersions(node.id).subscribe(({ list }) => {\n const newVersionUploaderDialogData: NewVersionUploaderDialogData = {\n node,\n file,\n currentVersion: list.entries[0].entry,\n title: 'VERSION.DIALOG.TITLE'\n };\n const dialogConfig: MatDialogConfig = { width: '600px' };\n this.newVersionUploaderService.openUploadNewVersionDialog(newVersionUploaderDialogData, dialogConfig).subscribe(\n (data: NewVersionUploaderData) => {\n if (data.action === NewVersionUploaderDataAction.upload) {\n if (data.newVersion.value.entry.properties['cm:lockType'] === 'WRITE_LOCK') {\n this.store.dispatch(new UnlockWriteAction(data.newVersion.value));\n }\n }\n },\n (error) => this.store.dispatch(new SnackbarErrorAction(error))\n );\n });\n }\n\n shareNode(node: any, focusedElementOnCloseSelector?: string): void {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || (node as any).entry.guid;\n\n if (id) {\n this.contentApi.getNodeInfo(id).subscribe((entry) => {\n this.openShareLinkDialog({ entry }, focusedElementOnCloseSelector);\n });\n } else {\n this.openShareLinkDialog(node, focusedElementOnCloseSelector);\n }\n }\n }\n\n openShareLinkDialog(node, focusedElementOnCloseSelector?: string) {\n this.store\n .select(getSharedUrl)\n .pipe(take(1))\n .subscribe((baseShareUrl) => {\n this.dialogRef\n .open(ShareDialogComponent, {\n restoreFocus: true,\n width: '600px',\n panelClass: 'adf-share-link-dialog',\n data: {\n node,\n baseShareUrl\n }\n })\n .afterClosed()\n .subscribe(() => {\n this.store.dispatch(new SetSelectedNodesAction([node]));\n this.appHookService.linksUnshared.next();\n this.focusAfterClose(focusedElementOnCloseSelector);\n });\n });\n }\n\n createFolder(parentNodeId: string) {\n const dialogInstance = this.dialogRef.open(FolderDialogComponent, {\n data: {\n parentNodeId,\n createTitle: undefined,\n nodeType: 'cm:folder'\n },\n width: '400px',\n role: 'dialog'\n });\n\n dialogInstance.componentInstance.error.subscribe((message: string) => {\n this.store.dispatch(new SnackbarErrorAction(message));\n });\n\n dialogInstance.afterClosed().subscribe((node) => {\n if (node) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n this.focusAfterClose(this.createMenuButtonSelector);\n });\n }\n\n editFolder(folder: MinimalNodeEntity, focusedElementOnCloseSelector?: string) {\n if (!folder) {\n return;\n }\n\n const dialog = this.dialogRef.open(FolderDialogComponent, {\n data: {\n folder: folder.entry\n },\n width: '400px'\n });\n\n dialog.componentInstance.error.subscribe((message: string) => {\n this.store.dispatch(new SnackbarErrorAction(message));\n });\n\n dialog.afterClosed().subscribe((node) => {\n if (node) {\n this.nodesApiService.nodeUpdated.next(node);\n }\n this.focusAfterClose(focusedElementOnCloseSelector);\n });\n }\n\n createLibrary(): Observable<string> {\n const dialogInstance = this.dialogRef.open(LibraryDialogComponent, {\n width: '400px'\n });\n\n dialogInstance.componentInstance.error.subscribe((message: string) => {\n this.store.dispatch(new SnackbarErrorAction(message));\n });\n\n return dialogInstance.afterClosed().pipe(\n tap((node) => {\n if (node) {\n this.appHookService.libraryCreated.next(node);\n }\n this.focusAfterClose(this.createMenuButtonSelector);\n }),\n map((node: SiteEntry) => {\n if (node && node.entry && node.entry.guid) {\n return node.entry.guid;\n }\n return null;\n })\n );\n }\n\n deleteLibrary(id: string): void {\n this.contentApi.deleteSite(id).subscribe(\n () => {\n this.appHookService.libraryDeleted.next(id);\n this.store.dispatch(new SnackbarInfoAction('APP.MESSAGES.INFO.LIBRARY_DELETED'));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.DELETE_LIBRARY_FAILED'));\n }\n );\n }\n\n leaveLibrary(siteId: string, focusedElementOnCloseSelector?: string): void {\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n data: {\n title: 'APP.DIALOGS.CONFIRM_LEAVE.TITLE',\n message: 'APP.DIALOGS.CONFIRM_LEAVE.MESSAGE',\n yesLabel: 'APP.DIALOGS.CONFIRM_LEAVE.YES_LABEL',\n noLabel: 'APP.DIALOGS.CONFIRM_LEAVE.NO_LABEL'\n },\n minWidth: '250px'\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result === true) {\n this.contentApi.leaveSite(siteId).subscribe(\n () => {\n this.appHookService.libraryLeft.next(siteId);\n this.store.dispatch(new SnackbarInfoAction('APP.MESSAGES.INFO.LEFT_LIBRARY'));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.LEAVE_LIBRARY_FAILED'));\n }\n );\n }\n this.focusAfterClose(focusedElementOnCloseSelector);\n });\n }\n\n updateLibrary(siteId: string, siteBody: SiteBody) {\n this.contentApi.updateLibrary(siteId, siteBody).subscribe(\n (siteEntry: SiteEntry) => {\n this.appHookService.libraryUpdated.next(siteEntry);\n this.store.dispatch(new SnackbarInfoAction('LIBRARY.SUCCESS.LIBRARY_UPDATED'));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('LIBRARY.ERRORS.LIBRARY_UPDATE_ERROR'));\n }\n );\n }\n\n async unshareNodes(links: Array<MinimalNodeEntity>) {\n const promises = links.map((link) => this.contentApi.deleteSharedLink(link.entry.id).toPromise());\n await Promise.all(promises);\n this.appHookService.linksUnshared.next();\n }\n\n canUpdateNode(node: MinimalNodeEntity | Node): boolean {\n return this.permission.check(node, ['update']);\n }\n\n canUploadContent(folderNode: MinimalNodeEntity | Node): boolean {\n return this.permission.check(folderNode, ['create']);\n }\n\n purgeDeletedNodes(nodes: MinimalNodeEntity[]) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n data: {\n title: 'APP.DIALOGS.CONFIRM_PURGE.TITLE',\n message: 'APP.DIALOGS.CONFIRM_PURGE.MESSAGE',\n yesLabel: 'APP.DIALOGS.CONFIRM_PURGE.YES_LABEL',\n noLabel: 'APP.DIALOGS.CONFIRM_PURGE.NO_LABEL'\n },\n minWidth: '250px'\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result === true) {\n const nodesToDelete: NodeInfo[] = nodes.map((node) => {\n const { name } = node.entry;\n const id = (node as any).entry.nodeId || node.entry.id;\n\n return {\n id,\n name\n };\n });\n this.purgeNodes(nodesToDelete);\n }\n });\n }\n\n restoreDeletedNodes(selection: MinimalNodeEntity[] = []) {\n if (!selection.length) {\n return;\n }\n\n const nodesWithPath = selection.filter((node) => node.entry.path);\n\n if (selection.length && !nodesWithPath.length) {\n const failedStatus = this.processStatus([]);\n failedStatus.fail.push(...selection);\n this.showRestoreNotification(failedStatus);\n this.store.dispatch(new ReloadDocumentListAction());\n return;\n }\n\n let status: DeleteStatus;\n\n forkJoin(nodesWithPath.map((node) => this.restoreNode(node)))\n .pipe(\n tap((restoredNodes) => {\n status = this.processStatus(restoredNodes);\n }),\n mergeMap(() => this.contentApi.getDeletedNodes())\n )\n .subscribe((nodes: DeletedNodesPaging) => {\n const selectedNodes = this.diff(status.fail, selection, false);\n const remainingNodes = this.diff(selectedNodes, nodes.list.entries);\n\n if (!remainingNodes.length) {\n this.showRestoreNotification(status);\n this.store.dispatch(new ReloadDocumentListAction());\n } else {\n this.restoreDeletedNodes(remainingNodes);\n }\n });\n }\n\n copyNodes(nodes: Array<MinimalNodeEntity>, focusedElementOnCloseSelector?: string) {\n zip(this.nodeActionsService.copyNodes(nodes, undefined, focusedElementOnCloseSelector), this.nodeActionsService.contentCopied).subscribe(\n (result) => {\n const [operationResult, newItems] = result;\n this.showCopyMessage(operationResult, nodes, newItems);\n },\n (error) => {\n this.showCopyMessage(error, nodes);\n }\n );\n }\n\n moveNodes(nodes: Array<MinimalNodeEntity>, focusedElementOnCloseSelector?: string) {\n const permissionForMove = '!';\n\n zip(this.nodeActionsService.moveNodes(nodes, permissionForMove, focusedElementOnCloseSelector), this.nodeActionsService.contentMoved).subscribe(\n (result) => {\n const [operationResult, moveResponse] = result;\n this.showMoveMessage(nodes, operationResult, moveResponse);\n\n this.store.dispatch(new ReloadDocumentListAction());\n },\n (error) => {\n this.showMoveMessage(nodes, error);\n }\n );\n }\n\n getErrorMessage(errorObject: { message: any }): string {\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n try {\n const {\n error: { statusCode }\n } = JSON.parse(errorObject.message);\n\n if (statusCode === 409) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.NODE_MOVE';\n } else if (statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n } catch (err) {\n /* Do nothing, keep the original message */\n }\n\n return i18nMessageString;\n }\n\n getNodeInfo(): Observable<MinimalNodeEntryEntity> {\n return this.store.select(getAppSelection).pipe(\n take(1),\n mergeMap(({ file }) => {\n const id = (file as any).entry.nodeId || (file as any).entry.guid;\n if (!id) {\n return of(file.entry);\n } else {\n return this.contentApi.getNodeInfo(id);\n }\n })\n );\n }\n\n unlockNode(node: NodeEntry): Promise<void | NodeEntry> {\n return this.contentApi.unlockNode(node.entry.id).catch(() => {\n this.store.dispatch(\n new SnackbarErrorAction('APP.MESSAGES.ERRORS.UNLOCK_NODE', {\n fileName: node.entry.name\n })\n );\n });\n }\n\n private showCopyMessage(info: any, nodes: Array<MinimalNodeEntity>, newItems?: Array<MinimalNodeEntity>) {\n const numberOfCopiedItems = newItems ? newItems.length : 0;\n const failedItems = nodes.length - numberOfCopiedItems;\n\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n if (typeof info === 'string') {\n if (info.toLowerCase().indexOf('succes') !== -1) {\n let i18MessageSuffix;\n\n if (failedItems) {\n if (numberOfCopiedItems) {\n i18MessageSuffix = numberOfCopiedItems === 1 ? 'PARTIAL_SINGULAR' : 'PARTIAL_PLURAL';\n } else {\n i18MessageSuffix = failedItems === 1 ? 'FAIL_SINGULAR' : 'FAIL_PLURAL';\n }\n } else {\n i18MessageSuffix = numberOfCopiedItems === 1 ? 'SINGULAR' : 'PLURAL';\n }\n\n i18nMessageString = `APP.MESSAGES.INFO.NODE_COPY.${i18MessageSuffix}`;\n }\n } else {\n try {\n const {\n error: { statusCode }\n } = JSON.parse(info.message);\n\n if (statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n } catch {}\n }\n\n const undo = numberOfCopiedItems > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n\n const message = this.translation.instant(i18nMessageString, {\n success: numberOfCopiedItems,\n failed: failedItems\n });\n\n this.notificationService\n .openSnackMessageAction(message, undo, {\n panelClass: 'info-snackbar'\n })\n .onAction()\n .subscribe(() => this.undoCopyNodes(newItems));\n }\n\n private undoCopyNodes(nodes: MinimalNodeEntity[]) {\n const batch = this.nodeActionsService\n .flatten(nodes)\n .filter((item) => item.entry)\n .map((item) => this.contentApi.deleteNode(item.entry.id, { permanent: true }));\n\n forkJoin(...batch).subscribe(\n () => {\n this.appHookService.nodesDeleted.next(null);\n this.store.dispatch(new ReloadDocumentListAction());\n },\n (error) => {\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n let errorJson = null;\n try {\n errorJson = JSON.parse(error.message);\n } catch {}\n\n if (errorJson && errorJson.error && errorJson.error.statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n\n this.store.dispatch(new SnackbarErrorAction(i18nMessageString));\n }\n );\n }\n\n private openVersionManagerDialog(node: any, focusedElementOnCloseSelector?: string) {\n // workaround Shared\n if (node.isFile || node.nodeId) {\n const newVersionUploaderDialogData: NewVersionUploaderDialogData = {\n node,\n showVersionsOnly: true,\n title: 'VERSION.DIALOG.TITLE'\n };\n this.newVersionUploaderService\n .openUploadNewVersionDialog(newVersionUploaderDialogData, { width: '630px', role: 'dialog' }, focusedElementOnCloseSelector)\n .subscribe({\n next: (newVersionUploaderData: NewVersionUploaderData) => {\n switch (newVersionUploaderData.action) {\n case NewVersionUploaderDataAction.refresh:\n this.store.dispatch(new ReloadDocumentListAction());\n break;\n case NewVersionUploaderDataAction.view:\n this.store.dispatch(\n new ViewNodeVersionAction(node.id, newVersionUploaderData.versionId, {\n location: this.router.url\n })\n );\n break;\n default:\n break;\n }\n }\n });\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.PERMISSION'));\n }\n }\n\n private openAspectListDialog(node: any, focusedElementOnCloseSelector?: string) {\n // workaround Shared\n if (node.isFile || node.id) {\n this.nodeAspectService.updateNodeAspects(node.id, focusedElementOnCloseSelector);\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.PERMISSION'));\n }\n }\n\n private undoMoveNodes(moveResponse, selectionParentId: string) {\n const movedNodes = moveResponse && moveResponse['succeeded'] ? moveResponse['succeeded'] : [];\n const partiallyMovedNodes = moveResponse && moveResponse['partiallySucceeded'] ? moveResponse['partiallySucceeded'] : [];\n\n const restoreDeletedNodesBatch = this.nodeActionsService.moveDeletedEntries.map((folderEntry) =>\n this.contentApi.restoreNode(folderEntry.nodeId || folderEntry.id).pipe(map((node) => node.entry))\n );\n\n zip(...restoreDeletedNodesBatch, of(null))\n .pipe(\n mergeMap(() => {\n const nodesToBeMovedBack = [...partiallyMovedNodes, ...movedNodes];\n\n const revertMoveBatch = this.nodeActionsService\n .flatten(nodesToBeMovedBack)\n .filter((node) => node.entry || (node.itemMoved && node.itemMoved.entry))\n .map((node) => {\n if (node.itemMoved) {\n return this.nodeActionsService.moveNodeAction(node.itemMoved.entry, node.initialParentId);\n } else {\n return this.nodeActionsService.moveNodeAction(node.entry, selectionParentId);\n }\n });\n\n return zip(...revertMoveBatch, of(null));\n })\n )\n .subscribe(\n () => {\n this.store.dispatch(new ReloadDocumentListAction());\n },\n (error) => {\n let message = 'APP.MESSAGES.ERRORS.GENERIC';\n\n let errorJson = null;\n try {\n errorJson = JSON.parse(error.message);\n } catch {}\n\n if (errorJson && errorJson.error && errorJson.error.statusCode === 403) {\n message = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n\n this.store.dispatch(new SnackbarErrorAction(message));\n }\n );\n }\n\n deleteNodes(items: MinimalNodeEntity[]): void {\n const batch: Observable<DeletedNodeInfo>[] = [];\n\n items.forEach((node) => {\n batch.push(this.deleteNode(node));\n });\n\n forkJoin(...batch).subscribe((data: DeletedNodeInfo[]) => {\n const status = this.processStatus(data);\n const message = this.getDeleteMessage(status);\n\n if (message && status.someSucceeded) {\n message.userAction = new SnackbarUserAction('APP.ACTIONS.UNDO', new UndoDeleteNodesAction([...status.success]));\n }\n\n this.store.dispatch(message);\n\n if (status.someSucceeded) {\n this.appHookService.nodesDeleted.next();\n this.store.dispatch(new ReloadDocumentListAction());\n }\n this.store.dispatch(new ShowLoaderAction(false));\n });\n }\n\n undoDeleteNodes(items: DeletedNodeInfo[]): void {\n const batch: Observable<DeletedNodeInfo>[] = [];\n\n items.forEach((item) => {\n batch.push(this.undoDeleteNode(item));\n });\n\n forkJoin(...batch).subscribe((data) => {\n const processedData = this.processStatus(data);\n\n if (processedData.fail.length) {\n const message = this.getUndoDeleteMessage(processedData);\n this.store.dispatch(message);\n }\n\n if (processedData.someSucceeded) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n });\n }\n\n private undoDeleteNode(item: DeletedNodeInfo): Observable<DeletedNodeInfo> {\n const { id, name } = item;\n\n return this.contentApi.restoreNode(id).pipe(\n map(() => ({\n id,\n name,\n status: 1\n })),\n catchError(() =>\n of({\n id,\n name,\n status: 0\n })\n )\n );\n }\n\n private getUndoDeleteMessage(status: DeleteStatus): SnackbarAction {\n if (status.someFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_RESTORE_PLURAL', { number: status.fail.length });\n }\n\n if (status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_RESTORE', {\n name: status.fail[0].name\n });\n }\n\n return null;\n }\n\n private restoreNode(node: MinimalNodeEntity): Observable<RestoredNode> {\n const { entry } = node;\n\n return this.contentApi.restoreNode(entry.id).pipe(\n map(() => ({\n status: 1,\n entry\n })),\n catchError((error) => {\n const { statusCode } = JSON.parse(error.message).error;\n\n return of({\n status: 0,\n statusCode,\n entry\n });\n })\n );\n }\n\n private purgeNodes(selection: NodeInfo[] = []) {\n if (!selection.length) {\n return;\n }\n\n const batch = selection.map((node) => this.purgeDeletedNode(node));\n\n forkJoin(batch).subscribe((purgedNodes) => {\n const status = this.processStatus(purgedNodes);\n\n if (status.success.length) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n const message = this.getPurgeMessage(status);\n if (message) {\n this.store.dispatch(message);\n }\n });\n }\n\n private purgeDeletedNode(node: NodeInfo): Observable<DeletedNodeInfo> {\n const { id, name } = node;\n\n return this.contentApi.purgeDeletedNode(id).pipe(\n map(() => ({\n status: 1,\n id,\n name\n })),\n catchError(() =>\n of({\n status: 0,\n id,\n name\n })\n )\n );\n }\n\n private processStatus(data: Array<{ status: number }> = []): DeleteStatus {\n const status = {\n fail: [],\n success: [],\n get someFailed() {\n return !!this.fail.length;\n },\n get someSucceeded() {\n return !!this.success.length;\n },\n get oneFailed() {\n return this.fail.length === 1;\n },\n get oneSucceeded() {\n return this.success.length === 1;\n },\n get allSucceeded() {\n return this.someSucceeded && !this.someFailed;\n },\n get allFailed() {\n return this.someFailed && !this.someSucceeded;\n },\n reset() {\n this.fail = [];\n this.success = [];\n }\n };\n\n return data.reduce((acc, node) => {\n if (node.status) {\n acc.success.push(node);\n } else {\n acc.fail.push(node);\n }\n\n return acc;\n }, status);\n }\n\n private getPurgeMessage(status: DeleteStatus): SnackbarAction {\n if (status.oneSucceeded && status.someFailed && !status.oneFailed) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PARTIAL_SINGULAR', {\n name: status.success[0].name,\n failed: status.fail.length\n });\n }\n\n if (status.someSucceeded && !status.oneSucceeded && status.someFailed) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PARTIAL_PLURAL', {\n number: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.SINGULAR', { name: status.success[0].name });\n }\n\n if (status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_PURGE.SINGULAR', { name: status.fail[0].name });\n }\n\n if (status.allSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PLURAL', { number: status.success.length });\n }\n\n if (status.allFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_PURGE.PLURAL', { number: status.fail.length });\n }\n\n return null;\n }\n\n private showRestoreNotification(status: DeleteStatus): void {\n const message = this.getRestoreMessage(status);\n\n if (message) {\n if (status.oneSucceeded && !status.someFailed) {\n const isSite = this.isSite(status.success[0].entry);\n const path: PathInfoEntity = status.success[0].entry.path;\n const parent = path.elements[path.elements.length - 1];\n const route = isSite ? ['/libraries', parent.id] : ['/personal-files', parent.id];\n\n let navigate;\n\n if (this.isLibraryContent(path)) {\n navigate = new NavigateToParentFolder(status.success[0]);\n } else {\n navigate = new NavigateRouteAction(route);\n }\n\n message.userAction = new SnackbarUserAction('APP.ACTIONS.VIEW', navigate);\n }\n\n this.store.dispatch(message);\n }\n }\n\n private isSite(entry: MinimalNodeEntryEntity): boolean {\n return entry.nodeType === 'st:site';\n }\n\n private isLibraryContent(path: PathInfoEntity): boolean {\n return path && path.elements.length >= 2 && path.elements[1].name === 'Sites';\n }\n\n private getRestoreMessage(status: DeleteStatus): SnackbarAction {\n if (status.someFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.PARTIAL_PLURAL', {\n number: status.fail.length\n });\n }\n\n if (status.oneFailed && status.fail[0].statusCode) {\n if (status.fail[0].statusCode === 409) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.NODE_EXISTS', {\n name: status.fail[0].entry.name\n });\n } else {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.GENERIC', {\n name: status.fail[0].entry.name\n });\n }\n }\n\n if (status.oneFailed && !status.fail[0].statusCode) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.LOCATION_MISSING', {\n name: status.fail[0].entry.name\n });\n }\n\n if (status.allSucceeded && !status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_RESTORE.PLURAL');\n }\n\n if (status.allSucceeded && status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_RESTORE.SINGULAR', {\n name: status.success[0].entry.name\n });\n }\n\n return null;\n }\n\n private diff(selection: any[], list: any[], fromList = true): any {\n const ids = selection.map((item) => item.entry.id);\n\n return list.filter((item) => {\n if (fromList) {\n return ids.includes(item.entry.id) ? item : null;\n } else {\n return !ids.includes(item.entry.id) ? item : null;\n }\n });\n }\n\n private deleteNode(node: any): Observable<DeletedNodeInfo> {\n const { name } = node.entry;\n const id = node.entry.nodeId || node.entry.id;\n\n return this.contentApi.deleteNode(id).pipe(\n map(() => ({\n id,\n name,\n status: 1\n })),\n catchError(() =>\n of({\n id,\n name,\n status: 0\n })\n )\n );\n }\n\n private getDeleteMessage(status: DeleteStatus): SnackbarAction {\n if (status.allFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_DELETION_PLURAL', { number: status.fail.length });\n }\n\n if (status.allSucceeded && !status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.NODE_DELETION.PLURAL', {\n number: status.success.length\n });\n }\n\n if (status.someFailed && status.someSucceeded && !status.oneSucceeded) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_PLURAL', {\n success: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.someFailed && status.oneSucceeded) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_SINGULAR', {\n success: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.oneFailed && !status.someSucceeded) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_DELETION', {\n name: status.fail[0].name\n });\n }\n\n if (status.oneSucceeded && !status.someFailed) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.NODE_DELETION.SINGULAR', { name: status.success[0].name });\n }\n\n return null;\n }\n\n private showMoveMessage(nodes: Array<MinimalNodeEntity>, info: any, moveResponse?: any) {\n const succeeded = moveResponse && moveResponse['succeeded'] ? moveResponse['succeeded'].length : 0;\n const partiallySucceeded = moveResponse && moveResponse['partiallySucceeded'] ? moveResponse['partiallySucceeded'].length : 0;\n const failures = moveResponse && moveResponse['failed'] ? moveResponse['failed'].length : 0;\n\n let successMessage = '';\n let partialSuccessMessage = '';\n let failedMessage = '';\n let errorMessage = '';\n\n if (typeof info === 'string') {\n // in case of success\n if (info.toLowerCase().indexOf('succes') !== -1) {\n const i18nMessageString = 'APP.MESSAGES.INFO.NODE_MOVE.';\n let i18MessageSuffix = '';\n\n if (succeeded) {\n i18MessageSuffix = succeeded === 1 ? 'SINGULAR' : 'PLURAL';\n successMessage = `${i18nMessageString}${i18MessageSuffix}`;\n }\n\n if (partiallySucceeded) {\n i18MessageSuffix = partiallySucceeded === 1 ? 'PARTIAL.SINGULAR' : 'PARTIAL.PLURAL';\n partialSuccessMessage = `${i18nMessageString}${i18MessageSuffix}`;\n }\n\n if (failures) {\n // if moving failed for ALL nodes, emit error\n if (failures === nodes.length) {\n const errors = this.nodeActionsService.flatten(moveResponse['failed']);\n errorMessage = this.getErrorMessage(errors[0]);\n } else {\n i18MessageSuffix = 'PARTIAL.FAIL';\n failedMessage = `${i18nMessageString}${i18MessageSuffix}`;\n }\n }\n } else {\n errorMessage = 'APP.MESSAGES.ERRORS.GENERIC';\n }\n } else {\n errorMessage = this.getErrorMessage(info);\n }\n\n const undo = succeeded + partiallySucceeded > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n failedMessage = errorMessage ? errorMessage : failedMessage;\n\n const beforePartialSuccessMessage = successMessage && partialSuccessMessage ? ' ' : '';\n const beforeFailedMessage = (successMessage || partialSuccessMessage) && failedMessage ? ' ' : '';\n\n const initialParentId = this.nodeActionsService.getEntryParentId(nodes[0].entry);\n\n const messages = this.translation.instant([successMessage, partialSuccessMessage, failedMessage], {\n success: succeeded,\n failed: failures,\n partially: partiallySucceeded\n });\n\n // TODO: review in terms of i18n\n this.notificationService\n .openSnackMessageAction(\n messages[successMessage] + beforePartialSuccessMessage + messages[partialSuccessMessage] + beforeFailedMessage + messages[failedMessage],\n undo,\n {\n panelClass: 'info-snackbar'\n }\n )\n .onAction()\n .subscribe(() => this.undoMoveNodes(moveResponse, initialParentId));\n }\n\n private focusAfterClose(focusedElementSelector: string): void {\n if (focusedElementSelector) {\n document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, OnDestroy, OnInit, HostListener } from '@angular/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\n\n@Directive({\n selector: '[acaDocumentList]'\n})\nexport class DocumentListDirective implements OnInit, OnDestroy {\n private isLibrary = false;\n selectedNode: MinimalNodeEntity;\n\n onDestroy$ = new Subject<boolean>();\n\n get sortingPreferenceKey(): string {\n return this.route.snapshot.data.sortingPreferenceKey;\n }\n\n constructor(\n private store: Store<any>,\n private documentList: DocumentListComponent,\n private preferences: UserPreferencesService,\n private route: ActivatedRoute,\n private router: Router,\n private appHookService: AppHookService\n ) {}\n\n ngOnInit() {\n this.documentList.stickyHeader = true;\n this.documentList.includeFields = ['isFavorite', 'aspectNames', 'definition'];\n this.isLibrary =\n this.documentList.currentFolderId === '-mysites-' ||\n // workaround for custom node list\n this.router.url.endsWith('/libraries') ||\n this.router.url.startsWith('/search-libraries');\n\n if (this.sortingPreferenceKey) {\n const current = this.documentList.sorting;\n\n const key = this.preferences.get(`${this.sortingPreferenceKey}.sorting.key`, current[0]);\n const direction = this.preferences.get(`${this.sortingPreferenceKey}.sorting.direction`, current[1]);\n\n this.documentList.sorting = [key, direction];\n // TODO: bug in ADF, the `sorting` binding is not updated when changed from code\n this.documentList.data.setSorting({ key, direction });\n }\n\n this.documentList.ready\n .pipe(\n filter(() => !this.router.url.includes('viewer:view')),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => this.onReady());\n\n this.appHookService.reload.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.reload(this.selectedNode);\n });\n\n this.appHookService.reset.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.reset();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n @HostListener('sorting-changed', ['$event'])\n onSortingChanged(event: CustomEvent) {\n if (this.sortingPreferenceKey) {\n this.preferences.set(`${this.sortingPreferenceKey}.sorting.key`, event.detail.key);\n this.preferences.set(`${this.sortingPreferenceKey}.sorting.direction`, event.detail.direction);\n }\n }\n\n @HostListener('node-select', ['$event'])\n onNodeSelect(event: CustomEvent) {\n if (!!event.detail && !!event.detail.node) {\n this.updateSelection();\n this.selectedNode = event.detail.node;\n }\n }\n\n @HostListener('node-unselect')\n onNodeUnselect() {\n this.updateSelection();\n }\n\n onReady() {\n this.updateSelection();\n }\n\n private updateSelection() {\n const selection = this.documentList.selection.map((node) => {\n node['isLibrary'] = this.isLibrary;\n return node;\n });\n\n this.store.dispatch(new SetSelectedNodesAction(selection));\n }\n\n private reload(selectedNode?: MinimalNodeEntity) {\n this.documentList.resetSelection();\n if (selectedNode) {\n this.store.dispatch(new SetSelectedNodesAction([selectedNode]));\n } else {\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n this.documentList.reload();\n }\n\n private reset() {\n this.selectedNode = null;\n this.documentList.resetSelection();\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ShowHeaderMode } from '@alfresco/adf-core';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { MinimalNodeEntity, MinimalNodeEntryEntity, PathElement, PathElementEntity } from '@alfresco/js-api';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { NodeActionsService } from '../../services/node-actions.service';\nimport { AcaFileAutoDownloadService, AppExtensionService, ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { SetCurrentFolderAction, isAdmin, AppStore, UploadFileVersionAction, showLoaderSelector } from '@alfresco/aca-shared/store';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { FilterSearch, ShareDataRow, UploadService, FileUploadEvent } from '@alfresco/adf-content-services';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\nimport { Observable } from 'rxjs';\n\n@Component({\n templateUrl: './files.component.html'\n})\nexport class FilesComponent extends PageComponent implements OnInit, OnDestroy {\n isValidPath = true;\n isSmallScreen = false;\n isAdmin = false;\n selectedNode: MinimalNodeEntity;\n queryParams = null;\n\n showLoader$: Observable<boolean>;\n private nodePath: PathElement[];\n\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private contentApi: ContentApiService,\n store: Store<AppStore>,\n private nodeActionsService: NodeActionsService,\n private uploadService: UploadService,\n content: ContentManagementService,\n extensions: AppExtensionService,\n private breakpointObserver: BreakpointObserver,\n fileAutoDownloadService: AcaFileAutoDownloadService\n ) {\n super(store, extensions, content, fileAutoDownloadService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n const { route, nodeActionsService, uploadService } = this;\n const { data } = route.snapshot;\n\n this.title = data.title;\n\n this.showLoader$ = this.store.select(showLoaderSelector);\n route.queryParamMap.subscribe((queryMap: Params) => {\n this.queryParams = queryMap.params;\n });\n\n route.params.subscribe(({ folderId }: Params) => {\n const nodeId = folderId || data.defaultNodeId;\n\n this.contentApi.getNode(nodeId).subscribe(\n (node) => {\n this.isValidPath = true;\n\n if (node.entry && node.entry.isFolder) {\n this.updateCurrentNode(node.entry);\n } else {\n this.router.navigate(['/personal-files', node.entry.parentId], {\n replaceUrl: true\n });\n }\n },\n () => (this.isValidPath = false)\n );\n });\n\n this.subscriptions = this.subscriptions.concat([\n nodeActionsService.contentCopied.subscribe((nodes) => this.onContentCopied(nodes)),\n uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),\n uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n ]);\n\n this.store\n .select(isAdmin)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((value) => {\n this.isAdmin = value;\n });\n\n this.columns = this.extensions.documentListPresets.files || [];\n }\n\n ngOnDestroy() {\n this.store.dispatch(new SetCurrentFolderAction(null));\n super.ngOnDestroy();\n }\n\n navigate(nodeId: string = null) {\n const currentNodeId = this.route.snapshot.paramMap.get('folderId');\n const urlWithoutParams = decodeURIComponent(this.router.url).split('?')[0];\n const urlToNavigate: string[] = this.getUrlToNavigate(urlWithoutParams, currentNodeId, nodeId);\n this.router.navigate(urlToNavigate);\n }\n\n private getUrlToNavigate(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n return currentNodeId ? this.getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) : this.appendNextNodeIdToUrl(currentURL, nextNodeId);\n }\n\n private getNextNodeUrlToNavigate(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n const urlToNavigate: string[] =\n nextNodeId && !this.isRootNode(nextNodeId)\n ? this.replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId)\n : this.removeNodeIdFromUrl(currentURL, currentNodeId);\n urlToNavigate.shift();\n return urlToNavigate;\n }\n\n private replaceCurrentNodeIdWithNextNodeId(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n const nextNodeUrlToNavigate = currentURL.split('/');\n const index = nextNodeUrlToNavigate.indexOf(currentNodeId);\n if (index > 0) {\n nextNodeUrlToNavigate[index] = nextNodeId;\n }\n return nextNodeUrlToNavigate;\n }\n\n private removeNodeIdFromUrl(currentURL: string, currentNodeId: string): string[] {\n const rootUrl: string[] = currentURL.replace(currentNodeId, '').split('/');\n rootUrl.pop();\n return rootUrl;\n }\n\n private appendNextNodeIdToUrl(currentURL: string, nodeId: string): string[] {\n const navigateToNodeUrl = currentURL.split('/');\n if (nodeId && !this.isRootNode(nodeId)) {\n navigateToNodeUrl.push(nodeId);\n }\n navigateToNodeUrl.shift();\n return navigateToNodeUrl;\n }\n\n onUploadNewVersion(ev: CustomEvent) {\n this.store.dispatch(new UploadFileVersionAction(ev));\n }\n\n navigateTo(node: MinimalNodeEntity) {\n if (node && node.entry) {\n this.selectedNode = node;\n const { isFolder } = node.entry;\n\n if (isFolder) {\n let id: string;\n\n if (node.entry.nodeType === 'app:folderlink') {\n id = node.entry.properties['cm:destination'];\n } else {\n id = node.entry.id;\n }\n\n this.documentList.resetNewFolderPagination();\n this.navigate(id);\n return;\n }\n\n this.showPreview(node, { location: this.router.url });\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n\n onBreadcrumbNavigate(route: PathElementEntity) {\n this.documentList.resetNewFolderPagination();\n\n // todo: review this approach once 5.2.3 is out\n if (this.nodePath && this.nodePath.length > 2) {\n if (this.nodePath[1].name === 'Sites' && this.nodePath[2].id === route.id) {\n return this.navigate(this.nodePath[3].id);\n }\n }\n this.navigate(route.id);\n }\n\n onFileUploadedEvent(event: FileUploadEvent) {\n const node: MinimalNodeEntity = event.file.data;\n\n // check root and child nodes\n if (node && node.entry && node.entry.parentId === this.getParentNodeId()) {\n this.reload(this.selectedNode);\n return;\n }\n\n // check the child nodes to show dropped folder\n if (event && event.file.options.parentId === this.getParentNodeId()) {\n this.displayFolderParent(event.file.options.path, 0);\n return;\n }\n\n if (event && event.file.options.parentId) {\n if (this.nodePath) {\n const correspondingNodePath = this.nodePath.find((pathItem) => pathItem.id === event.file.options.parentId);\n\n // check if the current folder has the 'trigger-upload-folder' as one of its parents\n if (correspondingNodePath) {\n const correspondingIndex = this.nodePath.length - this.nodePath.indexOf(correspondingNodePath);\n this.displayFolderParent(event.file.options.path, correspondingIndex);\n }\n }\n }\n }\n\n displayFolderParent(filePath = '', index: number) {\n const parentName = filePath.split('/')[index];\n const currentFoldersDisplayed = (this.documentList.data.getRows() as ShareDataRow[]) || [];\n\n const alreadyDisplayedParentFolder = currentFoldersDisplayed.find((row) => row.node.entry.isFolder && row.node.entry.name === parentName);\n\n if (alreadyDisplayedParentFolder) {\n return;\n }\n this.reload(this.selectedNode);\n }\n\n onContentCopied(nodes: MinimalNodeEntity[]) {\n const newNode = nodes.find((node) => node && node.entry && node.entry.parentId === this.getParentNodeId());\n if (newNode) {\n this.reload(this.selectedNode);\n }\n }\n\n // todo: review this approach once 5.2.3 is out\n private async updateCurrentNode(node: MinimalNodeEntryEntity) {\n this.nodePath = null;\n\n if (node && node.path && node.path.elements) {\n const elements = node.path.elements;\n\n this.nodePath = elements.map((pathElement) => Object.assign({}, pathElement));\n\n if (elements.length > 1) {\n if (elements[1].name === 'User Homes') {\n if (!this.isAdmin) {\n elements.splice(0, 2);\n }\n } else if (elements[1].name === 'Sites') {\n await this.normalizeSitePath(node);\n }\n }\n }\n\n this.node = node;\n this.store.dispatch(new SetCurrentFolderAction(node));\n }\n\n // todo: review this approach once 5.2.3 is out\n private async normalizeSitePath(node: MinimalNodeEntryEntity) {\n const elements = node.path.elements;\n\n // remove 'Sites'\n elements.splice(1, 1);\n\n if (this.isSiteContainer(node)) {\n // rename 'documentLibrary' entry to the target site display name\n // clicking on the breadcrumb entry loads the site content\n const parentNode = await this.contentApi.getNodeInfo(node.parentId).toPromise();\n node.name = parentNode.properties['cm:title'] || parentNode.name;\n\n // remove the site entry\n elements.splice(1, 1);\n } else {\n // remove 'documentLibrary' in the middle of the path\n const docLib = elements.findIndex((el) => el.name === 'documentLibrary');\n if (docLib > -1) {\n const siteFragment = elements[docLib - 1];\n const siteNode = await this.contentApi.getNodeInfo(siteFragment.id).toPromise();\n\n // apply Site Name to the parent fragment\n siteFragment.name = siteNode.properties['cm:title'] || siteNode.name;\n elements.splice(docLib, 1);\n }\n }\n }\n\n isSiteContainer(node: MinimalNodeEntryEntity): boolean {\n if (node && node.aspectNames && node.aspectNames.length > 0) {\n return node.aspectNames.indexOf('st:siteContainer') >= 0;\n }\n return false;\n }\n\n isRootNode(nodeId: string): boolean {\n if (this.node && this.node.path && this.node.path.elements && this.node.path.elements.length > 0) {\n return this.node.path.elements[0].id === nodeId;\n }\n return false;\n }\n\n onFilterSelected(activeFilters: FilterSearch[]) {\n if (activeFilters.length) {\n this.showHeader = ShowHeaderMode.Always;\n this.navigateToFilter(activeFilters);\n } else {\n this.router.navigate(['.'], { relativeTo: this.route });\n this.showHeader = ShowHeaderMode.Data;\n this.onAllFilterCleared();\n }\n }\n\n navigateToFilter(activeFilters: FilterSearch[]) {\n const objectFromMap = {};\n activeFilters.forEach((filter: FilterSearch) => {\n let paramValue;\n if (filter.value && filter.value.from && filter.value.to) {\n paramValue = `${filter.value.from}||${filter.value.to}`;\n } else {\n paramValue = filter.value;\n }\n objectFromMap[filter.key] = paramValue;\n });\n\n this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });\n }\n\n isFilterHeaderActive(): boolean {\n return this.showHeader === ShowHeaderMode.Always;\n }\n\n onError() {\n this.isValidPath = false;\n }\n}\n","<aca-page-layout [hasError]=\"!isValidPath\">\n <aca-page-layout-header>\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-error>\n <aca-generic-error></aca-generic-error>\n </aca-page-layout-error>\n\n <aca-page-layout-content>\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n selectionMode=\"multiple\"\n [currentFolderId]=\"node?.id\"\n [loading]=\"true\"\n [showHeader]=\"showHeader\"\n [node]=\"nodeResult\"\n [allowDropFiles]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['name', 'ASC']\"\n [imageResolver]=\"imageResolver\"\n [headerFilters]=\"true\"\n [filterValue]=\"queryParams\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (sorting-changed)=\"onSortingChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive()\">\n <ng-container>\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </adf-upload-drag-area>\n </div>\n\n <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { SiteEntry } from '@alfresco/js-api';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { AppExtensionService, AppHookService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './libraries.component.html'\n})\nexport class LibrariesComponent extends PageComponent implements OnInit {\n isSmallScreen = false;\n\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n content: ContentManagementService,\n store: Store<AppStore>,\n extensions: AppExtensionService,\n private appHookService: AppHookService,\n private breakpointObserver: BreakpointObserver\n ) {\n super(store, extensions, content);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions.push(\n this.appHookService.libraryDeleted.subscribe(() => this.reload()),\n this.appHookService.libraryUpdated.subscribe(() => this.reload()),\n this.appHookService.libraryLeft.subscribe(() => this.reload()),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n );\n\n this.columns = this.extensions.documentListPresets.libraries || [];\n }\n\n navigateTo(node: SiteEntry) {\n if (node && node.entry && node.entry.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n currentFolderId=\"-mysites-\"\n selectionMode=\"single\"\n [navigate]=\"false\"\n [sorting]=\"['title', 'asc']\"\n sortingMode=\"client\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TITLE'\"\n subtitle=\"APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TEXT\"\n >\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"$any(selection).library\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SiteEntry, FavoritePaging, Pagination } from '@alfresco/js-api';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { AppExtensionService, AppHookService, ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './favorite-libraries.component.html'\n})\nexport class FavoriteLibrariesComponent extends PageComponent implements OnInit {\n pagination: Pagination = new Pagination({\n skipCount: 0,\n maxItems: 25,\n totalItems: 0\n });\n isLoading = false;\n list: FavoritePaging;\n isSmallScreen = false;\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n content: ContentManagementService,\n store: Store<any>,\n extensions: AppExtensionService,\n private appHookService: AppHookService,\n private contentApiService: ContentApiService,\n private breakpointObserver: BreakpointObserver,\n private preferences: UserPreferencesService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(store, extensions, content);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.getList({ maxItems: this.preferences.paginationSize });\n\n this.subscriptions = this.subscriptions.concat([\n this.appHookService.libraryDeleted.subscribe(() => this.reloadList()),\n this.appHookService.libraryUpdated.subscribe(() => this.reloadList()),\n this.appHookService.libraryJoined.subscribe(() => this.reloadList()),\n this.appHookService.libraryLeft.subscribe(() => this.reloadList()),\n this.appHookService.favoriteLibraryToggle.subscribe(() => this.reloadList()),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n ]);\n this.columns = this.extensions.documentListPresets.favoriteLibraries || [];\n }\n\n navigateTo(node: SiteEntry) {\n if (node && node.entry && node.entry.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid, 'favorite/libraries'));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n\n onChangePageSize(pagination: Pagination) {\n this.preferences.paginationSize = pagination.maxItems;\n this.getList(pagination);\n }\n\n onChange(pagination: Pagination) {\n this.getList(pagination);\n }\n\n private getList(pagination: Pagination) {\n this.isLoading = true;\n this.contentApiService.getFavoriteLibraries('-me-', pagination).subscribe(\n (favoriteLibraries: FavoritePaging) => {\n this.list = favoriteLibraries;\n this.pagination = favoriteLibraries.list.pagination;\n this.isLoading = false;\n this.changeDetectorRef.detectChanges();\n },\n () => {\n this.list = null;\n this.pagination = null;\n this.isLoading = false;\n }\n );\n }\n\n private reloadList() {\n this.reload();\n this.getList(this.pagination);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [node]=\"$any(list)\"\n [loading]=\"isLoading\"\n selectionMode=\"single\"\n [navigate]=\"false\"\n [sorting]=\"['title', 'asc']\"\n sortingMode=\"client\"\n (node-dblclick)=\"handleNodeClick($event)\"\n [imageResolver]=\"imageResolver\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TITLE'\"\n subtitle=\"APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TEXT\"\n >\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination\n [target]=\"documentList\"\n [pagination]=\"pagination\"\n (changePageSize)=\"onChangePageSize($event)\"\n (changePageNumber)=\"onChange($event)\"\n (nextPage)=\"onChange($event)\"\n (prevPage)=\"onChange($event)\"\n >\n </adf-pagination>\n </div>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { PeopleApi, Person } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { throwError } from 'rxjs';\n\n@Component({\n selector: 'app-view-profile',\n templateUrl: './view-profile.component.html',\n styleUrls: ['./view-profile.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ViewProfileComponent implements OnInit {\n peopleApi: PeopleApi;\n\n profileForm: FormGroup;\n personDetails: Person;\n\n generalSectionDropdown = true;\n generalSectionButtonsToggle = true;\n\n loginSectionDropdown = false;\n loginSectionButtonsToggle = true;\n passwordSectionDropdown = false;\n\n contactSectionDropdown = false;\n contactSectionButtonsToggle = true;\n\n constructor(private router: Router, apiService: AlfrescoApiService) {\n this.peopleApi = new PeopleApi(apiService.getInstance());\n }\n\n ngOnInit() {\n this.populateForm(this.personDetails);\n this.peopleApi\n .getPerson('-me-')\n .then((userInfo) => {\n this.personDetails = userInfo?.entry;\n this.populateForm(userInfo?.entry);\n })\n .catch((error) => {\n throwError(error);\n });\n }\n\n populateForm(userInfo: Person) {\n this.profileForm = new FormGroup({\n jobTitle: new FormControl(userInfo?.jobTitle || ''),\n location: new FormControl(userInfo?.location || ''),\n telephone: new FormControl(userInfo?.telephone || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n mobile: new FormControl(userInfo?.mobile || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n oldPassword: new FormControl(''),\n newPassword: new FormControl(''),\n verifyPassword: new FormControl(''),\n companyName: new FormControl(userInfo?.company?.organization || ''),\n companyPostCode: new FormControl(userInfo?.company?.postcode || ''),\n companyAddress: new FormControl(userInfo?.company?.address1 || ''),\n companyTelephone: new FormControl(userInfo?.company?.telephone || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n companyEmail: new FormControl(userInfo?.company?.email || '', [Validators.email])\n });\n }\n\n navigateToPersonalFiles() {\n this.router.navigate(['/personal-files'], {\n replaceUrl: true\n });\n }\n\n toggleGeneralDropdown() {\n this.generalSectionDropdown = !this.generalSectionDropdown;\n\n if (!this.generalSectionDropdown) {\n this.generalSectionButtonsToggle = true;\n }\n }\n\n toggleGeneralButtons() {\n this.generalSectionButtonsToggle = !this.generalSectionButtonsToggle;\n\n if (!this.generalSectionButtonsToggle) {\n this.generalSectionDropdown = true;\n }\n }\n\n onSaveGeneralData(event) {\n this.generalSectionButtonsToggle = !this.generalSectionButtonsToggle;\n this.updatePersonDetails(event);\n }\n\n onSaveLoginData() {\n this.passwordSectionDropdown = !this.passwordSectionDropdown;\n this.loginSectionButtonsToggle = !this.loginSectionButtonsToggle;\n }\n\n onSaveCompanyData(event) {\n this.contactSectionButtonsToggle = !this.contactSectionButtonsToggle;\n this.updatePersonDetails(event);\n }\n\n toggleLoginDropdown() {\n this.loginSectionDropdown = !this.loginSectionDropdown;\n\n if (!this.loginSectionDropdown) {\n this.loginSectionButtonsToggle = true;\n }\n }\n\n toggleLoginButtons() {\n this.loginSectionButtonsToggle = !this.loginSectionButtonsToggle;\n this.passwordSectionDropdown = !this.passwordSectionDropdown;\n\n if (!this.loginSectionButtonsToggle) {\n this.loginSectionDropdown = true;\n this.passwordSectionDropdown = true;\n }\n }\n\n toggleContactDropdown() {\n this.contactSectionDropdown = !this.contactSectionDropdown;\n\n if (!this.contactSectionDropdown) {\n this.contactSectionButtonsToggle = true;\n }\n }\n\n toggleContactButtons() {\n this.contactSectionButtonsToggle = !this.contactSectionButtonsToggle;\n\n if (!this.contactSectionButtonsToggle) {\n this.contactSectionDropdown = true;\n }\n }\n\n updatePersonDetails(event) {\n if (this.profileForm.valid) {\n this.peopleApi\n .updatePerson('-me-', {\n jobTitle: event.value.jobTitle,\n location: event.value.location,\n telephone: event.value.telephone,\n mobile: event.value.mobile,\n company: {\n organization: event.value.companyName,\n postcode: event.value.companyPostCode,\n address1: event.value.companyAddress,\n telephone: event.value.companyTelephone,\n email: event.value.companyEmail\n }\n })\n .then((person) => {\n this.personDetails = person?.entry;\n this.populateForm(person?.entry);\n })\n .catch((error) => {\n this.populateForm(this.personDetails);\n throwError(error);\n });\n } else {\n this.populateForm(this.personDetails);\n }\n }\n\n isSaveButtonDisabled(): boolean {\n return this.profileForm.invalid;\n }\n}\n","<div class=\"app-profile-container\">\n <div class=\"app-profile-row\">\n <div class=\"app-profile-title\">\n <mat-icon class=\"app-profile-icon\" (click)=\"navigateToPersonalFiles()\" id=\"backButton\">arrow_back</mat-icon>\n <h3 class=\"app-profile\">{{'APP.EDIT_PROFILE.MY_PROFILE' | translate}}</h3>\n </div>\n <mat-divider class=\"app-mat-divider\"></mat-divider>\n </div>\n <div class=\"app-profile-general-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleGeneralDropdown()\" id=\"toggle-general-dropdown\">\n {{ generalSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.GENERAL' | translate}}</h4>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"generalSectionButtonsToggle\">\n <button mat-raised-button (click)=\"toggleGeneralButtons()\" id=\"general-edit-button\"\n class=\"app-general-edit\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!generalSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"general-cancel-button\"\n (click)=\"toggleGeneralButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"general-save-button\" [disabled]=\"isSaveButtonDisabled()\"\n (click)=\"onSaveGeneralData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-mat-divider\" *ngIf=\"generalSectionDropdown\"></mat-divider>\n <div *ngIf=\"generalSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.FIRST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.firstName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LAST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.lastName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.JOB_TITLE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.jobTitle}}</p>\n <input type=\"text\" value=\"\" formControlName=\"jobTitle\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LOCATION' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.location}}</p>\n <input type=\"text\" value=\"\" formControlName=\"location\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.telephone}}</p>\n <input type=\"tel\" name=\"Telephone\" value=\"\" formControlName=\"telephone\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('telephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.MOBILE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.mobile}}</p>\n <input type=\"tel\" value=\"\" formControlName=\"mobile\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('mobile').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"app-profile-contact-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general profile-general-bottom-radius\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleContactDropdown()\" id=\"toggle-contact-dropdown\">\n {{ contactSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.COMPANY_DETAILS' | translate}}</h4>\n </div>\n\n <div class=\"app-general-edit-btn\" *ngIf=\"contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-edit\" id=\"contact-edit-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"contact-cancel-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"contact-save-button\" [disabled]=\"isSaveButtonDisabled()\"\n (click)=\"onSaveCompanyData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-mat-divider\" *ngIf=\"contactSectionDropdown\"></mat-divider>\n <div *ngIf=\"contactSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.organization}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyName\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.ADDRESS' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.address1}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyAddress\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.POSTCODE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.postcode}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyPostCode\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.telephone}}</p>\n <input type=\"tel\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyTelephone\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyTelephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.EMAIL' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.email}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyEmail\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyEmail').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n</div>","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ViewProfileComponent } from './view-profile.component';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild()],\n declarations: [ViewProfileComponent]\n})\nexport class ViewProfileModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppState, AppStore } from '@alfresco/aca-shared/store';\n\nexport const INITIAL_APP_STATE: AppState = {\n appName: 'Alfresco Content Application',\n logoPath: 'assets/images/alfresco-logo-white.svg',\n customCssPath: '',\n webFontPath: '',\n sharedUrl: '',\n user: {\n isAdmin: null,\n id: null,\n firstName: '',\n lastName: ''\n },\n selection: {\n nodes: [],\n libraries: [],\n isEmpty: true,\n count: 0\n },\n navigation: {\n currentFolder: null\n },\n currentNodeVersion: null,\n infoDrawerOpened: false,\n infoDrawerPreview: false,\n infoDrawerMetadataAspect: '',\n showFacetFilter: true,\n fileUploadingDialog: true,\n documentDisplayMode: 'list',\n showLoader: false,\n repository: {\n status: {\n isQuickShareEnabled: true\n }\n } as any\n};\n\nexport const INITIAL_STATE: AppStore = {\n app: INITIAL_APP_STATE\n};\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Action } from '@ngrx/store';\nimport {\n AppState,\n NodeActionTypes,\n SetUserProfileAction,\n SetCurrentFolderAction,\n SetCurrentUrlAction,\n SetInitialStateAction,\n SetSelectedNodesAction,\n SetRepositoryInfoAction,\n SetInfoDrawerStateAction,\n SetInfoDrawerMetadataAspectAction,\n SetCurrentNodeVersionAction,\n SetFileUploadingDialogAction,\n SetInfoDrawerPreviewStateAction,\n AppActionTypes,\n ShowLoaderAction\n} from '@alfresco/aca-shared/store';\nimport { INITIAL_APP_STATE } from '../initial-state';\n\nexport function appReducer(state: AppState = INITIAL_APP_STATE, action: Action): AppState {\n let newState: AppState;\n\n switch (action.type) {\n case AppActionTypes.SetInitialState:\n newState = Object.assign({}, (action as SetInitialStateAction).payload);\n break;\n case NodeActionTypes.SetSelection:\n newState = updateSelectedNodes(state, action as SetSelectedNodesAction);\n break;\n case AppActionTypes.SetUserProfile:\n newState = updateUser(state, action as SetUserProfileAction);\n break;\n case AppActionTypes.SetCurrentFolder:\n newState = updateCurrentFolder(state, action as SetCurrentFolderAction);\n break;\n case AppActionTypes.SetCurrentVersion:\n newState = updateCurrentNodeVersion(state, action as SetCurrentNodeVersionAction);\n break;\n case AppActionTypes.SetCurrentUrl:\n newState = updateCurrentUrl(state, action as SetCurrentUrlAction);\n break;\n case AppActionTypes.ToggleInfoDrawer:\n newState = toggleInfoDrawer(state);\n break;\n case AppActionTypes.SetInfoDrawerState:\n newState = setInfoDrawer(state, action as SetInfoDrawerStateAction);\n break;\n case AppActionTypes.SetInfoDrawerMetadataAspect:\n newState = setInfoDrawerAspect(state, action as SetInfoDrawerMetadataAspectAction);\n break;\n case AppActionTypes.ToggleDocumentDisplayMode:\n newState = toggleDocumentDisplayMode(state);\n break;\n case AppActionTypes.SetRepositoryInfo:\n newState = updateRepositoryStatus(state, action as SetRepositoryInfoAction);\n break;\n case AppActionTypes.SetFileUploadingDialog:\n newState = setUploadDialogVisibility(state, action as SetFileUploadingDialogAction);\n break;\n case AppActionTypes.ShowInfoDrawerPreview:\n newState = showInfoDrawerPreview(state);\n break;\n case AppActionTypes.SetInfoDrawerPreviewState:\n newState = setInfoDrawerPreview(state, action as SetInfoDrawerPreviewStateAction);\n break;\n case AppActionTypes.ShowLoaderAction:\n newState = showLoader(state, action as ShowLoaderAction);\n break;\n default:\n newState = { ...state };\n }\n\n return newState;\n}\n\nfunction updateUser(state: AppState, action: SetUserProfileAction): AppState {\n const newState = { ...state };\n const user = action.payload.person;\n const groups = [...(action.payload.groups || [])];\n\n const id = user.id;\n const firstName = user.firstName || '';\n const lastName = user.lastName || '';\n const userName = `${firstName} ${lastName}`;\n const initials = [firstName[0], lastName[0]].join('');\n\n const capabilities = user.capabilities;\n const isAdmin = capabilities ? capabilities.isAdmin : true;\n\n newState.user = {\n firstName,\n lastName,\n userName,\n initials,\n isAdmin,\n id,\n groups\n };\n\n return newState;\n}\n\nfunction updateCurrentFolder(state: AppState, action: SetCurrentFolderAction) {\n const newState = { ...state };\n newState.navigation.currentFolder = action.payload;\n return newState;\n}\n\nfunction updateCurrentNodeVersion(state: AppState, action: SetCurrentNodeVersionAction) {\n const newState = { ...state };\n newState.currentNodeVersion = action.payload;\n return newState;\n}\n\nfunction updateCurrentUrl(state: AppState, action: SetCurrentUrlAction) {\n const newState = { ...state };\n newState.navigation.url = action.payload;\n return newState;\n}\n\nfunction toggleInfoDrawer(state: AppState) {\n const newState = { ...state };\n\n let value = state.infoDrawerOpened;\n if (state.selection.isEmpty) {\n value = false;\n } else {\n value = !value;\n }\n\n newState.infoDrawerOpened = value;\n\n return newState;\n}\n\nfunction showInfoDrawerPreview(state: AppState) {\n const newState = { ...state };\n\n let value = state.infoDrawerPreview;\n if (state.selection.isEmpty) {\n value = false;\n } else {\n value = !value;\n }\n\n newState.infoDrawerPreview = value;\n\n return newState;\n}\n\nconst toggleDocumentDisplayMode = (state: AppState) => ({\n ...state,\n documentDisplayMode: state.documentDisplayMode === 'list' ? 'gallery' : 'list'\n});\n\nfunction updateSelectedNodes(state: AppState, action: SetSelectedNodesAction): AppState {\n const newState = { ...state };\n const nodes = [...action.payload];\n const count = nodes.length;\n const isEmpty = nodes.length === 0;\n\n let first = null;\n let last = null;\n let file = null;\n let folder = null;\n let library = null;\n\n if (nodes.length > 0) {\n first = nodes[0];\n last = nodes[nodes.length - 1];\n\n if (nodes.length === 1) {\n file = nodes.find(\n (entity: any) =>\n // workaround Shared\n !!(entity.entry.isFile || entity.entry.nodeId || entity.entry.sharedByUser)\n );\n folder = nodes.find((entity: any) => entity.entry.isFolder);\n }\n }\n\n const libraries: any[] = [...action.payload].filter((node: any) => node.isLibrary);\n if (libraries.length === 1) {\n library = libraries[0] as any;\n }\n\n if (isEmpty) {\n newState.infoDrawerOpened = false;\n }\n\n newState.selection = {\n count,\n nodes,\n isEmpty,\n first,\n last,\n file,\n folder,\n libraries,\n library\n };\n return newState;\n}\n\nconst setInfoDrawer = (state: AppState, action: SetInfoDrawerStateAction) => ({\n ...state,\n infoDrawerOpened: action.payload\n});\n\nconst setInfoDrawerPreview = (state: AppState, action: SetInfoDrawerPreviewStateAction) => ({\n ...state,\n infoDrawerPreview: action.payload\n});\n\nconst setInfoDrawerAspect = (state: AppState, action: SetInfoDrawerMetadataAspectAction) => ({\n ...state,\n infoDrawerMetadataAspect: action.payload\n});\n\nfunction updateRepositoryStatus(state: AppState, action: SetRepositoryInfoAction) {\n const newState = { ...state };\n newState.repository = action.payload;\n return newState;\n}\n\nfunction setUploadDialogVisibility(state: AppState, action: SetFileUploadingDialogAction): AppState {\n const newState = { ...state };\n newState.fileUploadingDialog = action.payload;\n return newState;\n}\n\nfunction showLoader(state: AppState, action: ShowLoaderAction): AppState {\n const newState = { ...state };\n newState.showLoader = action.payload;\n return newState;\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { AppActionTypes, LogoutAction, ReloadDocumentListAction, ResetSelectionAction } from '@alfresco/aca-shared/store';\nimport { AuthenticationService } from '@alfresco/adf-core';\nimport { Router } from '@angular/router';\nimport { AppHookService } from '@alfresco/aca-shared';\n\n@Injectable()\nexport class AppEffects {\n constructor(private actions$: Actions, private auth: AuthenticationService, private router: Router, private appHookService: AppHookService) {}\n\n reload = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ReloadDocumentListAction>(AppActionTypes.ReloadDocumentList),\n map((action) => {\n this.appHookService.reload.next(action);\n })\n ),\n { dispatch: false }\n );\n\n resetSelection = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ResetSelectionAction>(AppActionTypes.ResetSelection),\n map((action) => {\n this.appHookService.reset.next(action);\n })\n ),\n { dispatch: false }\n );\n\n logout$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<LogoutAction>(AppActionTypes.Logout),\n map(() => {\n this.auth.logout().subscribe(\n () => this.redirectToLogin(),\n () => this.redirectToLogin()\n );\n })\n ),\n { dispatch: false }\n );\n\n private redirectToLogin(): Promise<boolean> {\n return this.router.navigate(['login']);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AppStore, getRepositoryStatus } from '@alfresco/aca-shared/store';\nimport { take, map, catchError, mergeMap } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { DirectAccessUrlEntry } from '@alfresco/js-api';\nimport { ContentVersionService } from '@alfresco/adf-content-services';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\n\n@Injectable({ providedIn: 'root' })\nexport class ContentUrlService extends ContentVersionService {\n constructor(private store: Store<AppStore>, private contentApiService: ContentApiService, alfrescoApiService: AlfrescoApiService) {\n super(alfrescoApiService);\n }\n\n getNodeContentUrl(nodeId: string, attachment = true): Observable<string> {\n return this.isDirectAccessUrlEnabled().pipe(\n mergeMap((dauEnabled) => {\n if (dauEnabled) {\n return this.contentApiService.requestNodeDirectAccessUrl(nodeId).pipe(\n map((dauObj: DirectAccessUrlEntry) => dauObj.entry.contentUrl),\n catchError(() => of(this.contentApiService.getContentUrl(nodeId, true)))\n );\n } else {\n return of(this.contentApiService.getContentUrl(nodeId, attachment));\n }\n })\n );\n }\n\n getVersionContentUrl(nodeId: string, versionId: string, attachment = true): Observable<string> {\n return this.isDirectAccessUrlEnabled().pipe(\n mergeMap((dauEnabled) => {\n if (dauEnabled) {\n return this.contentApiService.requestVersionDirectAccessUrl(nodeId, versionId).pipe(\n map((dauObj: DirectAccessUrlEntry) => dauObj.entry.contentUrl),\n catchError(() => of(this.contentApiService.getVersionContentUrl(nodeId, versionId, true)))\n );\n } else {\n return of(this.contentApiService.getVersionContentUrl(nodeId, versionId, attachment));\n }\n })\n );\n }\n\n private isDirectAccessUrlEnabled(): Observable<boolean> {\n return this.store.select(getRepositoryStatus).pipe(\n take(1),\n map((repository) => !!repository?.status?.isDirectAccessUrlEnabled)\n );\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, DownloadNodesAction, NodeActionTypes, NodeInfo, getAppSelection, getCurrentVersion } from '@alfresco/aca-shared/store';\nimport { DownloadZipDialogComponent } from '@alfresco/adf-content-services';\nimport { MinimalNodeEntity, Version } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentUrlService } from '../../services/content-url.service';\n\n@Injectable()\nexport class DownloadEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private contentApi: ContentApiService,\n private dialog: MatDialog,\n private contentUrlService: ContentUrlService\n ) {}\n\n downloadNode$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<DownloadNodesAction>(NodeActionTypes.Download),\n map((action) => {\n if (action.payload?.length > 0) {\n this.downloadNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.store\n .select(getCurrentVersion)\n .pipe(take(1))\n .subscribe((version) => {\n if (version) {\n this.downloadFileVersion(selection.nodes[0].entry, version.entry);\n } else {\n this.downloadNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n private downloadNodes(toDownload: Array<MinimalNodeEntity>, focusedElementSelector?: string) {\n const nodes = toDownload.map((node) => {\n const { id, nodeId, name, isFile, isFolder } = node.entry as any;\n\n return {\n id: this.isSharedLinkPreview ? id : nodeId || id,\n name,\n isFile,\n isFolder\n };\n });\n\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n if (nodes.length === 1) {\n this.downloadNode(nodes[0], focusedElementSelector);\n } else {\n this.downloadZip(nodes, focusedElementSelector);\n }\n }\n\n private downloadNode(node: NodeInfo, focusedElementSelector?: string) {\n if (node) {\n if (node.isFolder) {\n this.downloadZip([node], focusedElementSelector);\n } else {\n this.downloadFile(node);\n }\n }\n }\n\n private downloadFile(node: NodeInfo) {\n if (node && !this.isSharedLinkPreview) {\n this.contentUrlService.getNodeContentUrl(node.id, true).subscribe((contentUrl) => {\n this.download(contentUrl, node.name);\n });\n }\n\n if (node && this.isSharedLinkPreview) {\n this.download(this.contentApi.getSharedLinkContent(node.id, false), node.name);\n }\n }\n\n private downloadFileVersion(node: NodeInfo, version: Version) {\n if (node && version) {\n this.contentUrlService.getVersionContentUrl(node.id, version.id, true).subscribe((contentUrl) => {\n this.download(contentUrl, node.name);\n });\n }\n }\n\n private downloadZip(nodes: Array<NodeInfo>, focusedElementSelector?: string) {\n if (nodes && nodes.length > 0) {\n const nodeIds = nodes.map((node) => node.id);\n\n this.dialog\n .open(DownloadZipDialogComponent, {\n width: '600px',\n disableClose: true,\n data: {\n nodeIds\n }\n })\n .afterClosed()\n .subscribe(() => this.focusAfterClose(focusedElementSelector));\n }\n }\n\n private download(url: string, fileName: string) {\n if (url && fileName) {\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.download = fileName;\n link.href = url;\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n private get isSharedLinkPreview() {\n return location.href.includes('/preview/s/');\n }\n\n private focusAfterClose(focusedElementSelector: string): void {\n if (focusedElementSelector) {\n document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, take } from 'rxjs/operators';\nimport { AppStore, NodeActionTypes, AddFavoriteAction, RemoveFavoriteAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { ContentManagementService } from '../../services/content-management.service';\n\n@Injectable()\nexport class FavoriteEffects {\n constructor(private store: Store<AppStore>, private actions$: Actions, private content: ContentManagementService) {}\n\n addFavorite$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<AddFavoriteAction>(NodeActionTypes.AddFavorite),\n map((action) => {\n if (action.payload && action.payload.length > 0) {\n this.content.addFavorite(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.content.addFavorite(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n removeFavorite$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<RemoveFavoriteAction>(NodeActionTypes.RemoveFavorite),\n map((action) => {\n if (action.payload && action.payload.length > 0) {\n this.content.removeFavorite(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.content.removeFavorite(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport {\n AppStore,\n NodeActionTypes,\n PurgeDeletedNodesAction,\n DeleteNodesAction,\n UndoDeleteNodesAction,\n CreateFolderAction,\n EditFolderAction,\n RestoreDeletedNodesAction,\n ShareNodeAction,\n ManageVersionsAction,\n UnlockWriteAction,\n UnshareNodesAction,\n CopyNodesAction,\n MoveNodesAction,\n ManagePermissionsAction,\n PrintFileAction,\n getCurrentFolder,\n getAppSelection,\n ManageAspectsAction,\n NavigateRouteAction,\n ExpandInfoDrawerAction,\n ManageRulesAction,\n ShowLoaderAction\n} from '@alfresco/aca-shared/store';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { RenditionService } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class NodeEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private contentService: ContentManagementService,\n private renditionViewer: RenditionService\n ) {}\n\n shareNode$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ShareNodeAction>(NodeActionTypes.Share),\n map((action) => {\n if (action.payload) {\n this.contentService.shareNode(action.payload, action.configuration?.focusedElementOnCloseSelector);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.contentService.shareNode(selection.file, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n unshareNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UnshareNodesAction>(NodeActionTypes.Unshare),\n map((action) => {\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.unshareNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.unshareNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n purgeDeletedNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<PurgeDeletedNodesAction>(NodeActionTypes.PurgeDeleted),\n map((action) => {\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.purgeDeletedNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.count > 0) {\n this.contentService.purgeDeletedNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n restoreDeletedNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<RestoreDeletedNodesAction>(NodeActionTypes.RestoreDeleted),\n map((action) => {\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.restoreDeletedNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.count > 0) {\n this.contentService.restoreDeletedNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n deleteNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<DeleteNodesAction>(NodeActionTypes.Delete),\n map((action) => {\n this.store.dispatch(new ShowLoaderAction(true));\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.deleteNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.count > 0) {\n this.contentService.deleteNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n undoDeleteNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UndoDeleteNodesAction>(NodeActionTypes.UndoDelete),\n map((action) => {\n if (action.payload.length > 0) {\n this.contentService.undoDeleteNodes(action.payload);\n }\n })\n ),\n { dispatch: false }\n );\n\n createFolder$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateFolderAction>(NodeActionTypes.CreateFolder),\n map((action) => {\n if (action.payload) {\n this.contentService.createFolder(action.payload);\n } else {\n this.store\n .select(getCurrentFolder)\n .pipe(take(1))\n .subscribe((node) => {\n if (node && node.id) {\n this.contentService.createFolder(node.id);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n editFolder$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<EditFolderAction>(NodeActionTypes.EditFolder),\n map((action) => {\n if (action.payload) {\n this.contentService.editFolder(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.folder) {\n this.contentService.editFolder(selection.folder, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n copyNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CopyNodesAction>(NodeActionTypes.Copy),\n map((action) => {\n if (action.payload?.length > 0) {\n this.contentService.copyNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.copyNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n moveNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<MoveNodesAction>(NodeActionTypes.Move),\n map((action) => {\n if (action.payload?.length > 0) {\n this.contentService.moveNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.moveNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n managePermissions$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManagePermissionsAction>(NodeActionTypes.ManagePermissions),\n map((action) => {\n if (action?.payload) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, action.payload.entry.id, 'permissions']));\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, selection.first.entry.id, 'permissions']));\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n expandInfoDrawer$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ExpandInfoDrawerAction>(NodeActionTypes.ExpandInfoDrawer),\n map((action) => {\n if (action?.payload) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, action.payload.entry.id]));\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, selection.first.entry.id]));\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n manageVersions$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManageVersionsAction>(NodeActionTypes.ManageVersions),\n map((action) => {\n if (action?.payload) {\n this.contentService.manageVersions(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.contentService.manageVersions(selection.file, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n printFile$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<PrintFileAction>(NodeActionTypes.PrintFile),\n map((action) => {\n if (action && action.payload) {\n this.printFile(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.printFile(selection.file);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n unlockWrite$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UnlockWriteAction>(NodeActionTypes.UnlockForWriting),\n map((action) => {\n if (action && action.payload) {\n this.contentService.unlockNode(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.contentService.unlockNode(selection.file);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n aspectList$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManageAspectsAction>(NodeActionTypes.ChangeAspects),\n map((action) => {\n if (action?.payload) {\n this.contentService.manageAspects(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.manageAspects(selection.nodes[0], action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n printFile(node: any) {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || node.entry.guid || node.entry.id;\n const mimeType = node.entry.content.mimeType;\n\n if (id) {\n this.renditionViewer.printFileGeneric(id, mimeType);\n }\n }\n }\n\n manageRules$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManageRulesAction>(NodeActionTypes.ManageRules),\n map((action) => {\n if (action?.payload) {\n this.store.dispatch(new NavigateRouteAction(['nodes', action.payload.entry.id, 'rules']));\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.store.dispatch(new NavigateRouteAction(['nodes', selection.first.entry.id, 'rules']));\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, take, tap } from 'rxjs/operators';\nimport {\n AppStore,\n ViewerActionTypes,\n ViewFileAction,\n ViewNodeAction,\n getCurrentFolder,\n getAppSelection,\n FullscreenViewerAction,\n ViewNodeVersionAction,\n PluginPreviewAction\n} from '@alfresco/aca-shared/store';\nimport { Router, UrlTree, UrlSegmentGroup, PRIMARY_OUTLET, UrlSegment } from '@angular/router';\nimport { Store, createSelector } from '@ngrx/store';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { MatDialog } from '@angular/material/dialog';\n\nexport const fileToPreview = createSelector(getAppSelection, getCurrentFolder, (selection, folder) => ({\n selection,\n folder\n}));\n\n@Injectable()\nexport class ViewerEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private router: Router,\n private extensions: AppExtensionService,\n private dialog: MatDialog\n ) {}\n\n fullscreenViewer$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<FullscreenViewerAction>(ViewerActionTypes.FullScreen),\n map(() => {\n this.enterFullScreen();\n })\n ),\n { dispatch: false }\n );\n\n viewNode$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ViewNodeAction>(ViewerActionTypes.ViewNode),\n map((action) => {\n if (action.viewNodeExtras) {\n const { location, path } = action.viewNodeExtras;\n\n if (location) {\n const navigation = this.getNavigationCommands(location);\n\n this.router.navigate([...navigation, { outlets: { viewer: ['view', action.nodeId] } }], {\n queryParams: { location }\n });\n }\n\n if (path) {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId] } }], {\n queryParams: { path }\n });\n }\n } else {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId] } }]);\n }\n })\n ),\n { dispatch: false }\n );\n\n viewFile$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ViewFileAction>(ViewerActionTypes.ViewFile),\n map((action) => {\n if (action.payload && action.payload.entry) {\n const { id, nodeId, isFile } = action.payload.entry as any;\n\n if (this.extensions.canPreviewNode(action.payload) && (isFile || nodeId)) {\n this.displayPreview(nodeId || id, action.parentId);\n }\n } else {\n this.store\n .select(fileToPreview)\n .pipe(take(1))\n .subscribe((result) => {\n if (result.selection && result.selection.file) {\n const { id, nodeId, isFile } = result.selection.file.entry as any;\n\n if (this.extensions.canPreviewNode(action.payload) && (isFile || nodeId)) {\n const parentId = result.folder ? result.folder.id : null;\n this.displayPreview(nodeId || id, parentId);\n }\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n viewNodeVersion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ViewNodeVersionAction>(ViewerActionTypes.ViewNodeVersion),\n map((action) => {\n this.dialog.closeAll();\n if (action.viewNodeExtras) {\n const { location, path } = action.viewNodeExtras;\n if (location) {\n const navigation = this.getNavigationCommands(location);\n this.router.navigate([...navigation, { outlets: { viewer: ['view', action.nodeId, action.versionId] } }], {\n queryParams: { location }\n });\n }\n\n if (path) {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId, action.versionId] } }], {\n queryParams: { path }\n });\n }\n } else {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId, action.versionId] } }]);\n }\n })\n ),\n { dispatch: false }\n );\n\n pluginPreview$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<PluginPreviewAction>(ViewerActionTypes.PluginPreview),\n tap((action) => {\n this.router.navigate([\n action.pluginRoute,\n {\n outlets: {\n viewer: ['preview', action.nodeId]\n }\n }\n ]);\n })\n ),\n { dispatch: false }\n );\n\n private displayPreview(nodeId: string, parentId: string) {\n if (!nodeId) {\n return;\n }\n\n let previewLocation = this.router.url;\n if (previewLocation.lastIndexOf('/') > 0) {\n previewLocation = previewLocation.substr(0, this.router.url.indexOf('/', 1));\n }\n previewLocation = previewLocation.replace(/\\//g, '');\n\n const path = [previewLocation];\n if (parentId) {\n path.push(parentId);\n }\n path.push('preview', nodeId);\n this.router.navigateByUrl(path.join('/'));\n }\n\n enterFullScreen() {\n const container: any = document.documentElement.querySelector('.adf-viewer__fullscreen-container');\n if (container) {\n if (container.requestFullscreen) {\n container.requestFullscreen();\n } else if (container.webkitRequestFullscreen) {\n container.webkitRequestFullscreen();\n } else if (container.mozRequestFullScreen) {\n container.mozRequestFullScreen();\n } else if (container.msRequestFullscreen) {\n container.msRequestFullscreen();\n }\n }\n }\n\n private getNavigationCommands(url: string): any[] {\n const urlTree: UrlTree = this.router.parseUrl(url);\n const urlSegmentGroup: UrlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments: UrlSegment[] = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchNavigationService {\n private _previousRoute = '';\n\n get previousRoute(): string {\n return this._previousRoute;\n }\n\n constructor(private router: Router) {}\n\n saveRoute(route: string): void {\n this._previousRoute = route;\n }\n\n navigateBack(): void {\n if (this.previousRoute) {\n this.router.navigate([this.previousRoute]);\n } else {\n this.router.navigate(['/personal-files']);\n }\n }\n\n navigateToSearch(): void {\n this.saveRoute(this.router.url);\n this.router.navigate(['/search']);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { SearchAction, SearchActionTypes, SearchByTermAction, SearchOptionIds } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\nimport { SearchNavigationService } from '../../components/search/search-navigation.service';\n\n@Injectable()\nexport class SearchEffects {\n constructor(private actions$: Actions, private router: Router, private searchNavigationService: SearchNavigationService) {}\n\n search$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<SearchAction>(SearchActionTypes.Search),\n map(() => {\n this.searchNavigationService.navigateToSearch();\n })\n ),\n { dispatch: false }\n );\n\n searchByTerm$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<SearchByTermAction>(SearchActionTypes.SearchByTerm),\n map((action) => {\n const query = action.payload.replace(/[(]/g, '%28').replace(/[)]/g, '%29');\n\n const libItem = action.searchOptions.find((item) => item.id === SearchOptionIds.Libraries);\n const librarySelected = !!libItem && libItem.value;\n if (librarySelected) {\n this.router.navigateByUrl('/search-libraries;q=' + encodeURIComponent(query));\n } else {\n this.router.navigateByUrl('/search;q=' + encodeURIComponent(query));\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AppStore,\n CreateLibraryAction,\n DeleteLibraryAction,\n LeaveLibraryAction,\n LibraryActionTypes,\n NavigateLibraryAction,\n NavigateRouteAction,\n SnackbarErrorAction,\n UpdateLibraryAction,\n getAppSelection\n} from '@alfresco/aca-shared/store';\nimport { Injectable } from '@angular/core';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, take } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentManagementService } from '../../services/content-management.service';\n\n@Injectable()\nexport class LibraryEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private content: ContentManagementService,\n private contentApi: ContentApiService\n ) {}\n\n deleteLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<DeleteLibraryAction>(LibraryActionTypes.Delete),\n map((action) => {\n if (action.payload) {\n this.content.deleteLibrary(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.library) {\n this.content.deleteLibrary(selection.library.entry.id);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n leaveLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<LeaveLibraryAction>(LibraryActionTypes.Leave),\n map((action) => {\n if (action.payload) {\n this.content.leaveLibrary(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.library) {\n this.content.leaveLibrary(selection.library.entry.id, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n createLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateLibraryAction>(LibraryActionTypes.Create),\n mergeMap(() => this.content.createLibrary()),\n map((libraryId) => new NavigateLibraryAction(libraryId))\n ),\n { dispatch: true }\n );\n\n navigateLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<NavigateLibraryAction>(LibraryActionTypes.Navigate),\n map((action) => {\n const libraryId = action.payload;\n if (libraryId) {\n this.contentApi\n .getNode(libraryId, { relativePath: '/documentLibrary' })\n .pipe(map((node) => node.entry.id))\n .subscribe(\n (id) => {\n const route = action.route ? action.route : 'libraries';\n this.store.dispatch(new NavigateRouteAction([route, id]));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.MISSING_CONTENT'));\n }\n );\n }\n })\n ),\n { dispatch: false }\n );\n\n updateLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UpdateLibraryAction>(LibraryActionTypes.Update),\n map((action) => {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.library) {\n const { id } = selection.library.entry;\n const { title, description, visibility } = action.payload;\n\n const siteBody = {\n title,\n description,\n visibility\n };\n\n this.content.updateLibrary(id, siteBody);\n }\n });\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AppStore,\n SnackbarErrorAction,\n UnlockWriteAction,\n UploadActionTypes,\n UploadFilesAction,\n UploadFileVersionAction,\n UploadFolderAction,\n getCurrentFolder\n} from '@alfresco/aca-shared/store';\nimport { FileUtils } from '@alfresco/adf-core';\nimport { Injectable, NgZone, RendererFactory2 } from '@angular/core';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { of } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { UploadService, FileModel } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class UploadEffects {\n private fileInput: HTMLInputElement;\n private folderInput: HTMLInputElement;\n private fileVersionInput: HTMLInputElement;\n private readonly uploadMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.upload\"]';\n\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private ngZone: NgZone,\n private uploadService: UploadService,\n rendererFactory: RendererFactory2,\n private contentService: ContentManagementService\n ) {\n const renderer = rendererFactory.createRenderer(null, null);\n\n this.fileInput = renderer.createElement('input') as HTMLInputElement;\n this.fileInput.id = 'app-upload-files';\n this.fileInput.type = 'file';\n this.fileInput.style.display = 'none';\n this.fileInput.setAttribute('multiple', '');\n this.fileInput.addEventListener('change', (event) => this.upload(event));\n renderer.appendChild(document.body, this.fileInput);\n\n this.fileVersionInput = renderer.createElement('input') as HTMLInputElement;\n this.fileVersionInput.id = 'app-upload-file-version';\n this.fileVersionInput.type = 'file';\n this.fileVersionInput.style.display = 'none';\n this.fileVersionInput.addEventListener('change', () => {\n this.uploadVersion();\n });\n renderer.appendChild(document.body, this.fileVersionInput);\n\n this.folderInput = renderer.createElement('input') as HTMLInputElement;\n this.folderInput.id = 'app-upload-folder';\n this.folderInput.type = 'file';\n this.folderInput.style.display = 'none';\n this.folderInput.setAttribute('directory', '');\n this.folderInput.setAttribute('webkitdirectory', '');\n this.folderInput.addEventListener('change', (event) => this.upload(event));\n renderer.appendChild(document.body, this.folderInput);\n }\n\n uploadFiles$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UploadFilesAction>(UploadActionTypes.UploadFiles),\n map(() => {\n this.registerFocusingElementAfterModalClose(this.fileInput, this.uploadMenuButtonSelector);\n this.fileInput.click();\n })\n ),\n { dispatch: false }\n );\n\n uploadFolder$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UploadFolderAction>(UploadActionTypes.UploadFolder),\n map(() => {\n this.registerFocusingElementAfterModalClose(this.folderInput, this.uploadMenuButtonSelector);\n this.folderInput.click();\n })\n ),\n { dispatch: false }\n );\n\n uploadVersion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UploadFileVersionAction>(UploadActionTypes.UploadFileVersion),\n map((action) => {\n if (action?.payload) {\n const node = action?.payload?.detail?.data?.node?.entry;\n const file: any = action?.payload?.detail?.files[0]?.file;\n this.contentService.versionUpdateDialog(node, file);\n } else if (!action?.payload) {\n this.registerFocusingElementAfterModalClose(this.fileVersionInput, action.configuration?.focusedElementOnCloseSelector);\n this.fileVersionInput.click();\n }\n })\n ),\n { dispatch: false }\n );\n\n uploadVersion() {\n this.contentService\n .getNodeInfo()\n .pipe(\n catchError((_) => {\n this.store.dispatch(new SnackbarErrorAction('VERSION.ERROR.GENERIC'));\n return of(null);\n })\n )\n .subscribe((node: MinimalNodeEntryEntity) => {\n if (node) {\n this.contentService.versionUpdateDialog(node, this.fileVersionInput.files[0]);\n this.fileVersionInput.value = '';\n }\n });\n }\n\n private upload(event: any): void {\n this.store\n .select(getCurrentFolder)\n .pipe(take(1))\n .subscribe((node) => {\n if (node && node.id) {\n const input = event.currentTarget as HTMLInputElement;\n const files = FileUtils.toFileArray(input.files).map(\n (file: any) =>\n new FileModel(file, {\n parentId: node.id,\n path: (file.webkitRelativePath || '').replace(/\\/[^\\/]*$/, ''),\n nodeType: 'cm:content'\n })\n );\n\n this.uploadQueue(files);\n event.target.value = '';\n }\n });\n }\n\n private uploadQueue(files: FileModel[]) {\n if (files.length > 0) {\n this.ngZone.run(() => {\n this.uploadService.addToQueue(...files);\n this.uploadService.uploadFilesInTheQueue();\n });\n }\n }\n\n uploadAndUnlock(file: FileModel | null) {\n if (!file) {\n return;\n }\n\n this.ngZone.run(() => {\n this.uploadService.addToQueue(file);\n this.uploadService.uploadFilesInTheQueue();\n\n const subscription = this.uploadService.fileUploadComplete.subscribe((completed) => {\n if (\n file.data &&\n file.data.entry &&\n file.data.entry.properties &&\n file.data.entry.properties['cm:lockType'] === 'WRITE_LOCK' &&\n file.data.entry.id === completed.data.entry.id\n ) {\n this.store.dispatch(new UnlockWriteAction(completed.data));\n }\n\n subscription.unsubscribe();\n });\n });\n }\n\n private registerFocusingElementAfterModalClose(input: HTMLInputElement, focusedElementSelector: string): void {\n input.addEventListener(\n 'click',\n () => {\n window.addEventListener(\n 'focus',\n () => {\n const elementToFocus = document.querySelector<HTMLElement>(focusedElementSelector);\n elementToFocus.addEventListener('focus', () => elementToFocus.classList.add('cdk-program-focused'), {\n once: true\n });\n elementToFocus.focus();\n },\n {\n once: true\n }\n );\n },\n {\n once: true\n }\n );\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Node } from '@alfresco/js-api';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl, ValidationErrors } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { AppStore, CreateFromTemplate } from '@alfresco/aca-shared/store';\nimport { TranslationService } from '@alfresco/adf-core';\n\n@Component({\n templateUrl: './create-from-template.dialog.html',\n styleUrls: ['./create-from-template.dialog.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CreateFromTemplateDialogComponent implements OnInit {\n public form: UntypedFormGroup;\n\n constructor(\n private translationService: TranslationService,\n private store: Store<AppStore>,\n private formBuilder: UntypedFormBuilder,\n private dialogRef: MatDialogRef<CreateFromTemplateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: Node\n ) {}\n\n ngOnInit() {\n this.form = this.formBuilder.group({\n name: [this.data.name, [Validators.required, this.forbidEndingDot, this.forbidOnlySpaces, this.forbidSpecialCharacters]],\n title: [this.data.properties ? this.data.properties['cm:title'] : '', Validators.maxLength(256)],\n description: [this.data.properties ? this.data.properties['cm:description'] : '', Validators.maxLength(512)]\n });\n }\n\n onSubmit() {\n const update = {\n name: this.form.value.name.trim(),\n properties: {\n 'cm:title': this.form.value.title,\n 'cm:description': this.form.value.description\n }\n };\n const data: Node = Object.assign({}, this.data, update);\n this.store.dispatch(new CreateFromTemplate(data));\n }\n\n title(): string {\n if (this.data.isFolder) {\n return this.translationService.instant('NODE_FROM_TEMPLATE.FOLDER_DIALOG_TITLE', { template: this.data.name });\n }\n\n return this.translationService.instant('NODE_FROM_TEMPLATE.FILE_DIALOG_TITLE', { template: this.data.name });\n }\n\n close() {\n this.dialogRef.close();\n }\n\n private forbidSpecialCharacters({ value }: UntypedFormControl): ValidationErrors | null {\n const specialCharacters = /([\\*\\\"\\<\\>\\\\\\/\\?\\:\\|])/;\n const isValid = !specialCharacters.test(value);\n\n return isValid\n ? null\n : {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.SPECIAL_CHARACTERS`\n };\n }\n\n private forbidEndingDot({ value }: UntypedFormControl): ValidationErrors | null {\n const isValid: boolean = (value || '').trim().split('').pop() !== '.';\n\n return isValid\n ? null\n : {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.ENDING_DOT`\n };\n }\n\n private forbidOnlySpaces({ value }: UntypedFormControl): ValidationErrors | null {\n if (value.length) {\n const isValid = !!(value || '').trim();\n\n return isValid\n ? null\n : {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.ONLY_SPACES`\n };\n } else {\n return {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.REQUIRED`\n };\n }\n }\n}\n","<h2 mat-dialog-title [innerHTML]=\"title()\"></h2>\n<div mat-dialog-content>\n <form [formGroup]=\"form\" novalidate>\n <mat-form-field class=\"adf-full-width\">\n <input\n cdkFocusInitial\n placeholder=\"{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.NAME' | translate }}\"\n matInput\n formControlName=\"name\"\n required\n />\n\n <mat-error *ngIf=\"form.controls['name'].errors?.message\">\n {{ form.controls['name'].errors?.message | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <input\n placeholder=\"{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.TITLE' | translate }}\"\n matInput\n formControlName=\"title\"\n />\n\n <mat-error *ngIf=\"form.controls['title'].hasError('maxlength')\">\n {{ 'NODE_FROM_TEMPLATE.FORM.ERRORS.TITLE_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <textarea\n matInput\n placeholder=\"{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.DESCRIPTION' | translate }}\"\n rows=\"2\"\n formControlName=\"description\"\n ></textarea>\n\n <mat-error *ngIf=\"form.controls['description'].hasError('maxlength')\">\n {{ 'NODE_FROM_TEMPLATE.FORM.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n </form>\n</div>\n<div mat-dialog-actions>\n <button mat-button mat-dialog-close>\n {{ 'NODE_FROM_TEMPLATE.CANCEL' | translate }}\n </button>\n <button\n class=\"create\"\n [disabled]=\"form.invalid\"\n mat-button\n (click)=\"onSubmit()\"\n >\n {{ 'NODE_FROM_TEMPLATE.CREATE' | translate }}\n </button>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { CreateFromTemplateDialogComponent } from '../dialogs/node-template/create-from-template.dialog';\nimport { Subject, from, of } from 'rxjs';\nimport { Node, MinimalNode, MinimalNodeEntryEntity, ResultNode, PathElement, SearchApi } from '@alfresco/js-api';\nimport { AlfrescoApiService, TranslationService } from '@alfresco/adf-core';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { AppStore, SnackbarErrorAction } from '@alfresco/aca-shared/store';\nimport { ContentNodeSelectorComponent, ContentNodeSelectorComponentData, ShareDataRow, NodeAction } from '@alfresco/adf-content-services';\n\nexport interface TemplateDialogConfig {\n primaryPathName: string;\n selectionType: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodeTemplateService {\n private currentTemplateConfig: TemplateDialogConfig = null;\n private rootNode: ResultNode;\n\n _searchApi: SearchApi;\n get searchApi(): SearchApi {\n this._searchApi = this._searchApi ?? new SearchApi(this.alfrescoApiService.getInstance());\n return this._searchApi;\n }\n\n constructor(\n private store: Store<AppStore>,\n private alfrescoApiService: AlfrescoApiService,\n private translation: TranslationService,\n public dialog: MatDialog\n ) {}\n\n selectTemplateDialog(config: TemplateDialogConfig): Subject<Node[]> {\n this.currentTemplateConfig = config;\n\n const select = new Subject<Node[]>();\n select.subscribe({\n complete: this.close.bind(this)\n });\n\n const data: ContentNodeSelectorComponentData = {\n selectionMode: 'single',\n title: this.title(config.selectionType),\n actionName: NodeAction.NEXT,\n dropdownHideMyFiles: true,\n currentFolderId: null,\n dropdownSiteList: null,\n breadcrumbTransform: this.transformNode.bind(this),\n select,\n showSearch: false,\n showDropdownSiteList: false,\n isSelectionValid: this.isSelectionValid.bind(this),\n rowFilter: this.rowFilter.bind(this)\n };\n\n const query = {\n query: {\n query: `PATH:\"//${config.primaryPathName}\"`,\n language: 'afts'\n },\n include: ['path', 'properties', 'allowableOperations', 'permissions']\n };\n\n from(this.searchApi.search(query))\n .pipe(\n switchMap((response) => {\n const entry = response.list.entries[0].entry;\n this.rootNode = entry;\n data.currentFolderId = entry.id;\n\n return this.dialog\n .open(ContentNodeSelectorComponent, {\n data,\n panelClass: ['adf-content-node-selector-dialog', 'aca-template-node-selector-dialog'],\n width: '630px'\n })\n .afterClosed();\n }),\n catchError((error) => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.GENERIC'));\n return of(error);\n })\n )\n .subscribe({ next: () => select.complete() });\n\n return select;\n }\n\n createTemplateDialog(node: Node): MatDialogRef<CreateFromTemplateDialogComponent> {\n const dialog = this.dialog.open(CreateFromTemplateDialogComponent, {\n data: node,\n panelClass: 'aca-create-from-template-dialog',\n width: '630px'\n });\n dialog.afterClosed().subscribe(() => NodeTemplateService.focusCreateMenuButton());\n return dialog;\n }\n\n private transformNode(node: MinimalNode): MinimalNode {\n if (node && node.path && node.path && node.path.elements instanceof Array) {\n node.path.elements = this.getPathElements(node);\n }\n return node;\n }\n\n private isSelectionValid(node: Node): boolean {\n if (!node.path.elements.length) {\n return false;\n }\n\n if (this.currentTemplateConfig.selectionType === 'folder') {\n return node.isFolder;\n }\n\n return node.isFile;\n }\n\n private close() {\n this.dialog.closeAll();\n NodeTemplateService.focusCreateMenuButton();\n }\n\n private title(selectionType: string) {\n if (selectionType === 'file') {\n return this.translation.instant('NODE_SELECTOR.SELECT_FILE_TEMPLATE_TITLE');\n }\n\n return this.translation.instant('NODE_SELECTOR.SELECT_FOLDER_TEMPLATE_TITLE');\n }\n\n private rowFilter(row: ShareDataRow): boolean {\n const node: MinimalNodeEntryEntity = row.node.entry;\n return node.nodeType !== 'app:filelink' && node.nodeType !== 'app:folderlink';\n }\n\n private getPathElements(node: Node): PathElement[] {\n return node.path.elements.filter((pathElement) => !this.rootNode.path.elements.some((rootPathElement) => pathElement.id === rootPathElement.id));\n }\n\n private static focusCreateMenuButton(): void {\n document.querySelector<HTMLElement>('app-toolbar-menu button[id=\"app.toolbar.create\"]').focus();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, switchMap, debounceTime, take, catchError } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport {\n FileFromTemplate,\n FolderFromTemplate,\n CreateFromTemplate,\n CreateFromTemplateSuccess,\n TemplateActionTypes,\n getCurrentFolder,\n AppStore,\n SnackbarErrorAction\n} from '@alfresco/aca-shared/store';\nimport { NodeTemplateService, TemplateDialogConfig } from '../../services/node-template.service';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { from, Observable, of } from 'rxjs';\nimport { NodeEntry, NodeBodyUpdate, Node, NodesApi } from '@alfresco/js-api';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable()\nexport class TemplateEffects {\n private _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n return this._nodesApi;\n }\n\n constructor(\n private matDialog: MatDialog,\n private appHookService: AppHookService,\n private store: Store<AppStore>,\n private apiService: AlfrescoApiService,\n private actions$: Actions,\n private nodeTemplateService: NodeTemplateService\n ) {}\n\n fileFromTemplate$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<FileFromTemplate>(TemplateActionTypes.FileFromTemplate),\n map(() => {\n this.openDialog({\n primaryPathName: 'app:node_templates',\n selectionType: 'file'\n });\n })\n ),\n { dispatch: false }\n );\n\n folderFromTemplate$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<FolderFromTemplate>(TemplateActionTypes.FolderFromTemplate),\n map(() =>\n this.openDialog({\n primaryPathName: 'app:space_templates',\n selectionType: 'folder'\n })\n )\n ),\n { dispatch: false }\n );\n\n createFromTemplate$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateFromTemplate>(TemplateActionTypes.CreateFromTemplate),\n map((action) => {\n this.store\n .select(getCurrentFolder)\n .pipe(\n switchMap((folder) => this.copyNode(action.payload, folder.id)),\n take(1)\n )\n .subscribe((node: NodeEntry | null) => {\n if (node) {\n this.store.dispatch(new CreateFromTemplateSuccess(node.entry));\n }\n });\n })\n ),\n { dispatch: false }\n );\n\n createFromTemplateSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateFromTemplateSuccess>(TemplateActionTypes.CreateFromTemplateSuccess),\n map((payload) => {\n this.matDialog.closeAll();\n this.appHookService.reload.next(payload.node);\n })\n ),\n { dispatch: false }\n );\n\n private openDialog(config: TemplateDialogConfig) {\n this.nodeTemplateService\n .selectTemplateDialog(config)\n .pipe(debounceTime(300))\n .subscribe(([node]) => this.nodeTemplateService.createTemplateDialog(node));\n }\n\n private copyNode(source: Node, parentId: string): Observable<NodeEntry> {\n return from(\n this.nodesApi.copyNode(source.id, {\n targetParentId: parentId,\n name: source.name\n })\n ).pipe(\n switchMap((node) =>\n this.updateNode(node, {\n properties: {\n 'cm:title': source.properties['cm:title'],\n 'cm:description': source.properties['cm:description']\n }\n })\n ),\n catchError((error) => this.handleError(error))\n );\n }\n\n private updateNode(node: NodeEntry, update: NodeBodyUpdate): Observable<NodeEntry> {\n return from(this.nodesApi.updateNode(node.entry.id, update)).pipe(catchError(() => of(node)));\n }\n\n private handleError(error: Error): Observable<null> {\n let statusCode: number;\n\n try {\n statusCode = JSON.parse(error.message).error.statusCode;\n } catch (e) {\n statusCode = null;\n }\n\n if (statusCode !== 409) {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.GENERIC'));\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.CONFLICT'));\n }\n\n return of(null);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class ContextMenuOverlayRef {\n constructor(private overlayRef: OverlayRef) {}\n\n close(): void {\n this.overlayRef.dispose();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const CONTEXT_MENU_DIRECTION = new InjectionToken('CONTEXT_MENU_DIRECTION', {\n providedIn: 'root',\n factory: () => 'ltr'\n});\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-context-menu-item',\n templateUrl: './context-menu-item.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-context-menu-item' }\n})\nexport class ContextMenuItemComponent {\n @Input()\n actionRef: ContentActionRef;\n\n constructor(private extensions: AppExtensionService) {}\n\n runAction() {\n if (this.hasClickAction(this.actionRef)) {\n this.extensions.runActionById(this.actionRef.actions.click);\n }\n }\n\n private hasClickAction(actionRef: ContentActionRef): boolean {\n return !!(actionRef && actionRef.actions && actionRef.actions.click);\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","<div class=\"aca-context-menu\">\n <ng-container [ngSwitch]=\"actionRef.type\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <button mat-menu-item [id]=\"actionRef.id\" [matMenuTriggerFor]=\"childMenu\">\n <adf-icon [value]=\"actionRef.icon\"></adf-icon>\n <span>{{ actionRef.title | translate }}</span>\n </button>\n\n <mat-menu #childMenu=\"matMenu\">\n <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n <app-context-menu-item [actionRef]=\"child\"></app-context-menu-item>\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <mat-divider></mat-divider>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\"></adf-dynamic-component>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button mat-menu-item color=\"primary\" [id]=\"actionRef.id\" (click)=\"runAction()\">\n <adf-icon [value]=\"actionRef.icon\"></adf-icon>\n <span>{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n </ng-container>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[acaContextMenuOutsideEvent]'\n})\nexport class OutsideEventDirective implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n @Output()\n clickOutside: EventEmitter<null> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {\n this.subscriptions = this.subscriptions.concat([\n fromEvent(document.body, 'click')\n .pipe(filter((event) => !this.findAncestor(event.target as Element)))\n .subscribe(() => this.clickOutside.next())\n ]);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions = [];\n }\n\n private findAncestor(el: Element): boolean {\n const className = 'aca-context-menu';\n\n if (el.classList.contains(className)) {\n return true;\n }\n // eslint-disable-next-line curly\n while ((el = el.parentElement) && !el.classList.contains(className));\n return !!el;\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, OnDestroy, HostListener, ViewChild, AfterViewInit, Inject } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\nimport { Direction } from '@angular/cdk/bidi';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'aca-context-menu',\n templateUrl: './context-menu.component.html',\n host: {\n class: 'aca-context-menu-holder'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class ContextMenuComponent implements OnInit, OnDestroy, AfterViewInit {\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n actions: Array<ContentActionRef> = [];\n\n @ViewChild(MatMenuTrigger)\n trigger: MatMenuTrigger;\n\n @HostListener('document:keydown.Escape', ['$event'])\n handleKeydownEscape(event: KeyboardEvent) {\n if (event) {\n if (this.contextMenuOverlayRef) {\n this.contextMenuOverlayRef.close();\n }\n }\n }\n\n constructor(\n private contextMenuOverlayRef: ContextMenuOverlayRef,\n private extensions: AppExtensionService,\n @Inject(CONTEXT_MENU_DIRECTION) public direction: Direction\n ) {}\n\n onClickOutsideEvent() {\n if (this.contextMenuOverlayRef) {\n this.contextMenuOverlayRef.close();\n }\n }\n\n runAction(contentActionRef: ContentActionRef) {\n this.extensions.runActionById(contentActionRef.actions.click, {\n focusedElementOnCloseSelector: '.adf-context-menu-source'\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n ngOnInit() {\n this.extensions\n .getAllowedContextMenuActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => (this.actions = actions));\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.trigger.openMenu(), 0);\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","<div [dir]=\"direction\">\n <div style=\"visibility: hidden;\" [matMenuTriggerFor]=\"rootMenu\"></div>\n\n <mat-menu #rootMenu=\"matMenu\" class=\"aca-context-menu\" hasBackdrop=\"false\" acaContextMenuOutsideEvent (clickOutside)=\"onClickOutsideEvent()\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\" [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchDefault>\n <button mat-menu-item [id]=\"entry.id\" (click)=\"runAction(entry)\">\n <adf-icon [value]=\"entry.icon\"></adf-icon>\n <span>{{ entry.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <mat-divider></mat-divider>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'menu'\">\n <button mat-menu-item [id]=\"entry.id\" [matMenuTriggerFor]=\"childMenu\">\n <adf-icon [value]=\"entry.icon\"></adf-icon>\n <span>{{ entry.title | translate }}</span>\n </button>\n\n <mat-menu #childMenu=\"matMenu\">\n <ng-container *ngFor=\"let child of entry.children; trackBy: trackByActionId\">\n <app-context-menu-item [actionRef]=\"child\"></app-context-menu-item>\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [data]=\"entry.data\" [id]=\"entry.component\"></adf-dynamic-component>\n </ng-container>\n </ng-container>\n </mat-menu>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, Injector, ComponentRef } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { ContextMenuComponent } from './context-menu.component';\nimport { ContextmenuOverlayConfig } from './interfaces';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextMenuService {\n private direction: Directionality;\n\n constructor(private injector: Injector, private overlay: Overlay, private userPreferenceService: UserPreferencesService) {\n this.userPreferenceService.select('textOrientation').subscribe((textOrientation) => {\n this.direction = textOrientation;\n });\n }\n\n open(config: ContextmenuOverlayConfig): ContextMenuOverlayRef {\n const overlay = this.createOverlay(config);\n const overlayRef = new ContextMenuOverlayRef(overlay);\n\n this.attachDialogContainer(overlay, overlayRef);\n\n return overlayRef;\n }\n\n private createOverlay(config: ContextmenuOverlayConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(overlay: OverlayRef, contextmenuOverlayRef: ContextMenuOverlayRef): ContextMenuComponent {\n const injector = this.createInjector(contextmenuOverlayRef);\n\n const containerPortal = new ComponentPortal(ContextMenuComponent, null, injector);\n const containerRef: ComponentRef<ContextMenuComponent> = overlay.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createInjector(contextmenuOverlayRef: ContextMenuOverlayRef): Injector {\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(ContextMenuOverlayRef, contextmenuOverlayRef);\n injectionTokens.set(CONTEXT_MENU_DIRECTION, this.direction);\n\n return Injector.create({\n parent: this.injector,\n providers: [\n { provide: ContextMenuOverlayRef, useValue: contextmenuOverlayRef },\n { provide: CONTEXT_MENU_DIRECTION, useValue: this.direction }\n ]\n });\n }\n\n private getOverlayConfig(config: ContextmenuOverlayConfig): OverlayConfig {\n const { x, y } = config.source;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo({ x, y })\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n ]);\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: config.hasBackdrop,\n backdropClass: config.backdropClass,\n panelClass: config.panelClass,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n positionStrategy,\n direction: this.direction\n });\n\n return overlayConfig;\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContextMenuActionTypes, ContextMenu } from '@alfresco/aca-shared/store';\nimport { Injectable } from '@angular/core';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { map } from 'rxjs/operators';\nimport { ContextMenuOverlayRef } from '../../components/context-menu/context-menu-overlay';\nimport { ContextMenuService } from '../../components/context-menu/context-menu.service';\n\n@Injectable()\nexport class ContextMenuEffects {\n private overlayRef: ContextMenuOverlayRef = null;\n\n constructor(private contextMenuService: ContextMenuService, private actions$: Actions) {}\n\n contextMenu$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ContextMenu>(ContextMenuActionTypes.ContextMenu),\n map((action) => {\n if (this.overlayRef) {\n this.overlayRef.close();\n }\n\n this.overlayRef = this.contextMenuService.open({\n source: action.event,\n hasBackdrop: false,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'cdk-overlay-pane'\n });\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './effects/app.effects';\nexport * from './effects/download.effects';\nexport * from './effects/favorite.effects';\nexport * from './effects/node.effects';\nexport * from './effects/viewer.effects';\nexport * from './effects/search.effects';\nexport * from './effects/library.effects';\nexport * from './effects/upload.effects';\nexport * from './effects/upload.effects';\nexport * from './effects/template.effects';\nexport * from './effects/contextmenu.effects';\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { StoreModule } from '@ngrx/store';\nimport { appReducer } from './reducers/app.reducer';\nimport { StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';\nimport { EffectsModule } from '@ngrx/effects';\nimport { SharedStoreModule } from '@alfresco/aca-shared/store';\nimport {\n AppEffects,\n NodeEffects,\n DownloadEffects,\n ViewerEffects,\n SearchEffects,\n LibraryEffects,\n UploadEffects,\n FavoriteEffects,\n TemplateEffects,\n ContextMenuEffects\n} from './effects';\nimport { INITIAL_STATE } from './initial-state';\n\n@NgModule({\n imports: [\n StoreModule.forRoot(\n { app: appReducer },\n {\n initialState: INITIAL_STATE,\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false\n }\n }\n ),\n StoreRouterConnectingModule.forRoot({\n serializer: FullRouterStateSerializer,\n stateKey: 'router'\n }),\n SharedStoreModule,\n EffectsModule.forRoot([\n AppEffects,\n NodeEffects,\n DownloadEffects,\n ViewerEffects,\n SearchEffects,\n LibraryEffects,\n UploadEffects,\n FavoriteEffects,\n TemplateEffects,\n ContextMenuEffects\n ])\n ]\n})\nexport class AppStoreModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatCardModule } from '@angular/material/card';\n\n@NgModule({\n imports: [MatMenuModule, MatIconModule, MatButtonModule, MatDialogModule, MatInputModule, MatSnackBarModule, MatProgressBarModule, MatCardModule],\n exports: [MatMenuModule, MatIconModule, MatButtonModule, MatDialogModule, MatInputModule, MatSnackBarModule, MatProgressBarModule, MatCardModule],\n providers: [\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: { closeOnNavigation: true, hasBackdrop: true, autoFocus: true }\n }\n ]\n})\nexport class MaterialModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { take } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentServiceExtensionService {\n constructor(private appConfigService: AppConfigService) {\n this.updateContentServiceAvailability();\n }\n\n updateContentServiceAvailability() {\n this.appConfigService.onLoad.pipe(take(1)).subscribe((config) => {\n if (config.plugins && config.plugins.contentService === false) {\n this.disableContentServices();\n } else {\n this.enableContentServices();\n }\n });\n }\n\n private disableContentServices() {\n if (localStorage) {\n localStorage.setItem('contentService', 'false');\n }\n }\n\n private enableContentServices() {\n if (localStorage && localStorage.getItem('contentService') === 'false') {\n localStorage.setItem('contentService', 'true');\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CoreModule } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { ContentServiceExtensionService } from '../services/content-service-extension.service';\n\nexport function setupExtensions(service: AppExtensionService): () => void {\n return () => service.load();\n}\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), ExtensionsModule]\n})\nexport class CoreExtensionsModule {\n static forRoot(): ModuleWithProviders<CoreExtensionsModule> {\n return {\n ngModule: CoreExtensionsModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: setupExtensions,\n deps: [AppExtensionService, ContentServiceExtensionService],\n multi: true\n }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<CoreExtensionsModule> {\n return {\n ngModule: CoreExtensionsModule\n };\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DocumentListDirective } from './document-list.directive';\nimport { SharedDirectivesModule } from '@alfresco/aca-shared';\nimport { ContentDirectiveModule } from '@alfresco/adf-content-services';\n\n@NgModule({\n imports: [SharedDirectivesModule, ContentDirectiveModule],\n declarations: [DocumentListDirective],\n exports: [DocumentListDirective, SharedDirectivesModule, ContentDirectiveModule]\n})\nexport class DirectivesModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input } from '@angular/core';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { NodePermissionService, isLocked } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-comments-tab',\n template: `<mat-card><adf-node-comments [readOnly]=\"!canUpdateNode\" [nodeId]=\"node?.id\"></adf-node-comments></mat-card>`\n})\nexport class CommentsTabComponent {\n @Input()\n node: MinimalNodeEntryEntity;\n\n constructor(private permission: NodePermissionService) {}\n\n get canUpdateNode(): boolean {\n if (!this.node) {\n return false;\n }\n\n if (this.node.isFolder || (this.node.isFile && !isLocked({ entry: this.node }))) {\n return this.permission.check(this.node, ['update']);\n }\n return false;\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { NodePermissionService, isLocked, AppExtensionService } from '@alfresco/aca-shared';\nimport { AppStore, infoDrawerMetadataAspect } from '@alfresco/aca-shared/store';\nimport { AppConfigService, NotificationService } from '@alfresco/adf-core';\nimport { Observable, Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ContentMetadataService } from '@alfresco/adf-content-services';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-metadata-tab',\n template: `\n <adf-content-metadata-card [readOnly]=\"!canUpdateNode\" [preset]=\"'custom'\" [node]=\"node\" [displayAspect]=\"displayAspect$ | async\">\n </adf-content-metadata-card>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-metadata-tab' }\n})\nexport class MetadataTabComponent implements OnInit, OnDestroy {\n protected onDestroy$ = new Subject<boolean>();\n\n @Input()\n node: MinimalNodeEntryEntity;\n\n displayAspect$: Observable<string>;\n\n constructor(\n private permission: NodePermissionService,\n protected extensions: AppExtensionService,\n private appConfig: AppConfigService,\n private store: Store<AppStore>,\n private notificationService: NotificationService,\n private contentMetadataService: ContentMetadataService\n ) {\n if (this.extensions.contentMetadata) {\n this.appConfig.config['content-metadata'].presets = this.extensions.contentMetadata.presets;\n }\n this.displayAspect$ = this.store.select(infoDrawerMetadataAspect);\n }\n\n get canUpdateNode(): boolean {\n if (this.node && !isLocked({ entry: this.node })) {\n return this.permission.check(this.node, ['update']);\n }\n\n return false;\n }\n\n ngOnInit() {\n this.contentMetadataService.error.pipe(takeUntil(this.onDestroy$)).subscribe((err: { message: string }) => {\n this.notificationService.showError(err.message);\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, OnChanges, OnDestroy } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, Validators, FormGroupDirective, NgForm } from '@angular/forms';\nimport { QueriesApi, SiteEntry, SitePaging } from '@alfresco/js-api';\nimport { Store } from '@ngrx/store';\nimport { AppStore, UpdateLibraryAction } from '@alfresco/aca-shared/store';\nimport { debounceTime, mergeMap, takeUntil } from 'rxjs/operators';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { Observable, from, Subject } from 'rxjs';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\nexport class InstantErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const isSubmitted = form && form.submitted;\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\n }\n}\n\n@Component({\n selector: 'app-library-metadata-form',\n templateUrl: './library-metadata-form.component.html'\n})\nexport class LibraryMetadataFormComponent implements OnInit, OnChanges, OnDestroy {\n _queriesApi: QueriesApi;\n get queriesApi(): QueriesApi {\n this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n return this._queriesApi;\n }\n\n @Input()\n node: SiteEntry;\n\n edit: boolean;\n libraryTitleExists = false;\n\n libraryType = [\n { value: 'PUBLIC', label: 'LIBRARY.VISIBILITY.PUBLIC' },\n { value: 'PRIVATE', label: 'LIBRARY.VISIBILITY.PRIVATE' },\n { value: 'MODERATED', label: 'LIBRARY.VISIBILITY.MODERATED' }\n ];\n\n form: UntypedFormGroup = new UntypedFormGroup({\n id: new UntypedFormControl({ value: '', disabled: true }),\n title: new UntypedFormControl({ value: '' }, [Validators.required, Validators.maxLength(256)]),\n description: new UntypedFormControl({ value: '' }, [Validators.maxLength(512)]),\n visibility: new UntypedFormControl(this.libraryType[0].value)\n });\n\n matcher = new InstantErrorStateMatcher();\n\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private alfrescoApiService: AlfrescoApiService, protected store: Store<AppStore>) {}\n\n get canUpdateLibrary() {\n return this.node && this.node.entry && this.node.entry.role === 'SiteManager';\n }\n\n getVisibilityLabel(value: string) {\n return this.libraryType.find((type) => type.value === value).label;\n }\n\n toggleEdit() {\n this.edit = !this.edit;\n }\n\n cancel() {\n this.updateForm(this.node);\n this.toggleEdit();\n }\n\n ngOnInit() {\n this.updateForm(this.node);\n\n this.form.controls['title'].valueChanges\n .pipe(\n debounceTime(300),\n mergeMap((title) => this.findLibraryByTitle(title)),\n takeUntil(this.onDestroy$)\n )\n .subscribe((result) => {\n const { entries } = result.list;\n\n if (entries.length) {\n if (this.form.controls.title.value === this.node.entry.title) {\n this.libraryTitleExists = false;\n } else {\n this.libraryTitleExists = this.form.controls.title.value === entries[0].entry.title;\n }\n } else {\n this.libraryTitleExists = false;\n }\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n ngOnChanges() {\n this.updateForm(this.node);\n }\n\n update() {\n if (this.canUpdateLibrary && this.form.valid) {\n this.store.dispatch(new UpdateLibraryAction(this.form.value));\n }\n }\n\n private updateForm(node: SiteEntry) {\n const { entry } = node;\n\n this.form.setValue({\n id: entry.id,\n title: entry.title,\n description: entry.description || '',\n visibility: entry.visibility\n });\n }\n\n private findLibraryByTitle(libraryTitle: string): Observable<SitePaging | { list: { entries: any[] } }> {\n return from(\n this.queriesApi\n .findSites(libraryTitle, {\n maxItems: 1,\n fields: ['title']\n })\n .catch(() => ({ list: { entries: [] } }))\n );\n }\n}\n","<mat-card *ngIf=\"node\">\n <mat-card-content *ngIf=\"!edit\">\n <div class=\"mat-form-field mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ form.controls.title.value }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mat-form-field mat-primary mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ form.controls.id.value }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mat-form-field mat-primary mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.VISIBILITY' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ getVisibilityLabel(form.controls.visibility.value) | translate }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mat-form-field mat-primary mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ form.controls.description?.value }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions align=\"end\" *ngIf=\"!edit && canUpdateLibrary\">\n <button mat-button color=\"primary\" (click)=\"toggleEdit()\">\n {{ 'LIBRARY.DIALOG.EDIT' | translate }}\n </button>\n </mat-card-actions>\n\n <mat-card-content *ngIf=\"edit\">\n <form [formGroup]=\"form\" autocomplete=\"off\">\n <mat-form-field class=\"adf-full-width\">\n <input\n matInput\n cdkFocusInitial\n required\n placeholder=\"{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}\"\n formControlName=\"title\"\n [errorStateMatcher]=\"matcher\"\n />\n <mat-hint *ngIf=\"libraryTitleExists\">{{ 'LIBRARY.HINTS.SITE_TITLE_EXISTS' | translate }}</mat-hint>\n <mat-error>\n {{ 'LIBRARY.ERRORS.TITLE_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <input matInput placeholder=\"{{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}\" formControlName=\"id\" />\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <mat-select placeholder=\"{{ 'LIBRARY.DIALOG.FORM.VISIBILITY' | translate }}\" formControlName=\"visibility\">\n <mat-option [value]=\"type.value\" *ngFor=\"let type of libraryType\">\n {{ type.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <textarea\n matInput\n placeholder=\"{{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}\"\n rows=\"3\"\n formControlName=\"description\"\n [errorStateMatcher]=\"matcher\"\n ></textarea>\n <mat-error>\n {{ 'LIBRARY.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n </form>\n </mat-card-content>\n\n <mat-card-actions align=\"end\" *ngIf=\"edit && canUpdateLibrary\">\n <button mat-button (click)=\"cancel()\">\n {{ 'LIBRARY.DIALOG.CANCEL' | translate }}\n </button>\n <button mat-button color=\"primary\" [disabled]=\"form.invalid || form.pristine\" (click)=\"update()\">\n {{ 'LIBRARY.DIALOG.UPDATE' | translate }}\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input } from '@angular/core';\nimport { SiteEntry } from '@alfresco/js-api';\n\n@Component({\n selector: 'app-library-metadata-tab',\n template: '<app-library-metadata-form [node]=\"node\"></app-library-metadata-form>',\n host: { class: 'app-metadata-tab' }\n})\nexport class LibraryMetadataTabComponent {\n @Input()\n node: SiteEntry;\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\n\n@Component({\n selector: 'app-versions-tab',\n template: `\n <ng-container *ngIf=\"isFileSelected; else empty\">\n <adf-version-manager\n [showComments]=\"'adf-version-manager.allowComments' | adfAppConfig : true\"\n [allowDownload]=\"'adf-version-manager.allowDownload' | adfAppConfig : true\"\n [node]=\"node\"\n >\n </adf-version-manager>\n </ng-container>\n\n <ng-template #empty>\n <div class=\"adf-manage-versions-empty\">\n <mat-icon class=\"adf-manage-versions-empty-icon\">face</mat-icon>\n {{ 'VERSION.SELECTION.EMPTY' | translate }}\n </div>\n </ng-template>\n `\n})\nexport class VersionsTabComponent implements OnInit, OnChanges {\n @Input()\n node: MinimalNodeEntryEntity;\n\n isFileSelected = false;\n\n ngOnInit() {\n this.updateState();\n }\n\n ngOnChanges() {\n this.updateState();\n }\n\n private updateState() {\n if (this.node && (this.node as any).nodeId) {\n // workaround for shared files type.\n this.isFileSelected = true;\n } else {\n this.isFileSelected = this.node.isFile;\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentMetadataModule, ContentModule, VersionManagerModule } from '@alfresco/adf-content-services';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { MaterialModule } from '../../material.module';\nimport { CommentsTabComponent } from './comments-tab/comments-tab.component';\nimport { MetadataTabComponent } from './metadata-tab/metadata-tab.component';\nimport { LibraryMetadataTabComponent } from './library-metadata-tab/library-metadata-tab.component';\nimport { LibraryMetadataFormComponent } from './library-metadata-tab/library-metadata-form.component';\nimport { VersionsTabComponent } from './versions-tab/versions-tab.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { SharedInfoDrawerModule } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [\n CommonModule,\n MaterialModule,\n CoreModule.forChild(),\n ContentModule.forChild(),\n ExtensionsModule,\n ContentMetadataModule,\n VersionManagerModule,\n DirectivesModule,\n A11yModule,\n SharedInfoDrawerModule\n ],\n declarations: [MetadataTabComponent, CommentsTabComponent, VersionsTabComponent, LibraryMetadataTabComponent, LibraryMetadataFormComponent],\n exports: [\n MetadataTabComponent,\n CommentsTabComponent,\n VersionsTabComponent,\n LibraryMetadataTabComponent,\n LibraryMetadataFormComponent,\n SharedInfoDrawerModule\n ]\n})\nexport class AppInfoDrawerModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ChangeDetectionStrategy, OnInit, ViewEncapsulation, HostListener } from '@angular/core';\nimport { PathInfo, MinimalNodeEntity } from '@alfresco/js-api';\nimport { Observable, BehaviorSubject, of } from 'rxjs';\n\nimport { Store } from '@ngrx/store';\nimport { AppStore, NavigateToParentFolder } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { TranslationService } from '@alfresco/adf-core';\n\n@Component({\n selector: 'aca-location-link',\n template: `\n <a\n href=\"\"\n [title]=\"nodeLocation$ | async\"\n (click)=\"goToLocation()\"\n class=\"adf-datatable-cell-value\"\n [innerHTML]=\"displayText | async | translate\"\n >\n </a>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'aca-location-link adf-location-cell adf-datatable-content-cell'\n }\n})\nexport class LocationLinkComponent implements OnInit {\n private _path: PathInfo;\n\n nodeLocation$ = new BehaviorSubject(this.translationService.instant('APP.BROWSE.SEARCH.UNKNOWN_LOCATION'));\n displayText: Observable<string>;\n\n @Input()\n context: any;\n\n @Input()\n showLocation = false;\n\n @HostListener('mouseenter')\n onMouseEnter() {\n this.getTooltip(this._path);\n }\n\n constructor(private store: Store<AppStore>, private contentApi: ContentApiService, private translationService: TranslationService) {}\n\n goToLocation() {\n if (this.context) {\n const node: MinimalNodeEntity = this.context.row.node;\n this.store.dispatch(new NavigateToParentFolder(node));\n }\n }\n\n ngOnInit() {\n if (this.context) {\n const node: MinimalNodeEntity = this.context.row.node;\n if (node && node.entry && node.entry.path) {\n const path = node.entry.path;\n\n if (path && path.name && path.elements) {\n if (this.showLocation) {\n this.displayText = of(path.name.substring(1).replace(/\\//g, ' &#8250; '));\n } else {\n this.displayText = this.getDisplayText(path);\n }\n this._path = path;\n } else {\n this.displayText = of('APP.BROWSE.SEARCH.UNKNOWN_LOCATION');\n }\n }\n }\n }\n\n // todo: review once 5.2.3 is out\n private getDisplayText(path: PathInfo): Observable<string> {\n const elements = path.elements.map((e) => e.name);\n\n // for admin users\n if (elements.length === 1 && elements[0] === 'Company Home') {\n return of('APP.BROWSE.PERSONAL.TITLE');\n }\n\n // for non-admin users\n if (elements.length === 3 && elements[0] === 'Company Home' && elements[1] === 'User Homes') {\n return of('APP.BROWSE.PERSONAL.TITLE');\n }\n\n const result = elements[elements.length - 1];\n\n if (result === 'documentLibrary') {\n const fragment = path.elements[path.elements.length - 2];\n\n return new Observable<string>((observer) => {\n this.contentApi.getNodeInfo(fragment.id).subscribe(\n (node) => {\n observer.next(node.properties['cm:title'] || node.name || fragment.name);\n observer.complete();\n },\n () => {\n observer.next(fragment.name);\n observer.complete();\n }\n );\n });\n }\n\n return of(result);\n }\n\n // todo: review once 5.2.3 is out\n private getTooltip(path: PathInfo) {\n if (!path) {\n return;\n }\n\n let result: string = null;\n\n const elements = path.elements.map((e) => Object.assign({}, e));\n const personalFiles = this.translationService.instant('APP.BROWSE.PERSONAL.TITLE');\n const fileLibraries = this.translationService.instant('APP.BROWSE.LIBRARIES.TITLE');\n\n if (elements[0].name === 'Company Home') {\n elements[0].name = personalFiles;\n\n if (elements.length > 2) {\n if (elements[1].name === 'Sites') {\n const fragment = elements[2];\n this.contentApi.getNodeInfo(fragment.id).subscribe(\n (node) => {\n elements.splice(0, 2);\n elements[0].name = node.properties['cm:title'] || node.name || fragment.name;\n elements.splice(1, 1);\n elements.unshift({ id: null, name: fileLibraries });\n\n result = elements.map((e) => e.name).join('/');\n this.nodeLocation$.next(result);\n },\n () => {\n elements.splice(0, 2);\n elements.unshift({ id: null, name: fileLibraries });\n elements.splice(2, 1);\n\n result = elements.map((e) => e.name).join('/');\n this.nodeLocation$.next(result);\n }\n );\n }\n\n if (elements[1].name === 'User Homes') {\n elements.splice(0, 3);\n elements.unshift({ id: null, name: personalFiles });\n }\n }\n }\n\n result = elements.map((e) => e.name).join('/');\n this.nodeLocation$.next(result);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, ShareNodeAction, getAppSelection } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'app-toggle-shared',\n templateUrl: './toggle-shared.component.html'\n})\nexport class ToggleSharedComponent implements OnInit {\n @Input()\n data: {\n iconButton?: string;\n };\n\n selection$: Observable<SelectionState>;\n\n constructor(private store: Store<AppStore>) {}\n\n ngOnInit() {\n this.selection$ = this.store.select(getAppSelection);\n }\n\n isShared(selection: SelectionState) {\n // workaround for shared files\n if (selection.first && selection.first.entry && (selection.first.entry as any).sharedByUser) {\n return true;\n }\n\n return selection.first && selection.first.entry && selection.first.entry.properties && !!selection.first.entry.properties['qshare:sharedId'];\n }\n\n editSharedNode(selection: SelectionState, focusedElementOnCloseSelector: string) {\n this.store.dispatch(\n new ShareNodeAction(selection.first, {\n focusedElementOnCloseSelector\n })\n );\n }\n\n getLabel(selection: SelectionState): string {\n return this.isShared(selection) ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE';\n }\n}\n","<ng-container *ngIf=\"selection$ | async as selection\">\n <ng-container *ngIf=\"!data.iconButton\">\n <button mat-menu-item data-automation-id=\"share-action-button\" (click)=\"editSharedNode(selection, '.adf-context-menu-source')\">\n <mat-icon>link</mat-icon>\n <ng-container *ngIf=\"isShared(selection); else not_shared\">\n <span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>\n </ng-container>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"data.iconButton\">\n <button\n mat-icon-button\n data-automation-id=\"share-action-button\"\n (click)=\"editSharedNode(selection, '#share-action-button')\"\n [attr.aria-label]=\"getLabel(selection) | translate\"\n [attr.title]=\"getLabel(selection) | translate\"\n id=\"share-action-button\"\n >\n <mat-icon>link</mat-icon>\n </button>\n </ng-container>\n</ng-container>\n\n<ng-template #not_shared>\n <span>{{ 'APP.ACTIONS.SHARE' | translate }}</span>\n</ng-template>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'aca-language-picker',\n template: `\n <button mat-menu-item [matMenuTriggerFor]=\"langMenu\">\n <mat-icon>language</mat-icon>\n {{ 'APP.LANGUAGE' | translate }}\n </button>\n <mat-menu #langMenu=\"matMenu\">\n <adf-language-menu></adf-language-menu>\n </mat-menu>\n `\n})\nexport class LanguagePickerComponent {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppStore, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'aca-logout',\n template: `\n <button mat-menu-item (click)=\"onLogoutEvent()\" adf-logout>\n <mat-icon>exit_to_app</mat-icon>\n <span>{{ 'APP.SIGN_OUT' | translate }}</span>\n </button>\n `\n})\nexport class LogoutComponent {\n constructor(private store: Store<AppStore>) {}\n\n onLogoutEvent() {\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { IdentityUserService, AuthenticationService } from '@alfresco/adf-core';\nimport { Component, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { PeopleContentService } from '@alfresco/adf-content-services';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-user-info',\n templateUrl: './user-info.component.html'\n})\nexport class UserInfoComponent implements OnInit {\n displayName$: Observable<string>;\n\n constructor(\n private peopleContentService: PeopleContentService,\n private identityUserService: IdentityUserService,\n private authService: AuthenticationService\n ) {}\n\n ngOnInit() {\n this.getUserInfo();\n }\n\n getUserInfo() {\n if (this.authService.isOauth()) {\n this.loadIdentityUserInfo();\n\n if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {\n this.loadEcmUserInfo();\n }\n } else if (this.isEcmLoggedIn()) {\n this.loadEcmUserInfo();\n }\n }\n\n get isLoggedIn(): boolean {\n if (this.authService.isKerberosEnabled()) {\n return true;\n }\n return this.authService.isLoggedIn();\n }\n\n private loadEcmUserInfo(): void {\n this.displayName$ = this.peopleContentService.getCurrentUserInfo().pipe(map((model) => this.parseDisplayName(model)));\n }\n\n private loadIdentityUserInfo() {\n this.displayName$ = of(this.identityUserService.getCurrentUserInfo()).pipe(map((model) => this.parseDisplayName(model)));\n }\n\n private parseDisplayName(model: { firstName?: string; email?: string }): string {\n let result = model.firstName;\n\n if (model.email) {\n result = `${model.firstName} (${model.email})`;\n }\n\n return result;\n }\n\n private isEcmLoggedIn() {\n return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());\n }\n}\n","<button mat-menu-item [routerLink]=\"['/profile']\" title=\"{{'APP.TOOLTIPS.MY_PROFILE' | translate}}\">\n <mat-icon>account_circle</mat-icon>\n <span>{{ (displayName$ | async) }}</span>\n</button>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { GenericErrorModule } from '@alfresco/aca-shared';\nimport { LocationLinkComponent } from './location-link/location-link.component';\nimport { ToggleSharedComponent } from './toggle-shared/toggle-shared.component';\nimport { LanguagePickerComponent } from './language-picker/language-picker.component';\nimport { LogoutComponent } from './logout/logout.component';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { UserInfoComponent } from './user-info/user-info.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), ContentModule.forChild(), ExtensionsModule, GenericErrorModule, RouterModule],\n declarations: [LocationLinkComponent, ToggleSharedComponent, LanguagePickerComponent, LogoutComponent, UserInfoComponent],\n exports: [\n ExtensionsModule,\n LocationLinkComponent,\n GenericErrorModule,\n ToggleSharedComponent,\n LanguagePickerComponent,\n LogoutComponent,\n UserInfoComponent\n ]\n})\nexport class AppCommonModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { CoreExtensionsModule } from '../../extensions/core.extensions.module';\nimport { AppCommonModule } from '../common/common.module';\nimport { ContextMenuItemComponent } from './context-menu-item.component';\nimport { OutsideEventDirective } from './context-menu-outside-event.directive';\nimport { ContextMenuComponent } from './context-menu.component';\nimport { ContextActionsModule } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [\n MatMenuModule,\n MatListModule,\n MatIconModule,\n MatButtonModule,\n CoreExtensionsModule.forChild(),\n CoreModule.forChild(),\n AppCommonModule,\n ExtensionsModule,\n ContextActionsModule\n ],\n declarations: [ContextMenuComponent, ContextMenuItemComponent, OutsideEventDirective],\n exports: [OutsideEventDirective, ContextMenuComponent, ContextMenuItemComponent, ContextActionsModule]\n})\nexport class ContextMenuModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ToggleDocumentDisplayMode, getDocumentDisplayMode } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'app-document-display-mode',\n template: `\n <ng-container *ngIf=\"displayMode$ | async as displayMode\">\n <button\n id=\"app-document-display-mode-button\"\n [attr.title]=\"getTitle(displayMode) | translate\"\n [attr.aria-label]=\"getTitle(displayMode) | translate\"\n mat-icon-button\n color=\"primary\"\n (click)=\"onClick()\"\n >\n <mat-icon *ngIf=\"displayMode === 'list'\">view_comfy</mat-icon>\n <mat-icon *ngIf=\"displayMode === 'gallery'\">list</mat-icon>\n </button>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-document-display-mode' }\n})\nexport class DocumentDisplayModeComponent {\n displayMode$: Observable<string>;\n\n constructor(private store: Store<AppStore>) {\n this.displayMode$ = store.select(getDocumentDisplayMode);\n }\n\n getTitle(displayMode: string): string {\n return displayMode === 'list' ? 'APP.ACTIONS.LIST_MODE' : 'APP.ACTIONS.GALLERY_MODE';\n }\n\n onClick() {\n this.store.dispatch(new ToggleDocumentDisplayMode());\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, ReloadDocumentListAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-toggle-favorite',\n template: `\n <button mat-menu-item #favorites=\"adfFavorite\" (toggle)=\"onToggleEvent()\" [adf-node-favorite]=\"(selection$ | async).nodes\">\n <mat-icon *ngIf=\"favorites.hasFavorites()\">star</mat-icon>\n <mat-icon *ngIf=\"!favorites.hasFavorites()\">star_border</mat-icon>\n <span>{{ (favorites.hasFavorites() ? 'APP.ACTIONS.REMOVE_FAVORITE' : 'APP.ACTIONS.FAVORITE') | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-favorite' }\n})\nexport class ToggleFavoriteComponent implements OnInit {\n @Input() data: any;\n selection$: Observable<SelectionState>;\n private reloadOnRoutes: string[] = [];\n\n constructor(private store: Store<AppStore>, private router: Router) {\n this.selection$ = this.store.select(getAppSelection);\n }\n\n ngOnInit() {\n if (this.data) {\n this.reloadOnRoutes = JSON.parse(this.data.replace(/'/g, '\"'));\n }\n }\n\n onToggleEvent() {\n if (this.reloadOnRoutes.includes(this.router.url)) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ToggleInfoDrawerAction, isInfoDrawerOpened } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'app-toggle-info-drawer',\n template: `\n <button\n mat-icon-button\n [color]=\"(infoDrawerOpened$ | async) ? 'primary' : null\"\n [attr.aria-label]=\"'APP.ACTIONS.DETAILS' | translate\"\n [attr.aria-expanded]=\"infoDrawerOpened$ | async\"\n [attr.title]=\"'APP.ACTIONS.DETAILS' | translate\"\n (click)=\"onClick()\"\n >\n <mat-icon>menu_open</mat-icon>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-info-drawer' }\n})\nexport class ToggleInfoDrawerComponent {\n infoDrawerOpened$: Observable<boolean>;\n\n constructor(private store: Store<any>) {\n this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n }\n\n onClick() {\n this.store.dispatch(new ToggleInfoDrawerAction());\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AppStore,\n SetSelectedNodesAction,\n SnackbarErrorAction,\n SnackbarInfoAction,\n getAppSelection,\n getUserProfile\n} from '@alfresco/aca-shared/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { ProfileState, SelectionState } from '@alfresco/adf-extensions';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { LibraryMembershipErrorEvent, LibraryMembershipToggleEvent } from '@alfresco/adf-content-services';\n\n@Component({\n selector: 'app-toggle-join-library-button',\n template: `\n <button\n mat-icon-button\n color=\"primary\"\n #membership=\"libraryMembership\"\n (toggle)=\"onToggleEvent($event)\"\n (error)=\"onErrorEvent($event)\"\n [adf-library-membership]=\"(selection$ | async).library\"\n [isAdmin]=\"(profile$ | async).isAdmin\"\n [attr.title]=\"(membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate)\"\n >\n <mat-icon *ngIf=\"membership.isJoinRequested | async\">cancel</mat-icon>\n <mat-icon *ngIf=\"!(membership.isJoinRequested | async)\" svgIcon=\"adf:join_library\"></mat-icon>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-join-library' }\n})\nexport class ToggleJoinLibraryButtonComponent {\n selection$: Observable<SelectionState>;\n profile$: Observable<ProfileState>;\n\n constructor(private store: Store<AppStore>, private appHookService: AppHookService) {\n this.selection$ = this.store.select(getAppSelection);\n this.profile$ = this.store.select(getUserProfile);\n }\n\n onToggleEvent(event: LibraryMembershipToggleEvent) {\n this.store.dispatch(new SnackbarInfoAction(event.i18nKey));\n\n if (event.shouldReload) {\n this.appHookService.libraryJoined.next();\n } else {\n if (event.updatedEntry) {\n this.store.dispatch(new SetSelectedNodesAction([{ entry: event.updatedEntry, isLibrary: true } as any]));\n }\n this.appHookService.joinLibraryToggle.next();\n }\n }\n\n onErrorEvent(event: LibraryMembershipErrorEvent) {\n this.store.dispatch(new SnackbarErrorAction(event.i18nKey));\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { AppStore } from '@alfresco/aca-shared/store';\nimport { ToggleJoinLibraryButtonComponent } from './toggle-join-library-button.component';\n\n@Component({\n selector: 'app-toggle-join-library-menu',\n template: `\n <button\n mat-menu-item\n #membership=\"libraryMembership\"\n (toggle)=\"onToggleEvent($event)\"\n (error)=\"onErrorEvent($event)\"\n [adf-library-membership]=\"(selection$ | async).library\"\n [isAdmin]=\"(profile$ | async).isAdmin\"\n [attr.title]=\"(membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate)\"\n >\n <mat-icon *ngIf=\"membership.isJoinRequested | async\">cancel</mat-icon>\n <mat-icon *ngIf=\"!(membership.isJoinRequested | async)\" svgIcon=\"adf:join_library\"></mat-icon>\n <span>{{ (membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate) }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-join-library' }\n})\nexport class ToggleJoinLibraryMenuComponent extends ToggleJoinLibraryButtonComponent {\n constructor(store: Store<AppStore>, appHookService: AppHookService) {\n super(store, appHookService);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { AppStore, getAppSelection } from '@alfresco/aca-shared/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-toggle-favorite-library',\n template: `\n <button\n mat-menu-item\n (toggle)=\"onToggleEvent()\"\n [adf-favorite-library]=\"library\"\n [attr.title]=\"library.isFavorite ? ('APP.ACTIONS.REMOVE_FAVORITE' | translate) : ('APP.ACTIONS.FAVORITE' | translate)\"\n >\n <mat-icon *ngIf=\"library.isFavorite\">star</mat-icon>\n <mat-icon *ngIf=\"!library.isFavorite\">star_border</mat-icon>\n <span>{{ (library.isFavorite ? 'APP.ACTIONS.REMOVE_FAVORITE' : 'APP.ACTIONS.FAVORITE') | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-favorite-library' }\n})\nexport class ToggleFavoriteLibraryComponent implements OnInit, OnDestroy {\n library;\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>, private appHookService: AppHookService, private router: Router) {}\n\n ngOnInit() {\n const isFavoriteLibraries = this.router.url.startsWith('/favorite/libraries');\n\n this.store\n .select(getAppSelection)\n .pipe(distinctUntilChanged(), takeUntil(this.onDestroy$))\n .subscribe((selection: SelectionState) => {\n this.library = { ...selection.library };\n\n // favorite libraries list should already be marked as favorite\n if (selection.library && isFavoriteLibraries) {\n this.library.isFavorite = true;\n }\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n onToggleEvent() {\n this.appHookService.favoriteLibraryToggle.next();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, DownloadNodesAction, EditOfflineAction, SnackbarErrorAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { MinimalNodeEntity, NodeEntry, SharedLinkEntry, Node, NodesApi } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { isLocked } from '@alfresco/aca-shared';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\n\n@Component({\n selector: 'app-toggle-edit-offline',\n template: `\n <button\n mat-menu-item\n [attr.title]=\"(isNodeLocked ? 'APP.ACTIONS.EDIT_OFFLINE_CANCEL' : 'APP.ACTIONS.EDIT_OFFLINE') | translate\"\n (click)=\"onClick()\"\n >\n <ng-container *ngIf=\"isNodeLocked\">\n <mat-icon>cancel</mat-icon>\n <span>{{ 'APP.ACTIONS.EDIT_OFFLINE_CANCEL' | translate }}</span>\n </ng-container>\n\n <ng-container *ngIf=\"!isNodeLocked\">\n <mat-icon>edit</mat-icon>\n <span>{{ 'APP.ACTIONS.EDIT_OFFLINE' | translate }}</span>\n </ng-container>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-edit-offline' }\n})\nexport class ToggleEditOfflineComponent implements OnInit {\n private nodesApi: NodesApi;\n selection: MinimalNodeEntity;\n\n constructor(private store: Store<AppStore>, private alfrescoApiService: AlfrescoApiService) {\n this.nodesApi = new NodesApi(this.alfrescoApiService.getInstance());\n }\n\n ngOnInit() {\n this.store.select(getAppSelection).subscribe(({ file }) => {\n this.selection = file;\n });\n }\n\n get isNodeLocked(): boolean {\n return !!(this.selection && isLocked(this.selection));\n }\n\n async onClick() {\n await this.toggleLock(this.selection);\n }\n\n private async toggleLock(node: NodeEntry | SharedLinkEntry) {\n const id = (node as SharedLinkEntry).entry.nodeId || node.entry.id;\n\n if (isLocked(this.selection)) {\n try {\n const response = await this.unlockNode(id);\n\n this.update(response?.entry);\n this.store.dispatch(new EditOfflineAction(this.selection));\n } catch {\n this.onUnlockError();\n }\n } else {\n try {\n const response = await this.lockNode(id);\n\n this.update(response?.entry);\n this.store.dispatch(new DownloadNodesAction([this.selection]));\n this.store.dispatch(new EditOfflineAction(this.selection));\n } catch {\n this.onLockError();\n }\n }\n }\n\n onLockError() {\n this.store.dispatch(\n new SnackbarErrorAction('APP.MESSAGES.ERRORS.LOCK_NODE', {\n fileName: this.selection.entry.name\n })\n );\n }\n\n onUnlockError() {\n this.store.dispatch(\n new SnackbarErrorAction('APP.MESSAGES.ERRORS.UNLOCK_NODE', {\n fileName: this.selection.entry.name\n })\n );\n }\n\n lockNode(nodeId: string) {\n return this.nodesApi.lockNode(nodeId, {\n type: 'ALLOW_OWNER_CHANGES',\n lifetime: 'PERSISTENT'\n });\n }\n\n unlockNode(nodeId: string) {\n return this.nodesApi.unlockNode(nodeId);\n }\n\n private update(data: Node) {\n if (data && data.properties) {\n const properties = this.selection.entry.properties || {};\n\n properties['cm:lockLifetime'] = data.properties['cm:lockLifetime'];\n properties['cm:lockOwner'] = data.properties['cm:lockOwner'];\n properties['cm:lockType'] = data.properties['cm:lockType'];\n\n this.selection.entry.properties = properties;\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ViewNodeAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\nimport { take } from 'rxjs/operators';\nimport { SharedLinkEntry } from '@alfresco/js-api';\nimport { AcaFileAutoDownloadService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-view-node',\n template: `\n <button\n *ngIf=\"data.iconButton\"\n mat-icon-button\n [attr.aria-label]=\"data.title | translate\"\n [attr.title]=\"data.title | translate\"\n (click)=\"onClick()\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button *ngIf=\"data.menuButton\" mat-menu-item (click)=\"onClick()\">\n <mat-icon>visibility</mat-icon>\n <span>{{ data.title | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-view-node' }\n})\nexport class ViewNodeComponent {\n @Input() data: { title?: string; menuButton?: boolean; iconButton?: boolean };\n\n constructor(private store: Store<AppStore>, private router: Router, private fileAutoDownloadService: AcaFileAutoDownloadService) {}\n\n onClick() {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (this.fileAutoDownloadService.shouldFileAutoDownload(selection.file.entry?.content?.sizeInBytes)) {\n this.fileAutoDownloadService.autoDownloadFile(selection.file);\n } else {\n let id: string;\n\n if (selection.file.entry.nodeType === 'app:filelink') {\n id = selection.file.entry.properties['cm:destination'];\n } else {\n id = (selection.file as SharedLinkEntry).entry.nodeId || (selection.file as any).entry.guid || selection.file.entry.id;\n }\n\n this.store.dispatch(new ViewNodeAction(id, { location: this.router.url }));\n }\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DocumentDisplayModeComponent } from './document-display-mode/document-display-mode.component';\nimport { ToggleFavoriteComponent } from './toggle-favorite/toggle-favorite.component';\nimport { ToggleInfoDrawerComponent } from './toggle-info-drawer/toggle-info-drawer.component';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { ToggleJoinLibraryButtonComponent } from './toggle-join-library/toggle-join-library-button.component';\nimport { ToggleJoinLibraryMenuComponent } from './toggle-join-library/toggle-join-library-menu.component';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { ToggleFavoriteLibraryComponent } from './toggle-favorite-library/toggle-favorite-library.component';\nimport { ToggleEditOfflineComponent } from './toggle-edit-offline/toggle-edit-offline.component';\nimport { ViewNodeComponent } from './view-node/view-node.component';\nimport { AppCommonModule } from '../common/common.module';\nimport { SharedToolbarModule } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), AppCommonModule, ExtensionsModule, SharedToolbarModule, DirectivesModule],\n declarations: [\n DocumentDisplayModeComponent,\n ToggleFavoriteComponent,\n ToggleInfoDrawerComponent,\n ToggleJoinLibraryButtonComponent,\n ToggleJoinLibraryMenuComponent,\n ToggleFavoriteLibraryComponent,\n ToggleEditOfflineComponent,\n ViewNodeComponent\n ],\n exports: [\n DocumentDisplayModeComponent,\n ToggleFavoriteComponent,\n ToggleInfoDrawerComponent,\n ToggleJoinLibraryButtonComponent,\n ToggleJoinLibraryMenuComponent,\n ToggleFavoriteLibraryComponent,\n ToggleEditOfflineComponent,\n ViewNodeComponent,\n SharedToolbarModule\n ]\n})\nexport class AppToolbarModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-create-menu',\n templateUrl: './create-menu.component.html',\n styleUrls: ['./create-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-create-menu' }\n})\nexport class CreateMenuComponent implements OnInit, OnDestroy {\n createActions: Array<ContentActionRef> = [];\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n isMainActionPresent: boolean;\n\n @Input()\n showLabel: boolean;\n\n @Input()\n expanded: boolean;\n\n constructor(private extensions: AppExtensionService) {}\n\n ngOnInit() {\n this.extensions\n .getCreateActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((createActions) => {\n this.createActions = createActions;\n });\n\n this.extensions\n .getMainAction()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((mainAction) => {\n this.isMainActionPresent = !!mainAction;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","<ng-container *ngIf=\"expanded\">\n <button\n mat-stroked-button\n data-automation-id=\"create-button\"\n [matMenuTriggerFor]=\"rootMenu\"\n title=\"{{ 'APP.NEW_MENU.TOOLTIP' | translate }}\"\n [class]=\"{\n 'app-create-menu-secondary-button': isMainActionPresent\n }\"\n >\n <span class=\"app-create-menu__text\">{{ 'APP.NEW_MENU.LABEL' | translate }}</span>\n <mat-icon title=\"{{ 'APP.NEW_MENU.TOOLTIP' | translate }}\">arrow_drop_down</mat-icon>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"!expanded\">\n <button\n mat-icon-button\n [class]=\"{\n 'app-create-menu-secondary-button': isMainActionPresent,\n 'app-create-menu--collapsed': true\n }\"\n data-automation-id=\"create-button\"\n [matMenuTriggerFor]=\"rootMenu\"\n #createMenu=\"matMenuTrigger\"\n title=\"{{ 'APP.NEW_MENU.TOOLTIP' | translate }}\"\n >\n <mat-icon class=\"app-create-menu--icon\" title=\"{{ 'APP.NEW_MENU.TOOLTIP' | translate }}\">queue</mat-icon>\n </button>\n</ng-container>\n\n<mat-menu #rootMenu=\"matMenu\" role=\"menu\" class=\"app-create-menu__root-menu app-create-menu__sub-menu\" [overlapTrigger]=\"false\" yPosition=\"below\">\n <div *ngFor=\"let action of createActions; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\"></app-toolbar-menu-item>\n </div>\n</mat-menu>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CreateMenuComponent } from './create-menu.component';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { AppToolbarModule } from '../toolbar/toolbar.module';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), AppToolbarModule],\n declarations: [CreateMenuComponent],\n exports: [CreateMenuComponent]\n})\nexport class AppCreateMenuModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Input, HostListener, OnInit, OnDestroy } from '@angular/core';\nimport { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { Store } from '@ngrx/store';\n\n@Directive({\n selector: '[acaExpansionPanel]',\n exportAs: 'acaExpansionPanel'\n})\nexport class ExpansionPanelDirective implements OnInit, OnDestroy {\n @Input() acaExpansionPanel;\n public hasActiveChildren = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostListener('click')\n onClick() {\n if (this.expansionPanel.expanded && !this.hasActiveLinks()) {\n const firstChild = this.acaExpansionPanel.children[0];\n if (firstChild.url) {\n this.router.navigate(this.getNavigationCommands(firstChild.url));\n } else {\n this.store.dispatch({\n type: firstChild.action.action,\n payload: this.getNavigationCommands(firstChild.action.payload)\n });\n }\n }\n }\n\n constructor(private store: Store<any>, private router: Router, private expansionPanel: MatExpansionPanel) {}\n\n hasActiveLinks() {\n if (this.acaExpansionPanel && this.acaExpansionPanel.children) {\n return this.acaExpansionPanel.children.some((child) => this.router.url.startsWith(child.url || child.action.payload));\n }\n return false;\n }\n\n ngOnInit() {\n this.hasActiveChildren = this.hasActiveLinks();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => {\n this.hasActiveChildren = this.hasActiveLinks();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n private getNavigationCommands(url: string): any[] {\n const urlTree = this.router.parseUrl(url);\n const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Input, OnInit, OnDestroy, HostListener } from '@angular/core';\nimport { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\n\n@Directive({\n selector: '[acaMenuPanel]',\n exportAs: 'acaMenuPanel'\n})\nexport class MenuPanelDirective implements OnInit, OnDestroy {\n @Input() acaMenuPanel;\n hasActiveChildren = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostListener('menuOpened')\n menuOpened() {\n if (this.acaMenuPanel.children && !this.hasActiveLinks()) {\n const firstChild = this.acaMenuPanel.children[0];\n if (firstChild.url) {\n this.router.navigate(this.getNavigationCommands(firstChild.url));\n } else {\n this.store.dispatch({\n type: firstChild.action.action,\n payload: this.getNavigationCommands(firstChild.action.payload)\n });\n }\n }\n }\n\n constructor(private store: Store<any>, private router: Router) {}\n\n hasActiveLinks() {\n if (this.acaMenuPanel && this.acaMenuPanel.children) {\n return this.acaMenuPanel.children.some((child) => this.router.url.startsWith(child.url || child.action.payload));\n }\n return false;\n }\n\n ngOnInit() {\n this.hasActiveChildren = this.hasActiveLinks();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => {\n this.hasActiveChildren = this.hasActiveLinks();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n private getNavigationCommands(url: string): any[] {\n const urlTree = this.router.parseUrl(url);\n const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Input, HostListener } from '@angular/core';\nimport { PRIMARY_OUTLET, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { AppStore } from '@alfresco/aca-shared/store';\n\n@Directive({\n /* eslint-disable-next-line */\n selector: '[action]',\n exportAs: 'action'\n})\nexport class ActionDirective {\n @Input() action;\n\n @HostListener('click')\n onClick() {\n if (this.action.url) {\n this.router.navigate(this.getNavigationCommands(this.action.url));\n } else if (this.action.click) {\n this.store.dispatch({\n type: this.action.click.action,\n payload: this.getNavigationCommands(this.action.click.payload)\n });\n }\n }\n\n constructor(private router: Router, private store: Store<AppStore>) {}\n\n private getNavigationCommands(url: string): any[] {\n const urlTree = this.router.parseUrl(url);\n const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, OnInit, Input, ElementRef, Renderer2, ContentChildren, QueryList, AfterContentInit, Optional } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ActionDirective } from './action.directive';\n\n@Directive({\n selector: '[acaActiveLink]',\n exportAs: 'acaActiveLink'\n})\nexport class ActiveLinkDirective implements OnInit, AfterContentInit {\n @Input() acaActiveLink;\n @ContentChildren(ActionDirective, { descendants: true })\n links: QueryList<ActionDirective>;\n isLinkActive = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private router: Router, private element: ElementRef, private renderer: Renderer2, @Optional() private action?: ActionDirective) {}\n\n ngOnInit() {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe((event: NavigationEnd) => {\n this.update(event.urlAfterRedirects);\n });\n }\n\n private update(url: string) {\n if (this.action) {\n const itemUrl = this.resolveUrl(this.action);\n this.render(url, itemUrl);\n }\n\n this.links.map((item) => {\n const itemUrl = this.resolveUrl(item);\n this.render(url, itemUrl);\n });\n }\n\n private render(routerUrl: string, actionUrl: string) {\n if (routerUrl && routerUrl.substring(1).startsWith(actionUrl)) {\n this.isLinkActive = true;\n this.renderer.addClass(this.element.nativeElement, this.acaActiveLink);\n } else {\n this.isLinkActive = false;\n this.renderer.removeClass(this.element.nativeElement, this.acaActiveLink);\n }\n }\n\n ngAfterContentInit() {\n this.links.changes.subscribe(() => this.update(this.router.url));\n this.update(this.router.url);\n }\n\n private resolveUrl(item): string {\n return (item.action && item.action.click && item.action.click.payload) || item.action.route;\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, Input, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'app-expand-menu',\n encapsulation: ViewEncapsulation.None,\n templateUrl: './expand-menu.component.html',\n host: { class: 'app-expand-menu' }\n})\nexport class ExpandMenuComponent implements OnInit {\n @Input()\n item: NavBarLinkRef;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.cd.detectChanges();\n }\n\n trackById(_index: number, obj: NavBarLinkRef) {\n return obj.id;\n }\n}\n","<ng-container *ngIf=\"!item.children\">\n <div class=\"item\">\n <button\n acaActiveLink=\"action-button--active\"\n [action]=\"item\"\n [attr.aria-label]=\"item.title | translate\"\n [id]=\"item.id\"\n [attr.data-automation-id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n mat-button\n class=\"action-button full-width\"\n >\n <adf-icon *ngIf=\"item.icon\" [value]=\"item.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ item.title | translate }}</span>\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"item.children && item.children.length\">\n <mat-expansion-panel\n [expanded]=\"acaExpansionPanel.hasActiveLinks()\"\n [acaExpansionPanel]=\"item\"\n #acaExpansionPanel=\"acaExpansionPanel\"\n [@.disabled]=\"true\"\n >\n <mat-expansion-panel-header expandedHeight=\"48px\" collapsedHeight=\"48px\" role=\"group\">\n <mat-panel-title>\n <div class=\"item\">\n <button\n [attr.aria-label]=\"item.title | translate\"\n [id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n [attr.data-automation-id]=\"item.id\"\n mat-button\n class=\"action-button full-width\"\n >\n <adf-icon *ngIf=\"item.icon\" [value]=\"item.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ item.title | translate }}</span>\n </button>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div *ngFor=\"let child of item.children; trackBy: trackById\" class=\"item\">\n <button\n acaActiveLink=\"action-button--active\"\n [action]=\"child\"\n [attr.aria-label]=\"child.title | translate\"\n [id]=\"child.id\"\n [attr.data-automation-id]=\"child.id\"\n [attr.title]=\"child.description | translate\"\n mat-button\n class=\"action-button full-width\"\n >\n <adf-icon *ngIf=\"child.icon\" [value]=\"child.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ child.title | translate }}</span>\n </button>\n </div>\n </mat-expansion-panel>\n</ng-container>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subject } from 'rxjs';\nimport { AppStore, getAppName, getLogoPath } from '@alfresco/aca-shared/store';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-sidenav-header',\n templateUrl: `./sidenav-header.component.html`,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-sidenav-header' }\n})\nexport class SidenavHeaderComponent implements OnInit, OnDestroy {\n private onDestroy$ = new Subject<boolean>();\n\n appName$: Observable<string>;\n logo$: Observable<string>;\n landingPage: string;\n actions: Array<ContentActionRef> = [];\n\n @Output()\n toggleNavBar = new EventEmitter();\n\n constructor(public store: Store<AppStore>, private appConfigService: AppConfigService, private appExtensions: AppExtensionService) {\n this.appName$ = store.select(getAppName);\n this.logo$ = store.select(getLogoPath);\n this.landingPage = this.appConfigService.get('landingPage', '/personal-files');\n }\n\n ngOnInit() {\n this.appExtensions\n .getHeaderActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => {\n this.actions = actions;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n}\n","<div class=\"sidenav-header\">\n <div class=\"sidenav-header-title\">\n <div class=\"sidenav-header-title-logo\"\n (click)=\"toggleNavBar.emit()\"\n (keypress)=\"toggleNavBar.emit()\">\n <img\n src=\"{{ logo$ | async }}\"\n title=\"{{'APP.TOOLTIPS.COLLAPSE_NAVIGATION' | translate}}\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\" />\n </div>\n\n <div class=\"sidenav-header-title-text\" [routerLink]=\"landingPage\">\n {{ appName$ | async | translate }}\n </div>\n\n <ng-container *ngFor=\"let actionRef of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"actionRef\"></aca-toolbar-action>\n </ng-container>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { NavBarGroupRef, NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getSideNavState } from '@alfresco/aca-shared/store';\nimport { Subject } from 'rxjs';\nimport { takeUntil, distinctUntilChanged, debounceTime } from 'rxjs/operators';\nimport { AppExtensionService, AppService } from '@alfresco/aca-shared';\nimport { SidenavLayoutComponent } from '@alfresco/adf-core';\n\n@Component({\n selector: 'app-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-sidenav' }\n})\nexport class SidenavComponent implements OnInit, OnDestroy {\n @Input()\n data: {\n layout?: SidenavLayoutComponent;\n mode?: 'collapsed' | 'expanded';\n } = {};\n\n groups: Array<NavBarGroupRef> = [];\n private onDestroy$ = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>, private extensions: AppExtensionService, private appService: AppService) {}\n\n ngOnInit() {\n this.store\n .select(getSideNavState)\n .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.onDestroy$))\n .subscribe(() => {\n this.groups = this.extensions.getApplicationNavigation(this.extensions.navbar);\n });\n\n this.appService.appNavNarMode$.next(this.data.mode);\n this.appService.toggleAppNavBar$.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.toggleNavBar());\n }\n\n trackByGroupId(_: number, obj: NavBarGroupRef): string {\n return obj.id;\n }\n\n trackByLinkId(_: number, obj: NavBarLinkRef): string {\n return obj.id;\n }\n\n toggleClick() {\n this.toggleNavBar();\n }\n\n private toggleNavBar() {\n this.data.layout.toggleMenu();\n this.appService.appNavNarMode$.next(this.data.layout.isMenuMinimized ? 'collapsed' : 'expanded');\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<div class=\"sidenav\">\n <app-sidenav-header (toggleNavBar)=\"toggleClick()\"></app-sidenav-header>\n\n <div class=\"section-sub-actions\">\n <div *ngFor=\"let group of groups; trackBy: trackByGroupId\" class=\"section\">\n <mat-list-item *ngFor=\"let item of group.items; trackBy: trackByLinkId\">\n <ng-container *ngIf=\"!item.component\">\n <app-expand-menu [item]=\"item\"></app-expand-menu>\n </ng-container>\n <ng-container *ngIf=\"item.component\">\n <adf-dynamic-component [data]=\"{ item: item, state: 'expanded' }\" [id]=\"item.component\"></adf-dynamic-component>\n </ng-container>\n </mat-list-item>\n </div>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'app-button-menu',\n templateUrl: './button-menu.component.html',\n host: { class: 'app-button-menu' },\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonMenuComponent implements OnInit {\n @Input()\n item: NavBarLinkRef;\n\n constructor(private cd: ChangeDetectorRef, private overlayContainer: OverlayContainer) {\n this.overlayContainer.getContainerElement().classList.add('aca-menu-panel');\n }\n\n ngOnInit() {\n this.cd.detectChanges();\n }\n\n trackById(_index: number, obj: NavBarLinkRef) {\n return obj.id;\n }\n}\n","<ng-container *ngIf=\"!item.children\">\n <button\n class=\"action-button\"\n mat-icon-button\n acaActiveLink=\"action-button--active\"\n [action]=\"item\"\n [id]=\"item.id\"\n [attr.aria-label]=\"item.title | translate\"\n [attr.title]=\"item.description | translate\"\n [attr.data-automation-id]=\"item.id\"\n >\n <adf-icon [value]=\"item.icon\"></adf-icon>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"item.children && item.children.length\">\n <button\n [matMenuTriggerFor]=\"menu\"\n [acaMenuPanel]=\"item\"\n #acaMenuPanel=\"acaMenuPanel\"\n mat-icon-button\n [id]=\"item.id\"\n [attr.data-automation-id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n [attr.aria-label]=\"item.title | translate\"\n class=\"action-button\"\n [ngClass]=\"{\n 'action-button--active': acaMenuPanel.hasActiveLinks()\n }\"\n >\n <adf-icon [value]=\"item.icon\"></adf-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\">\n <button\n *ngFor=\"let child of item.children; trackBy: trackById\"\n acaActiveLink=\"action-button--active\"\n [action]=\"child\"\n [attr.aria-label]=\"child.title | translate\"\n [id]=\"child.id\"\n [attr.title]=\"child.description | translate\"\n [attr.data-automation-id]=\"child.id\"\n mat-menu-item\n class=\"action-button\"\n >\n <adf-icon *ngIf=\"child.icon\" [value]=\"child.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ child.title | translate }}</span>\n </button>\n </mat-menu>\n</ng-container>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { AppCreateMenuModule } from '../create-menu/create-menu.module';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { RouterModule } from '@angular/router';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { ExpansionPanelDirective } from './directives/expansion-panel.directive';\nimport { MenuPanelDirective } from './directives/menu-panel.directive';\nimport { SidenavComponent } from './sidenav.component';\nimport { ActiveLinkDirective } from './directives/active-link.directive';\nimport { ExpandMenuComponent } from './components/expand-menu.component';\nimport { ButtonMenuComponent } from './components/button-menu.component';\nimport { ActionDirective } from './directives/action.directive';\nimport { SidenavHeaderComponent } from './components/sidenav-header.component';\nimport { SharedToolbarModule } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [CoreModule.forChild(), ExtensionsModule.forChild(), RouterModule, AppCreateMenuModule, SharedToolbarModule],\n declarations: [\n MenuPanelDirective,\n ExpansionPanelDirective,\n ActiveLinkDirective,\n ActionDirective,\n ExpandMenuComponent,\n ButtonMenuComponent,\n SidenavComponent,\n SidenavHeaderComponent\n ],\n exports: [\n MenuPanelDirective,\n ExpansionPanelDirective,\n ActiveLinkDirective,\n ActionDirective,\n ExpandMenuComponent,\n ButtonMenuComponent,\n SidenavComponent\n ]\n})\nexport class AppSidenavModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport { QueriesApi, SitePaging } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\n\nexport interface LibrarySearchQuery {\n term: string;\n opts: {\n skipCount: number;\n maxItems: number;\n };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchLibrariesQueryBuilderService {\n _queriesApi: QueriesApi;\n get queriesApi(): QueriesApi {\n this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n return this._queriesApi;\n }\n\n private _userQuery = '';\n\n updated: Subject<any> = new Subject();\n executed: Subject<any> = new Subject();\n hadError: Subject<any> = new Subject();\n\n paging: { maxItems?: number; skipCount?: number } = null;\n\n get userQuery(): string {\n return this._userQuery;\n }\n\n set userQuery(value: string) {\n this._userQuery = value ? value.trim() : '';\n }\n\n constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n update(): void {\n const query = this.buildQuery();\n if (query) {\n this.updated.next(query);\n }\n }\n\n async execute() {\n const query = this.buildQuery();\n if (query) {\n const data = await this.findLibraries(query);\n this.executed.next(data);\n }\n }\n\n buildQuery(): LibrarySearchQuery {\n const query = this.userQuery;\n if (query && query.length > 1) {\n const resultQuery = {\n term: query,\n opts: {\n skipCount: this.paging && this.paging.skipCount,\n maxItems: this.paging && this.paging.maxItems\n }\n };\n return resultQuery;\n }\n return null;\n }\n\n private findLibraries(libraryQuery: LibrarySearchQuery): Promise<SitePaging> {\n return this.queriesApi.findSites(libraryQuery.term, libraryQuery.opts).catch((err) => {\n this.hadError.next(err);\n return { list: { pagination: { totalItems: 0 }, entries: [] } };\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, ViewChild, ElementRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-search-input-control',\n templateUrl: './search-input-control.component.html',\n styleUrls: ['./search-input-control.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-search-control' }\n})\nexport class SearchInputControlComponent implements OnDestroy {\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n /** Type of the input field to render, e.g. \"search\" or \"text\" (default). */\n @Input()\n inputType = 'text';\n\n /** Emitted when the search is submitted pressing ENTER button.\n * The search term is provided as value of the event.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n submit: EventEmitter<any> = new EventEmitter();\n\n /** Emitted when the search term is changed. The search term is provided\n * in the 'value' property of the returned object. If the term is less\n * than three characters in length then the term is truncated to an empty\n * string.\n */\n @Output()\n searchChange: EventEmitter<string> = new EventEmitter();\n\n @ViewChild('searchInput', { static: true })\n searchInput: ElementRef;\n\n searchTerm = '';\n\n ngOnDestroy(): void {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n searchSubmit(event: any) {\n this.submit.emit(event);\n }\n\n inputChange(event: any) {\n this.searchChange.emit(event);\n }\n\n clear() {\n this.searchTerm = '';\n this.searchChange.emit('');\n }\n\n isTermTooShort() {\n return !!(this.searchTerm && this.searchTerm.length < 2);\n }\n}\n","<div class=\"app-search-container\">\n <button\n mat-icon-button\n id=\"app-search-button\"\n class=\"app-search-button\"\n (click)=\"searchSubmit(searchTerm)\"\n [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\"\n >\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n #searchInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"inputType\"\n id=\"app-control-input\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"inputChange($event)\"\n (keyup.enter)=\"searchSubmit($event)\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon *ngIf=\"searchTerm.length\" (click)=\"clear()\" class=\"app-clear-icon\">clear</mat-icon>\n </div>\n </mat-form-field>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppHookService, AppService } from '@alfresco/aca-shared';\nimport { AppStore, SearchByTermAction, SearchOptionIds, SearchOptionModel, SnackbarErrorAction } from '@alfresco/aca-shared/store';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { NavigationEnd, PRIMARY_OUTLET, Router, RouterEvent, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { SearchInputControlComponent } from '../search-input-control/search-input-control.component';\nimport { SearchNavigationService } from '../search-navigation.service';\nimport { SearchLibrariesQueryBuilderService } from '../search-libraries-results/search-libraries-query-builder.service';\n\n@Component({\n selector: 'aca-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'aca-search-input' }\n})\nexport class SearchInputComponent implements OnInit, OnDestroy {\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n hasOneChange = false;\n hasNewChange = false;\n navigationTimer: any;\n has400LibraryError = false;\n searchOnChange: boolean;\n\n searchedWord: string = null;\n searchOptions: Array<SearchOptionModel> = [\n {\n id: SearchOptionIds.Files,\n key: 'SEARCH.INPUT.FILES',\n value: false,\n shouldDisable: this.isLibrariesChecked.bind(this)\n },\n {\n id: SearchOptionIds.Folders,\n key: 'SEARCH.INPUT.FOLDERS',\n value: false,\n shouldDisable: this.isLibrariesChecked.bind(this)\n },\n {\n id: SearchOptionIds.Libraries,\n key: 'SEARCH.INPUT.LIBRARIES',\n value: false,\n shouldDisable: this.isContentChecked.bind(this)\n }\n ];\n\n @ViewChild('searchInputControl', { static: true })\n searchInputControl: SearchInputControlComponent;\n\n @ViewChild(MatMenuTrigger, { static: true })\n trigger: MatMenuTrigger;\n\n constructor(\n private queryBuilder: SearchQueryBuilderService,\n private queryLibrariesBuilder: SearchLibrariesQueryBuilderService,\n private config: AppConfigService,\n private router: Router,\n private store: Store<AppStore>,\n private appHookService: AppHookService,\n private appService: AppService,\n public searchInputService: SearchNavigationService\n ) {\n this.searchOnChange = this.config.get<boolean>('search.aca:triggeredOnChange', true);\n }\n\n ngOnInit() {\n this.showInputValue();\n\n this.router.events\n .pipe(takeUntil(this.onDestroy$))\n .pipe(filter((e) => e instanceof RouterEvent))\n .subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.showInputValue();\n }\n });\n\n this.appHookService.library400Error.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.has400LibraryError = true;\n });\n }\n\n exitSearch() {\n this.searchInputService.navigateBack();\n }\n\n showInputValue() {\n this.appService.appNavNarMode$.next('collapsed');\n this.has400LibraryError = false;\n this.searchedWord = this.getUrlSearchTerm();\n\n if (this.searchInputControl) {\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n }\n\n ngOnDestroy(): void {\n this.appService.appNavNarMode$.next('expanded');\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n this.removeContentFilters();\n }\n\n onMenuOpened() {\n if (this.searchInputControl) {\n this.searchInputControl.searchInput?.nativeElement?.focus();\n }\n }\n\n /**\n * Called when the user submits the search, e.g. hits enter or clicks submit\n *\n * @param event Parameters relating to the search\n */\n onSearchSubmit(event: any) {\n const searchTerm = event.target ? (event.target as HTMLInputElement).value : event;\n if (searchTerm) {\n this.searchedWord = searchTerm;\n\n this.searchByOption();\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.BROWSE.SEARCH.EMPTY_SEARCH'));\n }\n\n if (this.trigger) {\n this.trigger.closeMenu();\n }\n }\n\n onSearchChange(searchTerm: string) {\n if (!this.searchOnChange) {\n return;\n }\n\n this.has400LibraryError = false;\n this.searchedWord = searchTerm;\n\n if (this.hasOneChange) {\n this.hasNewChange = true;\n } else {\n this.hasOneChange = true;\n }\n\n if (this.hasNewChange) {\n clearTimeout(this.navigationTimer);\n this.hasNewChange = false;\n }\n\n this.navigationTimer = setTimeout(() => {\n if (searchTerm) {\n this.store.dispatch(new SearchByTermAction(searchTerm, this.searchOptions));\n }\n this.hasOneChange = false;\n }, 1000);\n }\n\n searchByOption() {\n this.syncInputValues();\n this.has400LibraryError = false;\n if (this.isLibrariesChecked()) {\n if (this.onLibrariesSearchResults && this.isSameSearchTerm()) {\n this.queryLibrariesBuilder.update();\n } else if (this.searchedWord) {\n this.store.dispatch(new SearchByTermAction(this.searchedWord, this.searchOptions));\n }\n } else {\n if (this.isFoldersChecked() && !this.isFilesChecked()) {\n this.filterContent(SearchOptionIds.Folders);\n } else if (this.isFilesChecked() && !this.isFoldersChecked()) {\n this.filterContent(SearchOptionIds.Files);\n } else {\n this.removeContentFilters();\n }\n\n if (this.onSearchResults && this.isSameSearchTerm()) {\n this.queryBuilder.update();\n } else if (this.searchedWord) {\n this.store.dispatch(new SearchByTermAction(this.searchedWord, this.searchOptions));\n }\n }\n }\n\n get onLibrariesSearchResults() {\n return this.router.url.indexOf('/search-libraries') === 0;\n }\n\n get onSearchResults() {\n return !this.onLibrariesSearchResults && this.router.url.indexOf('/search') === 0;\n }\n\n isFilesChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Files);\n }\n\n isFoldersChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Folders);\n }\n\n isLibrariesChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Libraries);\n }\n\n isOptionChecked(optionId: string): boolean {\n const libItem = this.searchOptions.find((item) => item.id === optionId);\n return !!libItem && libItem.value;\n }\n\n isContentChecked(): boolean {\n return this.isFilesChecked() || this.isFoldersChecked();\n }\n\n hasLibraryConstraint(): boolean {\n if (this.isLibrariesChecked()) {\n return this.has400LibraryError || this.searchInputControl.isTermTooShort();\n }\n return false;\n }\n\n filterContent(option: SearchOptionIds.Folders | SearchOptionIds.Files) {\n const oppositeOption = option === SearchOptionIds.Folders ? SearchOptionIds.Files : SearchOptionIds.Folders;\n\n this.queryBuilder.addFilterQuery(`+TYPE:'cm:${option}'`);\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${oppositeOption}'`);\n }\n\n removeContentFilters() {\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Files}'`);\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Folders}'`);\n }\n\n syncInputValues() {\n if (this.searchInputControl.searchTerm !== this.searchedWord) {\n if (this.searchInputControl.searchTerm) {\n this.searchedWord = this.searchInputControl.searchTerm;\n } else {\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n }\n }\n\n getUrlSearchTerm(): string {\n let searchTerm = '';\n if (this.onSearchResults || this.onLibrariesSearchResults) {\n const urlTree: UrlTree = this.router.parseUrl(this.router.url);\n const urlSegmentGroup: UrlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (urlSegmentGroup) {\n const urlSegments: UrlSegment[] = urlSegmentGroup.segments;\n searchTerm = urlSegments[0].parameters['q'] ? decodeURIComponent(urlSegments[0].parameters['q']) : '';\n }\n }\n\n return searchTerm;\n }\n\n isSameSearchTerm(): boolean {\n const urlSearchTerm = this.getUrlSearchTerm();\n return this.searchedWord === urlSearchTerm;\n }\n}\n","<div class=\"app-search-container searchMenuTrigger\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n\n <button mat-icon-button class=\"app-search-button\" (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [disabled]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon>arrow_drop_down</mat-icon>\n </div>\n\n <button mat-icon-button matSuffix class=\"app-suffix-search-icon-wrapper app-close-icon\" (click)=\"exitSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\">\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n >\n </app-search-input-control>\n <mat-hint *ngIf=\"hasLibraryConstraint()\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\">\n <mat-checkbox\n *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { SearchInputComponent } from './search-input/search-input.component';\nimport { SearchInputControlComponent } from './search-input-control/search-input-control.component';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), ContentModule.forChild(), A11yModule],\n declarations: [SearchInputComponent, SearchInputControlComponent],\n exports: [SearchInputComponent, SearchInputControlComponent]\n})\nexport class AppSearchInputModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NameColumnComponent, NodesApiService } from '@alfresco/adf-content-services';\nimport { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NodeActionTypes } from '@alfresco/aca-shared/store';\nimport { isLocked } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'aca-custom-name-column',\n templateUrl: './name-column.component.html',\n styleUrls: ['./name-column.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'adf-datatable-content-cell adf-datatable-link adf-name-column aca-custom-name-column'\n }\n})\nexport class CustomNameColumnComponent extends NameColumnComponent implements OnInit, OnDestroy {\n private onDestroy$$ = new Subject<boolean>();\n\n constructor(element: ElementRef, private cd: ChangeDetectorRef, private actions$: Actions, private nodesService: NodesApiService) {\n super(element, nodesService);\n }\n\n ngOnInit() {\n this.updateValue();\n\n this.nodesService.nodeUpdated.pipe(takeUntil(this.onDestroy$$)).subscribe((node: any) => {\n const row = this.context.row;\n if (row) {\n const { entry } = row.node;\n const currentId = entry.nodeId || entry.id;\n const updatedId = node.nodeId || node.id;\n\n if (currentId === updatedId) {\n entry.name = node.name;\n row.node = { entry };\n this.updateValue();\n }\n }\n });\n\n this.actions$\n .pipe(\n ofType<any>(NodeActionTypes.EditOffline),\n filter((val) => this.node.entry.id === val.payload.entry.id),\n takeUntil(this.onDestroy$$)\n )\n .subscribe(() => {\n this.cd.detectChanges();\n });\n }\n\n onLinkClick(event: Event) {\n event.stopPropagation();\n this.onClick();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.onDestroy$$.next(true);\n this.onDestroy$$.complete();\n }\n\n get isFile(): boolean {\n return this.node && this.node.entry && !this.node.entry.isFolder;\n }\n\n get isFileWriteLocked(): boolean {\n return isLocked(this.node);\n }\n}\n","<div\n class=\"aca-custom-name-column\"\n [ngClass]=\"{\n 'aca-name-column-container': isFile && isFileWriteLocked\n }\"\n>\n <span\n role=\"link\"\n [attr.aria-label]=\"\n (isFile ? 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FILE_LINK_ARIA_LABEL' : 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FOLDER_LINK_ARIA_LABEL')\n | translate: { name: displayText$ | async }\n \"\n class=\"adf-datatable-cell-value\"\n title=\"{{ node | adfNodeNameTooltip }}\"\n (click)=\"onLinkClick($event)\"\n (keyup.enter)=\"onLinkClick($event)\"\n >\n {{ displayText$ | async }}\n </span>\n\n <ng-container *ngIf=\"isFile && isFileWriteLocked\">\n <aca-locked-by [node]=\"context.row.node\"></aca-locked-by>\n </ng-container>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { TranslationService } from '@alfresco/adf-core';\n\n@Component({\n selector: 'aca-custom-thumbnail-column',\n templateUrl: './thumbnail-column.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ThumbnailColumnComponent {\n @Input()\n context: any;\n\n constructor(private translation: TranslationService) {}\n\n getThumbnail({ data, row, col }): string {\n return data.getValue(row, col);\n }\n\n getToolTip({ row }): string {\n const user = row.node?.entry?.properties && row.node.entry.properties['cm:lockOwner'] && row.node.entry.properties['cm:lockOwner'].displayName;\n return user ? `${this.translation.instant('APP.LOCKED_BY')} ${user}` : '';\n }\n}\n","<mat-icon class=\"adf-datatable-selected\" *ngIf=\"context.row.isSelected\" svgIcon=\"selected\"></mat-icon>\n\n<img *ngIf=\"!context.row.isSelected\"\n class=\"adf-datatable-center-img-ie\"\n src=\"{{ getThumbnail(context) }}\"\n [alt]=\"getToolTip(context)\"\n [matTooltip]=\"getToolTip(context)\">\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ShareDataRow } from '@alfresco/adf-content-services';\nimport { ChangeDetectorRef, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'aca-tags-column',\n template: `\n <adf-tag-node-list [showDelete]=\"false\" [limitTagsDisplayed]=\"true\" [nodeId]=\"getNodeId(context.row)\" (results)=\"onTagsLoaded()\">\n </adf-tag-node-list>\n `,\n styleUrls: ['./tags-column.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'adf-datatable-content-cell aca-tags-name-column'\n }\n})\nexport class TagsColumnComponent {\n @Input()\n context: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n getNodeId(row: ShareDataRow): string {\n return row.id;\n }\n\n onTagsLoaded(): void {\n this.cd.detectChanges();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { CustomNameColumnComponent } from './name-column/name-column.component';\nimport { LockedByModule } from '@alfresco/aca-shared';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { MaterialModule } from '../../material.module';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ThumbnailColumnComponent } from './thumbnail-column/thumbnail-column.component';\nimport { TagsColumnComponent } from './tags-column/tags-column.component';\n\n@NgModule({\n imports: [BrowserModule, CoreModule.forChild(), ContentModule.forChild(), MaterialModule, LockedByModule],\n declarations: [CustomNameColumnComponent, ThumbnailColumnComponent, TagsColumnComponent],\n exports: [CustomNameColumnComponent, ThumbnailColumnComponent, TagsColumnComponent]\n})\nexport class DocumentListCustomComponentsModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\nimport { ViewNodeAction, NavigateToFolder } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { takeUntil } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { AcaFileAutoDownloadService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'aca-search-results-row',\n templateUrl: './search-results-row.component.html',\n styleUrls: ['./search-results-row.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-search-results-row' }\n})\nexport class SearchResultsRowComponent implements OnInit, OnDestroy {\n private node: MinimalNodeEntity;\n private onDestroy$ = new Subject<boolean>();\n\n @Input()\n context: any;\n\n name$ = new BehaviorSubject<string>('');\n title$ = new BehaviorSubject<string>('');\n\n constructor(\n private store: Store<any>,\n private nodesApiService: NodesApiService,\n private router: Router,\n private fileAutoDownloadService: AcaFileAutoDownloadService\n ) {}\n\n ngOnInit() {\n this.updateValues();\n\n this.nodesApiService.nodeUpdated.pipe(takeUntil(this.onDestroy$)).subscribe((node) => {\n const row = this.context.row;\n if (row) {\n const { entry } = row.node;\n\n if (entry.id === node.id) {\n entry.name = node.name;\n entry.properties = Object.assign({}, node.properties);\n\n this.updateValues();\n }\n }\n });\n }\n\n private updateValues() {\n this.node = this.context.row.node;\n\n const { name, properties } = this.node.entry;\n const title = properties ? properties['cm:title'] : '';\n\n this.name$.next(name);\n\n if (title !== name) {\n this.title$.next(title ? `( ${title} )` : '');\n }\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n get isFile(): boolean {\n return this.node.entry.isFile;\n }\n\n showPreview(event: Event) {\n event.stopPropagation();\n if (this.fileAutoDownloadService.shouldFileAutoDownload(this.node.entry.content.sizeInBytes)) {\n this.fileAutoDownloadService.autoDownloadFile(this.node);\n } else {\n this.store.dispatch(new ViewNodeAction(this.node.entry.id, { location: this.router.url }));\n }\n }\n\n navigate(event: Event) {\n event.stopPropagation();\n this.store.dispatch(new NavigateToFolder(this.node));\n }\n}\n","<div class=\"search-file-name\">\n <span tabindex=\"0\" role=\"link\" *ngIf=\"isFile\" (click)=\"showPreview($event)\" (keyup.enter)=\"showPreview($event)\" class=\"link\">\n {{ name$ | async }}\n </span>\n <span tabindex=\"0\" role=\"link\" *ngIf=\"!isFile\" (click)=\"navigate($event)\" (keyup.enter)=\"navigate($event)\" class=\"bold link\">\n {{ name$ | async }}\n </span>\n <span>{{ title$ | async }}</span>\n</div>\n<div class=\"result-location\">\n <aca-location-link [context]=\"context\" [showLocation]=\"true\"></aca-location-link>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { SearchSortingDefinition } from '@alfresco/adf-content-services/lib/search/models/search-sorting-definition.interface';\nimport { Component, OnInit, Output, ViewEncapsulation, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'aca-search-action-menu',\n templateUrl: './search-action-menu.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchActionMenuComponent implements OnInit {\n @Output()\n sortingSelected: EventEmitter<SearchSortingDefinition> = new EventEmitter();\n\n options: SearchSortingDefinition[] = [];\n\n constructor(private queryBuilder: SearchQueryBuilderService) {}\n\n ngOnInit(): void {\n this.options = this.queryBuilder.getSortingOptions();\n }\n\n onAscSortingClicked(option: SearchSortingDefinition) {\n option.ascending = true;\n this.sortingSelected.emit(option);\n }\n\n onDescSortingClicked(option: SearchSortingDefinition) {\n option.ascending = false;\n this.sortingSelected.emit(option);\n }\n}\n","<button mat-icon-button [matMenuTriggerFor]=\"dataSorting\" id=\"aca-button-action-menu\" aria-label=\"Search action menu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n\n<mat-menu #dataSorting=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"sorting\" id=\"aca-button-sorting-menu\">{{ 'SEARCH.SORT.SORTING_OPTION' | translate }}</button>\n</mat-menu>\n\n<mat-menu #sorting=\"matMenu\">\n <ng-template matMenuContent>\n <button\n mat-menu-item\n *ngFor=\"let option of options\"\n [id]=\"option.key + '-sorting-option'\"\n [matMenuTriggerFor]=\"direction\"\n [matMenuTriggerData]=\"{ option: option }\"\n >\n {{ option.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<mat-menu #direction=\"matMenu\">\n <ng-template matMenuContent let-option=\"option\">\n <button mat-menu-item [id]=\"option.key + '-sorting-option-asc'\" (click)=\"onAscSortingClicked(option)\">\n {{ 'SEARCH.SORT.ASCENDING' | translate }}\n </button>\n <button mat-menu-item [id]=\"option.key + '-sorting-option-desc'\" (click)=\"onDescSortingClicked(option)\">\n {{ 'SEARCH.SORT.DESCENDING' | translate }}\n </button>\n </ng-template>\n</mat-menu>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MinimalNodeEntity, Pagination, ResultSetPaging } from '@alfresco/js-api';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { Store } from '@ngrx/store';\nimport {\n AppStore,\n infoDrawerPreview,\n NavigateToFolder,\n SetInfoDrawerPreviewStateAction,\n SetInfoDrawerStateAction,\n showFacetFilter,\n ShowInfoDrawerPreviewAction,\n SnackbarErrorAction\n} from '@alfresco/aca-shared/store';\nimport { ContentManagementService } from '../../../services/content-management.service';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { AcaFileAutoDownloadService, AppExtensionService, PageComponent } from '@alfresco/aca-shared';\nimport { SearchSortingDefinition } from '@alfresco/adf-content-services/lib/search/models/search-sorting-definition.interface';\nimport { takeUntil } from 'rxjs/operators';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\n\n@Component({\n selector: 'aca-search-results',\n templateUrl: './search-results.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./search-results.component.scss']\n})\nexport class SearchResultsComponent extends PageComponent implements OnInit {\n showFacetFilter$: Observable<boolean>;\n infoDrawerPreview$: Observable<boolean>;\n\n searchedWord: string;\n queryParamName = 'q';\n data: ResultSetPaging;\n sorting = ['name', 'asc'];\n isLoading = false;\n isSmallScreen = false;\n\n constructor(\n private queryBuilder: SearchQueryBuilderService,\n private route: ActivatedRoute,\n store: Store<AppStore>,\n extensions: AppExtensionService,\n content: ContentManagementService,\n private translationService: TranslationService,\n private router: Router,\n private breakpointObserver: BreakpointObserver,\n fileAutoDownloadService: AcaFileAutoDownloadService\n ) {\n super(store, extensions, content, fileAutoDownloadService);\n\n queryBuilder.paging = {\n skipCount: 0,\n maxItems: 25\n };\n\n this.showFacetFilter$ = store.select(showFacetFilter);\n this.infoDrawerPreview$ = store.select(infoDrawerPreview);\n combineLatest([this.route.params, this.queryBuilder.configUpdated])\n .pipe(takeUntil(this.onDestroy$))\n .subscribe(([params, searchConfig]) => {\n // eslint-disable-next-line no-prototype-builtins\n this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;\n const query = this.formatSearchQuery(this.searchedWord, searchConfig['aca:fields']);\n if (query) {\n this.queryBuilder.userQuery = decodeURIComponent(query);\n }\n });\n\n this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((result) => {\n this.isSmallScreen = result.matches;\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.queryBuilder.resetToDefaults();\n this.sorting = this.getSorting();\n\n this.subscriptions.push(\n this.queryBuilder.updated.subscribe((query) => {\n if (query) {\n this.sorting = this.getSorting();\n this.isLoading = true;\n }\n }),\n\n this.queryBuilder.executed.subscribe((data) => {\n this.queryBuilder.paging.skipCount = 0;\n\n this.onSearchResultLoaded(data);\n this.isLoading = false;\n }),\n\n this.queryBuilder.error.subscribe((err: any) => {\n this.onSearchError(err);\n })\n );\n\n if (this.route) {\n this.route.params.forEach((params: Params) => {\n // eslint-disable-next-line no-prototype-builtins\n this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;\n if (this.searchedWord) {\n this.queryBuilder.update();\n } else {\n this.queryBuilder.userQuery = null;\n this.queryBuilder.executed.next({\n list: { pagination: { totalItems: 0 }, entries: [] }\n });\n }\n });\n }\n }\n\n onSearchError(error: { message: any }) {\n const { statusCode } = JSON.parse(error.message).error;\n\n const messageKey = `APP.BROWSE.SEARCH.ERRORS.${statusCode}`;\n let translated = this.translationService.instant(messageKey);\n\n if (translated === messageKey) {\n translated = this.translationService.instant(`APP.BROWSE.SEARCH.ERRORS.GENERIC`);\n }\n\n this.store.dispatch(new SnackbarErrorAction(translated));\n }\n\n private isOperator(input: string): boolean {\n if (input) {\n input = input.trim().toUpperCase();\n\n const operators = ['AND', 'OR'];\n return operators.includes(input);\n }\n return false;\n }\n\n private formatFields(fields: string[], term: string): string {\n let prefix = '';\n let suffix = '*';\n\n if (term.startsWith('=')) {\n prefix = '=';\n suffix = '';\n term = term.substring(1);\n }\n\n return '(' + fields.map((field) => `${prefix}${field}:\"${term}${suffix}\"`).join(' OR ') + ')';\n }\n\n formatSearchQuery(userInput: string, fields = ['cm:name']) {\n if (!userInput) {\n return null;\n }\n\n if (/^http[s]?:\\/\\//.test(userInput)) {\n return this.formatFields(fields, userInput);\n }\n\n userInput = userInput.trim();\n\n if (userInput.includes(':') || userInput.includes('\"')) {\n return userInput;\n }\n\n const words = userInput.split(' ');\n\n if (words.length > 1) {\n const separator = words.some(this.isOperator) ? ' ' : ' AND ';\n\n return words\n .map((term) => {\n if (this.isOperator(term)) {\n return term;\n }\n\n return this.formatFields(fields, term);\n })\n .join(separator);\n }\n\n return this.formatFields(fields, userInput);\n }\n\n onSearchResultLoaded(nodePaging: ResultSetPaging) {\n this.data = nodePaging;\n }\n\n onPaginationChanged(pagination: Pagination) {\n this.queryBuilder.paging = {\n maxItems: pagination.maxItems,\n skipCount: pagination.skipCount\n };\n this.queryBuilder.update();\n }\n\n private getSorting(): string[] {\n const primary = this.queryBuilder.getPrimarySorting();\n\n if (primary) {\n return [primary.key, primary.ascending ? 'asc' : 'desc'];\n }\n\n return ['name', 'asc'];\n }\n\n onNodeDoubleClick(node: MinimalNodeEntity) {\n if (node && node.entry) {\n if (node.entry.isFolder) {\n this.store.dispatch(new NavigateToFolder(node));\n return;\n }\n\n this.showPreview(node, { location: this.router.url });\n }\n }\n\n handleNodeClick(event: Event) {\n this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n }\n\n onPreviewClosed() {\n this.store.dispatch(new ShowInfoDrawerPreviewAction());\n }\n\n onDrawerClosed() {\n this.store.dispatch(new SetInfoDrawerPreviewStateAction(false));\n this.store.dispatch(new SetInfoDrawerStateAction(false));\n }\n\n onSearchSortingUpdate(option: SearchSortingDefinition) {\n this.queryBuilder.sorting = [{ ...option, ascending: option.ascending }];\n this.queryBuilder.update();\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <aca-search-input></aca-search-input>\n <div class=\"adf-toolbar--spacer adf-toolbar-divider\"></div>\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\" aria-live=\"polite\"> </mat-progress-bar>\n <div class=\"adf-search-results__content-header content\">\n <adf-search-form class=\"content__side--left\"></adf-search-form>\n\n <mat-divider [vertical]=\"true\" class=\"content__divider\"></mat-divider>\n\n <adf-search-filter-chips class=\"content__filter\"></adf-search-filter-chips>\n\n <button\n mat-button\n adf-reset-search\n class=\"content__reset-action\"\n title=\"{{'APP.BROWSE.SEARCH.RESET_ACTION' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.RESET_ACTION' | translate \">\n <mat-icon> refresh </mat-icon>\n </button>\n </div>\n\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [selectionMode]=\"'multiple'\"\n [sortingMode]=\"'server'\"\n [sorting]=\"sorting\"\n [imageResolver]=\"imageResolver\"\n [node]=\"$any(data)\"\n (node-dblclick)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <data-column key=\"$thumbnail\" type=\"image\" [sr-title]=\"'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-custom-thumbnail-column [context]=\"context\"></aca-custom-thumbnail-column>\n </ng-template>\n\n <adf-data-column-header>\n <ng-template>\n <aca-search-action-menu (sortingSelected)=\"onSearchSortingUpdate($event)\"></aca-search-action-menu>\n </ng-template>\n </adf-data-column-header>\n </data-column>\n\n <data-column key type=\"text\" class=\"adf-ellipsis-cell adf-expand-cell-5\" title=\"APP.DOCUMENT_LIST.COLUMNS.NAME\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-search-results-row [context]=\"context\"></aca-search-results-row>\n </ng-template>\n </data-column>\n\n <data-column key=\"properties\" title=\"Description\" class=\"adf-expand-cell-3\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\">\n <ng-template let-context>\n <span class=\"adf-datatable-cell-value adf-ellipsis-cell\">\n {{context.row?.node?.entry?.properties && context.row?.node?.entry?.properties['cm:description']}}\n </span>\n </ng-template>\n </data-column>\n\n <data-column key=\"content.sizeInBytes\" type=\"fileSize\" title=\"APP.DOCUMENT_LIST.COLUMNS.SIZE\" class=\"adf-no-grow-cell adf-ellipsis-cell\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\"></data-column>\n <data-column key=\"modifiedAt\" type=\"date\" title=\"APP.DOCUMENT_LIST.COLUMNS.MODIFIED_ON\" class=\"adf-no-grow-cell adf-ellipsis-cell\" format=\"timeAgo\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\"></data-column>\n <data-column key=\"modifiedByUser.displayName\" title=\"APP.DOCUMENT_LIST.COLUMNS.MODIFIED_BY\" class=\"adf-no-grow-cell adf-ellipsis-cell\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\"></data-column>\n <data-column key=\"$tags\" type=\"text\" title=\"APP.DOCUMENT_LIST.COLUMNS.TAGS\" class=\"adf-full-width adf-expand-cell-4\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-tags-column [context]=\"context\"></aca-tags-column>\n </ng-template>\n </data-column>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"!documentList.isEmpty()\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\">\n </adf-pagination>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"\n (infoDrawerPreview$ | async) === true ? 'adf-search-results--right_panel_section-extended' : 'adf-search-results--right_panel_section'\n \"\n *ngIf=\"infoDrawerOpened$ | async\"\n >\n <adf-alfresco-viewer\n class=\"adf-search-results--embedded_viewer\"\n [nodeId]=\"selection.last.entry.id\"\n *ngIf=\"infoDrawerPreview$ | async; else infoDrawerPanel\"\n >\n <adf-viewer-toolbar>\n <div class=\"adf-search-results--preview-toolbar\">\n <div>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onDrawerClosed()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <button\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREVIEW' | translate }}\"\n color=\"accent\"\n class=\"adf-search-results--visibility_button\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onPreviewClosed()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </div>\n </div>\n </adf-viewer-toolbar>\n </adf-alfresco-viewer>\n <ng-template #infoDrawerPanel>\n <div class=\"sidebar\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </ng-template>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NavigateLibraryAction, AppStore } from '@alfresco/aca-shared/store';\nimport { NodePaging, Pagination, SiteEntry } from '@alfresco/js-api';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ContentManagementService } from '../../../services/content-management.service';\nimport { SearchLibrariesQueryBuilderService } from './search-libraries-query-builder.service';\nimport { AppExtensionService, AppHookService, AppService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'aca-search-results',\n templateUrl: './search-libraries-results.component.html',\n styleUrls: ['./search-libraries-results.component.scss']\n})\nexport class SearchLibrariesResultsComponent extends PageComponent implements OnInit {\n isSmallScreen = false;\n searchedWord: string;\n queryParamName = 'q';\n data: NodePaging;\n totalResults = 0;\n isLoading = false;\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private librariesQueryBuilder: SearchLibrariesQueryBuilderService,\n private route: ActivatedRoute,\n private appHookService: AppHookService,\n private appService: AppService,\n store: Store<AppStore>,\n extensions: AppExtensionService,\n content: ContentManagementService\n ) {\n super(store, extensions, content);\n\n librariesQueryBuilder.paging = {\n skipCount: 0,\n maxItems: 25\n };\n }\n\n ngOnInit() {\n this.appService.appNavNarMode$.next('collapsed');\n super.ngOnInit();\n\n this.columns = this.extensions.documentListPresets.searchLibraries || [];\n\n this.subscriptions.push(\n this.appHookService.libraryJoined.subscribe(() => this.librariesQueryBuilder.update()),\n this.appHookService.libraryDeleted.subscribe(() => this.librariesQueryBuilder.update()),\n this.appHookService.libraryLeft.subscribe(() => this.librariesQueryBuilder.update()),\n\n this.librariesQueryBuilder.updated.subscribe(() => {\n this.isLoading = true;\n\n this.librariesQueryBuilder.execute();\n }),\n\n this.librariesQueryBuilder.executed.subscribe((data) => {\n this.onSearchResultLoaded(data);\n this.isLoading = false;\n }),\n\n this.librariesQueryBuilder.hadError.subscribe((err) => {\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n if (statusCode === 400) {\n this.appHookService.library400Error.next();\n }\n } catch (e) {}\n }),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n );\n\n if (this.route) {\n this.route.params.forEach((params: Params) => {\n // eslint-disable-next-line no-prototype-builtins\n this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;\n const query = this.formatSearchQuery(this.searchedWord);\n\n if (query && query.length > 1) {\n this.librariesQueryBuilder.paging.skipCount = 0;\n this.librariesQueryBuilder.userQuery = query;\n this.librariesQueryBuilder.update();\n } else {\n this.librariesQueryBuilder.userQuery = null;\n this.librariesQueryBuilder.executed.next({\n list: { pagination: { totalItems: 0 }, entries: [] }\n });\n }\n });\n }\n }\n\n private formatSearchQuery(userInput: string) {\n if (!userInput) {\n return null;\n }\n return userInput.trim();\n }\n\n onSearchResultLoaded(nodePaging: NodePaging) {\n this.data = nodePaging;\n this.totalResults = this.getNumberOfResults();\n }\n\n getNumberOfResults() {\n if (this.data && this.data.list && this.data.list.pagination) {\n return this.data.list.pagination.totalItems;\n }\n return 0;\n }\n\n onPaginationChanged(pagination: Pagination) {\n this.librariesQueryBuilder.paging = {\n maxItems: pagination.maxItems,\n skipCount: pagination.skipCount\n };\n this.librariesQueryBuilder.update();\n }\n\n navigateTo(node: SiteEntry) {\n if (node && node.entry && node.entry.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.SEARCH_LIBRARIES.TITLE\"> </adf-breadcrumb>\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"> </mat-progress-bar>\n <div class=\"adf-search-results__content-header content\" *ngIf=\"data?.list.entries.length\">\n <div class=\"content__side--left\">\n <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults !== 1\">\n {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_RESULTS' | translate: { number: totalResults } }}\n </div>\n <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults === 1\">\n {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_ONE_RESULT' | translate: { number: totalResults } }}\n </div>\n </div>\n </div>\n\n <adf-document-list\n #documentList\n acaContextActions\n acaDocumentList\n [showHeader]=\"showHeader\"\n [selectionMode]=\"'single'\"\n [sorting]=\"['name', 'asc']\"\n [node]=\"data\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"!documentList.isEmpty()\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\">\n </adf-pagination>\n </div>\n </div>\n </div>\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { LockedByModule, PageLayoutModule } from '@alfresco/aca-shared';\nimport { SearchResultsComponent } from './search-results/search-results.component';\nimport { SearchResultsRowComponent } from './search-results-row/search-results-row.component';\nimport { SearchLibrariesResultsComponent } from './search-libraries-results/search-libraries-results.component';\nimport { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';\nimport { AppToolbarModule } from '../toolbar/toolbar.module';\nimport { AppCommonModule } from '../common/common.module';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { ContextMenuModule } from '../context-menu/context-menu.module';\nimport { SearchActionMenuComponent } from './search-action-menu/search-action-menu.component';\nimport { DocumentListCustomComponentsModule } from '../dl-custom-components/document-list-custom-components.module';\nimport { AppSearchInputModule } from './search-input.module';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule.forChild(),\n ContentModule.forChild(),\n AppCommonModule,\n AppInfoDrawerModule,\n AppToolbarModule,\n DirectivesModule,\n PageLayoutModule,\n ContextMenuModule,\n LockedByModule,\n DocumentListCustomComponentsModule,\n AppSearchInputModule\n ],\n declarations: [SearchResultsComponent, SearchLibrariesResultsComponent, SearchResultsRowComponent, SearchActionMenuComponent],\n exports: [SearchResultsComponent, SearchLibrariesResultsComponent, SearchResultsRowComponent, SearchActionMenuComponent]\n})\nexport class AppSearchResultsModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnDestroy, OnInit, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface VersionFormEntry {\n comment: string;\n version: boolean;\n}\n\n@Component({\n selector: 'app-node-version-form',\n templateUrl: './node-version-form.component.html',\n styleUrls: ['./node-version-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-node-version-form__container' },\n exportAs: 'nodeVersionForm'\n})\nexport class AppNodeVersionFormComponent implements OnInit, OnDestroy {\n @Output() update: EventEmitter<VersionFormEntry> = new EventEmitter();\n\n form: UntypedFormGroup;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n private versionOptions = [\n { label: 'VERSION.FORM.VERSION.MINOR', value: false },\n { label: 'VERSION.FORM.VERSION.MAJOR', value: true }\n ];\n\n constructor(private formBuilder: UntypedFormBuilder) {}\n\n ngOnInit() {\n this.form = this.formBuilder.group({\n comment: [''],\n version: [this.versionOptions[0].value]\n });\n\n this.form.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe((values: VersionFormEntry) => {\n this.update.emit(values);\n });\n }\n\n get versions() {\n return this.versionOptions;\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<form novalidate [formGroup]=\"form\" class=\"form\">\n <p class=\"form__subtitle\">\n {{ 'VERSION.FORM.SUBTITLE' | translate }}\n </p>\n\n <mat-radio-group formControlName=\"version\" class=\"form__version\">\n <mat-radio-button\n class=\"form__version--option\"\n color=\"primary\"\n *ngFor=\"let option of versions\"\n [attr.data-automation-id]=\"option.value\"\n [value]=\"option.value\"\n >\n {{ option.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-form-field class=\"form__comment\">\n <textarea\n matInput\n placeholder=\"{{ 'VERSION.FORM.COMMENT.PLACEHOLDER' | translate }}\"\n rows=\"1\"\n autocomplete=\"off\"\n formControlName=\"comment\"\n ></textarea>\n </mat-form-field>\n</form>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppNodeVersionFormComponent } from './node-version-form.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { CoreModule } from '@alfresco/adf-core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { NgModule } from '@angular/core';\n@NgModule({\n imports: [\n CoreModule,\n MatButtonModule,\n MatDialogModule,\n FormsModule,\n ReactiveFormsModule,\n BrowserModule,\n CommonModule,\n MatRadioModule,\n MatFormFieldModule,\n MatInputModule\n ],\n exports: [AppNodeVersionFormComponent],\n declarations: [AppNodeVersionFormComponent]\n})\nexport class AppNodeVersionModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AcaFileAutoDownloadService, AppExtensionService, ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { AppStore } from '@alfresco/aca-shared/store';\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { MinimalNodeEntity, MinimalNodeEntryEntity, PathElementEntity, PathInfo } from '@alfresco/js-api';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './favorites.component.html'\n})\nexport class FavoritesComponent extends PageComponent implements OnInit {\n isSmallScreen = false;\n\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private router: Router,\n store: Store<AppStore>,\n extensions: AppExtensionService,\n private contentApi: ContentApiService,\n content: ContentManagementService,\n private uploadService: UploadService,\n private breakpointObserver: BreakpointObserver,\n fileAutoDownloadService: AcaFileAutoDownloadService\n ) {\n super(store, extensions, content, fileAutoDownloadService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((_) => this.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((_) => this.reload()),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n ]);\n\n this.columns = this.extensions.documentListPresets.favorites;\n }\n\n navigate(favorite: MinimalNodeEntryEntity) {\n const { isFolder, id } = favorite;\n\n // TODO: rework as it will fail on non-English setups\n const isSitePath = (path: PathInfo): boolean => path && path.elements && path.elements.some(({ name }: PathElementEntity) => name === 'Sites');\n\n if (isFolder) {\n this.contentApi\n .getNode(id)\n .pipe(map((node) => node.entry))\n .subscribe(({ path }: MinimalNodeEntryEntity) => {\n const routeUrl = isSitePath(path) ? '/libraries' : '/personal-files';\n this.router.navigate([routeUrl, id]);\n });\n }\n }\n\n onNodeDoubleClick(node: MinimalNodeEntity) {\n if (node && node.entry) {\n if (node.entry.isFolder) {\n this.navigate(node.entry);\n }\n\n if (node.entry.isFile) {\n this.showPreview(node, { location: this.router.url });\n }\n }\n }\n\n handleNodeClick(event: Event) {\n this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.FAVORITES.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n currentFolderId=\"-favorites-\"\n selectionMode=\"multiple\"\n [navigate]=\"false\"\n [sorting]=\"['modifiedAt', 'desc']\"\n sortingMode=\"client\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"star_rate\" [title]=\"'APP.BROWSE.FAVORITES.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.FAVORITES.EMPTY_STATE.TEXT\">\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { Store } from '@ngrx/store';\nimport { AppStore } from '@alfresco/aca-shared/store';\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { debounceTime } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { AcaFileAutoDownloadService, AppExtensionService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './recent-files.component.html'\n})\nexport class RecentFilesComponent extends PageComponent implements OnInit {\n isSmallScreen = false;\n\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n store: Store<AppStore>,\n extensions: AppExtensionService,\n content: ContentManagementService,\n private uploadService: UploadService,\n private breakpointObserver: BreakpointObserver,\n private router: Router,\n fileAutoDownloadService: AcaFileAutoDownloadService\n ) {\n super(store, extensions, content, fileAutoDownloadService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.onFileUploadedEvent()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.onFileUploadedEvent()),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n ]);\n\n this.columns = this.extensions.documentListPresets.recent || [];\n }\n\n onNodeDoubleClick(node: MinimalNodeEntity) {\n if (node && node.entry) {\n this.showPreview(node, { location: this.router.url });\n }\n }\n\n handleNodeClick(event: Event) {\n this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n }\n\n private onFileUploadedEvent() {\n this.reload();\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.RECENT.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n currentFolderId=\"-recent-\"\n selectionMode=\"multiple\"\n [navigate]=\"false\"\n [sorting]=\"['modifiedAt', 'desc']\"\n sortingMode=\"client\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"access_time\" [title]=\"'APP.BROWSE.RECENT.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.RECENT.EMPTY_STATE.TEXT\">\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { Store } from '@ngrx/store';\nimport { debounceTime } from 'rxjs/operators';\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { Router } from '@angular/router';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\nimport { AcaFileAutoDownloadService, AppExtensionService, AppHookService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n@Component({\n templateUrl: './shared-files.component.html'\n})\nexport class SharedFilesComponent extends PageComponent implements OnInit {\n isSmallScreen = false;\n\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n store: Store<any>,\n extensions: AppExtensionService,\n content: ContentManagementService,\n private appHookService: AppHookService,\n private uploadService: UploadService,\n private breakpointObserver: BreakpointObserver,\n private router: Router,\n fileAutoDownloadService: AcaFileAutoDownloadService\n ) {\n super(store, extensions, content, fileAutoDownloadService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.appHookService.linksUnshared.pipe(debounceTime(300)).subscribe(() => this.reload()),\n\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((_) => this.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((_) => this.reload()),\n\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n ]);\n\n this.columns = this.extensions.documentListPresets.shared || [];\n }\n\n preview(node: MinimalNodeEntity) {\n this.showPreview(node, { location: this.router.url });\n }\n\n handleNodeClick(event: Event) {\n this.preview((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.SHARED.TITLE\"></adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n currentFolderId=\"-sharedlinks-\"\n selectionMode=\"multiple\"\n [sorting]=\"['modifiedAt', 'desc']\"\n [imageResolver]=\"imageResolver\"\n sortingMode=\"client\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"people\" [title]=\"'APP.BROWSE.SHARED.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.SHARED.EMPTY_STATE.TEXT\">\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppExtensionService, ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { AppStore, NavigateToPreviousPage, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-details-manager',\n templateUrl: './details.component.html',\n styleUrls: ['./details.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DetailsComponent extends PageComponent implements OnInit, OnDestroy {\n nodeId: string;\n isLoading: boolean;\n onDestroy$ = new Subject<boolean>();\n activeTab = 1;\n\n constructor(\n private route: ActivatedRoute,\n private contentApi: ContentApiService,\n store: Store<AppStore>,\n content: ContentManagementService,\n extensions: AppExtensionService\n ) {\n super(store, extensions, content);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.isLoading = true;\n const { route } = this;\n const { data } = route.snapshot;\n this.title = data.title;\n\n this.route.params.subscribe((params) => {\n this.isLoading = true;\n this.setActiveTab(params.activeTab);\n this.nodeId = params.nodeId;\n this.contentApi.getNode(this.nodeId).subscribe((node) => {\n this.node = node.entry;\n this.isLoading = false;\n this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));\n });\n });\n }\n\n setActiveTab(tabName: string) {\n switch (tabName) {\n case 'comments':\n this.activeTab = 1;\n break;\n case 'permissions':\n this.activeTab = 2;\n break;\n case 'metadata':\n default:\n this.activeTab = 0;\n }\n }\n\n goBack() {\n this.store.dispatch(new NavigateToPreviousPage());\n }\n\n ngOnDestroy(): void {\n this.store.dispatch(new SetSelectedNodesAction([]));\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" (navigate)=\"goBack()\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"acs-details-container\">\n <div class=\"acs-details-title\">\n <div class=\"acs-details-breadcrumb\" role=\"heading\" aria-level=\"2\" *ngIf=\"node\">\n <span class=\"acs-details-breadcrumb-library\"> {{ node.name }} </span>\n -\n <span class=\"acs-details-breadcrumb-item\">{{ 'APP.INFO_DRAWER.TITLE' | translate }}</span>\n </div>\n <div class=\"acs-close-members-container\">\n <button mat-icon-button data-automation-id=\"close-library\" title=\"{{ 'APP.INFO_DRAWER.CLOSE_LIBRARY' | translate }}\" (click)=\"goBack()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n\n <mat-tab-group [selectedIndex]=\"activeTab\" class=\"adw-details-tabs\">\n <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.PROPERTIES' | translate }}\">\n <app-metadata-tab *ngIf=\"node && !isLoading; else loading\" [node]=\"node\"> </app-metadata-tab>\n </mat-tab>\n <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.COMMENTS' | translate }}\">\n <app-comments-tab *ngIf=\"node && !isLoading; else loading\" [node]=\"node\"> </app-comments-tab>\n </mat-tab>\n <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.PERMISSIONS' | translate }}\">\n <adf-permission-list *ngIf=\"node && !isLoading; else loading\" [nodeId]=\"node.id\"></adf-permission-list>\n </mat-tab>\n </mat-tab-group>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n\n<ng-template #loading>\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"> </mat-progress-bar>\n</ng-template>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppConfigService } from '@alfresco/adf-core';\n\n@Component({\n template: ''\n})\nexport class HomeComponent implements OnInit {\n readonly DEFAULT_LANDING_PAGE = '/personal-files';\n\n constructor(private appConfig: AppConfigService, private router: Router) {}\n\n ngOnInit() {\n const landingPage = this.appConfig.get('landingPage', this.DEFAULT_LANDING_PAGE);\n this.router.navigateByUrl(landingPage);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthenticationService } from '@alfresco/adf-core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewProfileRuleGuard implements CanActivate {\n constructor(private authService: AuthenticationService) {}\n\n canActivate(_: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n return this.isEcmLoggedIn() || this.authService.isOauth();\n }\n\n private isEcmLoggedIn() {\n return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { SharedLinkEntry, SharedlinksApi } from '@alfresco/js-api';\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, from, of, Subject } from 'rxjs';\nimport { catchError, mergeMap, takeUntil } from 'rxjs/operators';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-shared-link-view',\n templateUrl: './shared-link-view.component.html',\n styleUrls: ['shared-link-view.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-shared-link-view' }\n})\nexport class SharedLinkViewComponent implements OnInit, OnDestroy {\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n private sharedLinksApi: SharedlinksApi;\n sharedLinkId: string = null;\n viewerToolbarActions: Array<ContentActionRef> = [];\n\n constructor(\n private route: ActivatedRoute,\n private store: Store<AppStore>,\n private extensions: AppExtensionService,\n private alfrescoApiService: AlfrescoApiService\n ) {\n this.sharedLinksApi = new SharedlinksApi(this.alfrescoApiService.getInstance());\n }\n\n ngOnInit() {\n this.route.params\n .pipe(\n mergeMap((params) =>\n forkJoin([from(this.sharedLinksApi.getSharedLink(params.id)), of(params.id)]).pipe(catchError(() => of([null, params.id])))\n )\n )\n .subscribe(([sharedEntry, sharedId]: [SharedLinkEntry, string]) => {\n if (sharedEntry) {\n this.store.dispatch(new SetSelectedNodesAction([sharedEntry as any]));\n }\n this.sharedLinkId = sharedId;\n });\n\n this.extensions\n .getSharedLinkViewerToolbarActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => {\n this.viewerToolbarActions = actions;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n}\n","<ng-container *ngIf=\"sharedLinkId\">\n <adf-alfresco-viewer [allowPrint]=\"false\" [allowDownload]=\"false\" [allowFullScreen]=\"false\" [sharedLinkId]=\"sharedLinkId\" [allowGoBack]=\"false\">\n <adf-viewer-toolbar-actions>\n <ng-container *ngFor=\"let action of viewerToolbarActions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"action\"></aca-toolbar-action>\n </ng-container>\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, getUserProfile } from '@alfresco/aca-shared/store';\nimport { DocumentListPresetRef, ProfileState } from '@alfresco/adf-extensions';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { AppExtensionService, PageComponent } from '@alfresco/aca-shared';\n\n@Component({\n templateUrl: './trashcan.component.html'\n})\nexport class TrashcanComponent extends PageComponent implements OnInit {\n isSmallScreen = false;\n user$: Observable<ProfileState>;\n\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n content: ContentManagementService,\n extensions: AppExtensionService,\n store: Store<AppStore>,\n private breakpointObserver: BreakpointObserver\n ) {\n super(store, extensions, content);\n this.user$ = this.store.select(getUserProfile);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions.push(\n this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {\n this.isSmallScreen = result.matches;\n })\n );\n\n this.columns = this.extensions.documentListPresets.trashcan || [];\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.TRASHCAN.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n currentFolderId=\"-trashcan-\"\n selectionMode=\"multiple\"\n [navigate]=\"false\"\n sortingMode=\"client\"\n [imageResolver]=\"imageResolver\"\n [sorting]=\"['archivedAt', 'desc']\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"delete\" [title]=\"'APP.BROWSE.TRASHCAN.EMPTY_STATE.TITLE'\">\n <p class=\"adf-empty-content__text\">\n {{ 'APP.BROWSE.TRASHCAN.EMPTY_STATE.FIRST_TEXT' | translate }}\n </p>\n <p class=\"adf-empty-content__text\">\n {{ 'APP.BROWSE.TRASHCAN.EMPTY_STATE.SECOND_TEXT' | translate }}\n </p>\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n\n <data-column\n *ngIf=\"!isSmallScreen && (user$ | async)?.isAdmin\"\n class=\"adf-ellipsis-cell\"\n key=\"archivedByUser.displayName\"\n title=\"APP.DOCUMENT_LIST.COLUMNS.DELETED_BY\"\n >\n </data-column>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { FilesComponent } from './components/files/files.component';\nimport { LibrariesComponent } from './components/libraries/libraries.component';\nimport { FavoriteLibrariesComponent } from './components/favorite-libraries/favorite-libraries.component';\nimport { SearchResultsComponent } from './components/search/search-results/search-results.component';\nimport { SearchLibrariesResultsComponent } from './components/search/search-libraries-results/search-libraries-results.component';\nimport { AppSharedRuleGuard, GenericErrorComponent, ExtensionRoute, ExtensionsDataLoaderGuard } from '@alfresco/aca-shared';\nimport { AuthGuard } from '@alfresco/adf-core';\nimport { FavoritesComponent } from './components/favorites/favorites.component';\nimport { RecentFilesComponent } from './components/recent-files/recent-files.component';\nimport { SharedFilesComponent } from './components/shared-files/shared-files.component';\nimport { DetailsComponent } from './components/details/details.component';\nimport { HomeComponent } from './components/home/home.component';\nimport { ViewProfileComponent } from './components/view-profile/view-profile.component';\nimport { ViewProfileRuleGuard } from './components/view-profile/view-profile.guard';\nimport { Route } from '@angular/router';\nimport { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';\nimport { TrashcanComponent } from './components/trashcan/trashcan.component';\nimport { ShellLayoutComponent } from '@alfresco/adf-core/shell';\n\nexport const CONTENT_ROUTES: ExtensionRoute[] = [\n {\n path: 'preview/s/:id',\n children: [\n {\n path: '',\n component: SharedLinkViewComponent,\n data: {\n title: 'APP.PREVIEW.TITLE'\n }\n }\n ]\n },\n {\n path: 'view',\n component: ShellLayoutComponent,\n children: [\n {\n path: ':nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n }\n];\n\nexport const CONTENT_LAYOUT_ROUTES: Route = {\n path: '',\n canActivate: [ExtensionsDataLoaderGuard],\n children: [\n {\n path: 'profile',\n canActivate: [ViewProfileRuleGuard],\n component: ViewProfileComponent\n },\n {\n path: '',\n component: HomeComponent\n },\n {\n path: 'personal-files',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n sortingPreferenceKey: 'personal-files',\n title: 'APP.BROWSE.PERSONAL.TITLE',\n defaultNodeId: '-my-'\n }\n },\n {\n path: 'details/:nodeId',\n children: [\n {\n path: '',\n component: DetailsComponent,\n data: {\n navigateSource: 'personal-files'\n }\n },\n {\n path: ':activeTab',\n component: DetailsComponent,\n data: {\n title: 'APP.BROWSE.PERSONAL.PERMISSIONS.TITLE',\n navigateSource: 'personal-files'\n }\n }\n ]\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'personal-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'personal-files/:folderId',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n title: 'APP.BROWSE.PERSONAL.TITLE',\n sortingPreferenceKey: 'personal-files'\n }\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'personal-files'\n }\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: ':folderId/preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'personal-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'libraries',\n children: [\n {\n path: '',\n component: LibrariesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE',\n sortingPreferenceKey: 'libraries'\n }\n }\n ]\n },\n {\n path: 'libraries/:folderId',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE',\n sortingPreferenceKey: 'libraries-files'\n }\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'libraries'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ],\n data: {\n navigateSource: 'libraries'\n }\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'favorite',\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'libraries'\n },\n {\n path: 'libraries',\n component: FavoriteLibrariesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE',\n sortingPreferenceKey: 'favorite-libraries'\n }\n }\n ]\n },\n {\n path: 'favorite/libraries/:folderId',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE',\n sortingPreferenceKey: 'libraries-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'favorites',\n data: {\n sortingPreferenceKey: 'favorites'\n },\n children: [\n {\n path: '',\n component: FavoritesComponent,\n data: {\n title: 'APP.BROWSE.FAVORITES.TITLE',\n sortingPreferenceKey: 'favorites'\n }\n // loadChildren:\n // './components/favorites/favorites.module#AppFavoritesModule'\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'favorites'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'favorites'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'favorites'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'recent-files',\n data: {\n sortingPreferenceKey: 'recent-files'\n },\n children: [\n {\n path: '',\n component: RecentFilesComponent,\n data: {\n title: 'APP.BROWSE.RECENT.TITLE'\n }\n // loadChildren:\n // './components/recent-files/recent-files.module#AppRecentFilesModule'\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'recent-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'recent-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'recent-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'shared',\n children: [\n {\n path: '',\n data: {\n title: 'APP.BROWSE.SHARED.TITLE',\n sortingPreferenceKey: 'shared-files'\n },\n component: SharedFilesComponent\n // loadChildren:\n // './components/shared-files/shared-files.module#AppSharedFilesModule'\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'shared'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'shared'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'shared'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ],\n canActivateChild: [AppSharedRuleGuard],\n canActivate: [AppSharedRuleGuard]\n },\n {\n path: 'trashcan',\n children: [\n {\n path: '',\n component: TrashcanComponent,\n data: {\n title: 'APP.BROWSE.TRASHCAN.TITLE',\n sortingPreferenceKey: 'trashcan'\n }\n }\n ]\n },\n {\n path: 'search',\n children: [\n {\n path: '',\n component: SearchResultsComponent,\n data: {\n title: 'APP.BROWSE.SEARCH.TITLE'\n }\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'search'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'search'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'search'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'search-libraries',\n children: [\n {\n path: '',\n component: SearchLibrariesResultsComponent,\n data: {\n title: 'APP.BROWSE.SEARCH.TITLE'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'search'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'nodes/:nodeId',\n children: [\n {\n path: '',\n loadChildren: () => import('@alfresco/aca-folder-rules').then((m) => m.AcaFolderRulesModule)\n }\n ]\n },\n {\n path: '**',\n component: GenericErrorComponent\n }\n ],\n canActivateChild: [AuthGuard]\n};\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getFileUploadingDialog } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'aca-upload-files-dialog',\n templateUrl: './upload-files-dialog.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadFilesDialogComponent implements OnDestroy {\n showFileUploadingDialog$: Observable<boolean>;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>) {\n this.showFileUploadingDialog$ = this.store.select(getFileUploadingDialog).pipe(delay(0), takeUntil(this.onDestroy$));\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<adf-file-uploading-dialog *ngIf=\"showFileUploadingDialog$ | async\" position=\"left\">\n</adf-file-uploading-dialog>","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { TrashcanComponent } from './trashcan.component';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { AppCommonModule } from '../common/common.module';\nimport { AppToolbarModule } from '../toolbar/toolbar.module';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { ContextMenuModule } from '../context-menu/context-menu.module';\nimport { AppSearchInputModule } from '../search/search-input.module';\nimport { PageLayoutModule } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule.forChild(),\n ContentModule.forChild(),\n DirectivesModule,\n AppCommonModule,\n AppToolbarModule,\n ContextMenuModule,\n PageLayoutModule,\n AppSearchInputModule\n ],\n declarations: [TrashcanComponent],\n exports: [TrashcanComponent]\n})\nexport class AppTrashcanModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { SharedLinkViewComponent } from './shared-link-view.component';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { AppCommonModule } from '../common/common.module';\nimport { AppToolbarModule } from '../toolbar/toolbar.module';\nimport { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';\nimport { CoreExtensionsModule } from '../../extensions/core.extensions.module';\nimport { ContentModule } from '@alfresco/adf-content-services';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule.forChild(),\n DirectivesModule,\n AppCommonModule,\n AppToolbarModule,\n CoreExtensionsModule.forChild(),\n AppInfoDrawerModule,\n ContentModule\n ],\n declarations: [SharedLinkViewComponent],\n exports: [SharedLinkViewComponent]\n})\nexport class AppSharedLinkViewModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { HammerModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n TRANSLATION_PROVIDER,\n CoreModule,\n AppConfigService,\n DebugAppConfigService,\n AuthGuardEcm,\n LanguagePickerComponent,\n NotificationHistoryComponent\n} from '@alfresco/adf-core';\nimport {\n ContentModule,\n ContentVersionService,\n LibraryNameColumnComponent,\n LibraryRoleColumnComponent,\n LibraryStatusColumnComponent,\n TrashcanNameColumnComponent\n} from '@alfresco/adf-content-services';\nimport { DocumentBasePageService, ExtensionsDataLoaderGuard, PageLayoutModule, RouterExtensionService, SharedModule } from '@alfresco/aca-shared';\nimport * as rules from '@alfresco/aca-shared/rules';\n\nimport { FilesComponent } from './components/files/files.component';\nimport { LibrariesComponent } from './components/libraries/libraries.component';\nimport { FavoriteLibrariesComponent } from './components/favorite-libraries/favorite-libraries.component';\nimport { ViewProfileModule } from './components/view-profile/view-profile.module';\n\nimport { AppStoreModule } from './store/app-store.module';\nimport { MaterialModule } from './material.module';\nimport { CoreExtensionsModule } from './extensions/core.extensions.module';\nimport { AppInfoDrawerModule } from './components/info-drawer/info.drawer.module';\nimport { DirectivesModule } from './directives/directives.module';\nimport { ContextMenuModule } from './components/context-menu/context-menu.module';\nimport { ExtensionService, ExtensionsModule } from '@alfresco/adf-extensions';\nimport { AppToolbarModule } from './components/toolbar/toolbar.module';\nimport { AppCreateMenuModule } from './components/create-menu/create-menu.module';\nimport { AppSidenavModule } from './components/sidenav/sidenav.module';\nimport { AppCommonModule } from './components/common/common.module';\nimport { AppSearchInputModule } from './components/search/search-input.module';\nimport { DocumentListCustomComponentsModule } from './components/dl-custom-components/document-list-custom-components.module';\nimport { AppSearchResultsModule } from './components/search/search-results.module';\nimport { AppNodeVersionModule } from './components/node-version/node-version.module';\nimport { FavoritesComponent } from './components/favorites/favorites.component';\nimport { RecentFilesComponent } from './components/recent-files/recent-files.component';\nimport { SharedFilesComponent } from './components/shared-files/shared-files.component';\nimport { CreateFromTemplateDialogComponent } from './dialogs/node-template/create-from-template.dialog';\nimport { DetailsComponent } from './components/details/details.component';\nimport { ContentUrlService } from './services/content-url.service';\nimport { HomeComponent } from './components/home/home.component';\n\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport localeFr from '@angular/common/locales/fr';\nimport localeDe from '@angular/common/locales/de';\nimport localeIt from '@angular/common/locales/it';\nimport localeEs from '@angular/common/locales/es';\nimport localeJa from '@angular/common/locales/ja';\nimport localeNl from '@angular/common/locales/nl';\nimport localePt from '@angular/common/locales/pt';\nimport localeNb from '@angular/common/locales/nb';\nimport localeRu from '@angular/common/locales/ru';\nimport localeCh from '@angular/common/locales/zh';\nimport localeAr from '@angular/common/locales/ar';\nimport localeCs from '@angular/common/locales/cs';\nimport localePl from '@angular/common/locales/pl';\nimport localeFi from '@angular/common/locales/fi';\nimport localeDa from '@angular/common/locales/da';\nimport localeSv from '@angular/common/locales/sv';\nimport { LocationLinkComponent } from './components/common/location-link/location-link.component';\nimport { LogoutComponent } from './components/common/logout/logout.component';\nimport { ToggleSharedComponent } from './components/common/toggle-shared/toggle-shared.component';\nimport { CustomNameColumnComponent } from './components/dl-custom-components/name-column/name-column.component';\nimport { CommentsTabComponent } from './components/info-drawer/comments-tab/comments-tab.component';\nimport { LibraryMetadataTabComponent } from './components/info-drawer/library-metadata-tab/library-metadata-tab.component';\nimport { MetadataTabComponent } from './components/info-drawer/metadata-tab/metadata-tab.component';\nimport { VersionsTabComponent } from './components/info-drawer/versions-tab/versions-tab.component';\nimport { PreviewComponent } from '@alfresco/aca-preview';\nimport { DocumentDisplayModeComponent } from './components/toolbar/document-display-mode/document-display-mode.component';\nimport { ToggleEditOfflineComponent } from './components/toolbar/toggle-edit-offline/toggle-edit-offline.component';\nimport { ToggleFavoriteLibraryComponent } from './components/toolbar/toggle-favorite-library/toggle-favorite-library.component';\nimport { ToggleFavoriteComponent } from './components/toolbar/toggle-favorite/toggle-favorite.component';\nimport { ToggleInfoDrawerComponent } from './components/toolbar/toggle-info-drawer/toggle-info-drawer.component';\nimport { ToggleJoinLibraryButtonComponent } from './components/toolbar/toggle-join-library/toggle-join-library-button.component';\nimport { ToggleJoinLibraryMenuComponent } from './components/toolbar/toggle-join-library/toggle-join-library-menu.component';\nimport { ViewNodeComponent } from './components/toolbar/view-node/view-node.component';\nimport { CONTENT_ROUTES } from './aca-content.routes';\nimport { RouterModule } from '@angular/router';\nimport { UploadFilesDialogComponent } from './components/upload-files-dialog/upload-files-dialog.component';\nimport { AppTrashcanModule } from './components/trashcan/trashcan.module';\nimport { AppSharedLinkViewModule } from './components/shared-link-view/shared-link-view.module';\nimport { AcaFolderRulesModule } from '@alfresco/aca-folder-rules';\nimport { TagsColumnComponent } from './components/dl-custom-components/tags-column/tags-column.component';\nimport { UserInfoComponent } from './components/common/user-info/user-info.component';\nimport { SidenavComponent } from './components/sidenav/sidenav.component';\nimport { ContentManagementService } from './services/content-management.service';\nimport { ShellLayoutComponent, SHELL_NAVBAR_MIN_WIDTH } from '@alfresco/adf-core/shell';\n\nregisterLocaleData(localeFr);\nregisterLocaleData(localeDe);\nregisterLocaleData(localeIt);\nregisterLocaleData(localeEs);\nregisterLocaleData(localeJa);\nregisterLocaleData(localeNl);\nregisterLocaleData(localePt);\nregisterLocaleData(localeNb);\nregisterLocaleData(localeRu);\nregisterLocaleData(localeCh);\nregisterLocaleData(localeAr);\nregisterLocaleData(localeCs);\nregisterLocaleData(localePl);\nregisterLocaleData(localeFi);\nregisterLocaleData(localeDa);\nregisterLocaleData(localeSv);\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ContentModule.forRoot(),\n RouterModule.forChild(CONTENT_ROUTES),\n CoreModule.forChild(),\n ExtensionsModule.forChild(),\n CoreExtensionsModule.forChild(),\n SharedModule,\n MaterialModule,\n AppStoreModule,\n AppCommonModule,\n PageLayoutModule,\n DirectivesModule,\n ContextMenuModule,\n AppInfoDrawerModule,\n AppToolbarModule,\n AppSidenavModule,\n AppCreateMenuModule,\n DocumentListCustomComponentsModule,\n AppSearchInputModule,\n AppSearchResultsModule,\n AppNodeVersionModule,\n HammerModule,\n ViewProfileModule,\n AppTrashcanModule,\n AppSharedLinkViewModule,\n AcaFolderRulesModule\n ],\n declarations: [\n FilesComponent,\n DetailsComponent,\n LibrariesComponent,\n FavoriteLibrariesComponent,\n FavoritesComponent,\n RecentFilesComponent,\n SharedFilesComponent,\n CreateFromTemplateDialogComponent,\n HomeComponent,\n UploadFilesDialogComponent\n ],\n providers: [\n { provide: AppConfigService, useClass: DebugAppConfigService },\n { provide: ContentVersionService, useClass: ContentUrlService },\n { provide: DocumentBasePageService, useExisting: ContentManagementService },\n {\n provide: TRANSLATION_PROVIDER,\n multi: true,\n useValue: {\n name: 'app',\n source: 'assets'\n }\n },\n { provide: SHELL_NAVBAR_MIN_WIDTH, useValue: 0 }\n ]\n})\nexport class ContentServiceExtensionModule {\n constructor(public extensions: ExtensionService, public routeExtensionService: RouterExtensionService) {\n extensions.setAuthGuards({\n 'app.auth': AuthGuardEcm,\n 'app.extensions.dataLoaderGuard': ExtensionsDataLoaderGuard\n });\n\n extensions.setComponents({\n 'app.layout.main': ShellLayoutComponent,\n 'app.layout.sidenav': SidenavComponent,\n 'app.shell.sibling': UploadFilesDialogComponent,\n 'app.components.tabs.metadata': MetadataTabComponent,\n 'app.components.tabs.library.metadata': LibraryMetadataTabComponent,\n 'app.components.tabs.comments': CommentsTabComponent,\n 'app.components.tabs.versions': VersionsTabComponent,\n 'app.components.preview': PreviewComponent,\n 'app.toolbar.toggleInfoDrawer': ToggleInfoDrawerComponent,\n 'app.toolbar.toggleFavorite': ToggleFavoriteComponent,\n 'app.toolbar.toggleFavoriteLibrary': ToggleFavoriteLibraryComponent,\n 'app.toolbar.toggleJoinLibrary': ToggleJoinLibraryButtonComponent,\n 'app.toolbar.cardView': DocumentDisplayModeComponent,\n 'app.menu.toggleJoinLibrary': ToggleJoinLibraryMenuComponent,\n 'app.shared-link.toggleSharedLink': ToggleSharedComponent,\n 'app.columns.name': CustomNameColumnComponent,\n 'app.columns.libraryName': LibraryNameColumnComponent,\n 'app.columns.libraryRole': LibraryRoleColumnComponent,\n 'app.columns.libraryStatus': LibraryStatusColumnComponent,\n 'app.columns.trashcanName': TrashcanNameColumnComponent,\n 'app.columns.location': LocationLinkComponent,\n 'app.columns.tags': TagsColumnComponent,\n 'app.toolbar.toggleEditOffline': ToggleEditOfflineComponent,\n 'app.toolbar.viewNode': ViewNodeComponent,\n 'app.languagePicker': LanguagePickerComponent,\n 'app.logout': LogoutComponent,\n 'app.user': UserInfoComponent,\n 'app.notification-center': NotificationHistoryComponent\n });\n\n extensions.setEvaluators({\n canCopyNode: rules.canCopyNode,\n canToggleJoinLibrary: rules.canToggleJoinLibrary,\n canEditFolder: rules.canEditFolder,\n isTrashcanItemSelected: rules.isTrashcanItemSelected,\n canViewFile: rules.canViewFile,\n canLeaveLibrary: rules.canLeaveLibrary,\n canToggleSharedLink: rules.canToggleSharedLink,\n canShowInfoDrawer: rules.canShowInfoDrawer,\n canManageFileVersions: rules.canManageFileVersions,\n canManagePermissions: rules.canManagePermissions,\n canToggleEditOffline: rules.canToggleEditOffline,\n canToggleFavorite: rules.canToggleFavorite,\n isLibraryManager: rules.isLibraryManager,\n canEditAspects: rules.canEditAspects,\n canInfoPreview: rules.canInfoPreview,\n showInfoSelectionButton: rules.showInfoSelectionButton,\n\n 'app.selection.canDelete': rules.canDeleteSelection,\n 'app.selection.file.canUnlock': rules.canUnlockFile,\n 'app.selection.file.canLock': rules.canLockFile,\n 'app.selection.canDownload': rules.canDownloadSelection,\n 'app.selection.notEmpty': rules.hasSelection,\n 'app.selection.canUnshare': rules.canUnshareNodes,\n 'app.selection.canAddFavorite': rules.canAddFavorite,\n 'app.selection.canRemoveFavorite': rules.canRemoveFavorite,\n 'app.selection.first.canUpdate': rules.canUpdateSelectedNode,\n 'app.selection.file': rules.hasFileSelected,\n 'app.selection.file.canShare': rules.canShareFile,\n 'app.selection.file.isShared': rules.isShared,\n 'app.selection.file.isLocked': rules.hasLockedFiles,\n 'app.selection.file.isLockOwner': rules.isUserWriteLockOwner,\n 'app.selection.file.canUploadVersion': rules.canUploadVersion,\n 'app.selection.library': rules.hasLibrarySelected,\n 'app.selection.isPrivateLibrary': rules.isPrivateLibrary,\n 'app.selection.hasLibraryRole': rules.hasLibraryRole,\n 'app.selection.hasNoLibraryRole': rules.hasNoLibraryRole,\n 'app.selection.folder': rules.hasFolderSelected,\n 'app.selection.folder.canUpdate': rules.canUpdateSelectedFolder,\n\n 'app.navigation.folder.canCreate': rules.canCreateFolder,\n 'app.navigation.folder.canUpload': rules.canUpload,\n 'app.navigation.isTrashcan': rules.isTrashcan,\n 'app.navigation.isNotTrashcan': rules.isNotTrashcan,\n 'app.navigation.isLibraries': rules.isLibraries,\n 'app.navigation.isLibraryFiles': rules.isLibraryFiles,\n 'app.navigation.isPersonalFiles': rules.isPersonalFiles,\n 'app.navigation.isNotLibraries': rules.isNotLibraries,\n 'app.navigation.isSharedFiles': rules.isSharedFiles,\n 'app.navigation.isNotSharedFiles': rules.isNotSharedFiles,\n 'app.navigation.isFavorites': rules.isFavorites,\n 'app.navigation.isNotFavorites': rules.isNotFavorites,\n 'app.navigation.isRecentFiles': rules.isRecentFiles,\n 'app.navigation.isNotRecentFiles': rules.isNotRecentFiles,\n 'app.navigation.isSearchResults': rules.isSearchResults,\n 'app.navigation.isNotSearchResults': rules.isNotSearchResults,\n 'app.navigation.isPreview': rules.isPreview,\n 'app.navigation.isSharedPreview': rules.isSharedPreview,\n 'app.navigation.isFavoritesPreview': rules.isFavoritesPreview,\n 'app.navigation.isSharedFileViewer': rules.isSharedFileViewer,\n\n 'repository.isQuickShareEnabled': rules.hasQuickShareEnabled,\n 'user.isAdmin': rules.isAdmin,\n 'app.canShowLogout': rules.canShowLogout,\n 'app.isContentServiceEnabled': rules.isContentServiceEnabled,\n 'app.isUploadSupported': rules.isUploadSupported,\n 'app.canCreateLibrary': rules.canCreateLibrary,\n 'app.isSearchSupported': rules.isSearchSupported\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * Public API Surface of aca-content\n */\n\nexport * from './lib/aca-content.module';\nexport * from './lib/aca-content.routes';\nexport * from './lib/extensions/core.extensions.module';\nexport * from './lib/store/initial-state';\nexport * from './lib/services/content-url.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i2","i5.NodeActionsService","i6","i7","i1","i5","i4.NodeActionsService","i6.ContentManagementService","i8","i10","i11","i12.DocumentListDirective","i13","i1.ContentManagementService","i9.DocumentListDirective","i9","i5.ContentUrlService","i3.ContentManagementService","i3.SearchNavigationService","i4.ContentManagementService","i6.NodeTemplateService","i9.ContextMenuItemComponent","i10.OutsideEventDirective","i1.ContextMenuService","i1.LibraryMetadataFormComponent","i2.ActionDirective","i5.ExpansionPanelDirective","i6.ActiveLinkDirective","i7.ActionDirective","i6.ExpandMenuComponent","i7.SidenavHeaderComponent","i6.MenuPanelDirective","i7.ActiveLinkDirective","i8.ActionDirective","i2.SearchLibrariesQueryBuilderService","i7.SearchNavigationService","i12","i14","i15","i17.SearchInputControlComponent","i18","i6.LocationLinkComponent","i5.ContentManagementService","i13.DocumentListDirective","i14.ThumbnailColumnComponent","i15.TagsColumnComponent","i16.SearchInputComponent","i17.SearchResultsRowComponent","i18.SearchActionMenuComponent","i19","i10.DocumentListDirective","i12.MetadataTabComponent","i13.CommentsTabComponent","i8.DocumentListDirective","LanguagePickerComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA+BU,kBAAkB,CAAA;AAY7B,IAAA,WAAA,CACU,cAA8B,EAC9B,UAA6B,EAC7B,MAAiB,EACjB,mBAAwC,EACxC,UAA8B,EAC9B,WAA+B,EAC/B,gBAAkC,EAAA;AANlC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAC7B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AACjB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;AAC9B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAC/B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAlB5C,QAAA,IAAA,CAAA,aAAa,GAAiC,IAAI,OAAO,EAAuB,CAAC;AACjF,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,OAAO,EAAO,CAAC;AAChD,QAAA,IAAkB,CAAA,kBAAA,GAAU,EAAE,CAAC;AAC/B,QAAA,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;KAgBhC;AAbJ,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAYD;;;;;;AAMG;AACH,IAAA,SAAS,CAAC,eAAsB,EAAE,UAAmB,EAAE,6BAAsC,EAAA;AAC3F,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,6BAA6B,CAAC,CAAC;KAC3G;AAED;;;;;;AAMG;AACH,IAAA,SAAS,CAAC,eAAsB,EAAE,UAAmB,EAAE,6BAAsC,EAAA;AAC3F,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,6BAA6B,CAAC,CAAC;KAC3G;AAED;;;;;;;AAOG;AACH,IAAA,gBAAgB,CAAC,MAA0B,EAAE,eAAsB,EAAE,UAAmB,EAAE,6BAAsC,EAAA;AAC9H,QAAA,MAAM,UAAU,GAAoB,IAAI,OAAO,EAAU,CAAC;AAE1D,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE;YAC/C,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,SAAA;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE;AACpE,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,6BAA6B,CAAC,CAAC;AAClH,YAAA,oBAAoB,CAAC,SAAS,CAAC,CAAC,UAAoC,KAAI;gBACtE,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;gBAE9C,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;AAC9D,gBAAA,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;gBAC1D,MAAM,KAAK,GAAU,EAAE,CAAC;;AAGxB,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAA,IAAI,OAAwB,CAAC;AAE7B,gBAAA,IAAI,MAAM,KAAK,UAAU,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE;AACpF,oBAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3E,iBAAA;AAAM,qBAAA;AACL,oBAAA,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;wBAE/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,MAAM,CAAC,WAAW,EAAE,CAAA,UAAA,CAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACzB,iBAAA;AAED,gBAAA,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AAC/B,oBAAA,UAAU,CAAC,IAAI,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC,CAAC;oBAEnF,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACvD,oBAAA,IAAI,MAAM,KAAK,UAAU,CAAC,IAAI,EAAE;wBAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAClD,qBAAA;AAAM,yBAAA,IAAI,MAAM,KAAK,UAAU,CAAC,IAAI,EAAE;AACrC,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,qBAAA;iBACF,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAED,IAAA,oBAAoB,CAAC,eAAsB,EAAA;AACzC,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,EAAE;AAC7C,YAAA,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACnH,OAAO,CAAC,YAAY,CAAC;AACtB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,eAAe,CAAC,MAA0B,EAAE,eAAsB,EAAE,UAAmB,EAAA;QACrF,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAC7G,OAAO,CAAC,cAAc,CAAC;KACxB;AAED,IAAA,gBAAgB,CAAC,SAAiC,EAAA;QAChD,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,IAAI,SAAS,CAAC,QAAQ,EAAE;AACtB,YAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC;AACpC,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtF,YAAA,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAChF,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACtB;AAED,IAAA,uBAAuB,CACrB,MAAkB,EAClB,eAAoC,EACpC,6BAAsC,EAAA;AAEtC,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAE9E,QAAA,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC;AACpC,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,KAAK,EAAE;AACL,4BAAA,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAC1E,yBAAA;AACF,qBAAA;AACD,oBAAA;AACE,wBAAA,KAAK,EAAE;AACL,4BAAA,IAAI,EAAE,WAAW;4BACjB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,2DAA2D,CAAC;AAC7F,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;AACzC,QAAA,MAAM,IAAI,GAAqC;AAC7C,YAAA,aAAa,EAAE,QAAQ;YACvB,KAAK;AACL,YAAA,eAAe,EAAE,qBAAqB;AACtC,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,gBAAgB,EAAE,cAAc;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACrD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,MAAM,EAAE,IAAI,OAAO,EAA4B;YAC/C,kBAAkB,EAAE,wBAAwB,CAAC,sBAAsB;SACpE,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM;aACR,IAAI,CAAC,4BAA4B,EAAE;YAClC,IAAI;AACJ,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,QAAQ;SACf,CAAC;AACD,aAAA,WAAW,EAAE;aACb,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAExE,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,SAAA,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,mBAAmB,CAAC,MAAc,EAAE,KAAA,GAA6B,EAAE,EAAA;QACjE,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,IAAI,IAAI,GAAG,EAAE,CAAC;AAEd,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;YAC7C,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,SAAS,GAAG,MAAM,CAAC;AACpB,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA,cAAA,EAAiB,MAAM,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;KACzG;AAEO,IAAA,mBAAmB,CAAC,KAA6B,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACrE;AAEO,IAAA,yBAAyB,CAAC,KAA6B,EAAA;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KACpE;AAEO,IAAA,MAAM,CAAC,KAAK,EAAA;AAClB,QAAA,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;KACtF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;;AAGO,IAAA,mBAAmB,CAAC,IAA4B,EAAA;QACtD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEpC,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AACrC,oBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AAGtB,oBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,wBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACzE,wBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;AACzB,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACnE,qBAAA;AACF,iBAAA;qBAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AACvC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9B,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;oBACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;AACrF,oBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,IAAI,GAAG;gBACL,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,8CAA8C,CAAC;AAC9E,gBAAA,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;aAChB,CAAC;AACV,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAGO,IAAA,iBAAiB,CAAC,IAA4B,EAAA;AACpD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGpC,QAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AAGtB,QAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;AAC5F,QAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;;;YAG9B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;AAG7B,YAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;;AAEL,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;AACzE,YAAA,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;AACf,gBAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;KACF;AAED,IAAA,eAAe,CAAC,IAA4B,EAAA;AAC1C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,cAAc,CAAC,SAAc,EAAE,WAAmB,EAAA;QAChD,IAAI,SAAS,CAAC,QAAQ,EAAE;YACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;;YAEL,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACvD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,YAAiB,EAAE,WAAmB,EAAE,OAAgB,EAAA;AACxE,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC;;QAE9C,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;;AAG9D,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC9D,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,aAAa,CAAC;YAClB,IAAI;AACF,gBAAA,MAAM,EACJ,KAAK,EAAE,EAAE,UAAU,EAAE,EACtB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,aAAa,GAAG,UAAU,CAAC;AAC5B,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;;AAEX,aAAA;AAED,YAAA,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,EAAE;AAC1C,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5G,aAAA;AAAM,iBAAA;;AAEL,gBAAA,OAAO,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;AAClC,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,gBAAgB,CAAC,YAAiB,EAAE,WAAmB,EAAA;;QAErD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;AAC9D,QAAA,IAAI,kBAAmC,CAAC;AACxC,QAAA,IAAI,eAAgC,CAAC;AACrC,QAAA,IAAI,oBAAoB,CAAC;QAEzB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CACvE,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,aAAa,CAAC;YAClB,IAAI;AACF,gBAAA,MAAM,EACJ,KAAK,EAAE,EAAE,UAAU,EAAE,EACtB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,aAAa,GAAG,UAAU,CAAC;AAC5B,aAAA;AAAC,YAAA,OAAA,EAAA,EAAM,GAAE;AAEV,YAAA,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,EAAE;gBAC1C,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACzE,gBAAA,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;gBAEvD,OAAO,kBAAkB,CAAC,IAAI,CAC5B,QAAQ,CAAC,CAAC,WAAW,KAAI;oBACvB,oBAAoB,GAAG,WAAW,CAAC;AACnC,oBAAA,OAAO,eAAe,CAAC;AACzB,iBAAC,CAAC,EACF,QAAQ,CAAC,CAAC,WAAW,KAAI;oBACvB,MAAM,KAAK,GAAG,EAAE,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxC,wBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvB,4BAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,yBAAA;AAAM,6BAAA;AACL,4BAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,yBAAA;AACH,qBAAC,CAAC,CAAC;AAEH,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,wBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACf,qBAAA;AACD,oBAAA,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;iBACtB,CAAC,CACH,CAAC;AACH,aAAA;AAAM,iBAAA;;AAEL,gBAAA,OAAO,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;AAClC,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,cAAc,CAAC,SAAS,EAAE,WAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAE7B,IAAI,SAAS,CAAC,QAAQ,EAAE;AACtB,YAAA,MAAM,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC;AAE3C,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CACvD,QAAQ,CAAC,CAAC,UAAU,KAAI;;gBAEtB,IAAI,eAAe,KAAK,WAAW,EAAE;AACnC,oBAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;AACvB,iBAAA;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACjD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;;AAG5D,gBAAA,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;AAErC,oBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9D,QAAQ,CAAC,CAAC,uBAAuB,KAAI;AACnC,wBAAA,IAAI,uBAAuB,EAAE;;4BAE3B,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC;;AAErD,4BAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CACjD,QAAQ,CAAC,MAAK;AACZ,gCAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,gCAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;6BACvB,CAAC,CACH,CAAC;AACH,yBAAA;AACD,wBAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;qBACvB,CAAC,CACH,CAAC;AACH,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;aACvB,CAAC,CACH,CAAC;AACH,SAAA;AAAM,aAAA;;YAEL,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACvD,SAAA;KACF;IAED,gBAAgB,CAAC,YAAY,EAAE,WAAmB,EAAA;;QAEhD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAC5D,QAAA,IAAI,kBAAmC,CAAC;AACxC,QAAA,IAAI,eAAgC,CAAC;AACrC,QAAA,IAAI,oBAAoB,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,EACpD,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,aAAa,CAAC;YAClB,IAAI;AACF,gBAAA,MAAM,EACJ,KAAK,EAAE,EAAE,UAAU,EAAE,EACtB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,aAAa,GAAG,UAAU,CAAC;AAC5B,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;;AAEX,aAAA;AAED,YAAA,IAAI,aAAa,IAAI,aAAa,KAAK,GAAG,EAAE;gBAC1C,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACzE,gBAAA,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;gBAEvD,OAAO,kBAAkB,CAAC,IAAI,CAC5B,QAAQ,CAAC,CAAC,WAAW,KAAI;oBACvB,oBAAoB,GAAG,WAAW,CAAC;AACnC,oBAAA,OAAO,eAAe,CAAC;AACzB,iBAAC,CAAC,EACF,QAAQ,CAAC,CAAC,cAAc,KAAI;oBAC1B,MAAM,KAAK,GAAU,EAAE,CAAC;oBACxB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC3C,wBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvB,4BAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,yBAAA;AAAM,6BAAA;AACL,4BAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,yBAAA;AACH,qBAAC,CAAC,CAAC;AAEH,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,wBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AAClB,qBAAA;AACD,oBAAA,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;iBACtB,CAAC,CACH,CAAC;AACH,aAAA;AAAM,iBAAA;;AAEL,gBAAA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,iBAAiB,CAAC,YAAiB,EAAE,WAAmB,EAAA;;QAEtD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAE5D,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,EACpD,UAAU,CAAC,CAAC,GAAG;;AAEb,QAAA,EAAE,CAAC,GAAG,CAAC,CACR,CACF,CAAC;KACH;IAED,cAAc,CAAC,QAAgB,EAAE,IAAY,EAAA;AAC3C,QAAA,MAAM,YAAY,GAAG,IAAI,OAAO,EAAO,CAAC;QAExC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,SAAS,CACtC,CAAC,aAAyC,KAAI;YAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAEnF,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,aAAA;AAAM,iBAAA;AACL,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,aAAA;AACH,SAAC,EACD,CAAC,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CACjC,CAAC;AACF,QAAA,OAAO,YAAY,CAAC;KACrB;AAEO,IAAA,eAAe,CAAC,MAA0B,EAAE,IAA4B,EAAE,UAAmB,EAAA;AACnG,QAAA,IAAI,MAAM,KAAK,UAAU,CAAC,IAAI,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KACrE;AAEO,IAAA,SAAS,CAAC,GAAiB,EAAA;AACjC,QAAA,MAAM,IAAI,GAA2B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAEpD,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,CAAC;KAC3D;IAEO,aAAa,CAAC,GAAiB,EAAE,CAAa,EAAA;AACpD,QAAA,MAAM,KAAK,GAA2B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;YAChE,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,cAAc,CAAC,IAAY,EAAE,QAAiB,EAAA;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;AAG/C,QAAA,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9D,IAAI,aAAa,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAEhF,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,iBAAiB,CAAC;AAEtB,QAAA,IAAI,QAAQ,EAAE;YACZ,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;AAGvD,YAAA,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;AACjG,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,KAAK,aAAa,EAAE;;YAE7D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAClD,YAAA,IAAI,SAAS,EAAE;;AAEb,gBAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D,gBAAA,IAAI,eAAe,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACxD,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,oBAAA,YAAY,GAAG,eAAe,GAAG,CAAC,CAAC;AACpC,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,aAAa,GAAG,GAAG,GAAG,YAAY,GAAG,aAAa,CAAC;KAC3D;AAED;;;;;AAKG;IACH,eAAe,CAAC,MAAc,EAAE,MAAY,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KAC7D;;AAGD;;;;;;AAMG;AACH,IAAA,QAAQ,CAAC,MAAc,EAAE,cAAsB,EAAE,IAAa,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACvE;AAEM,IAAA,OAAO,CAAC,SAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC7B,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,cAAc,GAAU,EAAE,CAAC;QAEjC,GAAG;AACD,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACzB,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,oBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,iBAAA;AAAM,qBAAA;AACL,oBAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,iBAAA;gBAED,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,gBAAA,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;SACJ,QAAQ,SAAS,CAAC,MAAM,EAAE;AAE3B,QAAA,OAAO,cAAc,CAAC;KACvB;AAED,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,kBAAkB,EAAE,EAAE;SACvB,CAAC;AAEF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;gBAC/B,IAAI,IAAI,YAAY,KAAK,EAAE;AACzB,oBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;oBAG9B,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,oBAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,YAAY,KAAK,CAAC,CAAC;;AAEhF,oBAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAE3H,IAAI,CAAC,UAAU,EAAE;;AAEf,wBAAA,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,qBAAA;yBAAM,IAAI,CAAC,UAAU,EAAE;;AAEtB,wBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qBAAA;AAAM,yBAAA;;AAEL,wBAAA,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,iBAAA;AAED,gBAAA,OAAO,GAAG,CAAC;aACZ,EAAE,UAAU,CAAC,CAAC;AAChB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACpE,gBAAA,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,aAAA;AAAM,iBAAA;AACL,gBAAA,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;KACF;AAEO,IAAA,eAAe,CAAC,sBAA8B,EAAA;;AACpD,QAAA,IAAI,sBAAsB,EAAE;YAC1B,CAAA,EAAA,GAAA,QAAQ,CAAC,aAAa,CAAc,sBAAsB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AACtE,SAAA;KACF;;+GA3oBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCkCY,wBAAwB,CAAA;IAGnC,WACU,CAAA,eAAgC,EAChC,KAAsB,EACtB,UAA6B,EAC7B,UAAiC,EACjC,SAAoB,EACpB,kBAAsC,EACtC,WAA+B,EAC/B,mBAAwC,EACxC,iBAAoC,EACpC,cAA8B,EAC9B,yBAAoD,EACpD,MAAc,EAAA;AAXd,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAC7B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;AACjC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AACpB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAC/B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AACpC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA2B;AACpD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAdP,QAAA,IAAwB,CAAA,wBAAA,GAAG,kDAAkD,CAAC;KAe3F;AAEJ,IAAA,WAAW,CAAC,KAA+B,EAAA;AACzC,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAK;gBAChD,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACvC,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,oBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAChC,oBAAA,OAAO,OAAO,CAAC;AACjB,iBAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,cAAc,CAAC,KAA+B,EAAA;AAC5C,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAK;gBACnD,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACvC,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,oBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,oBAAA,OAAO,OAAO,CAAC;AACjB,iBAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,cAAc,CAAC,IAAS,EAAE,6BAAsC,EAAA;AAC9D,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEtB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzD,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAClD,oBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;AACtE,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;AAC1E,aAAA;AACF,SAAA;KACF;IAED,aAAa,CAAC,IAAS,EAAE,6BAAsC,EAAA;AAC7D,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEtB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzD,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAClD,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;AAClE,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;AACtE,aAAA;AACF,SAAA;KACF;IAED,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AAC9D,YAAA,MAAM,4BAA4B,GAAiC;gBACjE,IAAI;gBACJ,IAAI;gBACJ,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;AACrC,gBAAA,KAAK,EAAE,sBAAsB;aAC9B,CAAC;AACF,YAAA,MAAM,YAAY,GAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,SAAS,CAC7G,CAAC,IAA4B,KAAI;AAC/B,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM,EAAE;AACvD,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,YAAY,EAAE;AAC1E,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,qBAAA;AACF,iBAAA;AACH,aAAC,EACD,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,SAAS,CAAC,IAAS,EAAE,6BAAsC,EAAA;AACzD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEtB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzD,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;oBAClD,IAAI,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,6BAA6B,CAAC,CAAC;AACrE,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AAC/D,aAAA;AACF,SAAA;KACF;IAED,mBAAmB,CAAC,IAAI,EAAE,6BAAsC,EAAA;AAC9D,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,YAAY,CAAC;AACpB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,YAAY,KAAI;AAC1B,YAAA,IAAI,CAAC,SAAS;iBACX,IAAI,CAAC,oBAAoB,EAAE;AAC1B,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,uBAAuB;AACnC,gBAAA,IAAI,EAAE;oBACJ,IAAI;oBACJ,YAAY;AACb,iBAAA;aACF,CAAC;AACD,iBAAA,WAAW,EAAE;iBACb,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AACzC,gBAAA,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACtD,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAED,IAAA,YAAY,CAAC,YAAoB,EAAA;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAChE,YAAA,IAAI,EAAE;gBACJ,YAAY;AACZ,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,QAAQ,EAAE,WAAW;AACtB,aAAA;AACD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA,CAAC,CAAC;QAEH,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAe,KAAI;YACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;QAEH,cAAc,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9C,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACrD,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;IAED,UAAU,CAAC,MAAyB,EAAE,6BAAsC,EAAA;QAC1E,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;AACR,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,KAAK;AACrB,aAAA;AACD,YAAA,KAAK,EAAE,OAAO;AACf,SAAA,CAAC,CAAC;QAEH,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAe,KAAI;YAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACtC,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;IAED,aAAa,GAAA;QACX,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACjE,YAAA,KAAK,EAAE,OAAO;AACf,SAAA,CAAC,CAAC;QAEH,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAe,KAAI;YACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,cAAc,CAAC,WAAW,EAAE,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,IAAI,KAAI;AACX,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACtD,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,IAAe,KAAI;YACtB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACxB,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;KACH;AAED,IAAA,aAAa,CAAC,EAAU,EAAA;QACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CACtC,MAAK;YACH,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,mCAAmC,CAAC,CAAC,CAAC;SAClF,EACD,MAAK;YACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,2CAA2C,CAAC,CAAC,CAAC;AAC5F,SAAC,CACF,CAAC;KACH;IAED,YAAY,CAAC,MAAc,EAAE,6BAAsC,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,OAAO,EAAE,mCAAmC;AAC5C,gBAAA,QAAQ,EAAE,qCAAqC;AAC/C,gBAAA,OAAO,EAAE,oCAAoC;AAC9C,aAAA;AACD,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CACzC,MAAK;oBACH,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC,CAAC;iBAC/E,EACD,MAAK;oBACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,0CAA0C,CAAC,CAAC,CAAC;AAC3F,iBAAC,CACF,CAAC;AACH,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;IAED,aAAa,CAAC,MAAc,EAAE,QAAkB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,SAAS,CACvD,CAAC,SAAoB,KAAI;YACvB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,iCAAiC,CAAC,CAAC,CAAC;SAChF,EACD,MAAK;YACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC,CAAC;AACtF,SAAC,CACF,CAAC;KACH;AAEK,IAAA,YAAY,CAAC,KAA+B,EAAA;;YAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AAClG,YAAA,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC1C,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,aAAa,CAAC,IAA8B,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KAChD;AAED,IAAA,gBAAgB,CAAC,UAAoC,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KACtD;AAED,IAAA,iBAAiB,CAAC,KAA0B,EAAA;QAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO;AACR,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC5D,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,OAAO,EAAE,mCAAmC;AAC5C,gBAAA,QAAQ,EAAE,qCAAqC;AAC/C,gBAAA,OAAO,EAAE,oCAAoC;AAC9C,aAAA;AACD,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,MAAM,aAAa,GAAe,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACnD,oBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B,oBAAA,MAAM,EAAE,GAAI,IAAY,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAEvD,OAAO;wBACL,EAAE;wBACF,IAAI;qBACL,CAAC;AACJ,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,mBAAmB,CAAC,YAAiC,EAAE,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACrB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC5C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;YACpD,OAAO;AACR,SAAA;AAED,QAAA,IAAI,MAAoB,CAAC;AAEzB,QAAA,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,aAAa,KAAI;AACpB,YAAA,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AAC7C,SAAC,CAAC,EACF,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAClD;AACA,aAAA,SAAS,CAAC,CAAC,KAAyB,KAAI;AACvC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/D,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEpE,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1B,gBAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACrD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAED,SAAS,CAAC,KAA+B,EAAE,6BAAsC,EAAA;QAC/E,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,6BAA6B,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,SAAS,CACtI,CAAC,MAAM,KAAI;AACT,YAAA,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzD,SAAC,EACD,CAAC,KAAK,KAAI;AACR,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrC,SAAC,CACF,CAAC;KACH;IAED,SAAS,CAAC,KAA+B,EAAE,6BAAsC,EAAA;QAC/E,MAAM,iBAAiB,GAAG,GAAG,CAAC;QAE9B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,SAAS,CAC7I,CAAC,MAAM,KAAI;AACT,YAAA,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YAE3D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACtD,SAAC,EACD,CAAC,KAAK,KAAI;AACR,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrC,SAAC,CACF,CAAC;KACH;AAED,IAAA,eAAe,CAAC,WAA6B,EAAA;QAC3C,IAAI,iBAAiB,GAAG,6BAA6B,CAAC;QAEtD,IAAI;AACF,YAAA,MAAM,EACJ,KAAK,EAAE,EAAE,UAAU,EAAE,EACtB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEpC,IAAI,UAAU,KAAK,GAAG,EAAE;gBACtB,iBAAiB,GAAG,+BAA+B,CAAC;AACrD,aAAA;iBAAM,IAAI,UAAU,KAAK,GAAG,EAAE;gBAC7B,iBAAiB,GAAG,gCAAgC,CAAC;AACtD,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;;AAEb,SAAA;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC1B;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAC5C,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACpB,YAAA,MAAM,EAAE,GAAI,IAAY,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,CAAC;YAClE,IAAI,CAAC,EAAE,EAAE;AACP,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,aAAA;AAAM,iBAAA;gBACL,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACxC,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,UAAU,CAAC,IAAe,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAK;YAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,IAAI,mBAAmB,CAAC,iCAAiC,EAAE;AACzD,gBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AAC1B,aAAA,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,IAAS,EAAE,KAA+B,EAAE,QAAmC,EAAA;AACrG,QAAA,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC;QAEvD,IAAI,iBAAiB,GAAG,6BAA6B,CAAC;AAEtD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/C,gBAAA,IAAI,gBAAgB,CAAC;AAErB,gBAAA,IAAI,WAAW,EAAE;AACf,oBAAA,IAAI,mBAAmB,EAAE;AACvB,wBAAA,gBAAgB,GAAG,mBAAmB,KAAK,CAAC,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AACtF,qBAAA;AAAM,yBAAA;AACL,wBAAA,gBAAgB,GAAG,WAAW,KAAK,CAAC,GAAG,eAAe,GAAG,aAAa,CAAC;AACxE,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,gBAAgB,GAAG,mBAAmB,KAAK,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;AACtE,iBAAA;AAED,gBAAA,iBAAiB,GAAG,CAAA,4BAAA,EAA+B,gBAAgB,CAAA,CAAE,CAAC;AACvE,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI;AACF,gBAAA,MAAM,EACJ,KAAK,EAAE,EAAE,UAAU,EAAE,EACtB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE7B,IAAI,UAAU,KAAK,GAAG,EAAE;oBACtB,iBAAiB,GAAG,gCAAgC,CAAC;AACtD,iBAAA;AACF,aAAA;AAAC,YAAA,OAAA,EAAA,EAAM,GAAE;AACX,SAAA;QAED,MAAM,IAAI,GAAG,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;QAEzF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC1D,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,MAAM,EAAE,WAAW;AACpB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,mBAAmB;AACrB,aAAA,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE;AACrC,YAAA,UAAU,EAAE,eAAe;SAC5B,CAAC;AACD,aAAA,QAAQ,EAAE;aACV,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClD;AAEO,IAAA,aAAa,CAAC,KAA0B,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB;aAClC,OAAO,CAAC,KAAK,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;aAC5B,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEjF,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAC1B,MAAK;YACH,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACtD,SAAC,EACD,CAAC,KAAK,KAAI;YACR,IAAI,iBAAiB,GAAG,6BAA6B,CAAC;YAEtD,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI;gBACF,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,aAAA;AAAC,YAAA,OAAA,EAAA,EAAM,GAAE;AAEV,YAAA,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE;gBACtE,iBAAiB,GAAG,gCAAgC,CAAC;AACtD,aAAA;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClE,SAAC,CACF,CAAC;KACH;IAEO,wBAAwB,CAAC,IAAS,EAAE,6BAAsC,EAAA;;AAEhF,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AAC9B,YAAA,MAAM,4BAA4B,GAAiC;gBACjE,IAAI;AACJ,gBAAA,gBAAgB,EAAE,IAAI;AACtB,gBAAA,KAAK,EAAE,sBAAsB;aAC9B,CAAC;AACF,YAAA,IAAI,CAAC,yBAAyB;AAC3B,iBAAA,0BAA0B,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,6BAA6B,CAAC;AAC3H,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,sBAA8C,KAAI;oBACvD,QAAQ,sBAAsB,CAAC,MAAM;wBACnC,KAAK,4BAA4B,CAAC,OAAO;4BACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;4BACpD,MAAM;wBACR,KAAK,4BAA4B,CAAC,IAAI;AACpC,4BAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,CAAC,SAAS,EAAE;AACnE,gCAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AAC1B,6BAAA,CAAC,CACH,CAAC;4BACF,MAAM;AACR,wBAAA;4BACE,MAAM;AACT,qBAAA;iBACF;AACF,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAChF,SAAA;KACF;IAEO,oBAAoB,CAAC,IAAS,EAAE,6BAAsC,EAAA;;AAE5E,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,6BAA6B,CAAC,CAAC;AAClF,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAChF,SAAA;KACF;IAEO,aAAa,CAAC,YAAY,EAAE,iBAAyB,EAAA;AAC3D,QAAA,MAAM,UAAU,GAAG,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC9F,QAAA,MAAM,mBAAmB,GAAG,YAAY,IAAI,YAAY,CAAC,oBAAoB,CAAC,GAAG,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;QAEzH,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,WAAW,KAC1F,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAClG,CAAC;QAEF,GAAG,CAAC,GAAG,wBAAwB,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACvC,aAAA,IAAI,CACH,QAAQ,CAAC,MAAK;YACZ,MAAM,kBAAkB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,UAAU,CAAC,CAAC;AAEnE,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB;iBAC5C,OAAO,CAAC,kBAAkB,CAAC;iBAC3B,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxE,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;gBACZ,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3F,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC9E,iBAAA;AACH,aAAC,CAAC,CAAC;YAEL,OAAO,GAAG,CAAC,GAAG,eAAe,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,SAAC,CAAC,CACH;aACA,SAAS,CACR,MAAK;YACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACtD,SAAC,EACD,CAAC,KAAK,KAAI;YACR,IAAI,OAAO,GAAG,6BAA6B,CAAC;YAE5C,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI;gBACF,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,aAAA;AAAC,YAAA,OAAA,EAAA,EAAM,GAAE;AAEV,YAAA,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE;gBACtE,OAAO,GAAG,gCAAgC,CAAC;AAC5C,aAAA;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,SAAC,CACF,CAAC;KACL;AAED,IAAA,WAAW,CAAC,KAA0B,EAAA;QACpC,MAAM,KAAK,GAAkC,EAAE,CAAC;AAEhD,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAuB,KAAI;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE9C,YAAA,IAAI,OAAO,IAAI,MAAM,CAAC,aAAa,EAAE;AACnC,gBAAA,OAAO,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjH,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE7B,IAAI,MAAM,CAAC,aAAa,EAAE;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACrD,aAAA;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,eAAe,CAAC,KAAwB,EAAA;QACtC,MAAM,KAAK,GAAkC,EAAE,CAAC;AAEhD,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE/C,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACzD,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;YAED,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACrD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,cAAc,CAAC,IAAqB,EAAA;AAC1C,QAAA,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAE1B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CACzC,GAAG,CAAC,OAAO;YACT,EAAE;YACF,IAAI;AACJ,YAAA,MAAM,EAAE,CAAC;SACV,CAAC,CAAC,EACH,UAAU,CAAC,MACT,EAAE,CAAC;YACD,EAAE;YACF,IAAI;AACJ,YAAA,MAAM,EAAE,CAAC;SACV,CAAC,CACH,CACF,CAAC;KACH;AAEO,IAAA,oBAAoB,CAAC,MAAoB,EAAA;QAC/C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC1C,YAAA,OAAO,IAAI,mBAAmB,CAAC,yCAAyC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3G,SAAA;QAED,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,YAAA,OAAO,IAAI,mBAAmB,CAAC,kCAAkC,EAAE;gBACjE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,WAAW,CAAC,IAAuB,EAAA;AACzC,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAEvB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,OAAO;AACT,YAAA,MAAM,EAAE,CAAC;YACT,KAAK;AACN,SAAA,CAAC,CAAC,EACH,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AAEvD,YAAA,OAAO,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,CAAC;gBACT,UAAU;gBACV,KAAK;AACN,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;KACH;IAEO,UAAU,CAAC,YAAwB,EAAE,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACrB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAE/C,YAAA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACrD,aAAA;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC7C,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,gBAAgB,CAAC,IAAc,EAAA;AACrC,QAAA,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAE1B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,OAAO;AACT,YAAA,MAAM,EAAE,CAAC;YACT,EAAE;YACF,IAAI;SACL,CAAC,CAAC,EACH,UAAU,CAAC,MACT,EAAE,CAAC;AACD,YAAA,MAAM,EAAE,CAAC;YACT,EAAE;YACF,IAAI;SACL,CAAC,CACH,CACF,CAAC;KACH;IAEO,aAAa,CAAC,OAAkC,EAAE,EAAA;AACxD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,UAAU,GAAA;AACZ,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B;AACD,YAAA,IAAI,aAAa,GAAA;AACf,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aAC9B;AACD,YAAA,IAAI,SAAS,GAAA;AACX,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;aAC/B;AACD,YAAA,IAAI,YAAY,GAAA;AACd,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;aAClC;AACD,YAAA,IAAI,YAAY,GAAA;gBACd,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/C;AACD,YAAA,IAAI,SAAS,GAAA;gBACX,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;aAC/C;YACD,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACnB;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA;AAAM,iBAAA;AACL,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,aAAA;AAED,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,MAAM,CAAC,CAAC;KACZ;AAEO,IAAA,eAAe,CAAC,MAAoB,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACjE,YAAA,OAAO,IAAI,qBAAqB,CAAC,sDAAsD,EAAE;gBACvF,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;AAC5B,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE;AACrE,YAAA,OAAO,IAAI,qBAAqB,CAAC,oDAAoD,EAAE;AACrF,gBAAA,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;AAC7B,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,YAAA,OAAO,IAAI,kBAAkB,CAAC,8CAA8C,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACjH,SAAA;QAED,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,YAAA,OAAO,IAAI,mBAAmB,CAAC,gDAAgD,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACjH,SAAA;QAED,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,YAAA,OAAO,IAAI,kBAAkB,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAChH,SAAA;QAED,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,YAAA,OAAO,IAAI,mBAAmB,CAAC,8CAA8C,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAChH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,uBAAuB,CAAC,MAAoB,EAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE/C,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC7C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,gBAAA,MAAM,IAAI,GAAmB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAElF,gBAAA,IAAI,QAAQ,CAAC;AAEb,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;oBAC/B,QAAQ,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC3C,iBAAA;gBAED,OAAO,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAC3E,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;KACF;AAEO,IAAA,MAAM,CAAC,KAA6B,EAAA;AAC1C,QAAA,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC;KACrC;AAEO,IAAA,gBAAgB,CAAC,IAAoB,EAAA;QAC3C,OAAO,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;KAC/E;AAEO,IAAA,iBAAiB,CAAC,MAAoB,EAAA;QAC5C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC1C,YAAA,OAAO,IAAI,mBAAmB,CAAC,wDAAwD,EAAE;AACvF,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;YACjD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;AACrC,gBAAA,OAAO,IAAI,mBAAmB,CAAC,qDAAqD,EAAE;oBACpF,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAChC,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,IAAI,mBAAmB,CAAC,iDAAiD,EAAE;oBAChF,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAChC,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAClD,YAAA,OAAO,IAAI,mBAAmB,CAAC,0DAA0D,EAAE;gBACzF,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAChC,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC/C,YAAA,OAAO,IAAI,kBAAkB,CAAC,8CAA8C,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;AAC9C,YAAA,OAAO,IAAI,kBAAkB,CAAC,gDAAgD,EAAE;gBAC9E,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AACnC,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,IAAI,CAAC,SAAgB,EAAE,IAAW,EAAE,QAAQ,GAAG,IAAI,EAAA;AACzD,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEnD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AAC1B,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,UAAU,CAAC,IAAS,EAAA;AAC1B,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,OAAO;YACT,EAAE;YACF,IAAI;AACJ,YAAA,MAAM,EAAE,CAAC;SACV,CAAC,CAAC,EACH,UAAU,CAAC,MACT,EAAE,CAAC;YACD,EAAE;YACF,IAAI;AACJ,YAAA,MAAM,EAAE,CAAC;SACV,CAAC,CACH,CACF,CAAC;KACH;AAEO,IAAA,gBAAgB,CAAC,MAAoB,EAAA;QAC3C,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACzC,YAAA,OAAO,IAAI,mBAAmB,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5G,SAAA;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC/C,YAAA,OAAO,IAAI,kBAAkB,CAAC,wCAAwC,EAAE;AACtE,gBAAA,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;AAC9B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AACrE,YAAA,OAAO,IAAI,qBAAqB,CAAC,gDAAgD,EAAE;AACjF,gBAAA,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;AAC9B,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE;AAC5C,YAAA,OAAO,IAAI,qBAAqB,CAAC,kDAAkD,EAAE;AACnF,gBAAA,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;AAC9B,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC7C,YAAA,OAAO,IAAI,mBAAmB,CAAC,mCAAmC,EAAE;gBAClE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1B,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC7C,YAAA,OAAO,IAAI,kBAAkB,CAAC,0CAA0C,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7G,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,eAAe,CAAC,KAA+B,EAAE,IAAS,EAAE,YAAkB,EAAA;QACpF,MAAM,SAAS,GAAG,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACnG,MAAM,kBAAkB,GAAG,YAAY,IAAI,YAAY,CAAC,oBAAoB,CAAC,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9H,MAAM,QAAQ,GAAG,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5F,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,qBAAqB,GAAG,EAAE,CAAC;QAC/B,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,GAAG,EAAE,CAAC;AAEtB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;;AAE5B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC/C,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;gBACzD,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAE1B,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,gBAAgB,GAAG,SAAS,KAAK,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC3D,oBAAA,cAAc,GAAG,CAAG,EAAA,iBAAiB,CAAG,EAAA,gBAAgB,EAAE,CAAC;AAC5D,iBAAA;AAED,gBAAA,IAAI,kBAAkB,EAAE;AACtB,oBAAA,gBAAgB,GAAG,kBAAkB,KAAK,CAAC,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AACpF,oBAAA,qBAAqB,GAAG,CAAG,EAAA,iBAAiB,CAAG,EAAA,gBAAgB,EAAE,CAAC;AACnE,iBAAA;AAED,gBAAA,IAAI,QAAQ,EAAE;;AAEZ,oBAAA,IAAI,QAAQ,KAAK,KAAK,CAAC,MAAM,EAAE;AAC7B,wBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACvE,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,qBAAA;AAAM,yBAAA;wBACL,gBAAgB,GAAG,cAAc,CAAC;AAClC,wBAAA,aAAa,GAAG,CAAG,EAAA,iBAAiB,CAAG,EAAA,gBAAgB,EAAE,CAAC;AAC3D,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,YAAY,GAAG,6BAA6B,CAAC;AAC9C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;QAED,MAAM,IAAI,GAAG,SAAS,GAAG,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;QACpG,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAE5D,QAAA,MAAM,2BAA2B,GAAG,cAAc,IAAI,qBAAqB,GAAG,GAAG,GAAG,EAAE,CAAC;AACvF,QAAA,MAAM,mBAAmB,GAAG,CAAC,cAAc,IAAI,qBAAqB,KAAK,aAAa,GAAG,GAAG,GAAG,EAAE,CAAC;AAElG,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEjF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,qBAAqB,EAAE,aAAa,CAAC,EAAE;AAChG,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,mBAAmB;aACrB,sBAAsB,CACrB,QAAQ,CAAC,cAAc,CAAC,GAAG,2BAA2B,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,EACxI,IAAI,EACJ;AACE,YAAA,UAAU,EAAE,eAAe;SAC5B,CACF;AACA,aAAA,QAAQ,EAAE;AACV,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;KACvE;AAEO,IAAA,eAAe,CAAC,sBAA8B,EAAA;;AACpD,QAAA,IAAI,sBAAsB,EAAE;YAC1B,CAAA,EAAA,GAAA,QAAQ,CAAC,aAAa,CAAc,sBAAsB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AACtE,SAAA;KACF;;qHA/+BU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACrFD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAgBU,qBAAqB,CAAA;IAUhC,WACU,CAAA,KAAiB,EACjB,YAAmC,EACnC,WAAmC,EACnC,KAAqB,EACrB,MAAc,EACd,cAA8B,EAAA;AAL9B,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACjB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;AACnC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAwB;AACnC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACrB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAfhC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAG1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;KAahC;AAXJ,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;KACtD;IAWD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,KAAK,WAAW;;gBAEjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAE1C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,oBAAoB,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,oBAAoB,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAErG,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;;AAE7C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AACvD,SAAA;QAED,IAAI,CAAC,YAAY,CAAC,KAAK;aACpB,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EACtD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACzE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACxE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAGD,IAAA,gBAAgB,CAAC,KAAkB,EAAA;QACjC,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAA,YAAA,CAAc,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACnF,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAA,kBAAA,CAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChG,SAAA;KACF;AAGD,IAAA,YAAY,CAAC,KAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,SAAA;KACF;IAGD,cAAc,GAAA;QACZ,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,OAAO,GAAA;QACL,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAEO,eAAe,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACzD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;KAC5D;AAEO,IAAA,MAAM,CAAC,YAAgC,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;AACnC,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;IAEO,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD;;kHA5GU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;iBAC9B,CAAA;4PA8DC,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAS3C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;gBASvC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;;;ACxEzB,MAAO,cAAe,SAAQ,aAAa,CAAA;AAY/C,IAAA,WAAA,CACU,MAAc,EACd,KAAqB,EACrB,UAA6B,EACrC,KAAsB,EACd,kBAAsC,EACtC,aAA4B,EACpC,OAAiC,EACjC,UAA+B,EACvB,kBAAsC,EAC9C,uBAAmD,EAAA;QAEnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAXnD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACrB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAE7B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAG5B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AApBhD,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AACnB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAKnB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAerC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;AAC1D,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;AAEhC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAExB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzD,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,QAAgB,KAAI;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;AACrC,SAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAU,KAAI;AAC9C,YAAA,MAAM,MAAM,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC;AAE9C,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CACvC,CAAC,IAAI,KAAI;AACP,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAExB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC7D,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACH,aAAC,EACD,OAAO,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CACjC,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,YAAA,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAClF,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC5G,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAE3G,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,aAAC,CAAC;AACH,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,OAAO,CAAC;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE,CAAC;KAChE;IAED,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,WAAW,EAAE,CAAC;KACrB;IAED,QAAQ,CAAC,SAAiB,IAAI,EAAA;AAC5B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACnE,QAAA,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAA,MAAM,aAAa,GAAa,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KACrC;AAEO,IAAA,gBAAgB,CAAC,UAAkB,EAAE,aAAqB,EAAE,UAAkB,EAAA;QACpF,OAAO,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KAClJ;AAEO,IAAA,wBAAwB,CAAC,UAAkB,EAAE,aAAqB,EAAE,UAAkB,EAAA;QAC5F,MAAM,aAAa,GACjB,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;cACtC,IAAI,CAAC,kCAAkC,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC;cAC9E,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC1D,aAAa,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,OAAO,aAAa,CAAC;KACtB;AAEO,IAAA,kCAAkC,CAAC,UAAkB,EAAE,aAAqB,EAAE,UAAkB,EAAA;QACtG,MAAM,qBAAqB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,qBAAqB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,qBAAqB,CAAC;KAC9B;IAEO,mBAAmB,CAAC,UAAkB,EAAE,aAAqB,EAAA;AACnE,QAAA,MAAM,OAAO,GAAa,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;AACd,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,qBAAqB,CAAC,UAAkB,EAAE,MAAc,EAAA;QAC9D,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,YAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,SAAA;QACD,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AAED,IAAA,kBAAkB,CAAC,EAAe,EAAA;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;KACtD;AAED,IAAA,UAAU,CAAC,IAAuB,EAAA;AAChC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAEhC,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,EAAU,CAAC;AAEf,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE;oBAC5C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC9C,iBAAA;AAAM,qBAAA;AACL,oBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACpB,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,UAAU,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KACtD;AAED,IAAA,oBAAoB,CAAC,KAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,CAAC;;QAG7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;AACzE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KACzB;AAED,IAAA,mBAAmB,CAAC,KAAsB,EAAA;AACxC,QAAA,MAAM,IAAI,GAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGhD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE;AACxE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE;AACnE,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO;AACR,SAAA;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;AAG5G,gBAAA,IAAI,qBAAqB,EAAE;AACzB,oBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC/F,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACvE,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,QAAQ,GAAG,EAAE,EAAE,KAAa,EAAA;QAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,MAAM,uBAAuB,GAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAqB,IAAI,EAAE,CAAC;AAE3F,QAAA,MAAM,4BAA4B,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAE1I,QAAA,IAAI,4BAA4B,EAAE;YAChC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAChC;AAED,IAAA,eAAe,CAAC,KAA0B,EAAA;AACxC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC3G,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,SAAA;KACF;;AAGa,IAAA,iBAAiB,CAAC,IAA4B,EAAA;;AAC1D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAEpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9E,gBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AACrC,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,4BAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,yBAAA;AACF,qBAAA;yBAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AACvC,wBAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACpC,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD,CAAA,CAAA;AAAA,KAAA;;AAGa,IAAA,iBAAiB,CAAC,IAA4B,EAAA;;AAC1D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGpC,YAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtB,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;;;AAG9B,gBAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;AAChF,gBAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;;AAGjE,gBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,aAAA;AAAM,iBAAA;;AAEL,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;AACzE,gBAAA,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;oBACf,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,oBAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;;AAGhF,oBAAA,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;AACrE,oBAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,eAAe,CAAC,IAA4B,EAAA;AAC1C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChG,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;AACjD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,gBAAgB,CAAC,aAA6B,EAAA;QAC5C,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;AACxC,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,aAA6B,EAAA;QAC5C,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,MAAoB,KAAI;AAC7C,YAAA,IAAI,UAAU,CAAC;AACf,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;AACxD,gBAAA,UAAU,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAK,EAAA,EAAA,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACzD,aAAA;AAAM,iBAAA;AACL,gBAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,aAAA;AACD,YAAA,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AACzC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;KAClF;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,CAAC;KAClD;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;;2GA7TU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,2EC1C3B,ykIAoGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD1Da,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;;;;AEvCV;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAcG,MAAO,kBAAmB,SAAQ,aAAa,CAAA;IAKnD,WACE,CAAA,OAAiC,EACjC,KAAsB,EACtB,UAA+B,EACvB,cAA8B,EAC9B,kBAAsC,EAAA;AAE9C,QAAA,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAH1B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAThD,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAUrC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EACjE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EACjE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAE9D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;SACrC,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,IAAI,EAAE,CAAC;KACpE;AAED,IAAA,UAAU,CAAC,IAAe,EAAA;QACxB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,UAAU,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KACtD;;+GAvCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2ECpC/B,s2FA4EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDxCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;;;;AEjCV;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAeG,MAAO,0BAA2B,SAAQ,aAAa,CAAA;AAW3D,IAAA,WAAA,CACE,OAAiC,EACjC,KAAiB,EACjB,UAA+B,EACvB,cAA8B,EAC9B,iBAAoC,EACpC,kBAAsC,EACtC,WAAmC,EACnC,iBAAoC,EAAA;AAE5C,QAAA,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAN1B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AACpC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAwB;AACnC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAlB9C,QAAA,IAAU,CAAA,UAAA,GAAe,IAAI,UAAU,CAAC;AACtC,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,UAAU,EAAE,CAAC;AACd,SAAA,CAAC,CAAC;AACH,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAarC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACpE,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAE5E,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,aAAC,CAAC;AACH,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,EAAE,CAAC;KAC5E;AAED,IAAA,UAAU,CAAC,IAAe,EAAA;QACxB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACvF,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,UAAU,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KACtD;AAED,IAAA,gBAAgB,CAAC,UAAsB,EAAA;QACrC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAC1B;AAED,IAAA,QAAQ,CAAC,UAAsB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAC1B;AAEO,IAAA,OAAO,CAAC,UAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,SAAS,CACvE,CAAC,iBAAiC,KAAI;AACpC,YAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC,EACD,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,SAAC,CACF,CAAC;KACH;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/B;;uHAlFU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,2ECrCvC,6mGAqFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;;;;MEGG,oBAAoB,CAAA;IAgB/B,WAAoB,CAAA,MAAc,EAAE,UAA8B,EAAA;AAA9C,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAVlC,QAAA,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;AAC9B,QAAA,IAA2B,CAAA,2BAAA,GAAG,IAAI,CAAC;AAEnC,QAAA,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;AACjC,QAAA,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;AAEhC,QAAA,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAC/B,QAAA,IAA2B,CAAA,2BAAA,GAAG,IAAI,CAAC;QAGjC,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;KAC1D;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,SAAS;aACX,SAAS,CAAC,MAAM,CAAC;AACjB,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;YACjB,IAAI,CAAC,aAAa,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,KAAK,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACf,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,YAAY,CAAC,QAAgB,EAAA;;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,SAAS,CAAC;AAC/B,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,QAAQ,KAAI,EAAE,CAAC;AACnD,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,QAAQ,KAAI,EAAE,CAAC;YACnD,SAAS,EAAE,IAAI,WAAW,CAAC,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,SAAS,KAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACjG,MAAM,EAAE,IAAI,WAAW,CAAC,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,MAAM,KAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC3F,YAAA,WAAW,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAChC,YAAA,WAAW,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAChC,YAAA,cAAc,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AACnC,YAAA,WAAW,EAAE,IAAI,WAAW,CAAC,CAAA,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,OAAO,0CAAE,YAAY,KAAI,EAAE,CAAC;AACnE,YAAA,eAAe,EAAE,IAAI,WAAW,CAAC,CAAA,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,OAAO,0CAAE,QAAQ,KAAI,EAAE,CAAC;AACnE,YAAA,cAAc,EAAE,IAAI,WAAW,CAAC,CAAA,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,OAAO,0CAAE,QAAQ,KAAI,EAAE,CAAC;YAClE,gBAAgB,EAAE,IAAI,WAAW,CAAC,CAAA,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,OAAO,0CAAE,SAAS,KAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACjH,YAAY,EAAE,IAAI,WAAW,CAAC,CAAA,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClF,SAAA,CAAC,CAAC;KACJ;IAED,uBAAuB,GAAA;QACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE;AACxC,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;KACJ;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AACzC,SAAA;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAErE,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACrC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACpC,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC;AACrE,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC7D,QAAA,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC;KAClE;AAED,IAAA,iBAAiB,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC;AACrE,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAEvD,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACvC,SAAA;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACjE,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAE7D,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACnC,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACrC,SAAA;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AACzC,SAAA;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAErE,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACrC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACpC,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS;iBACX,YAAY,CAAC,MAAM,EAAE;AACpB,gBAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;AAC9B,gBAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;AAC9B,gBAAA,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;AAChC,gBAAA,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;AAC1B,gBAAA,OAAO,EAAE;AACP,oBAAA,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;AACrC,oBAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe;AACrC,oBAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc;AACpC,oBAAA,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB;AACvC,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;AAChC,iBAAA;aACF,CAAC;AACD,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;gBACf,IAAI,CAAC,aAAa,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,KAAK,CAAC;gBACnC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,CAAC,CAAC;AACnC,aAAC,CAAC;AACD,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,SAAA;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACjC;;iHAxJU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wDCrCjC,k0TA6IM,EAAA,MAAA,EAAA,CAAA,ysGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDxGO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,k0TAAA,EAAA,MAAA,EAAA,CAAA,ysGAAA,CAAA,EAAA,CAAA;;;AEnCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAWU,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAFb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CADzB,YAAY,EAAAX,IAAA,CAAA,UAAA,CAAA,EAAA,CAAA,CAAA;AAGX,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAA,CAAA;2FAGlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC9C,YAAY,EAAE,CAAC,oBAAoB,CAAC;iBACrC,CAAA;;;AChCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIU,MAAA,iBAAiB,GAAa;AACzC,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,QAAQ,EAAE,uCAAuC;AACjD,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,KAAK,EAAE,CAAC;AACT,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,aAAa,EAAE,IAAI;AACpB,KAAA;AACD,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,iBAAiB,EAAE,KAAK;AACxB,IAAA,wBAAwB,EAAE,EAAE;AAC5B,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,mBAAmB,EAAE,IAAI;AACzB,IAAA,mBAAmB,EAAE,MAAM;AAC3B,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,UAAU,EAAE;AACV,QAAA,MAAM,EAAE;AACN,YAAA,mBAAmB,EAAE,IAAI;AAC1B,SAAA;AACK,KAAA;EACR;AAEW,MAAA,aAAa,GAAa;AACrC,IAAA,GAAG,EAAE,iBAAiB;;;AC/DxB;;;;;;;;;;;;;;;;;;;;;;AAsBG;SAsBa,UAAU,CAAC,KAAkB,GAAA,iBAAiB,EAAE,MAAc,EAAA;AAC5E,IAAA,IAAI,QAAkB,CAAC;IAEvB,QAAQ,MAAM,CAAC,IAAI;QACjB,KAAK,cAAc,CAAC,eAAe;YACjC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAG,MAAgC,CAAC,OAAO,CAAC,CAAC;YACxE,MAAM;QACR,KAAK,eAAe,CAAC,YAAY;AAC/B,YAAA,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAgC,CAAC,CAAC;YACxE,MAAM;QACR,KAAK,cAAc,CAAC,cAAc;AAChC,YAAA,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,MAA8B,CAAC,CAAC;YAC7D,MAAM;QACR,KAAK,cAAc,CAAC,gBAAgB;AAClC,YAAA,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAgC,CAAC,CAAC;YACxE,MAAM;QACR,KAAK,cAAc,CAAC,iBAAiB;AACnC,YAAA,QAAQ,GAAG,wBAAwB,CAAC,KAAK,EAAE,MAAqC,CAAC,CAAC;YAClF,MAAM;QACR,KAAK,cAAc,CAAC,aAAa;AAC/B,YAAA,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAA6B,CAAC,CAAC;YAClE,MAAM;QACR,KAAK,cAAc,CAAC,gBAAgB;AAClC,YAAA,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,cAAc,CAAC,kBAAkB;AACpC,YAAA,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,MAAkC,CAAC,CAAC;YACpE,MAAM;QACR,KAAK,cAAc,CAAC,2BAA2B;AAC7C,YAAA,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAA2C,CAAC,CAAC;YACnF,MAAM;QACR,KAAK,cAAc,CAAC,yBAAyB;AAC3C,YAAA,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM;QACR,KAAK,cAAc,CAAC,iBAAiB;AACnC,YAAA,QAAQ,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAiC,CAAC,CAAC;YAC5E,MAAM;QACR,KAAK,cAAc,CAAC,sBAAsB;AACxC,YAAA,QAAQ,GAAG,yBAAyB,CAAC,KAAK,EAAE,MAAsC,CAAC,CAAC;YACpF,MAAM;QACR,KAAK,cAAc,CAAC,qBAAqB;AACvC,YAAA,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,cAAc,CAAC,yBAAyB;AAC3C,YAAA,QAAQ,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAyC,CAAC,CAAC;YAClF,MAAM;QACR,KAAK,cAAc,CAAC,gBAAgB;AAClC,YAAA,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,MAA0B,CAAC,CAAC;YACzD,MAAM;AACR,QAAA;YACE,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAC3B,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,MAA4B,EAAA;AAC/D,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAC9B,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACnC,IAAA,MAAM,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AAElD,IAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;AACvC,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,QAAQ,EAAE,CAAC;AAC5C,IAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEtD,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;IAE3D,QAAQ,CAAC,IAAI,GAAG;QACd,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,EAAE;QACF,MAAM;KACP,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe,EAAE,MAA8B,EAAA;AAC1E,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACnD,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAe,EAAE,MAAmC,EAAA;AACpF,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAC9B,IAAA,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7C,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,MAA2B,EAAA;AACpE,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACzC,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAA;AACvC,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAE9B,IAAA,IAAI,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACnC,IAAA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;QAC3B,KAAK,GAAG,KAAK,CAAC;AACf,KAAA;AAAM,SAAA;QACL,KAAK,GAAG,CAAC,KAAK,CAAC;AAChB,KAAA;AAED,IAAA,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAElC,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAe,EAAA;AAC5C,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAE9B,IAAA,IAAI,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;AACpC,IAAA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;QAC3B,KAAK,GAAG,KAAK,CAAC;AACf,KAAA;AAAM,SAAA;QACL,KAAK,GAAG,CAAC,KAAK,CAAC;AAChB,KAAA;AAED,IAAA,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAEnC,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,yBAAyB,GAAG,CAAC,KAAe,MAC7C,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,EAAA,CAAA,CAC9E,CAAC;AAEH,SAAS,mBAAmB,CAAC,KAAe,EAAE,MAA8B,EAAA;AAC1E,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAEnC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,OAAO,GAAG,IAAI,CAAC;AAEnB,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,QAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAE/B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAI,GAAG,KAAK,CAAC,IAAI,CACf,CAAC,MAAW;;YAEV,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAC9E,CAAC;AACF,YAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7D,SAAA;AACF,KAAA;IAED,MAAM,SAAS,GAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;AACnF,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,GAAG,SAAS,CAAC,CAAC,CAAQ,CAAC;AAC/B,KAAA;AAED,IAAA,IAAI,OAAO,EAAE;AACX,QAAA,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACnC,KAAA;IAED,QAAQ,CAAC,SAAS,GAAG;QACnB,KAAK;QACL,KAAK;QACL,OAAO;QACP,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,SAAS;QACT,OAAO;KACR,CAAC;AACF,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,MAAgC,MACnE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,gBAAgB,EAAE,MAAM,CAAC,OAAO,IAChC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,KAAe,EAAE,MAAuC,MACjF,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,iBAAiB,EAAE,MAAM,CAAC,OAAO,IACjC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,KAAe,EAAE,MAAyC,MAClF,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,wBAAwB,EAAE,MAAM,CAAC,OAAO,IACxC,CAAC;AAEH,SAAS,sBAAsB,CAAC,KAAe,EAAE,MAA+B,EAAA;AAC9E,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAC9B,IAAA,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAe,EAAE,MAAoC,EAAA;AACtF,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAC9B,IAAA,QAAQ,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9C,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,MAAwB,EAAA;AAC3D,IAAA,MAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE,CAAC;AAC9B,IAAA,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC,IAAA,OAAO,QAAQ,CAAC;AAClB;;ACpQA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAWU,UAAU,CAAA;AACrB,IAAA,WAAA,CAAoB,QAAiB,EAAU,IAA2B,EAAU,MAAc,EAAU,cAA8B,EAAA;AAAtH,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAuB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAE1I,IAAM,CAAA,MAAA,GAAG,YAAY,CACnB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAA2B,cAAc,CAAC,kBAAkB,CAAC,EACnE,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzC,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAuB,cAAc,CAAC,cAAc,CAAC,EAC3D,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxC,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAO,CAAA,OAAA,GAAG,YAAY,CACpB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAe,cAAc,CAAC,MAAM,CAAC,EAC3C,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAC1B,MAAM,IAAI,CAAC,eAAe,EAAE,EAC5B,MAAM,IAAI,CAAC,eAAe,EAAE,CAC7B,CAAC;SACH,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KApC4I;IAsCtI,eAAe,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACxC;;uGAzCU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAV,UAAU,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;AChCX;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAaG,MAAO,iBAAkB,SAAQ,qBAAqB,CAAA;AAC1D,IAAA,WAAA,CAAoB,KAAsB,EAAU,iBAAoC,EAAE,kBAAsC,EAAA;QAC9H,KAAK,CAAC,kBAAkB,CAAC,CAAC;AADR,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAEvF;AAED,IAAA,iBAAiB,CAAC,MAAc,EAAE,UAAU,GAAG,IAAI,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC,IAAI,CACzC,QAAQ,CAAC,CAAC,UAAU,KAAI;AACtB,YAAA,IAAI,UAAU,EAAE;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,MAA4B,KAAK,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAC9D,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CACzE,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACrE,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,oBAAoB,CAAC,MAAc,EAAE,SAAiB,EAAE,UAAU,GAAG,IAAI,EAAA;AACvE,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC,IAAI,CACzC,QAAQ,CAAC,CAAC,UAAU,KAAI;AACtB,YAAA,IAAI,UAAU,EAAE;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CACjF,GAAG,CAAC,CAAC,MAA4B,KAAK,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAC9D,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAC3F,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AACvF,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAEO,wBAAwB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAChD,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,UAAU,KAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAC,EAAC,CAAA,EAAA,GAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,MAAM,0CAAE,wBAAwB,CAAA,CAAA,EAAA,CAAC,CACpE,CAAC;KACH;;8GAxCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;AClClC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAcU,eAAe,CAAA;IAC1B,WACU,CAAA,KAAsB,EACtB,QAAiB,EACjB,UAA6B,EAC7B,MAAiB,EACjB,iBAAoC,EAAA;AAJpC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAC7B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AACjB,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAG9C,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAsB,eAAe,CAAC,QAAQ,CAAC,EACrD,GAAG,CAAC,CAAC,MAAM,KAAI;;YACb,IAAI,CAAA,MAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACnC,wBAAA,IAAI,CAAC,KAAK;6BACP,MAAM,CAAC,iBAAiB,CAAC;AACzB,6BAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,6BAAA,SAAS,CAAC,CAAC,OAAO,KAAI;;AACrB,4BAAA,IAAI,OAAO,EAAE;AACX,gCAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,6BAAA;AAAM,iCAAA;AACL,gCAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AAC1F,6BAAA;AACH,yBAAC,CAAC,CAAC;AACN,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KA/BE;IAiCI,aAAa,CAAC,UAAoC,EAAE,sBAA+B,EAAA;QACzF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACpC,YAAA,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAY,CAAC;YAEjE,OAAO;AACL,gBAAA,EAAE,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,GAAG,MAAM,IAAI,EAAE;gBAChD,IAAI;gBACJ,MAAM;gBACN,QAAQ;aACT,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;AACjD,SAAA;KACF;IAEO,YAAY,CAAC,IAAc,EAAE,sBAA+B,EAAA;AAClE,QAAA,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACzB,aAAA;AACF,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,IAAc,EAAA;AACjC,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;gBAC/E,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,SAAA;KACF;IAEO,mBAAmB,CAAC,IAAc,EAAE,OAAgB,EAAA;QAC1D,IAAI,IAAI,IAAI,OAAO,EAAE;YACnB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;gBAC9F,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,WAAW,CAAC,KAAsB,EAAE,sBAA+B,EAAA;AACzE,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAE7C,YAAA,IAAI,CAAC,MAAM;iBACR,IAAI,CAAC,0BAA0B,EAAE;AAChC,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,IAAI,EAAE;oBACJ,OAAO;AACR,iBAAA;aACF,CAAC;AACD,iBAAA,WAAW,EAAE;iBACb,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAClE,SAAA;KACF;IAEO,QAAQ,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC5C,IAAI,GAAG,IAAI,QAAQ,EAAE;YACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAEhB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;KACF;AAED,IAAA,IAAY,mBAAmB,GAAA;QAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KAC9C;AAEO,IAAA,eAAe,CAAC,sBAA8B,EAAA;;AACpD,QAAA,IAAI,sBAAsB,EAAE;YAC1B,CAAA,EAAA,GAAA,QAAQ,CAAC,aAAa,CAAc,sBAAsB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AACtE,SAAA;KACF;;4GApIU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAkB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACnCX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,KAAsB,EAAU,QAAiB,EAAU,OAAiC,EAAA;AAA5F,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;QAEhH,IAAY,CAAA,YAAA,GAAG,YAAY,CACzB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAoB,eAAe,CAAC,WAAW,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACnC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,YAAY,CAC5B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAuB,eAAe,CAAC,cAAc,CAAC,EAC5D,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACnC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KA5CkH;;4GADzG,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;AC/BX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmCU,WAAW,CAAA;AACtB,IAAA,WAAA,CACU,KAAsB,EACtB,QAAiB,EACjB,cAAwC,EACxC,eAAiC,EAAA;AAHjC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAA0B;AACxC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkB;QAG3C,IAAU,CAAA,UAAA,GAAG,YAAY,CACvB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAkB,eAAe,CAAC,KAAK,CAAC,EAC9C,GAAG,CAAC,CAAC,MAAM,KAAI;;YACb,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACpG,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE;AAC/B,wBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACpG,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,eAAe,CAAC,OAAO,CAAC,EACnD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACnC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAkB,CAAA,kBAAA,GAAG,YAAY,CAC/B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAA0B,eAAe,CAAC,YAAY,CAAC,EAC7D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAG,YAAY,CACjC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAA4B,eAAe,CAAC,cAAc,CAAC,EACjE,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1D,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAY,CAAA,YAAA,GAAG,YAAY,CACzB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAoB,eAAe,CAAC,MAAM,CAAC,EACjD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAC7B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAwB,eAAe,CAAC,UAAU,CAAC,EACzD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,eAAe,CAAC,YAAY,CAAC,EACxD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,gBAAgB,CAAC;AACxB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;wBACnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAW,CAAA,WAAA,GAAG,YAAY,CACxB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAmB,eAAe,CAAC,UAAU,CAAC,EACpD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;AACjC,wBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACvG,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,YAAY,CACvB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAkB,eAAe,CAAC,IAAI,CAAC,EAC7C,GAAG,CAAC,CAAC,MAAM,KAAI;;YACb,IAAI,CAAA,MAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACnC,wBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACrG,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,YAAY,CACvB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAkB,eAAe,CAAC,IAAI,CAAC,EAC7C,GAAG,CAAC,CAAC,MAAM,KAAI;;YACb,IAAI,CAAA,MAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACnC,wBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACrG,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAkB,CAAA,kBAAA,GAAG,YAAY,CAC/B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAA0B,eAAe,CAAC,iBAAiB,CAAC,EAClE,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;gBACnB,MAAM,KAAK,GAAG,wBAAwB,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/F,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACnC,MAAM,KAAK,GAAG,wBAAwB,CAAC;wBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAChG,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAC9B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAyB,eAAe,CAAC,gBAAgB,CAAC,EAChE,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;gBACnB,MAAM,KAAK,GAAG,wBAAwB,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACnC,MAAM,KAAK,GAAG,wBAAwB,CAAC;wBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,YAAY,CAC5B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAuB,eAAe,CAAC,cAAc,CAAC,EAC5D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE;AAC/B,wBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACzG,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,YAAY,CACvB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAkB,eAAe,CAAC,SAAS,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE;AAC/B,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChC,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAY,CAAA,YAAA,GAAG,YAAY,CACzB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAoB,eAAe,CAAC,gBAAgB,CAAC,EAC3D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE;wBAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAW,CAAA,WAAA,GAAG,YAAY,CACxB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAsB,eAAe,CAAC,aAAa,CAAC,EAC1D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACnC,wBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AAC5G,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAcF,IAAY,CAAA,YAAA,GAAG,YAAY,CACzB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAoB,eAAe,CAAC,WAAW,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3F,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5F,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KA9XE;AA8VJ,IAAA,SAAS,CAAC,IAAS,EAAA;AACjB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEtB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAE7C,YAAA,IAAI,EAAE,EAAE;gBACN,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,aAAA;AACF,SAAA;KACF;;wGA9WU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACxDX;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAqBI,MAAM,aAAa,GAAG,cAAc,CAAC,eAAe,EAAE,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,MAAM;IACrG,SAAS;IACT,MAAM;AACP,CAAA,CAAC,CAAC,CAAC;MAGS,aAAa,CAAA;IACxB,WACU,CAAA,KAAsB,EACtB,QAAiB,EACjB,MAAc,EACd,UAA+B,EAC/B,MAAiB,EAAA;AAJjB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AAC/B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QAG3B,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAC9B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAyB,iBAAiB,CAAC,UAAU,CAAC,EAC5D,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAS,CAAA,SAAA,GAAG,YAAY,CACtB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAiB,iBAAiB,CAAC,QAAQ,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,cAAc,EAAE;gBACzB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;AAEjD,gBAAA,IAAI,QAAQ,EAAE;oBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;oBAExD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE;wBACtF,WAAW,EAAE,EAAE,QAAQ,EAAE;AAC1B,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAED,gBAAA,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE;wBACvE,WAAW,EAAE,EAAE,IAAI,EAAE;AACtB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAS,CAAA,SAAA,GAAG,YAAY,CACtB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAiB,iBAAiB,CAAC,QAAQ,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1C,gBAAA,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,KAAY,CAAC;AAE3D,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE;oBACxE,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpD,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,aAAa,CAAC;AACrB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;oBACpB,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;AAC7C,wBAAA,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAY,CAAC;AAElE,wBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE;AACxE,4BAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;4BACzD,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7C,yBAAA;AACF,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAC7B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAwB,iBAAiB,CAAC,eAAe,CAAC,EAChE,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,cAAc,EAAE;gBACzB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,gBAAA,IAAI,QAAQ,EAAE;oBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACxD,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE;wBACxG,WAAW,EAAE,EAAE,QAAQ,EAAE;AAC1B,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAED,gBAAA,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE;wBACzF,WAAW,EAAE,EAAE,IAAI,EAAE;AACtB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5F,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAsB,iBAAiB,CAAC,aAAa,CAAC,EAC5D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnB,gBAAA,MAAM,CAAC,WAAW;AAClB,gBAAA;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;AACnC,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KArHE;IAuHI,cAAc,CAAC,MAAc,EAAE,QAAgB,EAAA;QACrD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;AACR,SAAA;AAED,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACtC,IAAI,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACxC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,SAAA;QACD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAErD,QAAA,MAAM,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;AAC/B,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C;IAED,eAAe,GAAA;QACb,MAAM,SAAS,GAAQ,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;AACnG,QAAA,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,CAAC,iBAAiB,EAAE;gBAC/B,SAAS,CAAC,iBAAiB,EAAE,CAAC;AAC/B,aAAA;iBAAM,IAAI,SAAS,CAAC,uBAAuB,EAAE;gBAC5C,SAAS,CAAC,uBAAuB,EAAE,CAAC;AACrC,aAAA;iBAAM,IAAI,SAAS,CAAC,oBAAoB,EAAE;gBACzC,SAAS,CAAC,oBAAoB,EAAE,CAAC;AAClC,aAAA;iBAAM,IAAI,SAAS,CAAC,mBAAmB,EAAE;gBACxC,SAAS,CAAC,mBAAmB,EAAE,CAAC;AACjC,aAAA;AACF,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACvC,MAAM,OAAO,GAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,eAAe,GAAoB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE/E,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,SAAA;AAED,QAAA,MAAM,WAAW,GAAiB,eAAe,CAAC,QAAQ,CAAC;AAE3D,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAA;YAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;;0GA9KU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;AChDX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAQU,uBAAuB,CAAA;AAOlC,IAAA,WAAA,CAAoB,MAAc,EAAA;AAAd,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAN1B,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;KAMU;AAJtC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAID,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC3C,SAAA;KACF;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;KACnC;;oHAxBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC7BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,QAAiB,EAAU,MAAc,EAAU,uBAAgD,EAAA;AAAnG,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;QAEvH,IAAO,CAAA,OAAA,GAAG,YAAY,CACpB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAe,iBAAiB,CAAC,MAAM,CAAC,EAC9C,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;SACjD,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,iBAAiB,CAAC,YAAY,CAAC,EAC1D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE3E,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3F,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACnD,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KA9ByH;;0GADhH,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAkB,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;AC/BX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAsBU,cAAc,CAAA;AACzB,IAAA,WAAA,CACU,KAAsB,EACtB,QAAiB,EACjB,OAAiC,EACjC,UAA6B,EAAA;AAH7B,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;AACjC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAGvC,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAsB,kBAAkB,CAAC,MAAM,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;AAClC,wBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,kBAAkB,CAAC,KAAK,CAAC,EACpD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK;qBACP,MAAM,CAAC,eAAe,CAAC;AACvB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,oBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;wBAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AAC5G,qBAAA;AACH,iBAAC,CAAC,CAAC;AACN,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAsB,kBAAkB,CAAC,MAAM,CAAC,EACtD,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAC5C,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC,CACzD,EACH,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAC7B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAwB,kBAAkB,CAAC,QAAQ,CAAC,EAC1D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;AACjC,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,UAAU;qBACZ,OAAO,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACxD,qBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,qBAAA,SAAS,CACR,CAAC,EAAE,KAAI;AACL,oBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;AACxD,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC3D,EACD,MAAK;oBACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC,CAAC;AACtF,iBAAC,CACF,CAAC;AACL,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAsB,kBAAkB,CAAC,MAAM,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,KAAK;iBACP,MAAM,CAAC,eAAe,CAAC;AACvB,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,gBAAA,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;oBAClC,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;oBACvC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AAE1D,oBAAA,MAAM,QAAQ,GAAG;wBACf,KAAK;wBACL,WAAW;wBACX,UAAU;qBACX,CAAC;oBAEF,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC1C,iBAAA;AACH,aAAC,CAAC,CAAC;SACN,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KA1GE;;2GANO,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;AC3CX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAuBU,aAAa,CAAA;IAMxB,WACU,CAAA,KAAsB,EACtB,QAAiB,EACjB,MAAc,EACd,aAA4B,EACpC,eAAiC,EACzB,cAAwC,EAAA;AALxC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAE5B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAA0B;AARjC,QAAA,IAAwB,CAAA,wBAAA,GAAG,kDAAkD,CAAC;QAuC/F,IAAY,CAAA,YAAA,GAAG,YAAY,CACzB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAoB,iBAAiB,CAAC,WAAW,CAAC,EACxD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC3F,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,iBAAiB,CAAC,YAAY,CAAC,EAC1D,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC7F,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAC1B,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAA0B,iBAAiB,CAAC,iBAAiB,CAAC,EACpE,GAAG,CAAC,CAAC,MAAM,KAAI;;AACb,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;gBACnB,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,0CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;gBACxD,MAAM,IAAI,GAAQ,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;gBAC1D,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,aAAA;iBAAM,IAAI,EAAC,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,EAAE;AAC3B,gBAAA,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,6BAA6B,CAAC,CAAC;AACxH,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC/B,aAAA;SACF,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QArEA,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE5D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,kBAAkB,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;AAC5E,QAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,yBAAyB,CAAC;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAK;YACpD,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;AACvE,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,mBAAmB,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACvD;IA4CD,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,WAAW,EAAE;AACb,aAAA,IAAI,CACH,UAAU,CAAC,CAAC,CAAC,KAAI;YACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACtE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,CAAC,IAA4B,KAAI;AAC1C,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;AAClC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,MAAM,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,gBAAgB,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;AACnB,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,aAAiC,CAAC;gBACtD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAClD,CAAC,IAAS,KACR,IAAI,SAAS,CAAC,IAAI,EAAE;oBAClB,QAAQ,EAAE,IAAI,CAAC,EAAE;AACjB,oBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9D,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA,CAAC,CACL,CAAC;AAEF,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;AACzB,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,WAAW,CAAC,KAAkB,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC7C,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,eAAe,CAAC,IAAsB,EAAA;QACpC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAE3C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;gBACjF,IACE,IAAI,CAAC,IAAI;oBACT,IAAI,CAAC,IAAI,CAAC,KAAK;AACf,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;oBAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,YAAY;AAC1D,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAC9C;AACA,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,iBAAA;gBAED,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAEO,sCAAsC,CAAC,KAAuB,EAAE,sBAA8B,EAAA;AACpG,QAAA,KAAK,CAAC,gBAAgB,CACpB,OAAO,EACP,MAAK;AACH,YAAA,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,MAAK;gBACH,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAc,sBAAsB,CAAC,CAAC;AACnF,gBAAA,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE;AAClG,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC,CAAC;gBACH,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,aAAC,EACD;AACE,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CACF,CAAC;AACJ,SAAC,EACD;AACE,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CACF,CAAC;KACH;;0GApLU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;AC5CX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,iCAAiC,CAAA;IAG5C,WACU,CAAA,kBAAsC,EACtC,KAAsB,EACtB,WAA+B,EAC/B,SAA0D,EAClC,IAAU,EAAA;AAJlC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAC/B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiD;AAClC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;KACxC;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACxH,YAAA,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAChG,YAAA,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7G,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,YAAA,UAAU,EAAE;AACV,gBAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;AACjC,gBAAA,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;AAC9C,aAAA;SACF,CAAC;AACF,QAAA,MAAM,IAAI,GAAS,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;KACnD;IAED,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9G;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;IAEO,uBAAuB,CAAC,EAAE,KAAK,EAAsB,EAAA;QAC3D,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;QACnD,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE/C,QAAA,OAAO,OAAO;AACZ,cAAE,IAAI;AACN,cAAE;AACE,gBAAA,OAAO,EAAE,CAAmD,iDAAA,CAAA;aAC7D,CAAC;KACP;IAEO,eAAe,CAAC,EAAE,KAAK,EAAsB,EAAA;QACnD,MAAM,OAAO,GAAY,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC;AAEtE,QAAA,OAAO,OAAO;AACZ,cAAE,IAAI;AACN,cAAE;AACE,gBAAA,OAAO,EAAE,CAA2C,yCAAA,CAAA;aACrD,CAAC;KACP;IAEO,gBAAgB,CAAC,EAAE,KAAK,EAAsB,EAAA;QACpD,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAEvC,YAAA,OAAO,OAAO;AACZ,kBAAE,IAAI;AACN,kBAAE;AACE,oBAAA,OAAO,EAAE,CAA4C,0CAAA,CAAA;iBACtD,CAAC;AACP,SAAA;AAAM,aAAA;YACL,OAAO;AACL,gBAAA,OAAO,EAAE,CAAyC,uCAAA,CAAA;aACnD,CAAC;AACH,SAAA;KACF;;AA9EU,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,6IAQlC,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AARd,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,oDCrC9C,8tDAwDA,EAAA,MAAA,EAAA,CAAA,qjCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDnBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;AAGO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8tDAAA,EAAA,MAAA,EAAA,CAAA,qjCAAA,CAAA,EAAA,CAAA;;;8BAUlC,MAAM;+BAAC,eAAe,CAAA;;;;AE7C3B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqBU,mBAAmB,CAAA;AAU9B,IAAA,WAAA,CACU,KAAsB,EACtB,kBAAsC,EACtC,WAA+B,EAChC,MAAiB,EAAA;AAHhB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAChC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AAblB,QAAA,IAAqB,CAAA,qBAAA,GAAyB,IAAI,CAAC;KAcvD;AAVJ,IAAA,IAAI,SAAS,GAAA;;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AASD,IAAA,oBAAoB,CAAC,MAA4B,EAAA;AAC/C,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;AAEpC,QAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAU,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC;YACf,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,IAAI,GAAqC;AAC7C,YAAA,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;YACvC,UAAU,EAAE,UAAU,CAAC,IAAI;AAC3B,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,MAAM;AACN,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,oBAAoB,EAAE,KAAK;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SACrC,CAAC;AAEF,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,CAAA,QAAA,EAAW,MAAM,CAAC,eAAe,CAAG,CAAA,CAAA;AAC3C,gBAAA,QAAQ,EAAE,MAAM;AACjB,aAAA;YACD,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,CAAC;SACtE,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrB,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC;YAEhC,OAAO,IAAI,CAAC,MAAM;iBACf,IAAI,CAAC,4BAA4B,EAAE;gBAClC,IAAI;AACJ,gBAAA,UAAU,EAAE,CAAC,kCAAkC,EAAE,mCAAmC,CAAC;AACrF,gBAAA,KAAK,EAAE,OAAO;aACf,CAAC;AACD,iBAAA,WAAW,EAAE,CAAC;AACnB,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC5E,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAEhD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,oBAAoB,CAAC,IAAU,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;AACjE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,iCAAiC;AAC7C,YAAA,KAAK,EAAE,OAAO;AACf,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAClF,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,aAAa,CAAC,IAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,YAAY,KAAK,EAAE;YACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,gBAAgB,CAAC,IAAU,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,KAAK,QAAQ,EAAE;YACzD,OAAO,IAAI,CAAC,QAAQ,CAAC;AACtB,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAEO,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;KAC7C;AAEO,IAAA,KAAK,CAAC,aAAqB,EAAA;QACjC,IAAI,aAAa,KAAK,MAAM,EAAE;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;AAC7E,SAAA;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;KAC/E;AAEO,IAAA,SAAS,CAAC,GAAiB,EAAA;AACjC,QAAA,MAAM,IAAI,GAA2B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACpD,OAAO,IAAI,CAAC,QAAQ,KAAK,cAAc,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,CAAC;KAC/E;AAEO,IAAA,eAAe,CAAC,IAAU,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,KAAK,WAAW,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;KAClJ;AAEO,IAAA,OAAO,qBAAqB,GAAA;QAClC,QAAQ,CAAC,aAAa,CAAc,kDAAkD,CAAC,CAAC,KAAK,EAAE,CAAC;KACjG;;gHA9HU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC1CD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAwBU,eAAe,CAAA;IAO1B,WACU,CAAA,SAAoB,EACpB,cAA8B,EAC9B,KAAsB,EACtB,UAA8B,EAC9B,QAAiB,EACjB,mBAAwC,EAAA;AALxC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AACpB,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;AAC9B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QAGlD,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAC9B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAmB,mBAAmB,CAAC,gBAAgB,CAAC,EAC9D,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,UAAU,CAAC;AACd,gBAAA,eAAe,EAAE,oBAAoB;AACrC,gBAAA,aAAa,EAAE,MAAM;AACtB,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;AAEF,QAAA,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAChC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,mBAAmB,CAAC,kBAAkB,CAAC,EAClE,GAAG,CAAC,MACF,IAAI,CAAC,UAAU,CAAC;AACd,YAAA,eAAe,EAAE,qBAAqB;AACtC,YAAA,aAAa,EAAE,QAAQ;SACxB,CAAC,CACH,CACF,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAChC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAqB,mBAAmB,CAAC,kBAAkB,CAAC,EAClE,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,KAAK;iBACP,MAAM,CAAC,gBAAgB,CAAC;iBACxB,IAAI,CACH,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAC/D,IAAI,CAAC,CAAC,CAAC,CACR;AACA,iBAAA,SAAS,CAAC,CAAC,IAAsB,KAAI;AACpC,gBAAA,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,iBAAA;AACH,aAAC,CAAC,CAAC;SACN,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAA0B,CAAA,0BAAA,GAAG,YAAY,CACvC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAA4B,mBAAmB,CAAC,yBAAyB,CAAC,EAChF,GAAG,CAAC,CAAC,OAAO,KAAI;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC/C,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KA7DE;AAZJ,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAwEO,IAAA,UAAU,CAAC,MAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,mBAAmB;aACrB,oBAAoB,CAAC,MAAM,CAAC;AAC5B,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,aAAA,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/E;IAEO,QAAQ,CAAC,MAAY,EAAE,QAAgB,EAAA;QAC7C,OAAO,IAAI,CACT,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE;AAChC,YAAA,cAAc,EAAE,QAAQ;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI;AAClB,SAAA,CAAC,CACH,CAAC,IAAI,CACJ,SAAS,CAAC,CAAC,IAAI,KACb,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACpB,YAAA,UAAU,EAAE;AACV,gBAAA,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AACzC,gBAAA,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACtD,aAAA;AACF,SAAA,CAAC,CACH,EACD,UAAU,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAC/C,CAAC;KACH;IAEO,UAAU,CAAC,IAAe,EAAE,MAAsB,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC/F;AAEO,IAAA,WAAW,CAAC,KAAY,EAAA;AAC9B,QAAA,IAAI,UAAkB,CAAC;QAEvB,IAAI;AACF,YAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AACzD,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACV,UAAU,GAAG,IAAI,CAAC;AACnB,SAAA;QAED,IAAI,UAAU,KAAK,GAAG,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC7E,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC9E,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;;4GA3HU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;AC7CX;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAIU,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAoB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;IAE9C,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC3B;AACF;;AChCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAII,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAC,wBAAwB,EAAE;AACjF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,KAAK;AACrB,CAAA,CAAC;;AC7BF;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,UAA+B,EAAA;AAA/B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;KAAI;IAEvD,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7D,SAAA;KACF;AAEO,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACtE;IAED,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;;qHAlBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCrC,4sCA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGa,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,uBAAuB,EAAA,aAAA,EAElB,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAAA,4sCAAA,EAAA,CAAA;0GAIxC,SAAS,EAAA,CAAA;sBADR,KAAK;;;AEnCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,qBAAqB,CAAA;AAMhC,IAAA,WAAA,GAAA;AALQ,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAG3C,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAE,CAAC;KAEtC;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AAC9B,iBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAiB,CAAC,CAAC,CAAC;iBACpE,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC7C,SAAA,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAEO,IAAA,YAAY,CAAC,EAAW,EAAA;QAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC;QAErC,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;AAED,QAAA,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAC,CAAC;QACrE,OAAO,CAAC,CAAC,EAAE,CAAC;KACb;;kHA9BU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;iBACzC,CAAA;0EAKC,YAAY,EAAA,CAAA;sBADX,MAAM;;;AClCT;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAoBU,oBAAoB,CAAA;AAgB/B,IAAA,WAAA,CACU,qBAA4C,EAC5C,UAA+B,EACA,SAAoB,EAAA;AAFnD,QAAA,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;AAC5C,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AACA,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAlBrD,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;AAC9D,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAkBlC;AAZJ,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,gBAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;AACpC,aAAA;AACF,SAAA;KACF;IAQD,mBAAmB,GAAA;QACjB,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;AACpC,SAAA;KACF;AAED,IAAA,SAAS,CAAC,gBAAkC,EAAA;QAC1C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5D,YAAA,6BAA6B,EAAE,0BAA0B;AAC1D,SAAA,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,4BAA4B,EAAE;AAC9B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,OAAO,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;KACrD;IAED,eAAe,GAAA;AACb,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KAC9C;IAED,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;;AApDU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,uFAmBrB,sBAAsB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAnBrB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIpB,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C3B,o/CAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAEtB,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,yBAAyB;qBACjC,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,o/CAAA,EAAA,CAAA;;;8BAqBlC,MAAM;+BAAC,sBAAsB,CAAA;;yBAdhC,OAAO,EAAA,CAAA;sBADN,SAAS;uBAAC,cAAc,CAAA;gBAIzB,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEjDrD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAAoB,QAAkB,EAAU,OAAgB,EAAU,qBAA6C,EAAA;AAAnG,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;AAAU,QAAA,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAwB;AACrH,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,eAAe,KAAI;AACjF,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,CAAC,MAAgC,EAAA;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAEhD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,aAAa,CAAC,MAAgC,EAAA;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC3C;IAEO,qBAAqB,CAAC,OAAmB,EAAE,qBAA4C,EAAA;QAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAE5D,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,oBAAoB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClF,MAAM,YAAY,GAAuC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAEzF,OAAO,YAAY,CAAC,QAAQ,CAAC;KAC9B;AAEO,IAAA,cAAc,CAAC,qBAA4C,EAAA;AACjE,QAAA,MAAM,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAEtC,QAAA,eAAe,CAAC,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;QAClE,eAAe,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5D,OAAO,QAAQ,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;gBACnE,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;AAC9D,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,gBAAgB,CAAC,MAAgC,EAAA;QACvD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AAE/B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO;AAClC,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7B,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACF,SAAA,CAAC,CAAC;AAEL,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,gBAAgB;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,aAAa,CAAC;KACtB;;+GAxEU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACpCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,kBAAkB,CAAA;IAG7B,WAAoB,CAAA,kBAAsC,EAAU,QAAiB,EAAA;AAAjE,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAF7E,QAAA,IAAU,CAAA,UAAA,GAA0B,IAAI,CAAC;QAIjD,IAAY,CAAA,YAAA,GAAG,YAAY,CACzB,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAc,sBAAsB,CAAC,WAAW,CAAC,EACvD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACzB,aAAA;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC7C,MAAM,EAAE,MAAM,CAAC,KAAK;AACpB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,aAAa,EAAE,kCAAkC;AACjD,gBAAA,UAAU,EAAE,kBAAkB;AAC/B,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KApBuF;;+GAH9E,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAuB,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;AC/BX;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqDU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,oEAfvB,iBAAiB,EAAAF,IAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,CAAA;4GAeR,cAAc,EAAA,OAAA,EAAA,CA7BvB,WAAW,CAAC,OAAO,CACjB,EAAE,GAAG,EAAE,UAAU,EAAE,EACnB;AACE,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,aAAa,EAAE;AACb,gBAAA,uBAAuB,EAAE,KAAK;AAC9B,gBAAA,wBAAwB,EAAE,KAAK;AAChC,aAAA;SACF,CACF;QACD,2BAA2B,CAAC,OAAO,CAAC;AAClC,YAAA,UAAU,EAAE,yBAAyB;AACrC,YAAA,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,iBAAiB;QACjB,aAAa,CAAC,OAAO,CAAC;YACpB,UAAU;YACV,WAAW;YACX,eAAe;YACf,aAAa;YACb,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,eAAe;YACf,kBAAkB;SACnB,CAAC,CAAA,EAAA,CAAA,CAAA;2FAGO,cAAc,EAAA,UAAA,EAAA,CAAA;kBA/B1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW,CAAC,OAAO,CACjB,EAAE,GAAG,EAAE,UAAU,EAAE,EACnB;AACE,4BAAA,YAAY,EAAE,aAAa;AAC3B,4BAAA,aAAa,EAAE;AACb,gCAAA,uBAAuB,EAAE,KAAK;AAC9B,gCAAA,wBAAwB,EAAE,KAAK;AAChC,6BAAA;yBACF,CACF;wBACD,2BAA2B,CAAC,OAAO,CAAC;AAClC,4BAAA,UAAU,EAAE,yBAAyB;AACrC,4BAAA,QAAQ,EAAE,QAAQ;yBACnB,CAAC;wBACF,iBAAiB;wBACjB,aAAa,CAAC,OAAO,CAAC;4BACpB,UAAU;4BACV,WAAW;4BACX,eAAe;4BACf,aAAa;4BACb,aAAa;4BACb,cAAc;4BACd,aAAa;4BACb,eAAe;4BACf,eAAe;4BACf,kBAAkB;yBACnB,CAAC;AACH,qBAAA;iBACF,CAAA;;;AC1ED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAsBU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EATf,OAAA,EAAA,CAAA,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CACtI,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAQrI,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAPd,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AAC1E,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CAPS,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EACtI,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAQrI,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,CAAC;AACjJ,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,CAAC;AACjJ,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,0BAA0B;AACnC,4BAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AAC1E,yBAAA;AACF,qBAAA;iBACF,CAAA;;;AC3CD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,8BAA8B,CAAA;AACzC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;AAAlC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACpD,IAAI,CAAC,gCAAgC,EAAE,CAAC;KACzC;IAED,gCAAgC,GAAA;AAC9B,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC9D,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE;gBAC7D,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACjD,SAAA;KACF;IAEO,qBAAqB,GAAA;QAC3B,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,OAAO,EAAE;AACtE,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAChD,SAAA;KACF;;2HAzBU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA,CAAA;2FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC9BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AASG,SAAU,eAAe,CAAC,OAA4B,EAAA;AAC1D,IAAA,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;MAKY,oBAAoB,CAAA;AAC/B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,UAAU,EAAE,eAAe;AAC3B,oBAAA,IAAI,EAAE,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;AAC3D,oBAAA,KAAK,EAAE,IAAI;AACZ,iBAAA;AACF,aAAA;SACF,CAAC;KACH;AAED,IAAA,OAAO,QAAQ,GAAA;QACb,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;SAC/B,CAAC;KACH;;iHAnBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,OAAA,EAAA,CAFrB,YAAY,EAAAA,IAAA,CAAA,UAAA,EAAyB,gBAAgB,CAAA,EAAA,CAAA,CAAA;kHAEpD,oBAAoB,EAAA,OAAA,EAAA,CAFrB,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAEpD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC;iBACjE,CAAA;;;ACrCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;8GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHZ,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAD1B,sBAAsB,EAAE,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAE9C,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAEpE,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJjB,sBAAsB,EAAE,sBAAsB,EAEvB,sBAAsB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;2FAEpE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;oBACzD,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,CAAC;iBACjF,CAAA;;;ACjCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAAoB,UAAiC,EAAA;AAAjC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;KAAI;AAEzD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;iHAfU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,kFAFrB,CAA8G,4GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAE7G,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAA8G,4GAAA,CAAA;iBACzH,CAAA;4GAGC,IAAI,EAAA,CAAA;sBADH,KAAK;;;ACjCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqBU,oBAAoB,CAAA;IAQ/B,WACU,CAAA,UAAiC,EAC/B,UAA+B,EACjC,SAA2B,EAC3B,KAAsB,EACtB,mBAAwC,EACxC,sBAA8C,EAAA;AAL9C,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;AAC/B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AACjC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAC3B,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;AAb9C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;AAe5C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC;AAC7F,SAAA;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;KACnE;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAChD,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAwB,KAAI;YACxG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;iHAvCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAPrB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;AAGT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;iBACpC,CAAA;8QAKC,IAAI,EAAA,CAAA;sBADH,KAAK;;;AC9CR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,wBAAwB,CAAA;IACnC,YAAY,CAAC,OAAkC,EAAE,IAAwC,EAAA;AACvF,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC;KAC5F;AACF,CAAA;MAMY,4BAA4B,CAAA;IA8BvC,WAAoB,CAAA,kBAAsC,EAAY,KAAsB,EAAA;AAAxE,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAAY,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAnB5F,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAE3B,IAAA,CAAA,WAAW,GAAG;AACZ,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,2BAA2B,EAAE;AACvD,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,EAAE;AACzD,YAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,8BAA8B,EAAE;SAC9D,CAAC;AAEF,QAAA,IAAI,CAAA,IAAA,GAAqB,IAAI,gBAAgB,CAAC;AAC5C,YAAA,EAAE,EAAE,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACzD,KAAK,EAAE,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9F,YAAA,WAAW,EAAE,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,YAAA,UAAU,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,wBAAwB,EAAE,CAAC;AAEzC,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;KAE0C;AA5BhG,IAAA,IAAI,UAAU,GAAA;;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,MAAA,IAAI,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AA2BD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;KAC/E;AAED,IAAA,kBAAkB,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;KACpE;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;KACxB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY;aACrC,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,QAAQ,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EACnD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AACA,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAEhC,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5D,oBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACjC,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACrF,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,IAAe,EAAA;AAChC,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU;AAC7B,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,kBAAkB,CAAC,YAAoB,EAAA;AAC7C,QAAA,OAAO,IAAI,CACT,IAAI,CAAC,UAAU;aACZ,SAAS,CAAC,YAAY,EAAE;AACvB,YAAA,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,OAAO,CAAC;SAClB,CAAC;AACD,aAAA,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAC5C,CAAC;KACH;;yHA5GU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,gHC7CzC,shKAsIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDzFa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,shKAAA,EAAA,CAAA;iIAWrC,IAAI,EAAA,CAAA;sBADH,KAAK;;;AEpDR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,2BAA2B,CAAA;;wHAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,wIAH5B,uEAAuE,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGtE,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,uEAAuE;AACjF,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;iBACpC,CAAA;8BAGC,IAAI,EAAA,CAAA;sBADH,KAAK;;;ACjCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAyBU,oBAAoB,CAAA;AApBjC,IAAA,WAAA,GAAA;AAwBE,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;KAkBxB;IAhBC,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEO,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,IAAI,IAAK,IAAI,CAAC,IAAY,CAAC,MAAM,EAAE;;AAE1C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,SAAA;KACF;;iHArBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAlBrB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;iBACF,CAAA;8BAGC,IAAI,EAAA,CAAA;sBADH,KAAK;;;AChDR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAwCU,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAVf,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAXxI,YAAY;QACZ,cAAc,qCAGd,gBAAgB;QAChB,qBAAqB;QACrB,oBAAoB;QACpB,gBAAgB;QAChB,UAAU;AACV,QAAA,sBAAsB,aAItB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,2BAA2B;QAC3B,4BAA4B;QAC5B,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YArB5B,YAAY;QACZ,cAAc;QACd,UAAU,CAAC,QAAQ,EAAE;QACrB,aAAa,CAAC,QAAQ,EAAE;QACxB,gBAAgB;QAChB,qBAAqB;QACrB,oBAAoB;QACpB,gBAAgB;QAChB,UAAU;AACV,QAAA,sBAAsB,EAStB,sBAAsB,CAAA,EAAA,CAAA,CAAA;2FAGb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,UAAU,CAAC,QAAQ,EAAE;wBACrB,aAAa,CAAC,QAAQ,EAAE;wBACxB,gBAAgB;wBAChB,qBAAqB;wBACrB,oBAAoB;wBACpB,gBAAgB;wBAChB,UAAU;wBACV,sBAAsB;AACvB,qBAAA;oBACD,YAAY,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,4BAA4B,CAAC;AAC3I,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,oBAAoB;wBACpB,oBAAoB;wBACpB,2BAA2B;wBAC3B,4BAA4B;wBAC5B,sBAAsB;AACvB,qBAAA;iBACF,CAAA;;;AC7DD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA6BU,qBAAqB,CAAA;AAiBhC,IAAA,WAAA,CAAoB,KAAsB,EAAU,UAA6B,EAAU,kBAAsC,EAAA;AAA7G,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAAU,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAdjI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAO3G,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KAOgH;IAJrI,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAID,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,GAAsB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,SAAA;KACF;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,GAAsB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACtD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE7B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACtC,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3E,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9C,qBAAA;AACD,oBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAC;AAC7D,iBAAA;AACF,aAAA;AACF,SAAA;KACF;;AAGO,IAAA,cAAc,CAAC,IAAc,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;;AAGlD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE;AAC3D,YAAA,OAAO,EAAE,CAAC,2BAA2B,CAAC,CAAC;AACxC,SAAA;;AAGD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;AAC3F,YAAA,OAAO,EAAE,CAAC,2BAA2B,CAAC,CAAC;AACxC,SAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE7C,IAAI,MAAM,KAAK,iBAAiB,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEzD,YAAA,OAAO,IAAI,UAAU,CAAS,CAAC,QAAQ,KAAI;AACzC,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAChD,CAAC,IAAI,KAAI;AACP,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACzE,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBACrB,EACD,MAAK;AACH,oBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,iBAAC,CACF,CAAC;AACJ,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;KACnB;;AAGO,IAAA,UAAU,CAAC,IAAc,EAAA;QAC/B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;AACR,SAAA;QAED,IAAI,MAAM,GAAW,IAAI,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACnF,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAEpF,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE;AACvC,YAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC;AAEjC,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AAChC,oBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAChD,CAAC,IAAI,KAAI;AACP,wBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACtB,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AAC7E,wBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,wBAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AAEpD,wBAAA,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACjC,EACD,MAAK;AACH,wBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,wBAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AACpD,wBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtB,wBAAA,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,qBAAC,CACF,CAAC;AACH,iBAAA;gBAED,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AACrC,oBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,oBAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AACrD,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;;kHAlIU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAhBtB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,gEAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;GAST,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAOU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AAST,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gEAAgE;AACxE,qBAAA;iBACF,CAAA;iKAQC,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,CAAA;;;AC/D5B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,qBAAqB,CAAA;AAQhC,IAAA,WAAA,CAAoB,KAAsB,EAAA;AAAtB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;KAAI;IAE9C,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACtD;AAED,IAAA,QAAQ,CAAC,SAAyB,EAAA;;AAEhC,QAAA,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,IAAK,SAAS,CAAC,KAAK,CAAC,KAAa,CAAC,YAAY,EAAE;AAC3F,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;KAC9I;IAED,cAAc,CAAC,SAAyB,EAAE,6BAAqC,EAAA;QAC7E,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE;YACnC,6BAA6B;AAC9B,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,SAAyB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,wBAAwB,GAAG,mBAAmB,CAAC;KAClF;;kHAjCU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,mFClClC,g/BA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,g/BAAA,EAAA,CAAA;8FAK7B,IAAI,EAAA,CAAA;sBADH,KAAK;;;AEnCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAgBU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAVxB,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,EAAA,CAAA;iBACF,CAAA;;;ACrCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,KAAsB,EAAA;AAAtB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;KAAI;IAE9C,aAAa,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD;;4GALU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAPhB,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;GAKT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKT,EAAA,CAAA;iBACF,CAAA;;;MCFY,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CACU,oBAA0C,EAC1C,mBAAwC,EACxC,WAAkC,EAAA;AAFlC,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;AAC1C,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;KACxC;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE;gBACxE,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE;AACxC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;KACtC;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACvH;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1H;AAEO,IAAA,gBAAgB,CAAC,KAA6C,EAAA;AACpE,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;QAE7B,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,GAAG,CAAG,EAAA,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,aAAa,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACvH;;8GApDU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qDClC9B,2MAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD8Ba,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,2MAAA,EAAA,CAAA;;;AE/B3B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA4BU,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAXX,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,eAAe,EAAE,iBAAiB,CAD9G,EAAA,OAAA,EAAA,CAAA,YAAY,qCAAmD,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,aAGzH,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,qBAAqB;QACrB,uBAAuB;QACvB,eAAe;QACf,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGR,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAZhB,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAGzH,gBAAgB;QAEhB,kBAAkB,CAAA,EAAA,CAAA,CAAA;2FAOT,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC;oBAC5H,YAAY,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,eAAe,EAAE,iBAAiB,CAAC;AACzH,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,qBAAqB;wBACrB,kBAAkB;wBAClB,qBAAqB;wBACrB,uBAAuB;wBACvB,eAAe;wBACf,iBAAiB;AAClB,qBAAA;iBACF,CAAA;;;ACjDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA+BU,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAHb,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,aAVlF,aAAa;QACb,aAAa;QACb,aAAa;QACb,eAAe,yCAGf,eAAe;QACf,gBAAgB;AAChB,QAAA,oBAAoB,aAGZ,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAE1F,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAb1B,aAAa;QACb,aAAa;QACb,aAAa;QACb,eAAe;QACf,oBAAoB,CAAC,QAAQ,EAAE;QAC/B,UAAU,CAAC,QAAQ,EAAE;QACrB,eAAe;QACf,gBAAgB;AAChB,QAAA,oBAAoB,EAG2D,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAE1F,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,oBAAoB,CAAC,QAAQ,EAAE;wBAC/B,UAAU,CAAC,QAAQ,EAAE;wBACrB,eAAe;wBACf,gBAAgB;wBAChB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;oBACrF,OAAO,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,CAAC;iBACvG,CAAA;;;ACpDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA2BU,4BAA4B,CAAA;AAGvC,IAAA,WAAA,CAAoB,KAAsB,EAAA;AAAtB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;QACxC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;KAC1D;AAED,IAAA,QAAQ,CAAC,WAAmB,EAAA;QAC1B,OAAO,WAAW,KAAK,MAAM,GAAG,uBAAuB,GAAG,0BAA0B,CAAC;KACtF;IAED,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;KACtD;;yHAbU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAlB7B,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBApBxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE;iBAC7C,CAAA;;;AChDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqBU,uBAAuB,CAAA;IAKlC,WAAoB,CAAA,KAAsB,EAAU,MAAc,EAAA;AAA9C,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAF1D,QAAA,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;QAGpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACtD;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,SAAA;KACF;IAED,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;AACrD,SAAA;KACF;;oHAnBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAVxB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;iBACvC,CAAA;qHAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;AC5CR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAwBU,yBAAyB,CAAA;AAGpC,IAAA,WAAA,CAAoB,KAAiB,EAAA;AAAjB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;KAChE;IAED,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;KACnD;;sHATU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAf1B,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;GAWT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE;iBAC1C,CAAA;;;AC7CD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqCU,gCAAgC,CAAA;IAI3C,WAAoB,CAAA,KAAsB,EAAU,cAA8B,EAAA;AAA9D,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAChF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACnD;AAED,IAAA,aAAa,CAAC,KAAmC,EAAA;AAC/C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3D,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1C,SAAA;AAAM,aAAA;YACL,IAAI,KAAK,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC,CAAC,CAAC,CAAC;AAC1G,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC9C,SAAA;KACF;AAED,IAAA,YAAY,CAAC,KAAkC,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7D;;6HAxBU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,gCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAlBjC,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBApB5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE;iBAC3C,CAAA;;;AC1DD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AA4BG,MAAO,8BAA+B,SAAQ,gCAAgC,CAAA;IAClF,WAAY,CAAA,KAAsB,EAAE,cAA8B,EAAA;AAChE,QAAA,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;KAC9B;;2HAHU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAlB/B,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBApB1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE;iBAC3C,CAAA;;;ACjDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA4BU,8BAA8B,CAAA;AAIzC,IAAA,WAAA,CAAoB,KAAsB,EAAU,cAA8B,EAAU,MAAc,EAAA;AAAtF,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAFlG,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;KAEgD;IAE9G,QAAQ,GAAA;AACN,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAE9E,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,eAAe,CAAC;aACvB,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxD,aAAA,SAAS,CAAC,CAAC,SAAyB,KAAI;AACvC,YAAA,IAAI,CAAC,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,SAAS,CAAC,OAAO,CAAE,CAAC;;AAGxC,YAAA,IAAI,SAAS,CAAC,OAAO,IAAI,mBAAmB,EAAE;AAC5C,gBAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;KAClD;;2HA7BU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAf/B,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAjB1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE;iBAC/C,CAAA;;;MCIY,0BAA0B,CAAA;IAIrC,WAAoB,CAAA,KAAsB,EAAU,kBAAsC,EAAA;AAAtE,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACxF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;KACrE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACxD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACvD;IAEK,OAAO,GAAA;;YACX,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvC,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,UAAU,CAAC,IAAiC,EAAA;;AACxD,YAAA,MAAM,EAAE,GAAI,IAAwB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAEnE,YAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC5B,IAAI;oBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAE3C,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK,CAAC,CAAC;AAC7B,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,iBAAA;gBAAC,OAAM,EAAA,EAAA;oBACN,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,IAAI;oBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAEzC,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK,CAAC,CAAC;AAC7B,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/D,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,iBAAA;gBAAC,OAAM,EAAA,EAAA;oBACN,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAED,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,IAAI,mBAAmB,CAAC,+BAA+B,EAAE;AACvD,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AACpC,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,IAAI,mBAAmB,CAAC,iCAAiC,EAAE;AACzD,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AACpC,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,QAAQ,EAAE,YAAY;AACvB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzC;AAEO,IAAA,MAAM,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAEzD,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACnE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC7D,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAE3D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9C,SAAA;KACF;;uHApFU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EApB3B,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAtBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE;iBAC3C,CAAA;;;ACpDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA+BU,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CAAoB,KAAsB,EAAU,MAAc,EAAU,uBAAmD,EAAA;AAA3G,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAA4B;KAAI;IAEnI,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,eAAe,CAAC;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;;AACvB,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,MAAA,CAAA,EAAA,GAAA,SAAS,CAAC,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC,EAAE;gBACnG,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,EAAU,CAAC;gBAEf,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,EAAE;oBACpD,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACxD,iBAAA;AAAM,qBAAA;oBACL,EAAE,GAAI,SAAS,CAAC,IAAwB,CAAC,KAAK,CAAC,MAAM,IAAK,SAAS,CAAC,IAAY,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACxH,iBAAA;gBAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5E,aAAA;AACH,SAAC,CAAC,CAAC;KACN;;8GAxBU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAnBlB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;iBACjC,CAAA;8JAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;ACtDR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA0CU,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBArBzB,4BAA4B;QAC5B,uBAAuB;QACvB,yBAAyB;QACzB,gCAAgC;QAChC,8BAA8B;QAC9B,8BAA8B;QAC9B,0BAA0B;QAC1B,iBAAiB,CAAA,EAAA,OAAA,EAAA,CATT,YAAY,EAAAJ,IAAA,CAAA,UAAA,EAAyB,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAYrH,4BAA4B;QAC5B,uBAAuB;QACvB,yBAAyB;QACzB,gCAAgC;QAChC,8BAA8B;QAC9B,8BAA8B;QAC9B,0BAA0B;QAC1B,iBAAiB;QACjB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAvBjB,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAoBrH,mBAAmB,CAAA,EAAA,CAAA,CAAA;2FAGV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACxH,oBAAA,YAAY,EAAE;wBACZ,4BAA4B;wBAC5B,uBAAuB;wBACvB,yBAAyB;wBACzB,gCAAgC;wBAChC,8BAA8B;wBAC9B,8BAA8B;wBAC9B,0BAA0B;wBAC1B,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,uBAAuB;wBACvB,yBAAyB;wBACzB,gCAAgC;wBAChC,8BAA8B;wBAC9B,8BAA8B;wBAC9B,0BAA0B;wBAC1B,iBAAiB;wBACjB,mBAAmB;AACpB,qBAAA;iBACF,CAAA;;;AC/DD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,mBAAmB,CAAA;AAW9B,IAAA,WAAA,CAAoB,UAA+B,EAAA;AAA/B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AAVnD,QAAA,IAAa,CAAA,aAAA,GAA4B,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;KASC;IAEvD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,gBAAgB,EAAE;AAClB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AAC3B,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACrC,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,aAAa,EAAE;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,UAAU,KAAI;AACxB,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC;AAC1C,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;;gHApCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8JCrChC,21CAoCA,EAAA,MAAA,EAAA,CAAA,q7DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAA,21CAAA,EAAA,MAAA,EAAA,CAAA,q7DAAA,CAAA,EAAA,CAAA;0GAQlC,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;;;AE7CR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAaU,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAHf,mBAAmB,CAAA,EAAA,OAAA,EAAA,CADxB,YAAY,EAAyBE,IAAA,CAAA,UAAA,EAAA,gBAAgB,aAErD,mBAAmB,CAAA,EAAA,CAAA,CAAA;iHAElB,mBAAmB,EAAA,OAAA,EAAA,CAJpB,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAIpD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC;oBAChE,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;iBAC/B,CAAA;;;AClCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAaU,uBAAuB,CAAA;AAqBlC,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,cAAiC,EAAA;AAApF,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AAnBjG,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;KAiB8C;IAd5G,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,UAAU,CAAC,GAAG,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,oBAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;oBAC9B,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/D,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF;IAID,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAC7D,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvH,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACjD,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAEO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC;AAE7C,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAA;YAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;;oHA9DU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;iBAC9B,CAAA;uJAEU,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAMN,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;ACzCvB;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,kBAAkB,CAAA;IAqB7B,WAAoB,CAAA,KAAiB,EAAU,MAAc,EAAA;AAAzC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAnB7D,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;KAiBG;IAdjE,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,UAAU,CAAC,GAAG,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,oBAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;oBAC9B,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/D,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF;IAID,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AACnD,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAClH,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACjD,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAEO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC;AAE7C,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAA;YAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;;+GA9DU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAA;qHAEU,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMN,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,YAAY,CAAA;;;ACxC5B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,eAAe,CAAA;IAe1B,WAAoB,CAAA,MAAc,EAAU,KAAsB,EAAA;AAA9C,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;KAAI;IAXtE,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;AAC9B,gBAAA,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/D,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAIO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC;AAE7C,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAA;YAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;;4GA/BU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,QAAQ;iBACnB,CAAA;qHAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGN,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;ACrCvB;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,mBAAmB,CAAA;AAQ9B,IAAA,WAAA,CAAoB,MAAc,EAAU,OAAmB,EAAU,QAAmB,EAAsB,MAAwB,EAAA;AAAtH,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAAsB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AAJ1I,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAEb,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;KAEgF;IAE9I,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AACA,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,MAAM,CAAC,GAAW,EAAA;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;IAEO,MAAM,CAAC,SAAiB,EAAE,SAAiB,EAAA;AACjD,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACxE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3E,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC9B;AAEO,IAAA,UAAU,CAAC,IAAI,EAAA;QACrB,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC7F;;gHAlDU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,yHAEb,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAFrB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;;;8BASgG,QAAQ;;yBAP9F,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEN,KAAK,EAAA,CAAA;sBADJ,eAAe;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;;ACpCzD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAWU,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoB,EAAqB,EAAA;AAArB,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;KAAI;IAE7C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,SAAS,CAAC,MAAc,EAAE,GAAkB,EAAA;QAC1C,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;;gHAZU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8HCjChC,krEA4DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2B,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FD3Ba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,aAAA,EACZ,iBAAiB,CAAC,IAAI,QAE/B,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAA,krEAAA,EAAA,CAAA;wGAIlC,IAAI,EAAA,CAAA;sBADH,KAAK;;;AElCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAiBU,sBAAsB,CAAA;AAWjC,IAAA,WAAA,CAAmB,KAAsB,EAAU,gBAAkC,EAAU,aAAkC,EAAA;AAA9G,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAAU,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;AAVzH,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;AAK5C,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAGhC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;KAChF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,gBAAgB,EAAE;AAClB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE,CAAC;KAClB;;mHAjCU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,qJCvCnC,qtBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDmBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,qtBAAA,EAAA,CAAA;iKAWrC,YAAY,EAAA,CAAA;sBADX,MAAM;;;AE/CT;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkBU,gBAAgB,CAAA;AAU3B,IAAA,WAAA,CAAoB,KAAsB,EAAU,UAA+B,EAAU,UAAsB,EAAA;AAA/F,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AARnH,QAAA,IAAI,CAAA,IAAA,GAGA,EAAE,CAAC;AAEP,QAAA,IAAM,CAAA,MAAA,GAA0B,EAAE,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;KAE2E;IAEvH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK;aACP,MAAM,CAAC,eAAe,CAAC;AACvB,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC3E,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACjF,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACxG;IAED,cAAc,CAAC,CAAS,EAAE,GAAmB,EAAA;QAC3C,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;IAED,aAAa,CAAC,CAAS,EAAE,GAAkB,EAAA;QACzC,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC;KAClG;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;6GA5CU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,sHCxC7B,6uBAgBA,EAAA,MAAA,EAAA,CAAA,mhFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDwBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,aAAa,EAAE,EAAA,QAAA,EAAA,6uBAAA,EAAA,MAAA,EAAA,CAAA,mhFAAA,CAAA,EAAA,CAAA;yJAI9B,IAAI,EAAA,CAAA;sBADH,KAAK;;;AEzCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,mBAAmB,CAAA;IAI9B,WAAoB,CAAA,EAAqB,EAAU,gBAAkC,EAAA;AAAjE,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;AAAU,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AACnF,QAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;KAC7E;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,SAAS,CAAC,MAAc,EAAE,GAAkB,EAAA;QAC1C,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;;gHAdU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1B,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8HClChC,qlDAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDhBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,IAAA,EAErB,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,aAAA,EACnB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qlDAAA,EAAA,CAAA;yIAIrC,IAAI,EAAA,CAAA;sBADH,KAAK;;;AEnCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAuCU,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAnBzB,kBAAkB;QAClB,uBAAuB;QACvB,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,sBAAsB,qDATsC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,aAYlH,kBAAkB;QAClB,uBAAuB;QACvB,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EArBjB,OAAA,EAAA,CAAA,UAAU,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;2FAqBzG,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;AACrH,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,uBAAuB;wBACvB,mBAAmB;wBACnB,eAAe;wBACf,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,uBAAuB;wBACvB,mBAAmB;wBACnB,eAAe;wBACf,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;AACjB,qBAAA;iBACF,CAAA;;;MCpBY,kCAAkC,CAAA;AAuB7C,IAAA,WAAA,CAAoB,kBAAsC,EAAA;AAAtC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAhBlD,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAExB,QAAA,IAAA,CAAA,OAAO,GAAiB,IAAI,OAAO,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAE,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAE,CAAC;AAEvC,QAAA,IAAM,CAAA,MAAA,GAA8C,IAAI,CAAC;KAUK;AArB9D,IAAA,IAAI,UAAU,GAAA;;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,MAAA,IAAI,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAUD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAI,SAAS,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;KAC7C;IAID,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAA;KACF;IAEK,OAAO,GAAA;;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,YAAA,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAED,UAAU,GAAA;AACR,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE;oBACJ,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;oBAC/C,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC9C,iBAAA;aACF,CAAC;AACF,YAAA,OAAO,WAAW,CAAC;AACpB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,aAAa,CAAC,YAAgC,EAAA;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACnF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,YAAA,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AAClE,SAAC,CAAC,CAAC;KACJ;;+HA5DU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,cAFjC,MAAM,EAAA,CAAA,CAAA;2FAEP,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAH9C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACvCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,2BAA2B,CAAA;AAPxC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;;AAItD,QAAA,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;AAEnB;;AAEG;;AAGH,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C;;;;AAIG;AAEH,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAE,CAAC;AAKxD,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;KAuBjB;IArBC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC5B;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC1D;;wHA/CU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,2UClCxC,0+BA2BA,EAAA,MAAA,EAAA,CAAA,88BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDOa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACE,0BAA0B,EAAA,aAAA,EAGrB,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,0+BAAA,EAAA,MAAA,EAAA,CAAA,88BAAA,CAAA,EAAA,CAAA;8BAOrC,SAAS,EAAA,CAAA;sBADR,KAAK;;;AAQN,QAAA,MAAM,EAAA,CAAA;sBAFL,MAAM;gBAUP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAIP,WAAW,EAAA,CAAA;sBADV,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEX/B,oBAAoB,CAAA;AAoC/B,IAAA,WAAA,CACU,YAAuC,EACvC,qBAAyD,EACzD,MAAwB,EACxB,MAAc,EACd,KAAsB,EACtB,cAA8B,EAC9B,UAAsB,EACvB,kBAA2C,EAAA;AAP1C,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA2B;AACvC,QAAA,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAoC;AACzD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AACxB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACvB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;AA3CpD,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;AACtD,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AACrB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAErB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAG3B,QAAA,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC;QAC5B,IAAA,CAAA,aAAa,GAA6B;AACxC,YAAA;gBACE,EAAE,EAAE,eAAe,CAAC,KAAK;AACzB,gBAAA,GAAG,EAAE,oBAAoB;AACzB,gBAAA,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,aAAA;AACD,YAAA;gBACE,EAAE,EAAE,eAAe,CAAC,OAAO;AAC3B,gBAAA,GAAG,EAAE,sBAAsB;AAC3B,gBAAA,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,aAAA;AACD,YAAA;gBACE,EAAE,EAAE,eAAe,CAAC,SAAS;AAC7B,gBAAA,GAAG,EAAE,wBAAwB;AAC7B,gBAAA,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,aAAA;SACF,CAAC;AAkBA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,8BAA8B,EAAE,IAAI,CAAC,CAAC;KACtF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,WAAW,CAAC,CAAC;AAC7C,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,KAAK,YAAY,aAAa,EAAE;gBAClC,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClF,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;AACxD,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,YAAY,GAAA;;QACV,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AAC7D,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,GAAG,KAAK,CAAC;AACnF,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;YAE/B,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAChF,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,cAAc,CAAC,UAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAE/B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,SAAA;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAK;AACrC,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7E,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B,EAAE,IAAI,CAAC,CAAC;KACV;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC5D,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;AACrC,aAAA;iBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACpF,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACrD,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAA;iBAAM,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC5D,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3C,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,aAAA;YAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACnD,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAC5B,aAAA;iBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACpF,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACnF;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACpD;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACtD;IAED,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;KACxD;AAED,IAAA,eAAe,CAAC,QAAgB,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AACxE,QAAA,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;KACnC;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzD;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;AAC5E,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,aAAa,CAAC,MAAuD,EAAA;AACnE,QAAA,MAAM,cAAc,GAAG,MAAM,KAAK,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC;QAE5G,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAa,UAAA,EAAA,MAAM,CAAG,CAAA,CAAA,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAa,UAAA,EAAA,cAAc,CAAG,CAAA,CAAA,CAAC,CAAC;KACrE;IAED,oBAAoB,GAAA;QAClB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAa,UAAA,EAAA,eAAe,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAa,UAAA,EAAA,eAAe,CAAC,OAAO,CAAG,CAAA,CAAA,CAAC,CAAC;KAC9E;IAED,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE;AAC5D,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;gBACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACxD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;AACxD,aAAA;AACF,SAAA;KACF;IAED,gBAAgB,GAAA;QACd,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACzD,YAAA,MAAM,OAAO,GAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAoB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE/E,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,MAAM,WAAW,GAAiB,eAAe,CAAC,QAAQ,CAAC;AAC3D,gBAAA,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACvG,aAAA;AACF,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,gBAAgB,GAAA;AACd,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC;KAC5C;;iHAlPU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmC,kCAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiCpB,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9E3B,skEAwDA,EAAA,MAAA,EAAA,CAAA,kyEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDXa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,skEAAA,EAAA,MAAA,EAAA,CAAA,kyEAAA,CAAA,EAAA,CAAA;qUAiCnC,kBAAkB,EAAA,CAAA;sBADjB,SAAS;gBAAC,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjD,OAAO,EAAA,CAAA;sBADN,SAAS;gBAAC,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AE9E7C;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,YAAA,EAAA,CAHhB,oBAAoB,EAAE,2BAA2B,CAAA,EAAA,OAAA,EAAA,CADtD,YAAY,EAAApC,IAAA,CAAA,UAAA,EAAAJ,EAAA,CAAA,aAAA,EAAmD,UAAU,CAAA,EAAA,OAAA,EAAA,CAEzE,oBAAoB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAEhD,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJrB,OAAA,EAAA,CAAA,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;2FAIxE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC;AACpF,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AACjE,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;iBAC7D,CAAA;;;ACpCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAmBG,MAAO,yBAA0B,SAAQ,mBAAmB,CAAA;AAGhE,IAAA,WAAA,CAAY,OAAmB,EAAU,EAAqB,EAAU,QAAiB,EAAU,YAA6B,EAAA;AAC9H,QAAA,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AADU,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAAU,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;AAFxH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAW,CAAC;KAI5C;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;AACtF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7B,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;gBAEzC,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,oBAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,oBAAA,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;oBACrB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ;AACV,aAAA,IAAI,CACH,MAAM,CAAM,eAAe,CAAC,WAAW,CAAC,EACxC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAC5D,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,WAAW,GAAA;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;KAClE;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;sHAtDU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uMCzCtC,2uBAwBA,EAAA,MAAA,EAAA,CAAA,qUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDiBa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAGnB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,sFAAsF;qBAC9F,EAAA,QAAA,EAAA,2uBAAA,EAAA,MAAA,EAAA,CAAA,qUAAA,CAAA,EAAA,CAAA;;;AEvCH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,WAA+B,EAAA;AAA/B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;KAAI;AAEvD,IAAA,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAA;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KAChC;IAED,UAAU,CAAC,EAAE,GAAG,EAAE,EAAA;;AAChB,QAAA,MAAM,IAAI,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,0CAAE,UAAU,KAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC;QAC/I,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAA,CAAE,GAAG,EAAE,CAAC;KAC3E;;qHAbU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,mGChCrC,gUAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDyBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,6BAA6B,EAAA,aAAA,EAExB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,gUAAA,EAAA,CAAA;2GAIrC,OAAO,EAAA,CAAA;sBADN,KAAK;;;MEMK,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoB,EAAqB,EAAA;AAArB,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;KAAI;AAE7C,IAAA,SAAS,CAAC,GAAiB,EAAA;QACzB,OAAO,GAAG,CAAC,EAAE,CAAC;KACf;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;;gHAZU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAVpB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iDAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;GAGT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAOU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,CAAA;;;AAGT,EAAA,CAAA,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,iDAAiD;AACzD,qBAAA,EAAA,MAAA,EAAA,CAAA,kRAAA,CAAA,EAAA,CAAA;wGAID,OAAO,EAAA,CAAA;sBADN,KAAK;;;ACxCR;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAiBU,kCAAkC,CAAA;;+HAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,iBAH9B,yBAAyB,EAAE,wBAAwB,EAAE,mBAAmB,CAD7E,EAAA,OAAA,EAAA,CAAA,aAAa,EAAmDK,IAAA,CAAA,UAAA,EAAAJ,EAAA,CAAA,aAAA,EAAA,cAAc,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CAE9F,yBAAyB,EAAE,wBAAwB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEvE,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,EAJnC,OAAA,EAAA,CAAA,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;2FAI7F,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,cAAc,CAAC;AACzG,oBAAA,YAAY,EAAE,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,mBAAmB,CAAC;AACxF,oBAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,mBAAmB,CAAC;iBACpF,CAAA;;;ACtCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAoBU,yBAAyB,CAAA;AAUpC,IAAA,WAAA,CACU,KAAiB,EACjB,eAAgC,EAChC,MAAc,EACd,uBAAmD,EAAA;AAHnD,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACjB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAA4B;AAZrD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;QAK5C,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QACxC,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;KAOrC;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACnF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7B,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;AAE3B,gBAAA,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AACxB,oBAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,oBAAA,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBAEtD,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,YAAY,GAAA;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAElC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7C,QAAA,MAAM,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAEvD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAA,EAAA,EAAK,KAAK,CAAI,EAAA,CAAA,GAAG,EAAE,CAAC,CAAC;AAC/C,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;KAC/B;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC5F,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5F,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;;sHArEU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,kJC1CtC,qjBAYA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FD8Ba,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAGnB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAA,QAAA,EAAA,qjBAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,CAAA;4LAOzC,OAAO,EAAA,CAAA;sBADN,KAAK;;;MEbK,yBAAyB,CAAA;AAMpC,IAAA,WAAA,CAAoB,YAAuC,EAAA;AAAvC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA2B;AAJ3D,QAAA,IAAA,CAAA,eAAe,GAA0C,IAAI,YAAY,EAAE,CAAC;AAE5E,QAAA,IAAO,CAAA,OAAA,GAA8B,EAAE,CAAC;KAEuB;IAE/D,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;KACtD;AAED,IAAA,mBAAmB,CAAC,MAA+B,EAAA;AACjD,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;AAED,IAAA,oBAAoB,CAAC,MAA+B,EAAA;AAClD,QAAA,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;;sHApBU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,+GCjCtC,isCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,wBAAwB,EAAA,aAAA,EAEnB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,isCAAA,EAAA,CAAA;gHAIrC,eAAe,EAAA,CAAA;sBADd,MAAM;;;AElCT;;;;;;;;;;;;;;;;;;;;;;AAsBG;AA+BG,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAWvD,IAAA,WAAA,CACU,YAAuC,EACvC,KAAqB,EAC7B,KAAsB,EACtB,UAA+B,EAC/B,OAAiC,EACzB,kBAAsC,EACtC,MAAc,EACd,kBAAsC,EAC9C,uBAAmD,EAAA;QAEnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAVnD,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA2B;AACvC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAIrB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAdhD,QAAA,IAAc,CAAA,cAAA,GAAG,GAAG,CAAC;QAErB,IAAA,CAAA,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAepB,YAAY,CAAC,MAAM,GAAG;AACpB,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1D,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAChE,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,KAAI;;YAEpC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;AACpG,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;AACpF,YAAA,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACzD,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,kBAAkB;aACpB,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACpE,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5C,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACjC,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,aAAA;AACH,SAAC,CAAC,EAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC5C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;AAEvC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,SAAC,CAAC,EAEF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;AAC7C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;SACzB,CAAC,CACH,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAc,KAAI;;gBAE3C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;gBACpG,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAC5B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;AACnC,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9B,wBAAA,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;AACrD,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,aAAa,CAAC,KAAuB,EAAA;AACnC,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AAEvD,QAAA,MAAM,UAAU,GAAG,CAA4B,yBAAA,EAAA,UAAU,EAAE,CAAC;QAC5D,IAAI,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,UAAU,KAAK,UAAU,EAAE;YAC7B,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAkC,gCAAA,CAAA,CAAC,CAAC;AAClF,SAAA;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;KAC1D;AAEO,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,KAAK,EAAE;YACT,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEnC,YAAA,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChC,YAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,YAAY,CAAC,MAAgB,EAAE,IAAY,EAAA;QACjD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,GAAG,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,MAAM,GAAG,GAAG,CAAC;YACb,MAAM,GAAG,EAAE,CAAC;AACZ,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAA,EAAG,MAAM,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,EAAG,MAAM,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;KAC/F;AAED,IAAA,iBAAiB,CAAC,SAAiB,EAAE,MAAM,GAAG,CAAC,SAAS,CAAC,EAAA;QACvD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;AAE7B,QAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtD,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEnC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC;AAE9D,YAAA,OAAO,KAAK;AACT,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;gBAED,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,aAAC,CAAC;iBACD,IAAI,CAAC,SAAS,CAAC,CAAC;AACpB,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC7C;AAED,IAAA,oBAAoB,CAAC,UAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;KACxB;AAED,IAAA,mBAAmB,CAAC,UAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG;YACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;IAEO,UAAU,GAAA;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;AAEtD,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;AAC1D,SAAA;AAED,QAAA,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACxB;AAED,IAAA,iBAAiB,CAAC,IAAuB,EAAA;AACvC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,iBAAiB,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KAC7D;IAED,eAAe,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,2BAA2B,EAAE,CAAC,CAAC;KACxD;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1D;AAED,IAAA,qBAAqB,CAAC,MAA+B,EAAA;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAE,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAG,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;;mHAnNU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA2C,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAxC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iFCrDnC,sgNA2IA,EAAA,MAAA,EAAA,CAAA,y7DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4C,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5C,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAyC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDtFa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,sgNAAA,EAAA,MAAA,EAAA,CAAA,y7DAAA,CAAA,EAAA,CAAA;;;AElDvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAkBG,MAAO,+BAAgC,SAAQ,aAAa,CAAA;AAShE,IAAA,WAAA,CACU,kBAAsC,EACtC,qBAAyD,EACzD,KAAqB,EACrB,cAA8B,EAC9B,UAAsB,EAC9B,KAAsB,EACtB,UAA+B,EAC/B,OAAiC,EAAA;AAEjC,QAAA,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAT1B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAoC;AACzD,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACrB,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAbhC,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAc,CAAA,cAAA,GAAG,GAAG,CAAC;AAErB,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AACjB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;QAcpC,qBAAqB,CAAC,MAAM,GAAG;AAC7B,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;KACH;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,eAAe,IAAI,EAAE,CAAC;AAEzE,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EACtF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EACvF,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAEpF,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEtB,YAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;AACvC,SAAC,CAAC,EAEF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,SAAC,CAAC,EAEF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACpD,IAAI;AACF,gBAAA,MAAM,EACJ,KAAK,EAAE,EAAE,UAAU,EAAE,EACtB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,IAAI,UAAU,KAAK,GAAG,EAAE;AACtB,oBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5C,iBAAA;AACF,aAAA;YAAC,OAAO,CAAC,EAAE,GAAE;SACf,CAAC,EAEF,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;SACrC,CAAC,CACH,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAc,KAAI;;gBAE3C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;gBACpG,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAExD,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;AAChD,oBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,KAAK,CAAC;AAC7C,oBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;AACrC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5C,oBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvC,wBAAA,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;AACrD,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACzC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,oBAAoB,CAAC,UAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC/C;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,mBAAmB,CAAC,UAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;KACrC;AAED,IAAA,UAAU,CAAC,IAAe,EAAA;QACxB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,UAAU,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KACtD;;4HAxHU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7C,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,kCAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,iFCxC5C,q5HA0FA,EAAA,MAAA,EAAA,CAAA,ixBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDlDa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,q5HAAA,EAAA,MAAA,EAAA,CAAA,ixBAAA,CAAA,EAAA,CAAA;;;AEpChC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqCU,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,YAAA,EAAA,CAHlB,sBAAsB,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAb1H,YAAY,EAAAR,IAAA,CAAA,UAAA,EAAAJ,EAAA,CAAA,aAAA,EAGZ,eAAe;QACf,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,iBAAiB;QACjB,cAAc;QACd,kCAAkC;AAClC,QAAA,oBAAoB,aAGZ,sBAAsB,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAE5G,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAhB/B,YAAY;QACZ,UAAU,CAAC,QAAQ,EAAE;QACrB,aAAa,CAAC,QAAQ,EAAE;QACxB,eAAe;QACf,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,iBAAiB;QACjB,cAAc;QACd,kCAAkC;QAClC,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAKX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU,CAAC,QAAQ,EAAE;wBACrB,aAAa,CAAC,QAAQ,EAAE;wBACxB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,iBAAiB;wBACjB,cAAc;wBACd,kCAAkC;wBAClC,oBAAoB;AACrB,qBAAA;oBACD,YAAY,EAAE,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;oBAC7H,OAAO,EAAE,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;iBACzH,CAAA;;;AC1DD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAoBU,2BAA2B,CAAA;AAWtC,IAAA,WAAA,CAAoB,WAA+B,EAAA;AAA/B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAVzC,QAAA,IAAA,CAAA,MAAM,GAAmC,IAAI,YAAY,EAAE,CAAC;AAI9D,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;QACtD,IAAA,CAAA,cAAc,GAAG;AACvB,YAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE;AACrD,YAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE;SACrD,CAAC;KAEqD;IAEvD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,OAAO,EAAE,CAAC,EAAE,CAAC;YACb,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAwB,KAAI;AAC7F,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;wHA/BU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,yLC1CxC,myBA2BA,EAAA,MAAA,EAAA,CAAA,gWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDea,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;+BACE,uBAAuB,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,kCAAkC,EAAE,EAAA,QAAA,EACzC,iBAAiB,EAAA,QAAA,EAAA,myBAAA,EAAA,MAAA,EAAA,CAAA,gWAAA,CAAA,EAAA,CAAA;2GAGjB,MAAM,EAAA,CAAA;sBAAf,MAAM;;;AE3CT;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA+BU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,YAAA,EAAA,CAFhB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAZxC,UAAU;QACV,eAAe;QACf,eAAe;QACf,WAAW;QACX,mBAAmB;QACnB,aAAa;QACb,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,cAAc,aAEN,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAG1B,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAd7B,UAAU;QACV,eAAe;QACf,eAAe;QACf,WAAW;QACX,mBAAmB;QACnB,aAAa;QACb,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,cAAc,CAAA,EAAA,CAAA,CAAA;2FAKL,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,eAAe;wBACf,eAAe;wBACf,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,cAAc;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,2BAA2B,CAAC;oBACtC,YAAY,EAAE,CAAC,2BAA2B,CAAC;iBAC5C,CAAA;;;ACpDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAiBG,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AAKnD,IAAA,WAAA,CACU,MAAc,EACtB,KAAsB,EACtB,UAA+B,EACvB,UAA6B,EACrC,OAAiC,EACzB,aAA4B,EAC5B,kBAAsC,EAC9C,uBAAmD,EAAA;QAEnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AATnD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAGd,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAE7B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAXhD,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAarC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7F,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAE5F,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,aAAC,CAAC;AACH,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC;KAC9D;AAED,IAAA,QAAQ,CAAC,QAAgC,EAAA;AACvC,QAAA,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;;AAGlC,QAAA,MAAM,UAAU,GAAG,CAAC,IAAc,KAAc,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAqB,KAAK,IAAI,KAAK,OAAO,CAAC,CAAC;AAE/I,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU;iBACZ,OAAO,CAAC,EAAE,CAAC;AACX,iBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA,SAAS,CAAC,CAAC,EAAE,IAAI,EAA0B,KAAI;AAC9C,gBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,iBAAiB,CAAC;gBACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;AACN,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,IAAuB,EAAA;AACvC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,aAAA;AACF,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,iBAAiB,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KAC7D;;+GAhEU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2ECvC/B,gwFAwEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoD,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApD,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDjCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;;;;AEpCV;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAiBG,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAKrD,IAAA,WAAA,CACE,KAAsB,EACtB,UAA+B,EAC/B,OAAiC,EACzB,aAA4B,EAC5B,kBAAsC,EACtC,MAAc,EACtB,uBAAmD,EAAA;QAEnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AALnD,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAVxB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAYrC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAExG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,aAAC,CAAC;AACH,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC;KACjE;AAED,IAAA,iBAAiB,CAAC,IAAuB,EAAA;AACvC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,iBAAiB,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KAC7D;IAEO,mBAAmB,GAAA;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;;iHA5CU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2ECvCjC,svFAwEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA/C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDjCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;;;;AEpCV;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAeG,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAKrD,IAAA,WAAA,CACE,KAAiB,EACjB,UAA+B,EAC/B,OAAiC,EACzB,cAA8B,EAC9B,aAA4B,EAC5B,kBAAsC,EACtC,MAAc,EACtB,uBAAmD,EAAA;QAEnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AANnD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAXxB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;KAarC;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAExF,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7F,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAE5F,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,aAAC,CAAC;AACH,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC;KACjE;AAED,IAAA,OAAO,CAAC,IAAuB,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;KACvD;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;;QAC1B,IAAI,CAAC,OAAO,CAAE,CAAA,EAAA,GAAA,KAAqB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC;KACnD;;iHAzCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2ECrCjC,utFAuEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA/C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDlCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;;;;AElCV;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAgBG,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAMjD,WACU,CAAA,KAAqB,EACrB,UAA6B,EACrC,KAAsB,EACtB,OAAiC,EACjC,UAA+B,EAAA;AAE/B,QAAA,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAN1B,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACrB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AALvC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;AACpC,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;KAUb;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AACvB,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAExB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACtD,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,OAAe,EAAA;AAC1B,QAAA,QAAQ,OAAO;AACb,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,MAAM;AACR,YAAA,KAAK,aAAa;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,MAAM;AACR,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA;AACE,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACtB,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;KACnD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;6GAzDU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,kFCtC7B,siEA4CA,EAAA,MAAA,EAAA,CAAA,umBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDNa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,qBAAqB,EAAA,aAAA,EAGhB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,siEAAA,EAAA,MAAA,EAAA,CAAA,umBAAA,CAAA,EAAA,CAAA;;;AEpCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,aAAa,CAAA;IAGxB,WAAoB,CAAA,SAA2B,EAAU,MAAc,EAAA;AAAnD,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAF9D,QAAA,IAAoB,CAAA,oBAAA,GAAG,iBAAiB,CAAC;KAEyB;IAE3E,QAAQ,GAAA;AACN,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KACxC;;0GARU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,oDAFd,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAED,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;iBACb,CAAA;;;AC9BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAoB,WAAkC,EAAA;AAAlC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;KAAI;AAE1D,IAAA,WAAW,CAAC,CAAyB,EAAA;QACnC,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;KAC3D;IAEO,aAAa,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACvH;;iHATU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAoBU,uBAAuB,CAAA;AAMlC,IAAA,WAAA,CACU,KAAqB,EACrB,KAAsB,EACtB,UAA+B,EAC/B,kBAAsC,EAAA;AAHtC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACrB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AACtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AAC/B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AATxC,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;AAE9D,QAAA,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC;AAC5B,QAAA,IAAoB,CAAA,oBAAA,GAA4B,EAAE,CAAC;AAQjD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;KACjF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM;aACd,IAAI,CACH,QAAQ,CAAC,CAAC,MAAM,KACd,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC5H,CACF;aACA,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAA4B,KAAI;AAChE,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,WAAkB,CAAC,CAAC,CAAC,CAAC;AACvE,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,iCAAiC,EAAE;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE,CAAC;KAClB;;oHA5CU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,8GC1CpC,sfASA,EAAA,MAAA,EAAA,CAAA,sMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDiCa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;+BACE,sBAAsB,EAAA,aAAA,EAGjB,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAA,QAAA,EAAA,sfAAA,EAAA,MAAA,EAAA,CAAA,sMAAA,CAAA,EAAA,CAAA;;;AExCzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAcG,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AAMlD,IAAA,WAAA,CACE,OAAiC,EACjC,UAA+B,EAC/B,KAAsB,EACd,kBAAsC,EAAA;AAE9C,QAAA,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAF1B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAThD,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAGtB,QAAA,IAAO,CAAA,OAAA,GAA4B,EAAE,CAAC;QASpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KAChD;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChH,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;SACrC,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,IAAI,EAAE,CAAC;KACnE;;8GA1BU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,2ECpC9B,2gGAgFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkD,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD5Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;;;;AEjCV;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAqBU,MAAA,cAAc,GAAqB;AAC9C,IAAA;AACE,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,mBAAmB;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;EACD;AAEW,MAAA,qBAAqB,GAAU;AAC1C,IAAA,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,CAAC,yBAAyB,CAAC;AACxC,IAAA,QAAQ,EAAE;AACR,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,CAAC,oBAAoB,CAAC;AACnC,YAAA,SAAS,EAAE,oBAAoB;AAChC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,aAAa;AACzB,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE,gBAAgB;AACtC,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,gBAAgB;AACjC,6BAAA;AACF,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,IAAI,EAAE;AACJ,gCAAA,KAAK,EAAE,uCAAuC;AAC9C,gCAAA,cAAc,EAAE,gBAAgB;AACjC,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,gBAAgB;AACjC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,gBAAgB;AACjC,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,gBAAgB;AACjC,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,0BAA0B;AAChC,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,oBAAoB,EAAE,gBAAgB;AACvC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,gBAAgB;AACjC,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,gBAAgB;AACjC,qBAAA;AACF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,2BAA2B;AACjC,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,gBAAgB;AACjC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,gBAAgB;AACjC,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,kBAAkB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8CAA8C;AACrD,wBAAA,oBAAoB,EAAE,WAAW;AAClC,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8CAA8C;AACrD,wBAAA,oBAAoB,EAAE,iBAAiB;AACxC,qBAAA;AACF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,WAAW;AAC5B,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,WAAW;AAC5B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,WAAW;AAC5B,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,WAAW;AAC5B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,UAAU,EAAE,WAAW;AACxB,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,SAAS,EAAE,0BAA0B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oDAAoD;AAC3D,wBAAA,oBAAoB,EAAE,oBAAoB;AAC3C,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,8BAA8B;AACpC,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oDAAoD;AAC3D,wBAAA,oBAAoB,EAAE,iBAAiB;AACxC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,WAAW;AAC5B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,WAAW;AAC5B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE;AACJ,gBAAA,oBAAoB,EAAE,WAAW;AAClC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,kBAAkB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,oBAAoB,EAAE,WAAW;AAClC,qBAAA;;;AAGF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,WAAW;AAC5B,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,WAAW;AAC5B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,WAAW;AAC5B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE;AACJ,gBAAA,oBAAoB,EAAE,cAAc;AACrC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,oBAAoB;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AACjC,qBAAA;;;AAGF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,cAAc;AAC/B,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,cAAc;AAC/B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,cAAc;AAC/B,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,oBAAoB,EAAE,cAAc;AACrC,qBAAA;AACD,oBAAA,SAAS,EAAE,oBAAoB;;;AAGhC,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACzB,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,QAAQ;AACzB,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,QAAQ;AACzB,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,gBAAgB,EAAE,CAAC,kBAAkB,CAAC;YACtC,WAAW,EAAE,CAAC,kBAAkB,CAAC;AAClC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,iBAAiB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,oBAAoB,EAAE,UAAU;AACjC,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,sBAAsB;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AACjC,qBAAA;AACF,iBAAA;;AAED,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,YAAY,EAAE,MAAM,OAAO,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACzB,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,QAAQ;AACzB,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,QAAQ;AACzB,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE,+BAA+B;AAC1C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AACjC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,IAAI,EAAE;AACJ,gCAAA,cAAc,EAAE,QAAQ;AACzB,6BAAA;AACD,4BAAA,YAAY,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,YAAY,EAAE,MAAM,OAAO,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC7F,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,qBAAqB;AACjC,SAAA;AACF,KAAA;IACD,gBAAgB,EAAE,CAAC,SAAS,CAAC;;;ACtkB/B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAaU,0BAA0B,CAAA;AAKrC,IAAA,WAAA,CAAoB,KAAsB,EAAA;AAAtB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;AAFlC,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;QAG5D,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACtH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;uHAZU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+DCnCvC,wHAC4B,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDkCf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,yBAAyB,EAAA,aAAA,EAEpB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,wHAAA,EAAA,CAAA;;;AEjCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA6BU,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAHb,YAAA,EAAA,CAAA,iBAAiB,CAV9B,EAAA,OAAA,EAAA,CAAA,YAAY,qCAGZ,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,oBAAoB,aAGZ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAb1B,YAAY;QACZ,UAAU,CAAC,QAAQ,EAAE;QACrB,aAAa,CAAC,QAAQ,EAAE;QACxB,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU,CAAC,QAAQ,EAAE;wBACrB,aAAa,CAAC,QAAQ,EAAE;wBACxB,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,iBAAiB;wBACjB,gBAAgB;wBAChB,oBAAoB;AACrB,qBAAA;oBACD,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;iBAC7B,CAAA;;;AClDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MA2BU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAHnB,YAAA,EAAA,CAAA,uBAAuB,CATpC,EAAA,OAAA,EAAA,CAAA,YAAY,mBAEZ,gBAAgB;QAChB,eAAe;AACf,QAAA,gBAAgB,wBAEhB,mBAAmB;QACnB,aAAa,aAGL,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAZhC,YAAY;QACZ,UAAU,CAAC,QAAQ,EAAE;QACrB,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,oBAAoB,CAAC,QAAQ,EAAE;QAC/B,mBAAmB;QACnB,aAAa,CAAA,EAAA,CAAA,CAAA;2FAKJ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU,CAAC,QAAQ,EAAE;wBACrB,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,oBAAoB,CAAC,QAAQ,EAAE;wBAC/B,mBAAmB;wBACnB,aAAa;AACd,qBAAA;oBACD,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;iBACnC,CAAA;;;AChDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAmGH,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;MA4DhB,6BAA6B,CAAA;IACxC,WAAmB,CAAA,UAA4B,EAAS,qBAA6C,EAAA;AAAlF,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkB;AAAS,QAAA,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAwB;QACnG,UAAU,CAAC,aAAa,CAAC;AACvB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,gCAAgC,EAAE,yBAAyB;AAC5D,SAAA,CAAC,CAAC;QAEH,UAAU,CAAC,aAAa,CAAC;AACvB,YAAA,iBAAiB,EAAE,oBAAoB;AACvC,YAAA,oBAAoB,EAAE,gBAAgB;AACtC,YAAA,mBAAmB,EAAE,0BAA0B;AAC/C,YAAA,8BAA8B,EAAE,oBAAoB;AACpD,YAAA,sCAAsC,EAAE,2BAA2B;AACnE,YAAA,8BAA8B,EAAE,oBAAoB;AACpD,YAAA,8BAA8B,EAAE,oBAAoB;AACpD,YAAA,wBAAwB,EAAE,gBAAgB;AAC1C,YAAA,8BAA8B,EAAE,yBAAyB;AACzD,YAAA,4BAA4B,EAAE,uBAAuB;AACrD,YAAA,mCAAmC,EAAE,8BAA8B;AACnE,YAAA,+BAA+B,EAAE,gCAAgC;AACjE,YAAA,sBAAsB,EAAE,4BAA4B;AACpD,YAAA,4BAA4B,EAAE,8BAA8B;AAC5D,YAAA,kCAAkC,EAAE,qBAAqB;AACzD,YAAA,kBAAkB,EAAE,yBAAyB;AAC7C,YAAA,yBAAyB,EAAE,0BAA0B;AACrD,YAAA,yBAAyB,EAAE,0BAA0B;AACrD,YAAA,2BAA2B,EAAE,4BAA4B;AACzD,YAAA,0BAA0B,EAAE,2BAA2B;AACvD,YAAA,sBAAsB,EAAE,qBAAqB;AAC7C,YAAA,kBAAkB,EAAE,mBAAmB;AACvC,YAAA,+BAA+B,EAAE,0BAA0B;AAC3D,YAAA,sBAAsB,EAAE,iBAAiB;AACzC,YAAA,oBAAoB,EAAEsD,yBAAuB;AAC7C,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,yBAAyB,EAAE,4BAA4B;AACxD,SAAA,CAAC,CAAC;QAEH,UAAU,CAAC,aAAa,CAAC;YACvB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;YAC9C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;YAEtD,yBAAyB,EAAE,KAAK,CAAC,kBAAkB;YACnD,8BAA8B,EAAE,KAAK,CAAC,aAAa;YACnD,4BAA4B,EAAE,KAAK,CAAC,WAAW;YAC/C,2BAA2B,EAAE,KAAK,CAAC,oBAAoB;YACvD,wBAAwB,EAAE,KAAK,CAAC,YAAY;YAC5C,0BAA0B,EAAE,KAAK,CAAC,eAAe;YACjD,8BAA8B,EAAE,KAAK,CAAC,cAAc;YACpD,iCAAiC,EAAE,KAAK,CAAC,iBAAiB;YAC1D,+BAA+B,EAAE,KAAK,CAAC,qBAAqB;YAC5D,oBAAoB,EAAE,KAAK,CAAC,eAAe;YAC3C,6BAA6B,EAAE,KAAK,CAAC,YAAY;YACjD,6BAA6B,EAAE,KAAK,CAAC,QAAQ;YAC7C,6BAA6B,EAAE,KAAK,CAAC,cAAc;YACnD,gCAAgC,EAAE,KAAK,CAAC,oBAAoB;YAC5D,qCAAqC,EAAE,KAAK,CAAC,gBAAgB;YAC7D,uBAAuB,EAAE,KAAK,CAAC,kBAAkB;YACjD,gCAAgC,EAAE,KAAK,CAAC,gBAAgB;YACxD,8BAA8B,EAAE,KAAK,CAAC,cAAc;YACpD,gCAAgC,EAAE,KAAK,CAAC,gBAAgB;YACxD,sBAAsB,EAAE,KAAK,CAAC,iBAAiB;YAC/C,gCAAgC,EAAE,KAAK,CAAC,uBAAuB;YAE/D,iCAAiC,EAAE,KAAK,CAAC,eAAe;YACxD,iCAAiC,EAAE,KAAK,CAAC,SAAS;YAClD,2BAA2B,EAAE,KAAK,CAAC,UAAU;YAC7C,8BAA8B,EAAE,KAAK,CAAC,aAAa;YACnD,4BAA4B,EAAE,KAAK,CAAC,WAAW;YAC/C,+BAA+B,EAAE,KAAK,CAAC,cAAc;YACrD,gCAAgC,EAAE,KAAK,CAAC,eAAe;YACvD,+BAA+B,EAAE,KAAK,CAAC,cAAc;YACrD,8BAA8B,EAAE,KAAK,CAAC,aAAa;YACnD,iCAAiC,EAAE,KAAK,CAAC,gBAAgB;YACzD,4BAA4B,EAAE,KAAK,CAAC,WAAW;YAC/C,+BAA+B,EAAE,KAAK,CAAC,cAAc;YACrD,8BAA8B,EAAE,KAAK,CAAC,aAAa;YACnD,iCAAiC,EAAE,KAAK,CAAC,gBAAgB;YACzD,gCAAgC,EAAE,KAAK,CAAC,eAAe;YACvD,mCAAmC,EAAE,KAAK,CAAC,kBAAkB;YAC7D,0BAA0B,EAAE,KAAK,CAAC,SAAS;YAC3C,gCAAgC,EAAE,KAAK,CAAC,eAAe;YACvD,mCAAmC,EAAE,KAAK,CAAC,kBAAkB;YAC7D,mCAAmC,EAAE,KAAK,CAAC,kBAAkB;YAE7D,gCAAgC,EAAE,KAAK,CAAC,oBAAoB;YAC5D,cAAc,EAAE,KAAK,CAAC,OAAO;YAC7B,mBAAmB,EAAE,KAAK,CAAC,aAAa;YACxC,6BAA6B,EAAE,KAAK,CAAC,uBAAuB;YAC5D,uBAAuB,EAAE,KAAK,CAAC,iBAAiB;YAChD,sBAAsB,EAAE,KAAK,CAAC,gBAAgB;YAC9C,uBAAuB,EAAE,KAAK,CAAC,iBAAiB;AACjD,SAAA,CAAC,CAAC;KACJ;;0HA3GU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlD,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,iBA1BtC,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,0BAA0B;QAC1B,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,iCAAiC;QACjC,aAAa;AACb,QAAA,0BAA0B,aAvC1B,YAAY;QACZ,WAAW;QACX,mBAAmB,qGAMnB,YAAY;QACZ,cAAc;QACd,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,kCAAkC;QAClC,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,uBAAuB;QACvB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AA6BX,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,EAf7B,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;AAC9D,QAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AAC/D,QAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAC3E,QAAA;AACE,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACF,SAAA;AACD,QAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE;KACjD,EAAA,OAAA,EAAA,CAtDC,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,aAAa,CAAC,OAAO,EAAE;AACvB,QAAA,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC,UAAU,CAAC,QAAQ,EAAE;QACrB,gBAAgB,CAAC,QAAQ,EAAE;QAC3B,oBAAoB,CAAC,QAAQ,EAAE;QAC/B,YAAY;QACZ,cAAc;QACd,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,kCAAkC;QAClC,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,uBAAuB;QACvB,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FA6BX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBA1DzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,aAAa,CAAC,OAAO,EAAE;AACvB,wBAAA,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;wBACrC,UAAU,CAAC,QAAQ,EAAE;wBACrB,gBAAgB,CAAC,QAAQ,EAAE;wBAC3B,oBAAoB,CAAC,QAAQ,EAAE;wBAC/B,YAAY;wBACZ,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,mBAAmB;wBACnB,kCAAkC;wBAClC,oBAAoB;wBACpB,sBAAsB;wBACtB,oBAAoB;wBACpB,YAAY;wBACZ,iBAAiB;wBACjB,iBAAiB;wBACjB,uBAAuB;wBACvB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,0BAA0B;wBAC1B,kBAAkB;wBAClB,oBAAoB;wBACpB,oBAAoB;wBACpB,iCAAiC;wBACjC,aAAa;wBACb,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;AAC9D,wBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AAC/D,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAC3E,wBAAA;AACE,4BAAA,OAAO,EAAE,oBAAoB;AAC7B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,KAAK;AACX,gCAAA,MAAM,EAAE,QAAQ;AACjB,6BAAA;AACF,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE;AACjD,qBAAA;iBACF,CAAA;;;ACnMD;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;AAEG;;;;"}
1
+ {"version":3,"file":"alfresco-aca-content.mjs","sources":["../../../../projects/aca-content/src/lib/services/node-actions.service.ts","../../../../projects/aca-content/src/lib/directives/document-list.directive.ts","../../../../projects/aca-content/src/lib/components/files/files.component.ts","../../../../projects/aca-content/src/lib/components/files/files.component.html","../../../../projects/aca-content/src/lib/components/libraries/libraries.component.ts","../../../../projects/aca-content/src/lib/components/libraries/libraries.component.html","../../../../projects/aca-content/src/lib/components/favorite-libraries/favorite-libraries.component.ts","../../../../projects/aca-content/src/lib/components/favorite-libraries/favorite-libraries.component.html","../../../../projects/aca-content/src/lib/store/initial-state.ts","../../../../projects/aca-content/src/lib/store/reducers/app.reducer.ts","../../../../projects/aca-content/src/lib/store/effects/app.effects.ts","../../../../projects/aca-content/src/lib/services/content-url.service.ts","../../../../projects/aca-content/src/lib/store/effects/download.effects.ts","../../../../projects/aca-content/src/lib/services/content-management.service.ts","../../../../projects/aca-content/src/lib/store/effects/favorite.effects.ts","../../../../projects/aca-content/src/lib/store/effects/node.effects.ts","../../../../projects/aca-content/src/lib/store/effects/viewer.effects.ts","../../../../projects/aca-content/src/lib/components/search/search-navigation.service.ts","../../../../projects/aca-content/src/lib/store/effects/search.effects.ts","../../../../projects/aca-content/src/lib/store/effects/library.effects.ts","../../../../projects/aca-content/src/lib/store/effects/upload.effects.ts","../../../../projects/aca-content/src/lib/dialogs/node-template/create-from-template.dialog.ts","../../../../projects/aca-content/src/lib/dialogs/node-template/create-from-template.dialog.html","../../../../projects/aca-content/src/lib/services/node-template.service.ts","../../../../projects/aca-content/src/lib/store/effects/template.effects.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-overlay.ts","../../../../projects/aca-content/src/lib/components/context-menu/direction.token.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-item.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-item.component.html","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-outside-event.directive.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.component.html","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.service.ts","../../../../projects/aca-content/src/lib/store/effects/contextmenu.effects.ts","../../../../projects/aca-content/src/lib/store/effects.ts","../../../../projects/aca-content/src/lib/store/app-store.module.ts","../../../../projects/aca-content/src/lib/material.module.ts","../../../../projects/aca-content/src/lib/services/content-service-extension.service.ts","../../../../projects/aca-content/src/lib/extensions/core.extensions.module.ts","../../../../projects/aca-content/src/lib/components/info-drawer/comments-tab/comments-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/metadata-tab/metadata-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.html","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/versions-tab/versions-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/info.drawer.module.ts","../../../../projects/aca-content/src/lib/directives/directives.module.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-favorite/toggle-favorite.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/view-node/view-node.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toolbar.module.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/expansion-panel.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/menu-panel.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/action.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/active-link.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/expand-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/expand-menu.component.html","../../../../projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.html","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.component.html","../../../../projects/aca-content/src/lib/components/sidenav/components/button-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/button-menu.component.html","../../../../projects/aca-content/src/lib/components/sidenav/user-menu/user-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/user-menu/user-menu.component.html","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.module.ts","../../../../projects/aca-content/src/lib/components/common/location-link/location-link.component.ts","../../../../projects/aca-content/src/lib/components/common/toggle-shared/toggle-shared.component.ts","../../../../projects/aca-content/src/lib/components/common/toggle-shared/toggle-shared.component.html","../../../../projects/aca-content/src/lib/components/common/language-picker/language-picker.component.ts","../../../../projects/aca-content/src/lib/components/common/logout/logout.component.ts","../../../../projects/aca-content/src/lib/components/common/user-info/user-info.component.ts","../../../../projects/aca-content/src/lib/components/common/user-info/user-info.component.html","../../../../projects/aca-content/src/lib/components/common/common.module.ts","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-query-builder.service.ts","../../../../projects/aca-content/src/lib/components/search/search-input-control/search-input-control.component.ts","../../../../projects/aca-content/src/lib/components/search/search-input-control/search-input-control.component.html","../../../../projects/aca-content/src/lib/components/search/search-input/search-input.component.ts","../../../../projects/aca-content/src/lib/components/search/search-input/search-input.component.html","../../../../projects/aca-content/src/lib/components/search/search-input.module.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/name-column/name-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/name-column/name-column.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/tags-column/tags-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/document-list-custom-components.module.ts","../../../../projects/aca-content/src/lib/components/search/search-results-row/search-results-row.component.ts","../../../../projects/aca-content/src/lib/components/search/search-results-row/search-results-row.component.html","../../../../projects/aca-content/src/lib/components/search/search-action-menu/search-action-menu.component.ts","../../../../projects/aca-content/src/lib/components/search/search-action-menu/search-action-menu.component.html","../../../../projects/aca-content/src/lib/components/search/search-results/search-results.component.ts","../../../../projects/aca-content/src/lib/components/search/search-results/search-results.component.html","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-results.component.ts","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-results.component.html","../../../../projects/aca-content/src/lib/components/search/search-results.module.ts","../../../../projects/aca-content/src/lib/components/favorites/favorites.component.ts","../../../../projects/aca-content/src/lib/components/favorites/favorites.component.html","../../../../projects/aca-content/src/lib/components/recent-files/recent-files.component.ts","../../../../projects/aca-content/src/lib/components/recent-files/recent-files.component.html","../../../../projects/aca-content/src/lib/components/shared-files/shared-files.component.ts","../../../../projects/aca-content/src/lib/components/shared-files/shared-files.component.html","../../../../projects/aca-content/src/lib/components/details/details.component.ts","../../../../projects/aca-content/src/lib/components/details/details.component.html","../../../../projects/aca-content/src/lib/components/home/home.component.ts","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.component.ts","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.component.html","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.guard.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.component.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.component.html","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.component.ts","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.component.html","../../../../projects/aca-content/src/lib/aca-content.routes.ts","../../../../projects/aca-content/src/lib/components/upload-files-dialog/upload-files-dialog.component.ts","../../../../projects/aca-content/src/lib/components/upload-files-dialog/upload-files-dialog.component.html","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.module.ts","../../../../projects/aca-content/src/lib/aca-content.module.ts","../../../../projects/aca-content/src/public-api.ts","../../../../projects/aca-content/src/alfresco-aca-content.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, Subject, of, zip, from } from 'rxjs';\nimport { AlfrescoApiService, TranslationService, ThumbnailService } from '@alfresco/adf-core';\nimport {\n DocumentListService,\n ContentNodeSelectorComponent,\n ContentNodeSelectorComponentData,\n ContentNodeDialogService,\n ShareDataRow,\n NodeAction,\n ContentService\n} from '@alfresco/adf-content-services';\nimport {\n MinimalNodeEntity,\n MinimalNodeEntryEntity,\n SitePaging,\n NodeChildAssociationPaging,\n NodeChildAssociationEntry,\n NodesApi\n} from '@alfresco/js-api';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\n\ntype BatchOperationType = Extract<NodeAction, NodeAction.COPY | NodeAction.MOVE>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodeActionsService {\n contentCopied: Subject<MinimalNodeEntity[]> = new Subject<MinimalNodeEntity[]>();\n contentMoved: Subject<any> = new Subject<any>();\n moveDeletedEntries: any[] = [];\n isSitesDestinationAvailable = false;\n\n _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n return this._nodesApi;\n }\n\n constructor(\n private contentService: ContentService,\n private contentApi: ContentApiService,\n private dialog: MatDialog,\n private documentListService: DocumentListService,\n private apiService: AlfrescoApiService,\n private translation: TranslationService,\n private thumbnailService: ThumbnailService\n ) {}\n\n /**\n * Copy node list\n *\n * @param contentEntities nodes to copy\n * @param permission permission which is needed to apply the action\n * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n */\n copyNodes(contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n return this.doBatchOperation(NodeAction.COPY, contentEntities, permission, focusedElementOnCloseSelector);\n }\n\n /**\n * Move node list\n *\n * @param contentEntities nodes to move\n * @param permission permission which is needed to apply the action\n * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n */\n moveNodes(contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n return this.doBatchOperation(NodeAction.MOVE, contentEntities, permission, focusedElementOnCloseSelector);\n }\n\n /**\n * General method for performing the given operation (copy|move) to multiple nodes\n *\n * @param action the action to perform (copy|move)\n * @param contentEntities the contentEntities which have to have the action performed on\n * @param permission permission which is needed to apply the action\n * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n */\n doBatchOperation(action: BatchOperationType, contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n const observable: Subject<string> = new Subject<string>();\n\n if (!this.isEntryEntitiesArray(contentEntities)) {\n observable.error(new Error(JSON.stringify({ error: { statusCode: 400 } })));\n } else if (this.checkPermission(action, contentEntities, permission)) {\n const destinationSelection = this.getContentNodeSelection(action, contentEntities, focusedElementOnCloseSelector);\n destinationSelection.subscribe((selections: MinimalNodeEntryEntity[]) => {\n const contentEntry = contentEntities[0].entry;\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n const type = contentEntry.isFolder ? 'folder' : 'content';\n const batch: any[] = [];\n\n // consider only first item in the selection\n const selection = selections[0];\n let action$: Observable<any>;\n\n if (action === NodeAction.MOVE && contentEntities.length === 1 && type === 'content') {\n action$ = this.documentListService.moveNode(contentEntryId, selection.id);\n } else {\n contentEntities.forEach((node) => {\n // batch.push(this.copyNodeAction(node.entry, selection.id));\n batch.push(this[`${action.toLowerCase()}NodeAction`](node.entry, selection.id));\n });\n action$ = zip(...batch);\n }\n\n action$.subscribe((newContent) => {\n observable.next(`OPERATION.SUCCESS.${type.toUpperCase()}.${action.toUpperCase()}`);\n\n const processedData = this.processResponse(newContent);\n if (action === NodeAction.COPY) {\n this.contentCopied.next(processedData.succeeded);\n } else if (action === NodeAction.MOVE) {\n this.contentMoved.next(processedData);\n }\n }, observable.error.bind(observable));\n });\n } else {\n observable.error(new Error(JSON.stringify({ error: { statusCode: 403 } })));\n }\n\n return observable;\n }\n\n isEntryEntitiesArray(contentEntities: any[]): boolean {\n if (contentEntities && contentEntities.length) {\n const nonEntryNode = contentEntities.find((node) => !node || !node.entry || !(node.entry.nodeId || node.entry.id));\n return !nonEntryNode;\n }\n return false;\n }\n\n checkPermission(action: BatchOperationType, contentEntities: any[], permission?: string) {\n const notAllowedNode = contentEntities.find((node) => !this.isActionAllowed(action, node.entry, permission));\n return !notAllowedNode;\n }\n\n getEntryParentId(nodeEntry: MinimalNodeEntryEntity) {\n let entryParentId = '';\n\n if (nodeEntry.parentId) {\n entryParentId = nodeEntry.parentId;\n } else if (nodeEntry.path && nodeEntry.path.elements && nodeEntry.path.elements.length) {\n entryParentId = nodeEntry.path.elements[nodeEntry.path.elements.length - 1].id;\n }\n\n return entryParentId;\n }\n\n getContentNodeSelection(\n action: NodeAction,\n contentEntities: MinimalNodeEntity[],\n focusedElementOnCloseSelector?: string\n ): Subject<MinimalNodeEntryEntity[]> {\n const currentParentFolderId = this.getEntryParentId(contentEntities[0].entry);\n\n const customDropdown = new SitePaging({\n list: {\n entries: [\n {\n entry: {\n guid: '-my-',\n title: this.translation.instant('APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL')\n }\n },\n {\n entry: {\n guid: '-mysites-',\n title: this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.SIDENAV_LINK.LABEL')\n }\n }\n ]\n }\n });\n\n const title = this.getTitleTranslation(action, contentEntities);\n\n this.isSitesDestinationAvailable = false;\n const data: ContentNodeSelectorComponentData = {\n selectionMode: 'single',\n title,\n currentFolderId: currentParentFolderId,\n actionName: action,\n dropdownHideMyFiles: true,\n dropdownSiteList: customDropdown,\n rowFilter: this.rowFilter.bind(this),\n imageResolver: this.imageResolver.bind(this),\n isSelectionValid: this.canCopyMoveInsideIt.bind(this),\n breadcrumbTransform: this.customizeBreadcrumb.bind(this),\n select: new Subject<MinimalNodeEntryEntity[]>(),\n excludeSiteContent: ContentNodeDialogService.nonDocumentSiteContent\n };\n\n this.dialog\n .open(ContentNodeSelectorComponent, {\n data,\n panelClass: 'adf-content-node-selector-dialog',\n width: '630px',\n role: 'dialog'\n })\n .afterClosed()\n .subscribe(() => this.focusAfterClose(focusedElementOnCloseSelector));\n\n data.select.subscribe({\n complete: this.close.bind(this)\n });\n\n return data.select;\n }\n\n getTitleTranslation(action: string, nodes: MinimalNodeEntity[] = []): string {\n let keyPrefix = 'ITEMS';\n let name = '';\n\n if (nodes.length === 1 && nodes[0].entry.name) {\n name = nodes[0].entry.name;\n keyPrefix = 'ITEM';\n }\n\n const number = nodes.length;\n return this.translation.instant(`NODE_SELECTOR.${action.toUpperCase()}_${keyPrefix}`, { name, number });\n }\n\n private canCopyMoveInsideIt(entry: MinimalNodeEntryEntity): boolean {\n return this.hasEntityCreatePermission(entry) && !this.isSite(entry);\n }\n\n private hasEntityCreatePermission(entry: MinimalNodeEntryEntity): boolean {\n return this.contentService.hasAllowableOperations(entry, 'create');\n }\n\n private isSite(entry) {\n return !!entry.guid || entry.nodeType === 'st:site' || entry.nodeType === 'st:sites';\n }\n\n close() {\n this.dialog.closeAll();\n }\n\n // todo: review this approach once 5.2.3 is out\n private customizeBreadcrumb(node: MinimalNodeEntryEntity) {\n if (node && node.path && node.path.elements) {\n const elements = node.path.elements;\n\n if (elements.length > 1) {\n if (elements[1].name === 'User Homes') {\n elements.splice(0, 2);\n\n // make sure first item is 'Personal Files'\n if (elements[0]) {\n elements[0].name = this.translation.instant('APP.BROWSE.PERSONAL.TITLE');\n elements[0].id = '-my-';\n } else {\n node.name = this.translation.instant('APP.BROWSE.PERSONAL.TITLE');\n }\n } else if (elements[1].name === 'Sites') {\n this.normalizeSitePath(node);\n }\n } else if (elements.length === 1) {\n if (node.name === 'Sites') {\n node.name = this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE');\n elements.splice(0, 1);\n }\n }\n } else if (node === null && this.isSitesDestinationAvailable) {\n node = {\n name: this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE'),\n path: { elements: [] }\n } as any;\n }\n\n return node;\n }\n\n // todo: review this approach once 5.2.3 is out\n private normalizeSitePath(node: MinimalNodeEntryEntity) {\n const elements = node.path.elements;\n\n // remove 'Company Home'\n elements.splice(0, 1);\n\n // replace first item with 'File Libraries'\n elements[0].name = this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE');\n elements[0].id = '-mysites-';\n\n if (this.isSiteContainer(node)) {\n // rename 'documentLibrary' entry to the target site display name\n // clicking on the breadcrumb entry loads the site content\n node.name = elements[1].name;\n\n // remove the site entry\n elements.splice(1, 1);\n } else {\n // remove 'documentLibrary' in the middle of the path\n const docLib = elements.findIndex((el) => el.name === 'documentLibrary');\n if (docLib > -1) {\n elements.splice(docLib, 1);\n }\n }\n }\n\n isSiteContainer(node: MinimalNodeEntryEntity): boolean {\n if (node && node.aspectNames && node.aspectNames.length > 0) {\n return node.aspectNames.indexOf('st:siteContainer') >= 0;\n }\n return false;\n }\n\n copyNodeAction(nodeEntry: any, selectionId: string): Observable<any> {\n if (nodeEntry.isFolder) {\n return this.copyFolderAction(nodeEntry, selectionId);\n } else {\n // any other type is treated as 'content'\n return this.copyContentAction(nodeEntry, selectionId);\n }\n }\n\n copyContentAction(contentEntry: any, selectionId: string, oldName?: string): Observable<any> {\n const _oldName = oldName || contentEntry.name;\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n\n // use local method until new name parameter is added on ADF copyNode\n return this.copyNode(contentEntryId, selectionId, _oldName).pipe(\n catchError((err) => {\n let errStatusCode;\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n errStatusCode = statusCode;\n } catch (e) {\n //\n }\n\n if (errStatusCode && errStatusCode === 409) {\n return this.copyContentAction(contentEntry, selectionId, this.getNewNameFrom(_oldName, contentEntry.name));\n } else {\n // do not throw error, to be able to show message in case of partial copy of files\n return of(err || 'Server error');\n }\n })\n );\n }\n\n copyFolderAction(contentEntry: any, selectionId: string): Observable<any> {\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n let $destinationFolder: Observable<any>;\n let $childrenToCopy: Observable<any>;\n let newDestinationFolder;\n\n return this.copyNode(contentEntryId, selectionId, contentEntry.name).pipe(\n catchError((err) => {\n let errStatusCode;\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n errStatusCode = statusCode;\n } catch {}\n\n if (errStatusCode && errStatusCode === 409) {\n $destinationFolder = this.getChildByName(selectionId, contentEntry.name);\n $childrenToCopy = this.getNodeChildren(contentEntryId);\n\n return $destinationFolder.pipe(\n mergeMap((destination) => {\n newDestinationFolder = destination;\n return $childrenToCopy;\n }),\n mergeMap((nodesToCopy) => {\n const batch = [];\n nodesToCopy.list.entries.forEach((node) => {\n if (node.entry.isFolder) {\n batch.push(this.copyFolderAction(node.entry, newDestinationFolder.entry.id));\n } else {\n batch.push(this.copyContentAction(node.entry, newDestinationFolder.entry.id));\n }\n });\n\n if (!batch.length) {\n return of({});\n }\n return zip(...batch);\n })\n );\n } else {\n // do not throw error, to be able to show message in case of partial copy of files\n return of(err || 'Server error');\n }\n })\n );\n }\n\n moveNodeAction(nodeEntry, selectionId: string): Observable<any> {\n this.moveDeletedEntries = [];\n\n if (nodeEntry.isFolder) {\n const initialParentId = nodeEntry.parentId;\n\n return this.moveFolderAction(nodeEntry, selectionId).pipe(\n mergeMap((newContent) => {\n // take no extra action, if folder is moved to the same location\n if (initialParentId === selectionId) {\n return of(newContent);\n }\n\n const flattenResponse = this.flatten(newContent);\n const processedData = this.processResponse(flattenResponse);\n\n // else, check if moving this nodeEntry succeeded for ALL of its nodes\n if (processedData.failed.length === 0) {\n // check if folder still exists on location\n return this.getChildByName(initialParentId, nodeEntry.name).pipe(\n mergeMap((folderOnInitialLocation) => {\n if (folderOnInitialLocation) {\n // Check if there's nodeId for Shared Files\n const nodeEntryId = nodeEntry.nodeId || nodeEntry.id;\n // delete it from location\n return this.contentApi.deleteNode(nodeEntryId).pipe(\n mergeMap(() => {\n this.moveDeletedEntries.push(nodeEntry);\n return of(newContent);\n })\n );\n }\n return of(newContent);\n })\n );\n }\n return of(newContent);\n })\n );\n } else {\n // any other type is treated as 'content'\n return this.moveContentAction(nodeEntry, selectionId);\n }\n }\n\n moveFolderAction(contentEntry, selectionId: string): Observable<any> {\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n const initialParentId = this.getEntryParentId(contentEntry);\n let $destinationFolder: Observable<any>;\n let $childrenToMove: Observable<any>;\n let newDestinationFolder;\n\n return this.documentListService.moveNode(contentEntryId, selectionId).pipe(\n map((itemMoved) => ({ itemMoved, initialParentId })),\n catchError((err) => {\n let errStatusCode;\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n errStatusCode = statusCode;\n } catch (e) {\n //\n }\n\n if (errStatusCode && errStatusCode === 409) {\n $destinationFolder = this.getChildByName(selectionId, contentEntry.name);\n $childrenToMove = this.getNodeChildren(contentEntryId);\n\n return $destinationFolder.pipe(\n mergeMap((destination) => {\n newDestinationFolder = destination;\n return $childrenToMove;\n }),\n mergeMap((childrenToMove) => {\n const batch: any[] = [];\n childrenToMove.list.entries.forEach((node) => {\n if (node.entry.isFolder) {\n batch.push(this.moveFolderAction(node.entry, newDestinationFolder.entry.id));\n } else {\n batch.push(this.moveContentAction(node.entry, newDestinationFolder.entry.id));\n }\n });\n\n if (!batch.length) {\n return of(batch);\n }\n return zip(...batch);\n })\n );\n } else {\n // do not throw error, to be able to show message in case of partial move of files\n return of(err);\n }\n })\n );\n }\n\n moveContentAction(contentEntry: any, selectionId: string) {\n // Check if there's nodeId for Shared Files\n const contentEntryId = contentEntry.nodeId || contentEntry.id;\n const initialParentId = this.getEntryParentId(contentEntry);\n\n return this.documentListService.moveNode(contentEntryId, selectionId).pipe(\n map((itemMoved) => ({ itemMoved, initialParentId })),\n catchError((err) =>\n // do not throw error, to be able to show message in case of partial move of files\n of(err)\n )\n );\n }\n\n getChildByName(parentId: string, name: string): Subject<NodeChildAssociationEntry> {\n const matchedNodes = new Subject<any>();\n\n this.getNodeChildren(parentId).subscribe(\n (childrenNodes: NodeChildAssociationPaging) => {\n const result = childrenNodes.list.entries.find((node) => node.entry.name === name);\n\n if (result) {\n matchedNodes.next(result);\n } else {\n matchedNodes.next(null);\n }\n },\n (err) => matchedNodes.error(err)\n );\n return matchedNodes;\n }\n\n private isActionAllowed(action: BatchOperationType, node: MinimalNodeEntryEntity, permission?: string): boolean {\n if (action === NodeAction.COPY) {\n return true;\n }\n return this.contentService.hasAllowableOperations(node, permission);\n }\n\n private rowFilter(row: ShareDataRow): boolean {\n const node: MinimalNodeEntryEntity = row.node.entry;\n\n this.isSitesDestinationAvailable = !!node['guid'];\n return !node.isFile && node.nodeType !== 'app:folderlink';\n }\n\n private imageResolver(row: ShareDataRow): string | null {\n const entry: MinimalNodeEntryEntity = row.node.entry;\n if (!this.contentService.hasAllowableOperations(entry, 'update')) {\n return this.thumbnailService.getMimeTypeIcon('disable/folder');\n }\n\n return null;\n }\n\n public getNewNameFrom(name: string, baseName?: string) {\n const extensionMatch = name.match(/\\.[^/.]+$/);\n\n // remove extension in case there is one\n const fileExtension = extensionMatch ? extensionMatch[0] : '';\n let extensionFree = extensionMatch ? name.slice(0, extensionMatch.index) : name;\n\n let prefixNumber = 1;\n let baseExtensionFree;\n\n if (baseName) {\n const baseExtensionMatch = baseName.match(/\\.[^/.]+$/);\n\n // remove extension in case there is one\n baseExtensionFree = baseExtensionMatch ? baseName.slice(0, baseExtensionMatch.index) : baseName;\n }\n\n if (!baseExtensionFree || baseExtensionFree !== extensionFree) {\n // check if name already has integer appended on end:\n const oldPrefix = extensionFree.match('-[0-9]+$');\n if (oldPrefix) {\n // if so, try to get the number at the end\n const oldPrefixNumber = parseInt(oldPrefix[0].slice(1), 10);\n if (oldPrefixNumber.toString() === oldPrefix[0].slice(1)) {\n extensionFree = extensionFree.slice(0, oldPrefix.index);\n prefixNumber = oldPrefixNumber + 1;\n }\n }\n }\n return extensionFree + '-' + prefixNumber + fileExtension;\n }\n\n /**\n * Get children nodes of given parent node\n *\n * @param nodeId The id of the parent node\n * @param params optional parameters\n */\n getNodeChildren(nodeId: string, params?: any): Observable<NodeChildAssociationPaging> {\n return from(this.nodesApi.listNodeChildren(nodeId, params));\n }\n\n // Copied from ADF document-list.service, and added the name parameter\n /**\n * Copy a node to destination node\n *\n * @param nodeId The id of the node to be copied\n * @param targetParentId The id of the folder-node where the node have to be copied to\n * @param name The new name for the copy that would be added on the destination folder\n */\n copyNode(nodeId: string, targetParentId: string, name?: string) {\n return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }));\n }\n\n public flatten(nDimArray: any[]) {\n if (!Array.isArray(nDimArray)) {\n return nDimArray;\n }\n\n const nodeQueue = nDimArray.slice(0);\n const resultingArray: any[] = [];\n\n do {\n nodeQueue.forEach((node) => {\n if (Array.isArray(node)) {\n nodeQueue.push(...node);\n } else {\n resultingArray.push(node);\n }\n\n const nodeIndex = nodeQueue.indexOf(node);\n nodeQueue.splice(nodeIndex, 1);\n });\n } while (nodeQueue.length);\n\n return resultingArray;\n }\n\n processResponse(data: any): any {\n const moveStatus = {\n succeeded: [],\n failed: [],\n partiallySucceeded: []\n };\n\n if (Array.isArray(data)) {\n return data.reduce((acc, next) => {\n if (next instanceof Error) {\n acc.failed.push(next);\n } else if (Array.isArray(next)) {\n // if content of a folder was moved\n\n const folderMoveResponseData = this.flatten(next);\n const foundError = folderMoveResponseData.find((node) => node instanceof Error);\n // data might contain also items of form: { itemMoved, initialParentId }\n const foundEntry = folderMoveResponseData.find((node) => (node.itemMoved && node.itemMoved.entry) || (node && node.entry));\n\n if (!foundError) {\n // consider success if NONE of the items from the folder move response is an error\n acc.succeeded.push(next);\n } else if (!foundEntry) {\n // consider failed if NONE of the items has an entry\n acc.failed.push(next);\n } else {\n // partially move folder\n acc.partiallySucceeded.push(next);\n }\n } else {\n acc.succeeded.push(next);\n }\n\n return acc;\n }, moveStatus);\n } else {\n if ((data.itemMoved && data.itemMoved.entry) || (data && data.entry)) {\n moveStatus.succeeded.push(data);\n } else {\n moveStatus.failed.push(data);\n }\n\n return moveStatus;\n }\n }\n\n private focusAfterClose(focusedElementSelector: string): void {\n if (focusedElementSelector) {\n document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, OnDestroy, OnInit, HostListener } from '@angular/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\n\n@Directive({\n selector: '[acaDocumentList]'\n})\nexport class DocumentListDirective implements OnInit, OnDestroy {\n private isLibrary = false;\n selectedNode: MinimalNodeEntity;\n\n onDestroy$ = new Subject<boolean>();\n\n get sortingPreferenceKey(): string {\n return this.route.snapshot.data.sortingPreferenceKey;\n }\n\n constructor(\n private store: Store<any>,\n private documentList: DocumentListComponent,\n private preferences: UserPreferencesService,\n private route: ActivatedRoute,\n private router: Router,\n private appHookService: AppHookService\n ) {}\n\n ngOnInit() {\n this.documentList.stickyHeader = true;\n this.documentList.includeFields = ['isFavorite', 'aspectNames', 'definition'];\n this.isLibrary =\n this.documentList.currentFolderId === '-mysites-' ||\n // workaround for custom node list\n this.router.url.endsWith('/libraries') ||\n this.router.url.startsWith('/search-libraries');\n\n if (this.sortingPreferenceKey) {\n const current = this.documentList.sorting;\n\n const key = this.preferences.get(`${this.sortingPreferenceKey}.sorting.key`, current[0]);\n const direction = this.preferences.get(`${this.sortingPreferenceKey}.sorting.direction`, current[1]);\n\n this.documentList.sorting = [key, direction];\n // TODO: bug in ADF, the `sorting` binding is not updated when changed from code\n this.documentList.data.setSorting({ key, direction });\n }\n\n this.documentList.ready\n .pipe(\n filter(() => !this.router.url.includes('viewer:view')),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => this.onReady());\n\n this.appHookService.reload.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.reload(this.selectedNode);\n });\n\n this.appHookService.reset.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.reset();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n @HostListener('sorting-changed', ['$event'])\n onSortingChanged(event: CustomEvent) {\n if (this.sortingPreferenceKey) {\n this.preferences.set(`${this.sortingPreferenceKey}.sorting.key`, event.detail.key);\n this.preferences.set(`${this.sortingPreferenceKey}.sorting.direction`, event.detail.direction);\n }\n }\n\n @HostListener('node-select', ['$event'])\n onNodeSelect(event: CustomEvent) {\n if (!!event.detail && !!event.detail.node) {\n this.updateSelection();\n this.selectedNode = event.detail.node;\n }\n }\n\n @HostListener('node-unselect')\n onNodeUnselect() {\n this.updateSelection();\n }\n\n onReady() {\n this.updateSelection();\n }\n\n private updateSelection() {\n const selection = this.documentList.selection.map((node) => {\n node['isLibrary'] = this.isLibrary;\n return node;\n });\n\n this.store.dispatch(new SetSelectedNodesAction(selection));\n }\n\n private reload(selectedNode?: MinimalNodeEntity) {\n this.documentList.resetSelection();\n if (selectedNode) {\n this.store.dispatch(new SetSelectedNodesAction([selectedNode]));\n } else {\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n this.documentList.reload();\n }\n\n private reset() {\n this.selectedNode = null;\n this.documentList.resetSelection();\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ShowHeaderMode } from '@alfresco/adf-core';\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { MinimalNodeEntity, MinimalNodeEntryEntity, PathElement, PathElementEntity } from '@alfresco/js-api';\nimport { NodeActionsService } from '../../services/node-actions.service';\nimport { ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { SetCurrentFolderAction, isAdmin, UploadFileVersionAction, showLoaderSelector } from '@alfresco/aca-shared/store';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { FilterSearch, ShareDataRow, FileUploadEvent } from '@alfresco/adf-content-services';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './files.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FilesComponent extends PageComponent implements OnInit, OnDestroy {\n isValidPath = true;\n isAdmin = false;\n selectedNode: MinimalNodeEntity;\n queryParams = null;\n\n showLoader$ = this.store.select(showLoaderSelector);\n private nodePath: PathElement[];\n\n columns: DocumentListPresetRef[] = [];\n isFilterHeaderActive = false;\n\n constructor(private route: ActivatedRoute, private contentApi: ContentApiService, private nodeActionsService: NodeActionsService) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n const { data } = this.route.snapshot;\n\n this.title = data.title;\n\n this.route.queryParamMap.subscribe((queryMap: Params) => {\n this.queryParams = queryMap.params;\n });\n\n this.route.params.subscribe(({ folderId }: Params) => {\n const nodeId = folderId || data.defaultNodeId;\n\n this.contentApi.getNode(nodeId).subscribe(\n (node) => {\n this.isValidPath = true;\n\n if (node.entry && node.entry.isFolder) {\n this.updateCurrentNode(node.entry);\n } else {\n this.router.navigate(['/personal-files', node.entry.parentId], {\n replaceUrl: true\n });\n }\n },\n () => (this.isValidPath = false)\n );\n });\n\n this.subscriptions = this.subscriptions.concat([\n this.nodeActionsService.contentCopied.subscribe((nodes) => this.onContentCopied(nodes)),\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file))\n ]);\n\n this.store\n .select(isAdmin)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((value) => {\n this.isAdmin = value;\n });\n\n this.columns = this.extensions.documentListPresets.files || [];\n }\n\n ngOnDestroy() {\n this.store.dispatch(new SetCurrentFolderAction(null));\n super.ngOnDestroy();\n }\n\n navigate(nodeId: string = null) {\n const currentNodeId = this.route.snapshot.paramMap.get('folderId');\n const urlWithoutParams = decodeURIComponent(this.router.url).split('?')[0];\n const urlToNavigate: string[] = this.getUrlToNavigate(urlWithoutParams, currentNodeId, nodeId);\n this.router.navigate(urlToNavigate);\n }\n\n private getUrlToNavigate(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n return currentNodeId ? this.getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) : this.appendNextNodeIdToUrl(currentURL, nextNodeId);\n }\n\n private getNextNodeUrlToNavigate(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n const urlToNavigate: string[] =\n nextNodeId && !this.isRootNode(nextNodeId)\n ? this.replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId)\n : this.removeNodeIdFromUrl(currentURL, currentNodeId);\n urlToNavigate.shift();\n return urlToNavigate;\n }\n\n private replaceCurrentNodeIdWithNextNodeId(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n const nextNodeUrlToNavigate = currentURL.split('/');\n const index = nextNodeUrlToNavigate.indexOf(currentNodeId);\n if (index > 0) {\n nextNodeUrlToNavigate[index] = nextNodeId;\n }\n return nextNodeUrlToNavigate;\n }\n\n private removeNodeIdFromUrl(currentURL: string, currentNodeId: string): string[] {\n const rootUrl: string[] = currentURL.replace(currentNodeId, '').split('/');\n rootUrl.pop();\n return rootUrl;\n }\n\n private appendNextNodeIdToUrl(currentURL: string, nodeId: string): string[] {\n const navigateToNodeUrl = currentURL.split('/');\n if (nodeId && !this.isRootNode(nodeId)) {\n navigateToNodeUrl.push(nodeId);\n }\n navigateToNodeUrl.shift();\n return navigateToNodeUrl;\n }\n\n onUploadNewVersion(ev: CustomEvent) {\n this.store.dispatch(new UploadFileVersionAction(ev));\n }\n\n navigateTo(node: MinimalNodeEntity) {\n if (node && node.entry) {\n this.selectedNode = node;\n const { isFolder } = node.entry;\n\n if (isFolder) {\n let id: string;\n\n if (node.entry.nodeType === 'app:folderlink') {\n id = node.entry.properties['cm:destination'];\n } else {\n id = node.entry.id;\n }\n\n this.documentList.resetNewFolderPagination();\n this.navigate(id);\n return;\n }\n\n this.showPreview(node, { location: this.router.url });\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n\n onBreadcrumbNavigate(route: PathElementEntity) {\n this.documentList.resetNewFolderPagination();\n\n // todo: review this approach once 5.2.3 is out\n if (this.nodePath && this.nodePath.length > 2) {\n if (this.nodePath[1].name === 'Sites' && this.nodePath[2].id === route.id) {\n return this.navigate(this.nodePath[3].id);\n }\n }\n this.navigate(route.id);\n }\n\n onFileUploadedEvent(event: FileUploadEvent) {\n const node: MinimalNodeEntity = event.file.data;\n\n // check root and child nodes\n if (node && node.entry && node.entry.parentId === this.getParentNodeId()) {\n this.reload(this.selectedNode);\n return;\n }\n\n // check the child nodes to show dropped folder\n if (event && event.file.options.parentId === this.getParentNodeId()) {\n this.displayFolderParent(event.file.options.path, 0);\n return;\n }\n\n if (event && event.file.options.parentId) {\n if (this.nodePath) {\n const correspondingNodePath = this.nodePath.find((pathItem) => pathItem.id === event.file.options.parentId);\n\n // check if the current folder has the 'trigger-upload-folder' as one of its parents\n if (correspondingNodePath) {\n const correspondingIndex = this.nodePath.length - this.nodePath.indexOf(correspondingNodePath);\n this.displayFolderParent(event.file.options.path, correspondingIndex);\n }\n }\n }\n }\n\n displayFolderParent(filePath = '', index: number) {\n const parentName = filePath.split('/')[index];\n const currentFoldersDisplayed = (this.documentList.data.getRows() as ShareDataRow[]) || [];\n\n const alreadyDisplayedParentFolder = currentFoldersDisplayed.find((row) => row.node.entry.isFolder && row.node.entry.name === parentName);\n\n if (alreadyDisplayedParentFolder) {\n return;\n }\n this.reload(this.selectedNode);\n }\n\n onContentCopied(nodes: MinimalNodeEntity[]) {\n const newNode = nodes.find((node) => node && node.entry && node.entry.parentId === this.getParentNodeId());\n if (newNode) {\n this.reload(this.selectedNode);\n }\n }\n\n // todo: review this approach once 5.2.3 is out\n private async updateCurrentNode(node: MinimalNodeEntryEntity) {\n this.nodePath = null;\n\n if (node && node.path && node.path.elements) {\n const elements = node.path.elements;\n\n this.nodePath = elements.map((pathElement) => Object.assign({}, pathElement));\n\n if (elements.length > 1) {\n if (elements[1].name === 'User Homes') {\n if (!this.isAdmin) {\n elements.splice(0, 2);\n }\n } else if (elements[1].name === 'Sites') {\n await this.normalizeSitePath(node);\n }\n }\n }\n\n this.node = node;\n this.store.dispatch(new SetCurrentFolderAction(node));\n }\n\n // todo: review this approach once 5.2.3 is out\n private async normalizeSitePath(node: MinimalNodeEntryEntity) {\n const elements = node.path.elements;\n\n // remove 'Sites'\n elements.splice(1, 1);\n\n if (this.isSiteContainer(node)) {\n // rename 'documentLibrary' entry to the target site display name\n // clicking on the breadcrumb entry loads the site content\n const parentNode = await this.contentApi.getNodeInfo(node.parentId).toPromise();\n node.name = parentNode.properties['cm:title'] || parentNode.name;\n\n // remove the site entry\n elements.splice(1, 1);\n } else {\n // remove 'documentLibrary' in the middle of the path\n const docLib = elements.findIndex((el) => el.name === 'documentLibrary');\n if (docLib > -1) {\n const siteFragment = elements[docLib - 1];\n const siteNode = await this.contentApi.getNodeInfo(siteFragment.id).toPromise();\n\n // apply Site Name to the parent fragment\n siteFragment.name = siteNode.properties['cm:title'] || siteNode.name;\n elements.splice(docLib, 1);\n }\n }\n }\n\n isSiteContainer(node: MinimalNodeEntryEntity): boolean {\n if (node && node.aspectNames && node.aspectNames.length > 0) {\n return node.aspectNames.indexOf('st:siteContainer') >= 0;\n }\n return false;\n }\n\n isRootNode(nodeId: string): boolean {\n if (this.node && this.node.path && this.node.path.elements && this.node.path.elements.length > 0) {\n return this.node.path.elements[0].id === nodeId;\n }\n return false;\n }\n\n onFilterSelected(activeFilters: FilterSearch[]) {\n if (activeFilters.length) {\n this.showHeader = ShowHeaderMode.Always;\n this.isFilterHeaderActive = true;\n this.navigateToFilter(activeFilters);\n } else {\n this.router.navigate(['.'], { relativeTo: this.route });\n this.isFilterHeaderActive = false;\n this.showHeader = ShowHeaderMode.Data;\n this.onAllFilterCleared();\n }\n }\n\n navigateToFilter(activeFilters: FilterSearch[]) {\n const objectFromMap = {};\n activeFilters.forEach((filter: FilterSearch) => {\n let paramValue;\n if (filter.value && filter.value.from && filter.value.to) {\n paramValue = `${filter.value.from}||${filter.value.to}`;\n } else {\n paramValue = filter.value;\n }\n objectFromMap[filter.key] = paramValue;\n });\n\n this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });\n }\n\n onError() {\n this.isValidPath = false;\n }\n}\n","<aca-page-layout [hasError]=\"!isValidPath\">\n <aca-page-layout-header>\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-error>\n <aca-generic-error></aca-generic-error>\n </aca-page-layout-error>\n\n <aca-page-layout-content>\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"true\"\n [currentFolderId]=\"node?.id\"\n [loading]=\"true\"\n [showHeader]=\"showHeader\"\n [node]=\"nodeResult\"\n [allowDropFiles]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['name', 'ASC']\"\n [imageResolver]=\"imageResolver\"\n [headerFilters]=\"true\"\n [filterValue]=\"queryParams\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (sorting-changed)=\"onSortingChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive\">\n <ng-container>\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </adf-upload-drag-area>\n </div>\n\n <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { SiteEntry } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { AppHookService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './libraries.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class LibrariesComponent extends PageComponent implements OnInit {\n columns: DocumentListPresetRef[] = [];\n\n constructor(private appHookService: AppHookService) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions.push(\n this.appHookService.libraryDeleted.subscribe(() => this.reload()),\n this.appHookService.libraryUpdated.subscribe(() => this.reload()),\n this.appHookService.libraryLeft.subscribe(() => this.reload())\n );\n\n this.columns = this.extensions.documentListPresets.libraries || [];\n }\n\n navigateTo(node: SiteEntry) {\n if (node && node.entry && node.entry.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [currentFolderId]=\"'-mysites-'\"\n [selectionMode]=\"'single'\"\n [navigate]=\"false\"\n [sorting]=\"['title', 'asc']\"\n [sortingMode]=\"'client'\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TITLE'\"\n subtitle=\"APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TEXT\"\n >\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"$any(selection).library\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectorRef, Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SiteEntry, FavoritePaging, Pagination } from '@alfresco/js-api';\nimport { AppHookService, ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './favorite-libraries.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FavoriteLibrariesComponent extends PageComponent implements OnInit {\n pagination: Pagination = new Pagination({\n skipCount: 0,\n maxItems: 25,\n totalItems: 0\n });\n isLoading = false;\n list: FavoritePaging;\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private appHookService: AppHookService,\n private contentApiService: ContentApiService,\n private preferences: UserPreferencesService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.getList({ maxItems: this.preferences.paginationSize });\n\n this.subscriptions = this.subscriptions.concat([\n this.appHookService.libraryDeleted.subscribe(() => this.reloadList()),\n this.appHookService.libraryUpdated.subscribe(() => this.reloadList()),\n this.appHookService.libraryJoined.subscribe(() => this.reloadList()),\n this.appHookService.libraryLeft.subscribe(() => this.reloadList()),\n this.appHookService.favoriteLibraryToggle.subscribe(() => this.reloadList())\n ]);\n this.columns = this.extensions.documentListPresets.favoriteLibraries || [];\n }\n\n navigateTo(node: SiteEntry) {\n if (node && node.entry && node.entry.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid, 'favorite/libraries'));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n\n onChangePageSize(pagination: Pagination) {\n this.preferences.paginationSize = pagination.maxItems;\n this.getList(pagination);\n }\n\n onChange(pagination: Pagination) {\n this.getList(pagination);\n }\n\n private getList(pagination: Pagination) {\n this.isLoading = true;\n this.contentApiService.getFavoriteLibraries('-me-', pagination).subscribe(\n (favoriteLibraries: FavoritePaging) => {\n this.list = favoriteLibraries;\n this.pagination = favoriteLibraries.list.pagination;\n this.isLoading = false;\n this.changeDetectorRef.detectChanges();\n },\n () => {\n this.list = null;\n this.pagination = null;\n this.isLoading = false;\n }\n );\n }\n\n private reloadList() {\n this.reload();\n this.getList(this.pagination);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [node]=\"$any(list)\"\n [loading]=\"isLoading\"\n [selectionMode]=\"'single'\"\n [navigate]=\"false\"\n [sorting]=\"['title', 'asc']\"\n [sortingMode]=\"'client'\"\n (node-dblclick)=\"handleNodeClick($event)\"\n [imageResolver]=\"imageResolver\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TITLE'\"\n subtitle=\"APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TEXT\"\n >\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination\n [target]=\"documentList\"\n [pagination]=\"pagination\"\n (changePageSize)=\"onChangePageSize($event)\"\n (changePageNumber)=\"onChange($event)\"\n (nextPage)=\"onChange($event)\"\n (prevPage)=\"onChange($event)\"\n >\n </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppState, AppStore } from '@alfresco/aca-shared/store';\n\nexport const INITIAL_APP_STATE: AppState = {\n appName: 'Alfresco Content Application',\n logoPath: 'assets/images/alfresco-logo-white.svg',\n customCssPath: '',\n webFontPath: '',\n sharedUrl: '',\n user: {\n isAdmin: null,\n id: null,\n firstName: '',\n lastName: ''\n },\n selection: {\n nodes: [],\n libraries: [],\n isEmpty: true,\n count: 0\n },\n navigation: {\n currentFolder: null\n },\n currentNodeVersion: null,\n infoDrawerOpened: false,\n infoDrawerPreview: false,\n infoDrawerMetadataAspect: '',\n showFacetFilter: true,\n fileUploadingDialog: true,\n documentDisplayMode: 'list',\n showLoader: false,\n repository: {\n status: {\n isQuickShareEnabled: true\n }\n } as any\n};\n\nexport const INITIAL_STATE: AppStore = {\n app: INITIAL_APP_STATE\n};\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Action } from '@ngrx/store';\nimport {\n AppState,\n NodeActionTypes,\n SetUserProfileAction,\n SetCurrentFolderAction,\n SetCurrentUrlAction,\n SetInitialStateAction,\n SetSelectedNodesAction,\n SetRepositoryInfoAction,\n SetInfoDrawerStateAction,\n SetInfoDrawerMetadataAspectAction,\n SetCurrentNodeVersionAction,\n SetFileUploadingDialogAction,\n SetInfoDrawerPreviewStateAction,\n AppActionTypes,\n ShowLoaderAction\n} from '@alfresco/aca-shared/store';\nimport { INITIAL_APP_STATE } from '../initial-state';\n\nexport function appReducer(state: AppState = INITIAL_APP_STATE, action: Action): AppState {\n let newState: AppState;\n\n switch (action.type) {\n case AppActionTypes.SetInitialState:\n newState = Object.assign({}, (action as SetInitialStateAction).payload);\n break;\n case NodeActionTypes.SetSelection:\n newState = updateSelectedNodes(state, action as SetSelectedNodesAction);\n break;\n case AppActionTypes.SetUserProfile:\n newState = updateUser(state, action as SetUserProfileAction);\n break;\n case AppActionTypes.SetCurrentFolder:\n newState = updateCurrentFolder(state, action as SetCurrentFolderAction);\n break;\n case AppActionTypes.SetCurrentVersion:\n newState = updateCurrentNodeVersion(state, action as SetCurrentNodeVersionAction);\n break;\n case AppActionTypes.SetCurrentUrl:\n newState = updateCurrentUrl(state, action as SetCurrentUrlAction);\n break;\n case AppActionTypes.ToggleInfoDrawer:\n newState = toggleInfoDrawer(state);\n break;\n case AppActionTypes.SetInfoDrawerState:\n newState = setInfoDrawer(state, action as SetInfoDrawerStateAction);\n break;\n case AppActionTypes.SetInfoDrawerMetadataAspect:\n newState = setInfoDrawerAspect(state, action as SetInfoDrawerMetadataAspectAction);\n break;\n case AppActionTypes.ToggleDocumentDisplayMode:\n newState = toggleDocumentDisplayMode(state);\n break;\n case AppActionTypes.SetRepositoryInfo:\n newState = updateRepositoryStatus(state, action as SetRepositoryInfoAction);\n break;\n case AppActionTypes.SetFileUploadingDialog:\n newState = setUploadDialogVisibility(state, action as SetFileUploadingDialogAction);\n break;\n case AppActionTypes.ShowInfoDrawerPreview:\n newState = showInfoDrawerPreview(state);\n break;\n case AppActionTypes.SetInfoDrawerPreviewState:\n newState = setInfoDrawerPreview(state, action as SetInfoDrawerPreviewStateAction);\n break;\n case AppActionTypes.ShowLoaderAction:\n newState = showLoader(state, action as ShowLoaderAction);\n break;\n default:\n newState = { ...state };\n }\n\n return newState;\n}\n\nfunction updateUser(state: AppState, action: SetUserProfileAction): AppState {\n const newState = { ...state };\n const user = action.payload.person;\n const groups = [...(action.payload.groups || [])];\n\n const id = user.id;\n const firstName = user.firstName || '';\n const lastName = user.lastName || '';\n const userName = `${firstName} ${lastName}`;\n const initials = [firstName[0], lastName[0]].join('');\n\n const capabilities = user.capabilities;\n const isAdmin = capabilities ? capabilities.isAdmin : true;\n\n newState.user = {\n firstName,\n lastName,\n userName,\n initials,\n isAdmin,\n id,\n groups\n };\n\n return newState;\n}\n\nfunction updateCurrentFolder(state: AppState, action: SetCurrentFolderAction) {\n const newState = { ...state };\n newState.navigation.currentFolder = action.payload;\n return newState;\n}\n\nfunction updateCurrentNodeVersion(state: AppState, action: SetCurrentNodeVersionAction) {\n const newState = { ...state };\n newState.currentNodeVersion = action.payload;\n return newState;\n}\n\nfunction updateCurrentUrl(state: AppState, action: SetCurrentUrlAction) {\n const newState = { ...state };\n newState.navigation.url = action.payload;\n return newState;\n}\n\nfunction toggleInfoDrawer(state: AppState) {\n const newState = { ...state };\n\n let value = state.infoDrawerOpened;\n if (state.selection.isEmpty) {\n value = false;\n } else {\n value = !value;\n }\n\n newState.infoDrawerOpened = value;\n\n return newState;\n}\n\nfunction showInfoDrawerPreview(state: AppState) {\n const newState = { ...state };\n\n let value = state.infoDrawerPreview;\n if (state.selection.isEmpty) {\n value = false;\n } else {\n value = !value;\n }\n\n newState.infoDrawerPreview = value;\n\n return newState;\n}\n\nconst toggleDocumentDisplayMode = (state: AppState) => ({\n ...state,\n documentDisplayMode: state.documentDisplayMode === 'list' ? 'gallery' : 'list'\n});\n\nfunction updateSelectedNodes(state: AppState, action: SetSelectedNodesAction): AppState {\n const newState = { ...state };\n const nodes = [...action.payload];\n const count = nodes.length;\n const isEmpty = nodes.length === 0;\n\n let first = null;\n let last = null;\n let file = null;\n let folder = null;\n let library = null;\n\n if (nodes.length > 0) {\n first = nodes[0];\n last = nodes[nodes.length - 1];\n\n if (nodes.length === 1) {\n file = nodes.find(\n (entity: any) =>\n // workaround Shared\n !!(entity.entry.isFile || entity.entry.nodeId || entity.entry.sharedByUser)\n );\n folder = nodes.find((entity: any) => entity.entry.isFolder);\n }\n }\n\n const libraries: any[] = [...action.payload].filter((node: any) => node.isLibrary);\n if (libraries.length === 1) {\n library = libraries[0] as any;\n }\n\n if (isEmpty) {\n newState.infoDrawerOpened = false;\n }\n\n newState.selection = {\n count,\n nodes,\n isEmpty,\n first,\n last,\n file,\n folder,\n libraries,\n library\n };\n return newState;\n}\n\nconst setInfoDrawer = (state: AppState, action: SetInfoDrawerStateAction) => ({\n ...state,\n infoDrawerOpened: action.payload\n});\n\nconst setInfoDrawerPreview = (state: AppState, action: SetInfoDrawerPreviewStateAction) => ({\n ...state,\n infoDrawerPreview: action.payload\n});\n\nconst setInfoDrawerAspect = (state: AppState, action: SetInfoDrawerMetadataAspectAction) => ({\n ...state,\n infoDrawerMetadataAspect: action.payload\n});\n\nfunction updateRepositoryStatus(state: AppState, action: SetRepositoryInfoAction) {\n const newState = { ...state };\n newState.repository = action.payload;\n return newState;\n}\n\nfunction setUploadDialogVisibility(state: AppState, action: SetFileUploadingDialogAction): AppState {\n const newState = { ...state };\n newState.fileUploadingDialog = action.payload;\n return newState;\n}\n\nfunction showLoader(state: AppState, action: ShowLoaderAction): AppState {\n const newState = { ...state };\n newState.showLoader = action.payload;\n return newState;\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { AppActionTypes, LogoutAction, ReloadDocumentListAction, ResetSelectionAction } from '@alfresco/aca-shared/store';\nimport { AuthenticationService } from '@alfresco/adf-core';\nimport { Router } from '@angular/router';\nimport { AppHookService } from '@alfresco/aca-shared';\n\n@Injectable()\nexport class AppEffects {\n constructor(private actions$: Actions, private auth: AuthenticationService, private router: Router, private appHookService: AppHookService) {}\n\n reload = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ReloadDocumentListAction>(AppActionTypes.ReloadDocumentList),\n map((action) => {\n this.appHookService.reload.next(action);\n })\n ),\n { dispatch: false }\n );\n\n resetSelection = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ResetSelectionAction>(AppActionTypes.ResetSelection),\n map((action) => {\n this.appHookService.reset.next(action);\n })\n ),\n { dispatch: false }\n );\n\n logout$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<LogoutAction>(AppActionTypes.Logout),\n map(() => {\n this.auth.logout().subscribe(\n () => this.redirectToLogin(),\n () => this.redirectToLogin()\n );\n })\n ),\n { dispatch: false }\n );\n\n private redirectToLogin(): Promise<boolean> {\n return this.router.navigate(['login']);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AppStore, getRepositoryStatus } from '@alfresco/aca-shared/store';\nimport { take, map, catchError, mergeMap } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { DirectAccessUrlEntry } from '@alfresco/js-api';\nimport { ContentVersionService } from '@alfresco/adf-content-services';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\n\n@Injectable({ providedIn: 'root' })\nexport class ContentUrlService extends ContentVersionService {\n constructor(private store: Store<AppStore>, private contentApiService: ContentApiService, alfrescoApiService: AlfrescoApiService) {\n super(alfrescoApiService);\n }\n\n getNodeContentUrl(nodeId: string, attachment = true): Observable<string> {\n return this.isDirectAccessUrlEnabled().pipe(\n mergeMap((dauEnabled) => {\n if (dauEnabled) {\n return this.contentApiService.requestNodeDirectAccessUrl(nodeId).pipe(\n map((dauObj: DirectAccessUrlEntry) => dauObj.entry.contentUrl),\n catchError(() => of(this.contentApiService.getContentUrl(nodeId, true)))\n );\n } else {\n return of(this.contentApiService.getContentUrl(nodeId, attachment));\n }\n })\n );\n }\n\n getVersionContentUrl(nodeId: string, versionId: string, attachment = true): Observable<string> {\n return this.isDirectAccessUrlEnabled().pipe(\n mergeMap((dauEnabled) => {\n if (dauEnabled) {\n return this.contentApiService.requestVersionDirectAccessUrl(nodeId, versionId).pipe(\n map((dauObj: DirectAccessUrlEntry) => dauObj.entry.contentUrl),\n catchError(() => of(this.contentApiService.getVersionContentUrl(nodeId, versionId, true)))\n );\n } else {\n return of(this.contentApiService.getVersionContentUrl(nodeId, versionId, attachment));\n }\n })\n );\n }\n\n private isDirectAccessUrlEnabled(): Observable<boolean> {\n return this.store.select(getRepositoryStatus).pipe(\n take(1),\n map((repository) => !!repository?.status?.isDirectAccessUrlEnabled)\n );\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, DownloadNodesAction, NodeActionTypes, NodeInfo, getAppSelection, getCurrentVersion } from '@alfresco/aca-shared/store';\nimport { DownloadZipDialogComponent } from '@alfresco/adf-content-services';\nimport { MinimalNodeEntity, Version } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentUrlService } from '../../services/content-url.service';\n\n@Injectable()\nexport class DownloadEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private contentApi: ContentApiService,\n private dialog: MatDialog,\n private contentUrlService: ContentUrlService\n ) {}\n\n downloadNode$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<DownloadNodesAction>(NodeActionTypes.Download),\n map((action) => {\n if (action.payload?.length > 0) {\n this.downloadNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.store\n .select(getCurrentVersion)\n .pipe(take(1))\n .subscribe((version) => {\n if (version) {\n this.downloadFileVersion(selection.nodes[0].entry, version.entry);\n } else {\n this.downloadNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n private downloadNodes(toDownload: Array<MinimalNodeEntity>, focusedElementSelector?: string) {\n const nodes = toDownload.map((node) => {\n const { id, nodeId, name, isFile, isFolder } = node.entry as any;\n\n return {\n id: this.isSharedLinkPreview ? id : nodeId || id,\n name,\n isFile,\n isFolder\n };\n });\n\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n if (nodes.length === 1) {\n this.downloadNode(nodes[0], focusedElementSelector);\n } else {\n this.downloadZip(nodes, focusedElementSelector);\n }\n }\n\n private downloadNode(node: NodeInfo, focusedElementSelector?: string) {\n if (node) {\n if (node.isFolder) {\n this.downloadZip([node], focusedElementSelector);\n } else {\n this.downloadFile(node);\n }\n }\n }\n\n private downloadFile(node: NodeInfo) {\n if (node && !this.isSharedLinkPreview) {\n this.contentUrlService.getNodeContentUrl(node.id, true).subscribe((contentUrl) => {\n this.download(contentUrl, node.name);\n });\n }\n\n if (node && this.isSharedLinkPreview) {\n this.download(this.contentApi.getSharedLinkContent(node.id, false), node.name);\n }\n }\n\n private downloadFileVersion(node: NodeInfo, version: Version) {\n if (node && version) {\n this.contentUrlService.getVersionContentUrl(node.id, version.id, true).subscribe((contentUrl) => {\n this.download(contentUrl, node.name);\n });\n }\n }\n\n private downloadZip(nodes: Array<NodeInfo>, focusedElementSelector?: string) {\n if (nodes && nodes.length > 0) {\n const nodeIds = nodes.map((node) => node.id);\n\n this.dialog\n .open(DownloadZipDialogComponent, {\n width: '600px',\n disableClose: true,\n data: {\n nodeIds\n }\n })\n .afterClosed()\n .subscribe(() => this.focusAfterClose(focusedElementSelector));\n }\n }\n\n private download(url: string, fileName: string) {\n if (url && fileName) {\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.download = fileName;\n link.href = url;\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n private get isSharedLinkPreview() {\n return location.href.includes('/preview/s/');\n }\n\n private focusAfterClose(focusedElementSelector: string): void {\n if (focusedElementSelector) {\n document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppHookService, ContentApiService, NodePermissionService } from '@alfresco/aca-shared';\nimport {\n AppStore,\n DeletedNodeInfo,\n DeleteStatus,\n getAppSelection,\n getSharedUrl,\n NavigateRouteAction,\n NavigateToParentFolder,\n NodeInfo,\n ReloadDocumentListAction,\n SetSelectedNodesAction,\n ShowLoaderAction,\n SnackbarAction,\n SnackbarErrorAction,\n SnackbarInfoAction,\n SnackbarUserAction,\n SnackbarWarningAction,\n UndoDeleteNodesAction,\n UnlockWriteAction,\n ViewNodeVersionAction\n} from '@alfresco/aca-shared/store';\nimport {\n ConfirmDialogComponent,\n FolderDialogComponent,\n LibraryDialogComponent,\n ShareDialogComponent,\n NodeAspectService,\n NewVersionUploaderService,\n NewVersionUploaderDialogData,\n NewVersionUploaderData,\n NewVersionUploaderDataAction,\n NodesApiService\n} from '@alfresco/adf-content-services';\nimport { TranslationService, NotificationService } from '@alfresco/adf-core';\nimport {\n DeletedNodesPaging,\n MinimalNodeEntity,\n MinimalNodeEntryEntity,\n Node,\n NodeEntry,\n PathInfoEntity,\n SiteBody,\n SiteEntry\n} from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, Observable, of, zip } from 'rxjs';\nimport { catchError, map, mergeMap, take, tap } from 'rxjs/operators';\nimport { NodeActionsService } from './node-actions.service';\nimport { Router } from '@angular/router';\n\ninterface RestoredNode {\n status: number;\n entry: MinimalNodeEntryEntity;\n statusCode?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentManagementService {\n private readonly createMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.create\"]';\n\n constructor(\n private nodesApiService: NodesApiService,\n private store: Store<AppStore>,\n private contentApi: ContentApiService,\n private permission: NodePermissionService,\n private dialogRef: MatDialog,\n private nodeActionsService: NodeActionsService,\n private translation: TranslationService,\n private notificationService: NotificationService,\n private nodeAspectService: NodeAspectService,\n private appHookService: AppHookService,\n private newVersionUploaderService: NewVersionUploaderService,\n private router: Router\n ) {}\n\n addFavorite(nodes: Array<MinimalNodeEntity>) {\n if (nodes && nodes.length > 0) {\n this.contentApi.addFavorite(nodes).subscribe(() => {\n const favoriteNodes = nodes.map((node) => {\n const newNode = JSON.parse(JSON.stringify(node));\n newNode.entry.isFavorite = true;\n return newNode;\n });\n\n this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n });\n }\n }\n\n removeFavorite(nodes: Array<MinimalNodeEntity>) {\n if (nodes && nodes.length > 0) {\n this.contentApi.removeFavorite(nodes).subscribe(() => {\n const favoriteNodes = nodes.map((node) => {\n const newNode = JSON.parse(JSON.stringify(node));\n newNode.entry.isFavorite = false;\n return newNode;\n });\n\n this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n });\n }\n }\n\n manageVersions(node: any, focusedElementOnCloseSelector?: string) {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || (node as any).entry.guid;\n\n if (id) {\n this.contentApi.getNodeInfo(id).subscribe((entry) => {\n this.openVersionManagerDialog(entry, focusedElementOnCloseSelector);\n });\n } else {\n this.openVersionManagerDialog(node.entry, focusedElementOnCloseSelector);\n }\n }\n }\n\n manageAspects(node: any, focusedElementOnCloseSelector?: string) {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || (node as any).entry.guid;\n\n if (id) {\n this.contentApi.getNodeInfo(id).subscribe((entry) => {\n this.openAspectListDialog(entry, focusedElementOnCloseSelector);\n });\n } else {\n this.openAspectListDialog(node.entry, focusedElementOnCloseSelector);\n }\n }\n }\n\n versionUpdateDialog(node, file) {\n this.contentApi.getNodeVersions(node.id).subscribe(({ list }) => {\n const newVersionUploaderDialogData: NewVersionUploaderDialogData = {\n node,\n file,\n currentVersion: list.entries[0].entry,\n title: 'VERSION.DIALOG.TITLE'\n };\n const dialogConfig: MatDialogConfig = { width: '600px' };\n this.newVersionUploaderService.openUploadNewVersionDialog(newVersionUploaderDialogData, dialogConfig).subscribe(\n (data: NewVersionUploaderData) => {\n if (data.action === NewVersionUploaderDataAction.upload) {\n if (data.newVersion.value.entry.properties['cm:lockType'] === 'WRITE_LOCK') {\n this.store.dispatch(new UnlockWriteAction(data.newVersion.value));\n }\n }\n },\n (error) => this.store.dispatch(new SnackbarErrorAction(error))\n );\n });\n }\n\n shareNode(node: any, focusedElementOnCloseSelector?: string): void {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || (node as any).entry.guid;\n\n if (id) {\n this.contentApi.getNodeInfo(id).subscribe((entry) => {\n this.openShareLinkDialog({ entry }, focusedElementOnCloseSelector);\n });\n } else {\n this.openShareLinkDialog(node, focusedElementOnCloseSelector);\n }\n }\n }\n\n openShareLinkDialog(node, focusedElementOnCloseSelector?: string) {\n this.store\n .select(getSharedUrl)\n .pipe(take(1))\n .subscribe((baseShareUrl) => {\n this.dialogRef\n .open(ShareDialogComponent, {\n restoreFocus: true,\n width: '600px',\n panelClass: 'adf-share-link-dialog',\n data: {\n node,\n baseShareUrl\n }\n })\n .afterClosed()\n .subscribe(() => {\n this.store.dispatch(new SetSelectedNodesAction([node]));\n this.appHookService.linksUnshared.next();\n this.focusAfterClose(focusedElementOnCloseSelector);\n });\n });\n }\n\n createFolder(parentNodeId: string) {\n const dialogInstance = this.dialogRef.open(FolderDialogComponent, {\n data: {\n parentNodeId,\n createTitle: undefined,\n nodeType: 'cm:folder'\n },\n width: '400px',\n role: 'dialog'\n });\n\n dialogInstance.componentInstance.error.subscribe((message: string) => {\n this.store.dispatch(new SnackbarErrorAction(message));\n });\n\n dialogInstance.afterClosed().subscribe((node) => {\n if (node) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n this.focusAfterClose(this.createMenuButtonSelector);\n });\n }\n\n editFolder(folder: MinimalNodeEntity, focusedElementOnCloseSelector?: string) {\n if (!folder) {\n return;\n }\n\n const dialog = this.dialogRef.open(FolderDialogComponent, {\n data: {\n folder: folder.entry\n },\n width: '400px'\n });\n\n dialog.componentInstance.error.subscribe((message: string) => {\n this.store.dispatch(new SnackbarErrorAction(message));\n });\n\n dialog.afterClosed().subscribe((node) => {\n if (node) {\n this.nodesApiService.nodeUpdated.next(node);\n }\n this.focusAfterClose(focusedElementOnCloseSelector);\n });\n }\n\n createLibrary(): Observable<string> {\n const dialogInstance = this.dialogRef.open(LibraryDialogComponent, {\n width: '400px'\n });\n\n dialogInstance.componentInstance.error.subscribe((message: string) => {\n this.store.dispatch(new SnackbarErrorAction(message));\n });\n\n return dialogInstance.afterClosed().pipe(\n tap((node) => {\n if (node) {\n this.appHookService.libraryCreated.next(node);\n }\n this.focusAfterClose(this.createMenuButtonSelector);\n }),\n map((node: SiteEntry) => {\n if (node && node.entry && node.entry.guid) {\n return node.entry.guid;\n }\n return null;\n })\n );\n }\n\n deleteLibrary(id: string): void {\n this.contentApi.deleteSite(id).subscribe(\n () => {\n this.appHookService.libraryDeleted.next(id);\n this.store.dispatch(new SnackbarInfoAction('APP.MESSAGES.INFO.LIBRARY_DELETED'));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.DELETE_LIBRARY_FAILED'));\n }\n );\n }\n\n leaveLibrary(siteId: string, focusedElementOnCloseSelector?: string): void {\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n data: {\n title: 'APP.DIALOGS.CONFIRM_LEAVE.TITLE',\n message: 'APP.DIALOGS.CONFIRM_LEAVE.MESSAGE',\n yesLabel: 'APP.DIALOGS.CONFIRM_LEAVE.YES_LABEL',\n noLabel: 'APP.DIALOGS.CONFIRM_LEAVE.NO_LABEL'\n },\n minWidth: '250px'\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result === true) {\n this.contentApi.leaveSite(siteId).subscribe(\n () => {\n this.appHookService.libraryLeft.next(siteId);\n this.store.dispatch(new SnackbarInfoAction('APP.MESSAGES.INFO.LEFT_LIBRARY'));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.LEAVE_LIBRARY_FAILED'));\n }\n );\n }\n this.focusAfterClose(focusedElementOnCloseSelector);\n });\n }\n\n updateLibrary(siteId: string, siteBody: SiteBody) {\n this.contentApi.updateLibrary(siteId, siteBody).subscribe(\n (siteEntry: SiteEntry) => {\n this.appHookService.libraryUpdated.next(siteEntry);\n this.store.dispatch(new SnackbarInfoAction('LIBRARY.SUCCESS.LIBRARY_UPDATED'));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('LIBRARY.ERRORS.LIBRARY_UPDATE_ERROR'));\n }\n );\n }\n\n async unshareNodes(links: Array<MinimalNodeEntity>) {\n const promises = links.map((link) => this.contentApi.deleteSharedLink(link.entry.id).toPromise());\n await Promise.all(promises);\n this.appHookService.linksUnshared.next();\n }\n\n canUpdateNode(node: MinimalNodeEntity | Node): boolean {\n return this.permission.check(node, ['update']);\n }\n\n canUploadContent(folderNode: MinimalNodeEntity | Node): boolean {\n return this.permission.check(folderNode, ['create']);\n }\n\n purgeDeletedNodes(nodes: MinimalNodeEntity[]) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n data: {\n title: 'APP.DIALOGS.CONFIRM_PURGE.TITLE',\n message: 'APP.DIALOGS.CONFIRM_PURGE.MESSAGE',\n yesLabel: 'APP.DIALOGS.CONFIRM_PURGE.YES_LABEL',\n noLabel: 'APP.DIALOGS.CONFIRM_PURGE.NO_LABEL'\n },\n minWidth: '250px'\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result === true) {\n const nodesToDelete: NodeInfo[] = nodes.map((node) => {\n const { name } = node.entry;\n const id = (node as any).entry.nodeId || node.entry.id;\n\n return {\n id,\n name\n };\n });\n this.purgeNodes(nodesToDelete);\n }\n });\n }\n\n restoreDeletedNodes(selection: MinimalNodeEntity[] = []) {\n if (!selection.length) {\n return;\n }\n\n const nodesWithPath = selection.filter((node) => node.entry.path);\n\n if (selection.length && !nodesWithPath.length) {\n const failedStatus = this.processStatus([]);\n failedStatus.fail.push(...selection);\n this.showRestoreNotification(failedStatus);\n this.store.dispatch(new ReloadDocumentListAction());\n return;\n }\n\n let status: DeleteStatus;\n\n forkJoin(nodesWithPath.map((node) => this.restoreNode(node)))\n .pipe(\n tap((restoredNodes) => {\n status = this.processStatus(restoredNodes);\n }),\n mergeMap(() => this.contentApi.getDeletedNodes())\n )\n .subscribe((nodes: DeletedNodesPaging) => {\n const selectedNodes = this.diff(status.fail, selection, false);\n const remainingNodes = this.diff(selectedNodes, nodes.list.entries);\n\n if (!remainingNodes.length) {\n this.showRestoreNotification(status);\n this.store.dispatch(new ReloadDocumentListAction());\n } else {\n this.restoreDeletedNodes(remainingNodes);\n }\n });\n }\n\n copyNodes(nodes: Array<MinimalNodeEntity>, focusedElementOnCloseSelector?: string) {\n zip(this.nodeActionsService.copyNodes(nodes, undefined, focusedElementOnCloseSelector), this.nodeActionsService.contentCopied).subscribe(\n (result) => {\n const [operationResult, newItems] = result;\n this.showCopyMessage(operationResult, nodes, newItems);\n },\n (error) => {\n this.showCopyMessage(error, nodes);\n }\n );\n }\n\n moveNodes(nodes: Array<MinimalNodeEntity>, focusedElementOnCloseSelector?: string) {\n const permissionForMove = '!';\n\n zip(this.nodeActionsService.moveNodes(nodes, permissionForMove, focusedElementOnCloseSelector), this.nodeActionsService.contentMoved).subscribe(\n (result) => {\n const [operationResult, moveResponse] = result;\n this.showMoveMessage(nodes, operationResult, moveResponse);\n\n this.store.dispatch(new ReloadDocumentListAction());\n },\n (error) => {\n this.showMoveMessage(nodes, error);\n }\n );\n }\n\n getErrorMessage(errorObject: { message: any }): string {\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n try {\n const {\n error: { statusCode }\n } = JSON.parse(errorObject.message);\n\n if (statusCode === 409) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.NODE_MOVE';\n } else if (statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n } catch (err) {\n /* Do nothing, keep the original message */\n }\n\n return i18nMessageString;\n }\n\n getNodeInfo(): Observable<MinimalNodeEntryEntity> {\n return this.store.select(getAppSelection).pipe(\n take(1),\n mergeMap(({ file }) => {\n const id = (file as any).entry.nodeId || (file as any).entry.guid;\n if (!id) {\n return of(file.entry);\n } else {\n return this.contentApi.getNodeInfo(id);\n }\n })\n );\n }\n\n unlockNode(node: NodeEntry): Promise<void | NodeEntry> {\n return this.contentApi.unlockNode(node.entry.id).catch(() => {\n this.store.dispatch(\n new SnackbarErrorAction('APP.MESSAGES.ERRORS.UNLOCK_NODE', {\n fileName: node.entry.name\n })\n );\n });\n }\n\n private showCopyMessage(info: any, nodes: Array<MinimalNodeEntity>, newItems?: Array<MinimalNodeEntity>) {\n const numberOfCopiedItems = newItems ? newItems.length : 0;\n const failedItems = nodes.length - numberOfCopiedItems;\n\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n if (typeof info === 'string') {\n if (info.toLowerCase().indexOf('succes') !== -1) {\n let i18MessageSuffix;\n\n if (failedItems) {\n if (numberOfCopiedItems) {\n i18MessageSuffix = numberOfCopiedItems === 1 ? 'PARTIAL_SINGULAR' : 'PARTIAL_PLURAL';\n } else {\n i18MessageSuffix = failedItems === 1 ? 'FAIL_SINGULAR' : 'FAIL_PLURAL';\n }\n } else {\n i18MessageSuffix = numberOfCopiedItems === 1 ? 'SINGULAR' : 'PLURAL';\n }\n\n i18nMessageString = `APP.MESSAGES.INFO.NODE_COPY.${i18MessageSuffix}`;\n }\n } else {\n try {\n const {\n error: { statusCode }\n } = JSON.parse(info.message);\n\n if (statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n } catch {}\n }\n\n const undo = numberOfCopiedItems > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n\n const message = this.translation.instant(i18nMessageString, {\n success: numberOfCopiedItems,\n failed: failedItems\n });\n\n this.notificationService\n .openSnackMessageAction(message, undo, {\n panelClass: 'info-snackbar'\n })\n .onAction()\n .subscribe(() => this.undoCopyNodes(newItems));\n }\n\n private undoCopyNodes(nodes: MinimalNodeEntity[]) {\n const batch = this.nodeActionsService\n .flatten(nodes)\n .filter((item) => item.entry)\n .map((item) => this.contentApi.deleteNode(item.entry.id, { permanent: true }));\n\n forkJoin(...batch).subscribe(\n () => {\n this.appHookService.nodesDeleted.next(null);\n this.store.dispatch(new ReloadDocumentListAction());\n },\n (error) => {\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n let errorJson = null;\n try {\n errorJson = JSON.parse(error.message);\n } catch {}\n\n if (errorJson && errorJson.error && errorJson.error.statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n\n this.store.dispatch(new SnackbarErrorAction(i18nMessageString));\n }\n );\n }\n\n private openVersionManagerDialog(node: any, focusedElementOnCloseSelector?: string) {\n // workaround Shared\n if (node.isFile || node.nodeId) {\n const newVersionUploaderDialogData: NewVersionUploaderDialogData = {\n node,\n showVersionsOnly: true,\n title: 'VERSION.DIALOG.TITLE'\n };\n this.newVersionUploaderService\n .openUploadNewVersionDialog(newVersionUploaderDialogData, { width: '630px', role: 'dialog' }, focusedElementOnCloseSelector)\n .subscribe({\n next: (newVersionUploaderData: NewVersionUploaderData) => {\n switch (newVersionUploaderData.action) {\n case NewVersionUploaderDataAction.refresh:\n this.store.dispatch(new ReloadDocumentListAction());\n break;\n case NewVersionUploaderDataAction.view:\n this.store.dispatch(\n new ViewNodeVersionAction(node.id, newVersionUploaderData.versionId, {\n location: this.router.url\n })\n );\n break;\n default:\n break;\n }\n }\n });\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.PERMISSION'));\n }\n }\n\n private openAspectListDialog(node: any, focusedElementOnCloseSelector?: string) {\n // workaround Shared\n if (node.isFile || node.id) {\n this.nodeAspectService.updateNodeAspects(node.id, focusedElementOnCloseSelector);\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.PERMISSION'));\n }\n }\n\n private undoMoveNodes(moveResponse, selectionParentId: string) {\n const movedNodes = moveResponse && moveResponse['succeeded'] ? moveResponse['succeeded'] : [];\n const partiallyMovedNodes = moveResponse && moveResponse['partiallySucceeded'] ? moveResponse['partiallySucceeded'] : [];\n\n const restoreDeletedNodesBatch = this.nodeActionsService.moveDeletedEntries.map((folderEntry) =>\n this.contentApi.restoreNode(folderEntry.nodeId || folderEntry.id).pipe(map((node) => node.entry))\n );\n\n zip(...restoreDeletedNodesBatch, of(null))\n .pipe(\n mergeMap(() => {\n const nodesToBeMovedBack = [...partiallyMovedNodes, ...movedNodes];\n\n const revertMoveBatch = this.nodeActionsService\n .flatten(nodesToBeMovedBack)\n .filter((node) => node.entry || (node.itemMoved && node.itemMoved.entry))\n .map((node) => {\n if (node.itemMoved) {\n return this.nodeActionsService.moveNodeAction(node.itemMoved.entry, node.initialParentId);\n } else {\n return this.nodeActionsService.moveNodeAction(node.entry, selectionParentId);\n }\n });\n\n return zip(...revertMoveBatch, of(null));\n })\n )\n .subscribe(\n () => {\n this.store.dispatch(new ReloadDocumentListAction());\n },\n (error) => {\n let message = 'APP.MESSAGES.ERRORS.GENERIC';\n\n let errorJson = null;\n try {\n errorJson = JSON.parse(error.message);\n } catch {}\n\n if (errorJson && errorJson.error && errorJson.error.statusCode === 403) {\n message = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n\n this.store.dispatch(new SnackbarErrorAction(message));\n }\n );\n }\n\n deleteNodes(items: MinimalNodeEntity[]): void {\n const batch: Observable<DeletedNodeInfo>[] = [];\n\n items.forEach((node) => {\n batch.push(this.deleteNode(node));\n });\n\n forkJoin(...batch).subscribe((data: DeletedNodeInfo[]) => {\n const status = this.processStatus(data);\n const message = this.getDeleteMessage(status);\n\n if (message && status.someSucceeded) {\n message.userAction = new SnackbarUserAction('APP.ACTIONS.UNDO', new UndoDeleteNodesAction([...status.success]));\n }\n\n this.store.dispatch(message);\n\n if (status.someSucceeded) {\n this.appHookService.nodesDeleted.next();\n this.store.dispatch(new ReloadDocumentListAction());\n }\n this.store.dispatch(new ShowLoaderAction(false));\n });\n }\n\n undoDeleteNodes(items: DeletedNodeInfo[]): void {\n const batch: Observable<DeletedNodeInfo>[] = [];\n\n items.forEach((item) => {\n batch.push(this.undoDeleteNode(item));\n });\n\n forkJoin(...batch).subscribe((data) => {\n const processedData = this.processStatus(data);\n\n if (processedData.fail.length) {\n const message = this.getUndoDeleteMessage(processedData);\n this.store.dispatch(message);\n }\n\n if (processedData.someSucceeded) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n });\n }\n\n private undoDeleteNode(item: DeletedNodeInfo): Observable<DeletedNodeInfo> {\n const { id, name } = item;\n\n return this.contentApi.restoreNode(id).pipe(\n map(() => ({\n id,\n name,\n status: 1\n })),\n catchError(() =>\n of({\n id,\n name,\n status: 0\n })\n )\n );\n }\n\n private getUndoDeleteMessage(status: DeleteStatus): SnackbarAction {\n if (status.someFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_RESTORE_PLURAL', { number: status.fail.length });\n }\n\n if (status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_RESTORE', {\n name: status.fail[0].name\n });\n }\n\n return null;\n }\n\n private restoreNode(node: MinimalNodeEntity): Observable<RestoredNode> {\n const { entry } = node;\n\n return this.contentApi.restoreNode(entry.id).pipe(\n map(() => ({\n status: 1,\n entry\n })),\n catchError((error) => {\n const { statusCode } = JSON.parse(error.message).error;\n\n return of({\n status: 0,\n statusCode,\n entry\n });\n })\n );\n }\n\n private purgeNodes(selection: NodeInfo[] = []) {\n if (!selection.length) {\n return;\n }\n\n const batch = selection.map((node) => this.purgeDeletedNode(node));\n\n forkJoin(batch).subscribe((purgedNodes) => {\n const status = this.processStatus(purgedNodes);\n\n if (status.success.length) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n const message = this.getPurgeMessage(status);\n if (message) {\n this.store.dispatch(message);\n }\n });\n }\n\n private purgeDeletedNode(node: NodeInfo): Observable<DeletedNodeInfo> {\n const { id, name } = node;\n\n return this.contentApi.purgeDeletedNode(id).pipe(\n map(() => ({\n status: 1,\n id,\n name\n })),\n catchError(() =>\n of({\n status: 0,\n id,\n name\n })\n )\n );\n }\n\n private processStatus(data: Array<{ status: number }> = []): DeleteStatus {\n const status = {\n fail: [],\n success: [],\n get someFailed() {\n return !!this.fail.length;\n },\n get someSucceeded() {\n return !!this.success.length;\n },\n get oneFailed() {\n return this.fail.length === 1;\n },\n get oneSucceeded() {\n return this.success.length === 1;\n },\n get allSucceeded() {\n return this.someSucceeded && !this.someFailed;\n },\n get allFailed() {\n return this.someFailed && !this.someSucceeded;\n },\n reset() {\n this.fail = [];\n this.success = [];\n }\n };\n\n return data.reduce((acc, node) => {\n if (node.status) {\n acc.success.push(node);\n } else {\n acc.fail.push(node);\n }\n\n return acc;\n }, status);\n }\n\n private getPurgeMessage(status: DeleteStatus): SnackbarAction {\n if (status.oneSucceeded && status.someFailed && !status.oneFailed) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PARTIAL_SINGULAR', {\n name: status.success[0].name,\n failed: status.fail.length\n });\n }\n\n if (status.someSucceeded && !status.oneSucceeded && status.someFailed) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PARTIAL_PLURAL', {\n number: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.SINGULAR', { name: status.success[0].name });\n }\n\n if (status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_PURGE.SINGULAR', { name: status.fail[0].name });\n }\n\n if (status.allSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PLURAL', { number: status.success.length });\n }\n\n if (status.allFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_PURGE.PLURAL', { number: status.fail.length });\n }\n\n return null;\n }\n\n private showRestoreNotification(status: DeleteStatus): void {\n const message = this.getRestoreMessage(status);\n\n if (message) {\n if (status.oneSucceeded && !status.someFailed) {\n const isSite = this.isSite(status.success[0].entry);\n const path: PathInfoEntity = status.success[0].entry.path;\n const parent = path.elements[path.elements.length - 1];\n const route = isSite ? ['/libraries', parent.id] : ['/personal-files', parent.id];\n\n let navigate;\n\n if (this.isLibraryContent(path)) {\n navigate = new NavigateToParentFolder(status.success[0]);\n } else {\n navigate = new NavigateRouteAction(route);\n }\n\n message.userAction = new SnackbarUserAction('APP.ACTIONS.VIEW', navigate);\n }\n\n this.store.dispatch(message);\n }\n }\n\n private isSite(entry: MinimalNodeEntryEntity): boolean {\n return entry.nodeType === 'st:site';\n }\n\n private isLibraryContent(path: PathInfoEntity): boolean {\n return path && path.elements.length >= 2 && path.elements[1].name === 'Sites';\n }\n\n private getRestoreMessage(status: DeleteStatus): SnackbarAction {\n if (status.someFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.PARTIAL_PLURAL', {\n number: status.fail.length\n });\n }\n\n if (status.oneFailed && status.fail[0].statusCode) {\n if (status.fail[0].statusCode === 409) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.NODE_EXISTS', {\n name: status.fail[0].entry.name\n });\n } else {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.GENERIC', {\n name: status.fail[0].entry.name\n });\n }\n }\n\n if (status.oneFailed && !status.fail[0].statusCode) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.LOCATION_MISSING', {\n name: status.fail[0].entry.name\n });\n }\n\n if (status.allSucceeded && !status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_RESTORE.PLURAL');\n }\n\n if (status.allSucceeded && status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_RESTORE.SINGULAR', {\n name: status.success[0].entry.name\n });\n }\n\n return null;\n }\n\n private diff(selection: any[], list: any[], fromList = true): any {\n const ids = selection.map((item) => item.entry.id);\n\n return list.filter((item) => {\n if (fromList) {\n return ids.includes(item.entry.id) ? item : null;\n } else {\n return !ids.includes(item.entry.id) ? item : null;\n }\n });\n }\n\n private deleteNode(node: any): Observable<DeletedNodeInfo> {\n const { name } = node.entry;\n const id = node.entry.nodeId || node.entry.id;\n\n return this.contentApi.deleteNode(id).pipe(\n map(() => ({\n id,\n name,\n status: 1\n })),\n catchError(() =>\n of({\n id,\n name,\n status: 0\n })\n )\n );\n }\n\n private getDeleteMessage(status: DeleteStatus): SnackbarAction {\n if (status.allFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_DELETION_PLURAL', { number: status.fail.length });\n }\n\n if (status.allSucceeded && !status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.NODE_DELETION.PLURAL', {\n number: status.success.length\n });\n }\n\n if (status.someFailed && status.someSucceeded && !status.oneSucceeded) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_PLURAL', {\n success: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.someFailed && status.oneSucceeded) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_SINGULAR', {\n success: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.oneFailed && !status.someSucceeded) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_DELETION', {\n name: status.fail[0].name\n });\n }\n\n if (status.oneSucceeded && !status.someFailed) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.NODE_DELETION.SINGULAR', { name: status.success[0].name });\n }\n\n return null;\n }\n\n private showMoveMessage(nodes: Array<MinimalNodeEntity>, info: any, moveResponse?: any) {\n const succeeded = moveResponse && moveResponse['succeeded'] ? moveResponse['succeeded'].length : 0;\n const partiallySucceeded = moveResponse && moveResponse['partiallySucceeded'] ? moveResponse['partiallySucceeded'].length : 0;\n const failures = moveResponse && moveResponse['failed'] ? moveResponse['failed'].length : 0;\n\n let successMessage = '';\n let partialSuccessMessage = '';\n let failedMessage = '';\n let errorMessage = '';\n\n if (typeof info === 'string') {\n // in case of success\n if (info.toLowerCase().indexOf('succes') !== -1) {\n const i18nMessageString = 'APP.MESSAGES.INFO.NODE_MOVE.';\n let i18MessageSuffix = '';\n\n if (succeeded) {\n i18MessageSuffix = succeeded === 1 ? 'SINGULAR' : 'PLURAL';\n successMessage = `${i18nMessageString}${i18MessageSuffix}`;\n }\n\n if (partiallySucceeded) {\n i18MessageSuffix = partiallySucceeded === 1 ? 'PARTIAL.SINGULAR' : 'PARTIAL.PLURAL';\n partialSuccessMessage = `${i18nMessageString}${i18MessageSuffix}`;\n }\n\n if (failures) {\n // if moving failed for ALL nodes, emit error\n if (failures === nodes.length) {\n const errors = this.nodeActionsService.flatten(moveResponse['failed']);\n errorMessage = this.getErrorMessage(errors[0]);\n } else {\n i18MessageSuffix = 'PARTIAL.FAIL';\n failedMessage = `${i18nMessageString}${i18MessageSuffix}`;\n }\n }\n } else {\n errorMessage = 'APP.MESSAGES.ERRORS.GENERIC';\n }\n } else {\n errorMessage = this.getErrorMessage(info);\n }\n\n const undo = succeeded + partiallySucceeded > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n failedMessage = errorMessage ? errorMessage : failedMessage;\n\n const beforePartialSuccessMessage = successMessage && partialSuccessMessage ? ' ' : '';\n const beforeFailedMessage = (successMessage || partialSuccessMessage) && failedMessage ? ' ' : '';\n\n const initialParentId = this.nodeActionsService.getEntryParentId(nodes[0].entry);\n\n const messages = this.translation.instant([successMessage, partialSuccessMessage, failedMessage], {\n success: succeeded,\n failed: failures,\n partially: partiallySucceeded\n });\n\n // TODO: review in terms of i18n\n this.notificationService\n .openSnackMessageAction(\n messages[successMessage] + beforePartialSuccessMessage + messages[partialSuccessMessage] + beforeFailedMessage + messages[failedMessage],\n undo,\n {\n panelClass: 'info-snackbar'\n }\n )\n .onAction()\n .subscribe(() => this.undoMoveNodes(moveResponse, initialParentId));\n }\n\n private focusAfterClose(focusedElementSelector: string): void {\n if (focusedElementSelector) {\n document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, take } from 'rxjs/operators';\nimport { AppStore, NodeActionTypes, AddFavoriteAction, RemoveFavoriteAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { ContentManagementService } from '../../services/content-management.service';\n\n@Injectable()\nexport class FavoriteEffects {\n constructor(private store: Store<AppStore>, private actions$: Actions, private content: ContentManagementService) {}\n\n addFavorite$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<AddFavoriteAction>(NodeActionTypes.AddFavorite),\n map((action) => {\n if (action.payload && action.payload.length > 0) {\n this.content.addFavorite(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.content.addFavorite(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n removeFavorite$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<RemoveFavoriteAction>(NodeActionTypes.RemoveFavorite),\n map((action) => {\n if (action.payload && action.payload.length > 0) {\n this.content.removeFavorite(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.content.removeFavorite(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport {\n AppStore,\n NodeActionTypes,\n PurgeDeletedNodesAction,\n DeleteNodesAction,\n UndoDeleteNodesAction,\n CreateFolderAction,\n EditFolderAction,\n RestoreDeletedNodesAction,\n ShareNodeAction,\n ManageVersionsAction,\n UnlockWriteAction,\n UnshareNodesAction,\n CopyNodesAction,\n MoveNodesAction,\n ManagePermissionsAction,\n PrintFileAction,\n getCurrentFolder,\n getAppSelection,\n ManageAspectsAction,\n NavigateRouteAction,\n ExpandInfoDrawerAction,\n ManageRulesAction,\n ShowLoaderAction\n} from '@alfresco/aca-shared/store';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { RenditionService } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class NodeEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private contentService: ContentManagementService,\n private renditionViewer: RenditionService\n ) {}\n\n shareNode$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ShareNodeAction>(NodeActionTypes.Share),\n map((action) => {\n if (action.payload) {\n this.contentService.shareNode(action.payload, action.configuration?.focusedElementOnCloseSelector);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.contentService.shareNode(selection.file, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n unshareNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UnshareNodesAction>(NodeActionTypes.Unshare),\n map((action) => {\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.unshareNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.unshareNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n purgeDeletedNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<PurgeDeletedNodesAction>(NodeActionTypes.PurgeDeleted),\n map((action) => {\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.purgeDeletedNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.count > 0) {\n this.contentService.purgeDeletedNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n restoreDeletedNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<RestoreDeletedNodesAction>(NodeActionTypes.RestoreDeleted),\n map((action) => {\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.restoreDeletedNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.count > 0) {\n this.contentService.restoreDeletedNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n deleteNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<DeleteNodesAction>(NodeActionTypes.Delete),\n map((action) => {\n this.store.dispatch(new ShowLoaderAction(true));\n if (action && action.payload && action.payload.length > 0) {\n this.contentService.deleteNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.count > 0) {\n this.contentService.deleteNodes(selection.nodes);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n undoDeleteNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UndoDeleteNodesAction>(NodeActionTypes.UndoDelete),\n map((action) => {\n if (action.payload.length > 0) {\n this.contentService.undoDeleteNodes(action.payload);\n }\n })\n ),\n { dispatch: false }\n );\n\n createFolder$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateFolderAction>(NodeActionTypes.CreateFolder),\n map((action) => {\n if (action.payload) {\n this.contentService.createFolder(action.payload);\n } else {\n this.store\n .select(getCurrentFolder)\n .pipe(take(1))\n .subscribe((node) => {\n if (node && node.id) {\n this.contentService.createFolder(node.id);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n editFolder$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<EditFolderAction>(NodeActionTypes.EditFolder),\n map((action) => {\n if (action.payload) {\n this.contentService.editFolder(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.folder) {\n this.contentService.editFolder(selection.folder, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n copyNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CopyNodesAction>(NodeActionTypes.Copy),\n map((action) => {\n if (action.payload?.length > 0) {\n this.contentService.copyNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.copyNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n moveNodes$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<MoveNodesAction>(NodeActionTypes.Move),\n map((action) => {\n if (action.payload?.length > 0) {\n this.contentService.moveNodes(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.moveNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n managePermissions$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManagePermissionsAction>(NodeActionTypes.ManagePermissions),\n map((action) => {\n if (action?.payload) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, action.payload.entry.id, 'permissions']));\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, selection.first.entry.id, 'permissions']));\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n expandInfoDrawer$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ExpandInfoDrawerAction>(NodeActionTypes.ExpandInfoDrawer),\n map((action) => {\n if (action?.payload) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, action.payload.entry.id]));\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n const route = 'personal-files/details';\n this.store.dispatch(new NavigateRouteAction([route, selection.first.entry.id]));\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n manageVersions$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManageVersionsAction>(NodeActionTypes.ManageVersions),\n map((action) => {\n if (action?.payload) {\n this.contentService.manageVersions(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.contentService.manageVersions(selection.file, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n printFile$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<PrintFileAction>(NodeActionTypes.PrintFile),\n map((action) => {\n if (action && action.payload) {\n this.printFile(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.printFile(selection.file);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n unlockWrite$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UnlockWriteAction>(NodeActionTypes.UnlockForWriting),\n map((action) => {\n if (action && action.payload) {\n this.contentService.unlockNode(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.file) {\n this.contentService.unlockNode(selection.file);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n aspectList$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManageAspectsAction>(NodeActionTypes.ChangeAspects),\n map((action) => {\n if (action?.payload) {\n this.contentService.manageAspects(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.contentService.manageAspects(selection.nodes[0], action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n printFile(node: any) {\n if (node && node.entry) {\n // shared and favorite\n const id = node.entry.nodeId || node.entry.guid || node.entry.id;\n const mimeType = node.entry.content.mimeType;\n\n if (id) {\n this.renditionViewer.printFileGeneric(id, mimeType);\n }\n }\n }\n\n manageRules$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ManageRulesAction>(NodeActionTypes.ManageRules),\n map((action) => {\n if (action?.payload) {\n this.store.dispatch(new NavigateRouteAction(['nodes', action.payload.entry.id, 'rules']));\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && !selection.isEmpty) {\n this.store.dispatch(new NavigateRouteAction(['nodes', selection.first.entry.id, 'rules']));\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, take, tap } from 'rxjs/operators';\nimport {\n AppStore,\n ViewerActionTypes,\n ViewFileAction,\n ViewNodeAction,\n getCurrentFolder,\n getAppSelection,\n FullscreenViewerAction,\n ViewNodeVersionAction,\n PluginPreviewAction\n} from '@alfresco/aca-shared/store';\nimport { Router, UrlTree, UrlSegmentGroup, PRIMARY_OUTLET, UrlSegment } from '@angular/router';\nimport { Store, createSelector } from '@ngrx/store';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { MatDialog } from '@angular/material/dialog';\n\nexport const fileToPreview = createSelector(getAppSelection, getCurrentFolder, (selection, folder) => ({\n selection,\n folder\n}));\n\n@Injectable()\nexport class ViewerEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private router: Router,\n private extensions: AppExtensionService,\n private dialog: MatDialog\n ) {}\n\n fullscreenViewer$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<FullscreenViewerAction>(ViewerActionTypes.FullScreen),\n map(() => {\n this.enterFullScreen();\n })\n ),\n { dispatch: false }\n );\n\n viewNode$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ViewNodeAction>(ViewerActionTypes.ViewNode),\n map((action) => {\n if (action.viewNodeExtras) {\n const { location, path } = action.viewNodeExtras;\n\n if (location) {\n const navigation = this.getNavigationCommands(location);\n\n this.router.navigate([...navigation, { outlets: { viewer: ['view', action.nodeId] } }], {\n queryParams: { location }\n });\n }\n\n if (path) {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId] } }], {\n queryParams: { path }\n });\n }\n } else {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId] } }]);\n }\n })\n ),\n { dispatch: false }\n );\n\n viewFile$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ViewFileAction>(ViewerActionTypes.ViewFile),\n map((action) => {\n if (action.payload && action.payload.entry) {\n const { id, nodeId, isFile } = action.payload.entry as any;\n\n if (this.extensions.canPreviewNode(action.payload) && (isFile || nodeId)) {\n this.displayPreview(nodeId || id, action.parentId);\n }\n } else {\n this.store\n .select(fileToPreview)\n .pipe(take(1))\n .subscribe((result) => {\n if (result.selection && result.selection.file) {\n const { id, nodeId, isFile } = result.selection.file.entry as any;\n\n if (this.extensions.canPreviewNode(action.payload) && (isFile || nodeId)) {\n const parentId = result.folder ? result.folder.id : null;\n this.displayPreview(nodeId || id, parentId);\n }\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n viewNodeVersion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ViewNodeVersionAction>(ViewerActionTypes.ViewNodeVersion),\n map((action) => {\n this.dialog.closeAll();\n if (action.viewNodeExtras) {\n const { location, path } = action.viewNodeExtras;\n if (location) {\n const navigation = this.getNavigationCommands(location);\n this.router.navigate([...navigation, { outlets: { viewer: ['view', action.nodeId, action.versionId] } }], {\n queryParams: { location }\n });\n }\n\n if (path) {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId, action.versionId] } }], {\n queryParams: { path }\n });\n }\n } else {\n this.router.navigate(['view', { outlets: { viewer: [action.nodeId, action.versionId] } }]);\n }\n })\n ),\n { dispatch: false }\n );\n\n pluginPreview$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<PluginPreviewAction>(ViewerActionTypes.PluginPreview),\n tap((action) => {\n this.router.navigate([\n action.pluginRoute,\n {\n outlets: {\n viewer: ['preview', action.nodeId]\n }\n }\n ]);\n })\n ),\n { dispatch: false }\n );\n\n private displayPreview(nodeId: string, parentId: string) {\n if (!nodeId) {\n return;\n }\n\n let previewLocation = this.router.url;\n if (previewLocation.lastIndexOf('/') > 0) {\n previewLocation = previewLocation.substring(0, this.router.url.indexOf('/', 1));\n }\n previewLocation = previewLocation.replace(/\\//g, '');\n\n const path = [previewLocation];\n if (parentId) {\n path.push(parentId);\n }\n path.push('preview', nodeId);\n this.router.navigateByUrl(path.join('/'));\n }\n\n enterFullScreen() {\n const container: any = document.documentElement.querySelector('.adf-viewer__fullscreen-container');\n if (container) {\n if (container.requestFullscreen) {\n container.requestFullscreen();\n } else if (container.webkitRequestFullscreen) {\n container.webkitRequestFullscreen();\n } else if (container.mozRequestFullScreen) {\n container.mozRequestFullScreen();\n } else if (container.msRequestFullscreen) {\n container.msRequestFullscreen();\n }\n }\n }\n\n private getNavigationCommands(url: string): any[] {\n const urlTree: UrlTree = this.router.parseUrl(url);\n const urlSegmentGroup: UrlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments: UrlSegment[] = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchNavigationService {\n private _previousRoute = '';\n\n get previousRoute(): string {\n return this._previousRoute;\n }\n\n constructor(private router: Router) {}\n\n saveRoute(route: string): void {\n this._previousRoute = route;\n }\n\n navigateBack(): void {\n if (this.previousRoute) {\n this.router.navigate([this.previousRoute]);\n } else {\n this.router.navigate(['/personal-files']);\n }\n }\n\n navigateToSearch(): void {\n this.saveRoute(this.router.url);\n this.router.navigate(['/search']);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { SearchAction, SearchActionTypes, SearchByTermAction, SearchOptionIds } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\nimport { SearchNavigationService } from '../../components/search/search-navigation.service';\n\n@Injectable()\nexport class SearchEffects {\n constructor(private actions$: Actions, private router: Router, private searchNavigationService: SearchNavigationService) {}\n\n search$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<SearchAction>(SearchActionTypes.Search),\n map(() => {\n this.searchNavigationService.navigateToSearch();\n })\n ),\n { dispatch: false }\n );\n\n searchByTerm$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<SearchByTermAction>(SearchActionTypes.SearchByTerm),\n map((action) => {\n const query = action.payload.replace(/[(]/g, '%28').replace(/[)]/g, '%29');\n\n const libItem = action.searchOptions.find((item) => item.id === SearchOptionIds.Libraries);\n const librarySelected = !!libItem && libItem.value;\n if (librarySelected) {\n this.router.navigateByUrl('/search-libraries;q=' + encodeURIComponent(query));\n } else {\n this.router.navigateByUrl('/search;q=' + encodeURIComponent(query));\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AppStore,\n CreateLibraryAction,\n DeleteLibraryAction,\n LeaveLibraryAction,\n LibraryActionTypes,\n NavigateLibraryAction,\n NavigateRouteAction,\n SnackbarErrorAction,\n UpdateLibraryAction,\n getAppSelection\n} from '@alfresco/aca-shared/store';\nimport { Injectable } from '@angular/core';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, take } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentManagementService } from '../../services/content-management.service';\n\n@Injectable()\nexport class LibraryEffects {\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private content: ContentManagementService,\n private contentApi: ContentApiService\n ) {}\n\n deleteLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<DeleteLibraryAction>(LibraryActionTypes.Delete),\n map((action) => {\n if (action.payload) {\n this.content.deleteLibrary(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.library) {\n this.content.deleteLibrary(selection.library.entry.id);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n leaveLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<LeaveLibraryAction>(LibraryActionTypes.Leave),\n map((action) => {\n if (action.payload) {\n this.content.leaveLibrary(action.payload);\n } else {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.library) {\n this.content.leaveLibrary(selection.library.entry.id, action.configuration?.focusedElementOnCloseSelector);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n\n createLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateLibraryAction>(LibraryActionTypes.Create),\n mergeMap(() => this.content.createLibrary()),\n map((libraryId) => new NavigateLibraryAction(libraryId))\n ),\n { dispatch: true }\n );\n\n navigateLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<NavigateLibraryAction>(LibraryActionTypes.Navigate),\n map((action) => {\n const libraryId = action.payload;\n if (libraryId) {\n this.contentApi\n .getNode(libraryId, { relativePath: '/documentLibrary' })\n .pipe(map((node) => node.entry.id))\n .subscribe(\n (id) => {\n const route = action.route ? action.route : 'libraries';\n this.store.dispatch(new NavigateRouteAction([route, id]));\n },\n () => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.MISSING_CONTENT'));\n }\n );\n }\n })\n ),\n { dispatch: false }\n );\n\n updateLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UpdateLibraryAction>(LibraryActionTypes.Update),\n map((action) => {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (selection && selection.library) {\n const { id } = selection.library.entry;\n const { title, description, visibility } = action.payload;\n\n const siteBody = {\n title,\n description,\n visibility\n };\n\n this.content.updateLibrary(id, siteBody);\n }\n });\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AppStore,\n SnackbarErrorAction,\n UnlockWriteAction,\n UploadActionTypes,\n UploadFilesAction,\n UploadFileVersionAction,\n UploadFolderAction,\n getCurrentFolder\n} from '@alfresco/aca-shared/store';\nimport { FileUtils } from '@alfresco/adf-core';\nimport { Injectable, NgZone, RendererFactory2 } from '@angular/core';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { of } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { UploadService, FileModel } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class UploadEffects {\n private readonly fileInput: HTMLInputElement;\n private readonly folderInput: HTMLInputElement;\n private readonly fileVersionInput: HTMLInputElement;\n private readonly uploadMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.upload\"]';\n\n constructor(\n private store: Store<AppStore>,\n private actions$: Actions,\n private ngZone: NgZone,\n private uploadService: UploadService,\n rendererFactory: RendererFactory2,\n private contentService: ContentManagementService\n ) {\n const renderer = rendererFactory.createRenderer(null, null);\n\n this.fileInput = renderer.createElement('input') as HTMLInputElement;\n this.fileInput.id = 'app-upload-files';\n this.fileInput.type = 'file';\n this.fileInput.style.display = 'none';\n this.fileInput.setAttribute('multiple', '');\n this.fileInput.addEventListener('change', (event) => this.upload(event));\n renderer.appendChild(document.body, this.fileInput);\n\n this.fileVersionInput = renderer.createElement('input') as HTMLInputElement;\n this.fileVersionInput.id = 'app-upload-file-version';\n this.fileVersionInput.type = 'file';\n this.fileVersionInput.style.display = 'none';\n this.fileVersionInput.addEventListener('change', () => {\n this.uploadVersion();\n });\n renderer.appendChild(document.body, this.fileVersionInput);\n\n this.folderInput = renderer.createElement('input') as HTMLInputElement;\n this.folderInput.id = 'app-upload-folder';\n this.folderInput.type = 'file';\n this.folderInput.style.display = 'none';\n this.folderInput.setAttribute('directory', '');\n this.folderInput.setAttribute('webkitdirectory', '');\n this.folderInput.addEventListener('change', (event) => this.upload(event));\n renderer.appendChild(document.body, this.folderInput);\n }\n\n uploadFiles$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UploadFilesAction>(UploadActionTypes.UploadFiles),\n map(() => {\n this.registerFocusingElementAfterModalClose(this.fileInput, this.uploadMenuButtonSelector);\n this.fileInput.click();\n })\n ),\n { dispatch: false }\n );\n\n uploadFolder$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UploadFolderAction>(UploadActionTypes.UploadFolder),\n map(() => {\n this.registerFocusingElementAfterModalClose(this.folderInput, this.uploadMenuButtonSelector);\n this.folderInput.click();\n })\n ),\n { dispatch: false }\n );\n\n uploadVersion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<UploadFileVersionAction>(UploadActionTypes.UploadFileVersion),\n map((action) => {\n if (action?.payload) {\n const node = action?.payload?.detail?.data?.node?.entry;\n const file: any = action?.payload?.detail?.files[0]?.file;\n this.contentService.versionUpdateDialog(node, file);\n } else if (!action?.payload) {\n this.registerFocusingElementAfterModalClose(this.fileVersionInput, action.configuration?.focusedElementOnCloseSelector);\n this.fileVersionInput.click();\n }\n })\n ),\n { dispatch: false }\n );\n\n uploadVersion() {\n this.contentService\n .getNodeInfo()\n .pipe(\n catchError(() => {\n this.store.dispatch(new SnackbarErrorAction('VERSION.ERROR.GENERIC'));\n return of(null);\n })\n )\n .subscribe((node: MinimalNodeEntryEntity) => {\n if (node) {\n this.contentService.versionUpdateDialog(node, this.fileVersionInput.files[0]);\n this.fileVersionInput.value = '';\n }\n });\n }\n\n private upload(event: any): void {\n this.store\n .select(getCurrentFolder)\n .pipe(take(1))\n .subscribe((node) => {\n if (node && node.id) {\n const input = event.currentTarget as HTMLInputElement;\n const files = FileUtils.toFileArray(input.files).map(\n (file: any) =>\n new FileModel(file, {\n parentId: node.id,\n path: (file.webkitRelativePath || '').replace(/\\/[^\\/]*$/, ''),\n nodeType: 'cm:content'\n })\n );\n\n this.uploadQueue(files);\n event.target.value = '';\n }\n });\n }\n\n private uploadQueue(files: FileModel[]) {\n if (files.length > 0) {\n this.ngZone.run(() => {\n this.uploadService.addToQueue(...files);\n this.uploadService.uploadFilesInTheQueue();\n });\n }\n }\n\n uploadAndUnlock(file: FileModel | null) {\n if (!file) {\n return;\n }\n\n this.ngZone.run(() => {\n this.uploadService.addToQueue(file);\n this.uploadService.uploadFilesInTheQueue();\n\n const subscription = this.uploadService.fileUploadComplete.subscribe((completed) => {\n if (\n file.data &&\n file.data.entry &&\n file.data.entry.properties &&\n file.data.entry.properties['cm:lockType'] === 'WRITE_LOCK' &&\n file.data.entry.id === completed.data.entry.id\n ) {\n this.store.dispatch(new UnlockWriteAction(completed.data));\n }\n\n subscription.unsubscribe();\n });\n });\n }\n\n private registerFocusingElementAfterModalClose(input: HTMLInputElement, focusedElementSelector: string): void {\n input.addEventListener(\n 'click',\n () => {\n window.addEventListener(\n 'focus',\n () => {\n const elementToFocus = document.querySelector<HTMLElement>(focusedElementSelector);\n elementToFocus.addEventListener('focus', () => elementToFocus.classList.add('cdk-program-focused'), {\n once: true\n });\n elementToFocus.focus();\n },\n {\n once: true\n }\n );\n },\n {\n once: true\n }\n );\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { Node } from '@alfresco/js-api';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl, ValidationErrors, ReactiveFormsModule } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { AppStore, CreateFromTemplate } from '@alfresco/aca-shared/store';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, MatDialogModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule],\n templateUrl: './create-from-template.dialog.html',\n styleUrls: ['./create-from-template.dialog.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CreateFromTemplateDialogComponent implements OnInit {\n public form: UntypedFormGroup;\n\n title = '';\n\n constructor(\n private translationService: TranslationService,\n private store: Store<AppStore>,\n private formBuilder: UntypedFormBuilder,\n private dialogRef: MatDialogRef<CreateFromTemplateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: Node\n ) {}\n\n ngOnInit() {\n this.form = this.formBuilder.group({\n name: [this.data.name, [Validators.required, this.forbidEndingDot, this.forbidOnlySpaces, this.forbidSpecialCharacters]],\n title: [this.data.properties ? this.data.properties['cm:title'] : '', Validators.maxLength(256)],\n description: [this.data.properties ? this.data.properties['cm:description'] : '', Validators.maxLength(512)]\n });\n\n this.title = this.translationService.instant(\n this.data.isFolder ? 'NODE_FROM_TEMPLATE.FOLDER_DIALOG_TITLE' : 'NODE_FROM_TEMPLATE.FILE_DIALOG_TITLE',\n { template: this.data.name }\n );\n }\n\n onSubmit() {\n const update = {\n name: this.form.value.name.trim(),\n properties: {\n 'cm:title': this.form.value.title,\n 'cm:description': this.form.value.description\n }\n };\n const data: Node = Object.assign({}, this.data, update);\n this.store.dispatch(new CreateFromTemplate(data));\n }\n\n close() {\n this.dialogRef.close();\n }\n\n private forbidSpecialCharacters({ value }: UntypedFormControl): ValidationErrors | null {\n const specialCharacters = /([\\*\\\"\\<\\>\\\\\\/\\?\\:\\|])/;\n const isValid = !specialCharacters.test(value);\n\n return isValid\n ? null\n : {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.SPECIAL_CHARACTERS`\n };\n }\n\n private forbidEndingDot({ value }: UntypedFormControl): ValidationErrors | null {\n const isValid: boolean = (value || '').trim().split('').pop() !== '.';\n\n return isValid\n ? null\n : {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.ENDING_DOT`\n };\n }\n\n private forbidOnlySpaces({ value }: UntypedFormControl): ValidationErrors | null {\n if (value.length) {\n const isValid = !!(value || '').trim();\n\n return isValid\n ? null\n : {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.ONLY_SPACES`\n };\n } else {\n return {\n message: `NODE_FROM_TEMPLATE.FORM.ERRORS.REQUIRED`\n };\n }\n }\n}\n","<h2 mat-dialog-title [innerHTML]=\"title\"></h2>\n<div mat-dialog-content>\n <form [formGroup]=\"form\" novalidate>\n <mat-form-field class=\"adf-full-width\">\n <input\n cdkFocusInitial\n placeholder=\"{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.NAME' | translate }}\"\n matInput\n formControlName=\"name\"\n required\n />\n\n <mat-error *ngIf=\"form.controls['name'].errors?.message\">\n {{ form.controls['name'].errors?.message | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <input\n placeholder=\"{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.TITLE' | translate }}\"\n matInput\n formControlName=\"title\"\n />\n\n <mat-error *ngIf=\"form.controls['title'].hasError('maxlength')\">\n {{ 'NODE_FROM_TEMPLATE.FORM.ERRORS.TITLE_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <textarea\n matInput\n placeholder=\"{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.DESCRIPTION' | translate }}\"\n rows=\"2\"\n formControlName=\"description\"\n ></textarea>\n\n <mat-error *ngIf=\"form.controls['description'].hasError('maxlength')\">\n {{ 'NODE_FROM_TEMPLATE.FORM.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n </form>\n</div>\n<div mat-dialog-actions>\n <button mat-button mat-dialog-close>\n {{ 'NODE_FROM_TEMPLATE.CANCEL' | translate }}\n </button>\n <button\n class=\"create\"\n [disabled]=\"form.invalid\"\n mat-button\n (click)=\"onSubmit()\"\n >\n {{ 'NODE_FROM_TEMPLATE.CREATE' | translate }}\n </button>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { CreateFromTemplateDialogComponent } from '../dialogs/node-template/create-from-template.dialog';\nimport { Subject, from, of } from 'rxjs';\nimport { Node, MinimalNode, MinimalNodeEntryEntity, ResultNode, PathElement, SearchApi } from '@alfresco/js-api';\nimport { AlfrescoApiService, TranslationService } from '@alfresco/adf-core';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { AppStore, SnackbarErrorAction } from '@alfresco/aca-shared/store';\nimport { ContentNodeSelectorComponent, ContentNodeSelectorComponentData, ShareDataRow, NodeAction } from '@alfresco/adf-content-services';\n\nexport interface TemplateDialogConfig {\n primaryPathName: string;\n selectionType: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodeTemplateService {\n private currentTemplateConfig: TemplateDialogConfig = null;\n private rootNode: ResultNode;\n\n _searchApi: SearchApi;\n get searchApi(): SearchApi {\n this._searchApi = this._searchApi ?? new SearchApi(this.alfrescoApiService.getInstance());\n return this._searchApi;\n }\n\n constructor(\n private store: Store<AppStore>,\n private alfrescoApiService: AlfrescoApiService,\n private translation: TranslationService,\n public dialog: MatDialog\n ) {}\n\n selectTemplateDialog(config: TemplateDialogConfig): Subject<Node[]> {\n this.currentTemplateConfig = config;\n\n const select = new Subject<Node[]>();\n select.subscribe({\n complete: this.close.bind(this)\n });\n\n const data: ContentNodeSelectorComponentData = {\n selectionMode: 'single',\n title: this.title(config.selectionType),\n actionName: NodeAction.NEXT,\n dropdownHideMyFiles: true,\n currentFolderId: null,\n dropdownSiteList: null,\n breadcrumbTransform: this.transformNode.bind(this),\n select,\n showSearch: false,\n showDropdownSiteList: false,\n isSelectionValid: this.isSelectionValid.bind(this),\n rowFilter: this.rowFilter.bind(this)\n };\n\n const query = {\n query: {\n query: `PATH:\"//${config.primaryPathName}\"`,\n language: 'afts'\n },\n include: ['path', 'properties', 'allowableOperations', 'permissions']\n };\n\n from(this.searchApi.search(query))\n .pipe(\n switchMap((response) => {\n const entry = response.list.entries[0].entry;\n this.rootNode = entry;\n data.currentFolderId = entry.id;\n\n return this.dialog\n .open(ContentNodeSelectorComponent, {\n data,\n panelClass: ['adf-content-node-selector-dialog', 'aca-template-node-selector-dialog'],\n width: '630px'\n })\n .afterClosed();\n }),\n catchError((error) => {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.GENERIC'));\n return of(error);\n })\n )\n .subscribe({ next: () => select.complete() });\n\n return select;\n }\n\n createTemplateDialog(node: Node): MatDialogRef<CreateFromTemplateDialogComponent> {\n const dialog = this.dialog.open(CreateFromTemplateDialogComponent, {\n data: node,\n panelClass: 'aca-create-from-template-dialog',\n width: '630px'\n });\n dialog.afterClosed().subscribe(() => NodeTemplateService.focusCreateMenuButton());\n return dialog;\n }\n\n private transformNode(node: MinimalNode): MinimalNode {\n if (node && node.path && node.path && node.path.elements instanceof Array) {\n node.path.elements = this.getPathElements(node);\n }\n return node;\n }\n\n private isSelectionValid(node: Node): boolean {\n if (!node.path.elements.length) {\n return false;\n }\n\n if (this.currentTemplateConfig.selectionType === 'folder') {\n return node.isFolder;\n }\n\n return node.isFile;\n }\n\n private close() {\n this.dialog.closeAll();\n NodeTemplateService.focusCreateMenuButton();\n }\n\n private title(selectionType: string) {\n if (selectionType === 'file') {\n return this.translation.instant('NODE_SELECTOR.SELECT_FILE_TEMPLATE_TITLE');\n }\n\n return this.translation.instant('NODE_SELECTOR.SELECT_FOLDER_TEMPLATE_TITLE');\n }\n\n private rowFilter(row: ShareDataRow): boolean {\n const node: MinimalNodeEntryEntity = row.node.entry;\n return node.nodeType !== 'app:filelink' && node.nodeType !== 'app:folderlink';\n }\n\n private getPathElements(node: Node): PathElement[] {\n return node.path.elements.filter((pathElement) => !this.rootNode.path.elements.some((rootPathElement) => pathElement.id === rootPathElement.id));\n }\n\n private static focusCreateMenuButton(): void {\n document.querySelector<HTMLElement>('app-toolbar-menu button[id=\"app.toolbar.create\"]').focus();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { map, switchMap, debounceTime, take, catchError } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport {\n FileFromTemplate,\n FolderFromTemplate,\n CreateFromTemplate,\n CreateFromTemplateSuccess,\n TemplateActionTypes,\n getCurrentFolder,\n AppStore,\n SnackbarErrorAction\n} from '@alfresco/aca-shared/store';\nimport { NodeTemplateService, TemplateDialogConfig } from '../../services/node-template.service';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { from, Observable, of } from 'rxjs';\nimport { NodeEntry, NodeBodyUpdate, Node, NodesApi } from '@alfresco/js-api';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable()\nexport class TemplateEffects {\n private _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n return this._nodesApi;\n }\n\n constructor(\n private matDialog: MatDialog,\n private appHookService: AppHookService,\n private store: Store<AppStore>,\n private apiService: AlfrescoApiService,\n private actions$: Actions,\n private nodeTemplateService: NodeTemplateService\n ) {}\n\n fileFromTemplate$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<FileFromTemplate>(TemplateActionTypes.FileFromTemplate),\n map(() => {\n this.openDialog({\n primaryPathName: 'app:node_templates',\n selectionType: 'file'\n });\n })\n ),\n { dispatch: false }\n );\n\n folderFromTemplate$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<FolderFromTemplate>(TemplateActionTypes.FolderFromTemplate),\n map(() =>\n this.openDialog({\n primaryPathName: 'app:space_templates',\n selectionType: 'folder'\n })\n )\n ),\n { dispatch: false }\n );\n\n createFromTemplate$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateFromTemplate>(TemplateActionTypes.CreateFromTemplate),\n map((action) => {\n this.store\n .select(getCurrentFolder)\n .pipe(\n switchMap((folder) => this.copyNode(action.payload, folder.id)),\n take(1)\n )\n .subscribe((node: NodeEntry | null) => {\n if (node) {\n this.store.dispatch(new CreateFromTemplateSuccess(node.entry));\n }\n });\n })\n ),\n { dispatch: false }\n );\n\n createFromTemplateSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<CreateFromTemplateSuccess>(TemplateActionTypes.CreateFromTemplateSuccess),\n map((payload) => {\n this.matDialog.closeAll();\n this.appHookService.reload.next(payload.node);\n })\n ),\n { dispatch: false }\n );\n\n private openDialog(config: TemplateDialogConfig) {\n this.nodeTemplateService\n .selectTemplateDialog(config)\n .pipe(debounceTime(300))\n .subscribe(([node]) => this.nodeTemplateService.createTemplateDialog(node));\n }\n\n private copyNode(source: Node, parentId: string): Observable<NodeEntry> {\n return from(\n this.nodesApi.copyNode(source.id, {\n targetParentId: parentId,\n name: source.name\n })\n ).pipe(\n switchMap((node) =>\n this.updateNode(node, {\n properties: {\n 'cm:title': source.properties['cm:title'],\n 'cm:description': source.properties['cm:description']\n }\n })\n ),\n catchError((error) => this.handleError(error))\n );\n }\n\n private updateNode(node: NodeEntry, update: NodeBodyUpdate): Observable<NodeEntry> {\n return from(this.nodesApi.updateNode(node.entry.id, update)).pipe(catchError(() => of(node)));\n }\n\n private handleError(error: Error): Observable<null> {\n let statusCode: number;\n\n try {\n statusCode = JSON.parse(error.message).error.statusCode;\n } catch (e) {\n statusCode = null;\n }\n\n if (statusCode !== 409) {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.GENERIC'));\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.MESSAGES.ERRORS.CONFLICT'));\n }\n\n return of(null);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class ContextMenuOverlayRef {\n constructor(private overlayRef: OverlayRef) {}\n\n close(): void {\n this.overlayRef.dispose();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const CONTEXT_MENU_DIRECTION = new InjectionToken('CONTEXT_MENU_DIRECTION', {\n providedIn: 'root',\n factory: () => 'ltr'\n});\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef, ExtensionsModule } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconModule } from '@alfresco/adf-core';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, MatMenuModule, IconModule, MatDividerModule, ExtensionsModule],\n selector: 'app-context-menu-item',\n templateUrl: './context-menu-item.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-context-menu-item' }\n})\nexport class ContextMenuItemComponent {\n @Input()\n actionRef: ContentActionRef;\n\n constructor(private extensions: AppExtensionService) {}\n\n runAction() {\n if (this.hasClickAction(this.actionRef)) {\n this.extensions.runActionById(this.actionRef.actions.click);\n }\n }\n\n private hasClickAction(actionRef: ContentActionRef): boolean {\n return !!(actionRef && actionRef.actions && actionRef.actions.click);\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","<div class=\"aca-context-menu\">\n <ng-container [ngSwitch]=\"actionRef.type\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <button mat-menu-item [id]=\"actionRef.id\" [matMenuTriggerFor]=\"childMenu\">\n <adf-icon [value]=\"actionRef.icon\"></adf-icon>\n <span>{{ actionRef.title | translate }}</span>\n </button>\n\n <mat-menu #childMenu=\"matMenu\">\n <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n <app-context-menu-item [actionRef]=\"child\"></app-context-menu-item>\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <mat-divider></mat-divider>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\"></adf-dynamic-component>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button mat-menu-item color=\"primary\" [id]=\"actionRef.id\" (click)=\"runAction()\">\n <adf-icon [value]=\"actionRef.icon\"></adf-icon>\n <span>{{ actionRef.title | translate }}</span>\n </button>\n </ng-container>\n </ng-container>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n standalone: true,\n selector: '[acaContextMenuOutsideEvent]'\n})\nexport class OutsideEventDirective implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n @Output()\n clickOutside: EventEmitter<null> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {\n this.subscriptions = this.subscriptions.concat([\n fromEvent(document.body, 'click')\n .pipe(filter((event) => !this.findAncestor(event.target as Element)))\n .subscribe(() => this.clickOutside.next())\n ]);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions = [];\n }\n\n private findAncestor(el: Element): boolean {\n const className = 'aca-context-menu';\n\n if (el.classList.contains(className)) {\n return true;\n }\n // eslint-disable-next-line curly\n while ((el = el.parentElement) && !el.classList.contains(className));\n return !!el;\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, OnDestroy, HostListener, ViewChild, AfterViewInit, Inject } from '@angular/core';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ContentActionRef, ExtensionsModule } from '@alfresco/adf-extensions';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\nimport { Direction } from '@angular/cdk/bidi';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconModule } from '@alfresco/adf-core';\nimport { ContextMenuItemComponent } from './context-menu-item.component';\nimport { OutsideEventDirective } from './context-menu-outside-event.directive';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatMenuModule,\n MatDividerModule,\n IconModule,\n ContextMenuItemComponent,\n ExtensionsModule,\n OutsideEventDirective\n ],\n selector: 'aca-context-menu',\n templateUrl: './context-menu.component.html',\n host: {\n class: 'aca-context-menu-holder'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class ContextMenuComponent implements OnInit, OnDestroy, AfterViewInit {\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n actions: Array<ContentActionRef> = [];\n\n @ViewChild(MatMenuTrigger)\n trigger: MatMenuTrigger;\n\n @HostListener('document:keydown.Escape', ['$event'])\n handleKeydownEscape(event: KeyboardEvent) {\n if (event) {\n if (this.contextMenuOverlayRef) {\n this.contextMenuOverlayRef.close();\n }\n }\n }\n\n constructor(\n private contextMenuOverlayRef: ContextMenuOverlayRef,\n private extensions: AppExtensionService,\n @Inject(CONTEXT_MENU_DIRECTION) public direction: Direction\n ) {}\n\n onClickOutsideEvent() {\n if (this.contextMenuOverlayRef) {\n this.contextMenuOverlayRef.close();\n }\n }\n\n runAction(contentActionRef: ContentActionRef) {\n this.extensions.runActionById(contentActionRef.actions.click, {\n focusedElementOnCloseSelector: '.adf-context-menu-source'\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n ngOnInit() {\n this.extensions\n .getAllowedContextMenuActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => (this.actions = actions));\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.trigger.openMenu(), 0);\n }\n\n trackByActionId(_: number, obj: ContentActionRef): string {\n return obj.id;\n }\n}\n","<div [dir]=\"direction\">\n <div style=\"visibility: hidden;\" [matMenuTriggerFor]=\"rootMenu\"></div>\n\n <mat-menu #rootMenu=\"matMenu\" class=\"aca-context-menu\" hasBackdrop=\"false\" acaContextMenuOutsideEvent (clickOutside)=\"onClickOutsideEvent()\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\" [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchDefault>\n <button mat-menu-item [id]=\"entry.id\" (click)=\"runAction(entry)\">\n <adf-icon [value]=\"entry.icon\"></adf-icon>\n <span>{{ entry.title | translate }}</span>\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <mat-divider></mat-divider>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'menu'\">\n <button mat-menu-item [id]=\"entry.id\" [matMenuTriggerFor]=\"childMenu\">\n <adf-icon [value]=\"entry.icon\"></adf-icon>\n <span>{{ entry.title | translate }}</span>\n </button>\n\n <mat-menu #childMenu=\"matMenu\">\n <ng-container *ngFor=\"let child of entry.children; trackBy: trackByActionId\">\n <app-context-menu-item [actionRef]=\"child\"></app-context-menu-item>\n </ng-container>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <adf-dynamic-component [data]=\"entry.data\" [id]=\"entry.component\"></adf-dynamic-component>\n </ng-container>\n </ng-container>\n </mat-menu>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ComponentRef, Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { ContextMenuComponent } from './context-menu.component';\nimport { ContextmenuOverlayConfig } from './interfaces';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextMenuService {\n private direction: Directionality;\n\n constructor(private injector: Injector, private overlay: Overlay, private userPreferenceService: UserPreferencesService) {\n this.userPreferenceService.select('textOrientation').subscribe((textOrientation) => {\n this.direction = textOrientation;\n });\n }\n\n open(config: ContextmenuOverlayConfig): ContextMenuOverlayRef {\n const overlay = this.createOverlay(config);\n const overlayRef = new ContextMenuOverlayRef(overlay);\n\n this.attachDialogContainer(overlay, overlayRef);\n\n return overlayRef;\n }\n\n private createOverlay(config: ContextmenuOverlayConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(overlay: OverlayRef, contextmenuOverlayRef: ContextMenuOverlayRef): ContextMenuComponent {\n const injector = this.createInjector(contextmenuOverlayRef);\n\n const containerPortal = new ComponentPortal(ContextMenuComponent, null, injector);\n const containerRef: ComponentRef<ContextMenuComponent> = overlay.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createInjector(contextmenuOverlayRef: ContextMenuOverlayRef): Injector {\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(ContextMenuOverlayRef, contextmenuOverlayRef);\n injectionTokens.set(CONTEXT_MENU_DIRECTION, this.direction);\n\n return Injector.create({\n parent: this.injector,\n providers: [\n { provide: ContextMenuOverlayRef, useValue: contextmenuOverlayRef },\n { provide: CONTEXT_MENU_DIRECTION, useValue: this.direction }\n ]\n });\n }\n\n private getOverlayConfig(config: ContextmenuOverlayConfig): OverlayConfig {\n const { x, y } = config.source;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo({ x, y })\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n ]);\n\n return new OverlayConfig({\n hasBackdrop: config.hasBackdrop,\n backdropClass: config.backdropClass,\n panelClass: config.panelClass,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n positionStrategy,\n direction: this.direction\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContextMenuActionTypes, ContextMenu } from '@alfresco/aca-shared/store';\nimport { Injectable } from '@angular/core';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\nimport { map } from 'rxjs/operators';\nimport { ContextMenuOverlayRef } from '../../components/context-menu/context-menu-overlay';\nimport { ContextMenuService } from '../../components/context-menu/context-menu.service';\n\n@Injectable()\nexport class ContextMenuEffects {\n private overlayRef: ContextMenuOverlayRef = null;\n\n constructor(private contextMenuService: ContextMenuService, private actions$: Actions) {}\n\n contextMenu$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ContextMenu>(ContextMenuActionTypes.ContextMenu),\n map((action) => {\n if (this.overlayRef) {\n this.overlayRef.close();\n }\n\n this.overlayRef = this.contextMenuService.open({\n source: action.event,\n hasBackdrop: false,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'cdk-overlay-pane'\n });\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './effects/app.effects';\nexport * from './effects/download.effects';\nexport * from './effects/favorite.effects';\nexport * from './effects/node.effects';\nexport * from './effects/viewer.effects';\nexport * from './effects/search.effects';\nexport * from './effects/library.effects';\nexport * from './effects/upload.effects';\nexport * from './effects/upload.effects';\nexport * from './effects/template.effects';\nexport * from './effects/contextmenu.effects';\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { StoreModule } from '@ngrx/store';\nimport { appReducer } from './reducers/app.reducer';\nimport { StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';\nimport { EffectsModule } from '@ngrx/effects';\nimport { SharedStoreModule } from '@alfresco/aca-shared/store';\nimport {\n AppEffects,\n NodeEffects,\n DownloadEffects,\n ViewerEffects,\n SearchEffects,\n LibraryEffects,\n UploadEffects,\n FavoriteEffects,\n TemplateEffects,\n ContextMenuEffects\n} from './effects';\nimport { INITIAL_STATE } from './initial-state';\n\n@NgModule({\n imports: [\n StoreModule.forRoot(\n { app: appReducer },\n {\n initialState: INITIAL_STATE,\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false\n }\n }\n ),\n StoreRouterConnectingModule.forRoot({\n serializer: FullRouterStateSerializer,\n stateKey: 'router'\n }),\n SharedStoreModule,\n EffectsModule.forRoot([\n AppEffects,\n NodeEffects,\n DownloadEffects,\n ViewerEffects,\n SearchEffects,\n LibraryEffects,\n UploadEffects,\n FavoriteEffects,\n TemplateEffects,\n ContextMenuEffects\n ])\n ]\n})\nexport class AppStoreModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatCardModule } from '@angular/material/card';\n\n@NgModule({\n imports: [MatMenuModule, MatIconModule, MatButtonModule, MatDialogModule, MatInputModule, MatSnackBarModule, MatProgressBarModule, MatCardModule],\n exports: [MatMenuModule, MatIconModule, MatButtonModule, MatDialogModule, MatInputModule, MatSnackBarModule, MatProgressBarModule, MatCardModule],\n providers: [\n {\n provide: MAT_DIALOG_DEFAULT_OPTIONS,\n useValue: { closeOnNavigation: true, hasBackdrop: true, autoFocus: true }\n }\n ]\n})\nexport class MaterialModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { take } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentServiceExtensionService {\n constructor(private appConfigService: AppConfigService) {\n this.updateContentServiceAvailability();\n }\n\n updateContentServiceAvailability() {\n this.appConfigService.onLoad.pipe(take(1)).subscribe((config) => {\n if (config.plugins && config.plugins.contentService === false) {\n this.disableContentServices();\n } else {\n this.enableContentServices();\n }\n });\n }\n\n private disableContentServices() {\n if (localStorage) {\n localStorage.setItem('contentService', 'false');\n }\n }\n\n private enableContentServices() {\n if (localStorage && localStorage.getItem('contentService') === 'false') {\n localStorage.setItem('contentService', 'true');\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CoreModule } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { ContentServiceExtensionService } from '../services/content-service-extension.service';\n\nexport function setupExtensions(service: AppExtensionService): () => void {\n return () => service.load();\n}\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), ExtensionsModule]\n})\nexport class CoreExtensionsModule {\n static forRoot(): ModuleWithProviders<CoreExtensionsModule> {\n return {\n ngModule: CoreExtensionsModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: setupExtensions,\n deps: [AppExtensionService, ContentServiceExtensionService],\n multi: true\n }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<CoreExtensionsModule> {\n return {\n ngModule: CoreExtensionsModule\n };\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { NodePermissionService, isLocked } from '@alfresco/aca-shared';\nimport { MatCardModule } from '@angular/material/card';\nimport { NodeCommentsModule } from '@alfresco/adf-content-services';\n\n@Component({\n standalone: true,\n imports: [MatCardModule, NodeCommentsModule],\n selector: 'app-comments-tab',\n template: `<mat-card><adf-node-comments [readOnly]=\"!canUpdateNode\" [nodeId]=\"node?.id\"></adf-node-comments></mat-card>`,\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentsTabComponent implements OnInit {\n @Input()\n node: MinimalNodeEntryEntity;\n\n canUpdateNode = false;\n\n constructor(private permission: NodePermissionService) {}\n\n ngOnInit(): void {\n if (!this.node) {\n this.canUpdateNode = false;\n }\n if (this.node.isFolder || (this.node.isFile && !isLocked({ entry: this.node }))) {\n this.canUpdateNode = this.permission.check(this.node, ['update']);\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { NodePermissionService, isLocked, AppExtensionService } from '@alfresco/aca-shared';\nimport { AppStore, infoDrawerMetadataAspect } from '@alfresco/aca-shared/store';\nimport { AppConfigService, NotificationService } from '@alfresco/adf-core';\nimport { Observable, Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ContentMetadataModule, ContentMetadataService } from '@alfresco/adf-content-services';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [CommonModule, ContentMetadataModule],\n selector: 'app-metadata-tab',\n template: `\n <adf-content-metadata-card [readOnly]=\"!canUpdateNode\" [preset]=\"'custom'\" [node]=\"node\" [displayAspect]=\"displayAspect$ | async\">\n </adf-content-metadata-card>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-metadata-tab' }\n})\nexport class MetadataTabComponent implements OnInit, OnDestroy {\n protected onDestroy$ = new Subject<boolean>();\n\n @Input()\n node: MinimalNodeEntryEntity;\n\n displayAspect$: Observable<string>;\n\n canUpdateNode = false;\n\n constructor(\n private permission: NodePermissionService,\n protected extensions: AppExtensionService,\n private appConfig: AppConfigService,\n private store: Store<AppStore>,\n private notificationService: NotificationService,\n private contentMetadataService: ContentMetadataService\n ) {\n if (this.extensions.contentMetadata) {\n this.appConfig.config['content-metadata'].presets = this.extensions.contentMetadata.presets;\n }\n this.displayAspect$ = this.store.select(infoDrawerMetadataAspect);\n }\n\n ngOnInit() {\n this.contentMetadataService.error.pipe(takeUntil(this.onDestroy$)).subscribe((err: { message: string }) => {\n this.notificationService.showError(err.message);\n });\n if (this.node && !isLocked({ entry: this.node })) {\n this.canUpdateNode = this.permission.check(this.node, ['update']);\n }\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, Validators, FormGroupDirective, NgForm, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { QueriesApi, SiteEntry, SitePaging } from '@alfresco/js-api';\nimport { Store } from '@ngrx/store';\nimport { AppStore, UpdateLibraryAction } from '@alfresco/aca-shared/store';\nimport { debounceTime, mergeMap, takeUntil } from 'rxjs/operators';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { Observable, from, Subject } from 'rxjs';\nimport { ErrorStateMatcher, MatOptionModule } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MatButtonModule } from '@angular/material/button';\n\nexport class InstantErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const isSubmitted = form && form.submitted;\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\n }\n}\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n TranslateModule,\n MatFormFieldModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatOptionModule,\n MatInputModule,\n A11yModule,\n MatButtonModule\n ],\n selector: 'app-library-metadata-form',\n templateUrl: './library-metadata-form.component.html',\n styleUrls: ['./library-metadata-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LibraryMetadataFormComponent implements OnInit, OnChanges, OnDestroy {\n private _queriesApi: QueriesApi;\n get queriesApi(): QueriesApi {\n this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n return this._queriesApi;\n }\n\n @Input()\n node: SiteEntry;\n\n edit: boolean;\n libraryTitleExists = false;\n\n libraryType = [\n { value: 'PUBLIC', label: 'LIBRARY.VISIBILITY.PUBLIC' },\n { value: 'PRIVATE', label: 'LIBRARY.VISIBILITY.PRIVATE' },\n { value: 'MODERATED', label: 'LIBRARY.VISIBILITY.MODERATED' }\n ];\n\n form: UntypedFormGroup = new UntypedFormGroup({\n id: new UntypedFormControl({ value: '', disabled: true }),\n title: new UntypedFormControl({ value: '' }, [Validators.required, Validators.maxLength(256)]),\n description: new UntypedFormControl({ value: '' }, [Validators.maxLength(512)]),\n visibility: new UntypedFormControl(this.libraryType[0].value)\n });\n\n matcher = new InstantErrorStateMatcher();\n canUpdateLibrary = false;\n visibilityLabel = '';\n\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private alfrescoApiService: AlfrescoApiService, protected store: Store<AppStore>) {}\n getVisibilityLabel(value: string) {\n return this.libraryType.find((type) => type.value === value).label;\n }\n\n toggleEdit() {\n this.edit = !this.edit;\n }\n\n cancel() {\n this.updateForm(this.node);\n this.toggleEdit();\n }\n\n ngOnInit() {\n this.updateForm(this.node);\n\n this.form.controls['title'].valueChanges\n .pipe(\n debounceTime(300),\n mergeMap((title) => this.findLibraryByTitle(title)),\n takeUntil(this.onDestroy$)\n )\n .subscribe((result) => {\n const { entries } = result.list;\n\n if (entries.length) {\n if (this.form.controls.title.value === this.node.entry.title) {\n this.libraryTitleExists = false;\n } else {\n this.libraryTitleExists = this.form.controls.title.value === entries[0].entry.title;\n }\n } else {\n this.libraryTitleExists = false;\n }\n });\n this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager';\n this.visibilityLabel = this.libraryType.find((type) => type.value === this.form.controls['visibility'].value).label;\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n ngOnChanges() {\n this.updateForm(this.node);\n }\n\n update() {\n if (this.canUpdateLibrary && this.form.valid) {\n this.store.dispatch(new UpdateLibraryAction(this.form.value));\n }\n }\n\n private updateForm(node: SiteEntry) {\n const { entry } = node;\n\n this.form.setValue({\n id: entry.id,\n title: entry.title,\n description: entry.description || '',\n visibility: entry.visibility\n });\n }\n\n private findLibraryByTitle(libraryTitle: string): Observable<SitePaging | { list: { entries: any[] } }> {\n return from(\n this.queriesApi\n .findSites(libraryTitle, {\n maxItems: 1,\n fields: ['title']\n })\n .catch(() => ({ list: { entries: [] } }))\n );\n }\n}\n","<mat-card *ngIf=\"node\">\n <mat-card-content *ngIf=\"!edit\">\n <div class=\"mat-form-field mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ form.controls.title.value }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mat-form-field mat-primary mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ form.controls.id.value }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mat-form-field mat-primary mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.VISIBILITY' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ visibilityLabel | translate }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mat-form-field mat-primary mat-form-field-type-mat-input mat-form-field-can-float mat-form-field-should-float adf-full-width\">\n <div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\">\n <div class=\"mat-form-field-infix\">\n <span class=\"mat-form-field-label-wrapper\">\n <span class=\"mat-form-field-label\">\n {{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}\n </span>\n </span>\n\n <span class=\"mat-input-element\">\n {{ form.controls.description?.value }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions align=\"end\" *ngIf=\"!edit && canUpdateLibrary\">\n <button mat-button color=\"primary\" (click)=\"toggleEdit()\">\n {{ 'LIBRARY.DIALOG.EDIT' | translate }}\n </button>\n </mat-card-actions>\n\n <mat-card-content *ngIf=\"edit\">\n <form [formGroup]=\"form\" autocomplete=\"off\">\n <mat-form-field class=\"adf-full-width\">\n <input\n matInput\n cdkFocusInitial\n required\n placeholder=\"{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}\"\n formControlName=\"title\"\n [errorStateMatcher]=\"matcher\"\n />\n <mat-hint *ngIf=\"libraryTitleExists\">{{ 'LIBRARY.HINTS.SITE_TITLE_EXISTS' | translate }}</mat-hint>\n <mat-error>\n {{ 'LIBRARY.ERRORS.TITLE_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <input matInput placeholder=\"{{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}\" formControlName=\"id\" />\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <mat-select placeholder=\"{{ 'LIBRARY.DIALOG.FORM.VISIBILITY' | translate }}\" formControlName=\"visibility\">\n <mat-option [value]=\"type.value\" *ngFor=\"let type of libraryType\">\n {{ type.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"adf-full-width\">\n <textarea\n matInput\n placeholder=\"{{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}\"\n rows=\"3\"\n formControlName=\"description\"\n [errorStateMatcher]=\"matcher\"\n ></textarea>\n <mat-error>\n {{ 'LIBRARY.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n </mat-error>\n </mat-form-field>\n </form>\n </mat-card-content>\n\n <mat-card-actions align=\"end\" *ngIf=\"edit && canUpdateLibrary\">\n <button mat-button (click)=\"cancel()\">\n {{ 'LIBRARY.DIALOG.CANCEL' | translate }}\n </button>\n <button mat-button color=\"primary\" [disabled]=\"form.invalid || form.pristine\" (click)=\"update()\">\n {{ 'LIBRARY.DIALOG.UPDATE' | translate }}\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SiteEntry } from '@alfresco/js-api';\nimport { LibraryMetadataFormComponent } from './library-metadata-form.component';\n\n@Component({\n standalone: true,\n imports: [LibraryMetadataFormComponent],\n selector: 'app-library-metadata-tab',\n template: '<app-library-metadata-form [node]=\"node\"></app-library-metadata-form>',\n host: { class: 'app-metadata-tab' },\n encapsulation: ViewEncapsulation.None\n})\nexport class LibraryMetadataTabComponent {\n @Input()\n node: SiteEntry;\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnChanges, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MinimalNodeEntryEntity } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { VersionManagerModule } from '@alfresco/adf-content-services';\nimport { AppConfigModule } from '@alfresco/adf-core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, VersionManagerModule, AppConfigModule, MatIconModule, TranslateModule],\n selector: 'app-versions-tab',\n template: `\n <ng-container *ngIf=\"isFileSelected; else empty\">\n <adf-version-manager\n [showComments]=\"'adf-version-manager.allowComments' | adfAppConfig : true\"\n [allowDownload]=\"'adf-version-manager.allowDownload' | adfAppConfig : true\"\n [node]=\"node\"\n >\n </adf-version-manager>\n </ng-container>\n\n <ng-template #empty>\n <div class=\"adf-manage-versions-empty\">\n <mat-icon class=\"adf-manage-versions-empty-icon\">face</mat-icon>\n {{ 'VERSION.SELECTION.EMPTY' | translate }}\n </div>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class VersionsTabComponent implements OnInit, OnChanges {\n @Input()\n node: MinimalNodeEntryEntity;\n\n isFileSelected = false;\n\n ngOnInit() {\n this.updateState();\n }\n\n ngOnChanges() {\n this.updateState();\n }\n\n private updateState() {\n if (this.node && (this.node as any).nodeId) {\n // workaround for shared files type.\n this.isFileSelected = true;\n } else {\n this.isFileSelected = this.node.isFile;\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommentsTabComponent } from './comments-tab/comments-tab.component';\nimport { MetadataTabComponent } from './metadata-tab/metadata-tab.component';\nimport { LibraryMetadataTabComponent } from './library-metadata-tab/library-metadata-tab.component';\nimport { LibraryMetadataFormComponent } from './library-metadata-tab/library-metadata-form.component';\nimport { VersionsTabComponent } from './versions-tab/versions-tab.component';\nimport { InfoDrawerComponent } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [\n InfoDrawerComponent,\n CommentsTabComponent,\n LibraryMetadataFormComponent,\n LibraryMetadataTabComponent,\n MetadataTabComponent,\n VersionsTabComponent\n ],\n exports: [\n InfoDrawerComponent,\n CommentsTabComponent,\n LibraryMetadataFormComponent,\n LibraryMetadataTabComponent,\n MetadataTabComponent,\n VersionsTabComponent\n ]\n})\nexport class AppInfoDrawerModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DocumentListDirective } from './document-list.directive';\nimport { SharedDirectivesModule } from '@alfresco/aca-shared';\nimport { ContentDirectiveModule } from '@alfresco/adf-content-services';\n\n@NgModule({\n imports: [SharedDirectivesModule, ContentDirectiveModule],\n declarations: [DocumentListDirective],\n exports: [DocumentListDirective, SharedDirectivesModule, ContentDirectiveModule]\n})\nexport class DirectivesModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, ReloadDocumentListAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-toggle-favorite',\n template: `\n <button mat-menu-item #favorites=\"adfFavorite\" (toggle)=\"onToggleEvent()\" [adf-node-favorite]=\"(selection$ | async).nodes\">\n <mat-icon *ngIf=\"favorites.hasFavorites()\">star</mat-icon>\n <mat-icon *ngIf=\"!favorites.hasFavorites()\">star_border</mat-icon>\n <span>{{ (favorites.hasFavorites() ? 'APP.ACTIONS.REMOVE_FAVORITE' : 'APP.ACTIONS.FAVORITE') | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-favorite' }\n})\nexport class ToggleFavoriteComponent implements OnInit {\n @Input() data: any;\n selection$: Observable<SelectionState>;\n private reloadOnRoutes: string[] = [];\n\n constructor(private store: Store<AppStore>, private router: Router) {\n this.selection$ = this.store.select(getAppSelection);\n }\n\n ngOnInit() {\n if (this.data) {\n this.reloadOnRoutes = JSON.parse(this.data.replace(/'/g, '\"'));\n }\n }\n\n onToggleEvent() {\n if (this.reloadOnRoutes.includes(this.router.url)) {\n this.store.dispatch(new ReloadDocumentListAction());\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ToggleInfoDrawerAction, isInfoDrawerOpened } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'app-toggle-info-drawer',\n template: `\n <button\n mat-icon-button\n [color]=\"(infoDrawerOpened$ | async) ? 'primary' : null\"\n [attr.aria-label]=\"'APP.ACTIONS.DETAILS' | translate\"\n [attr.aria-expanded]=\"infoDrawerOpened$ | async\"\n [attr.title]=\"'APP.ACTIONS.DETAILS' | translate\"\n (click)=\"onClick()\"\n >\n <mat-icon>menu_open</mat-icon>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-info-drawer' }\n})\nexport class ToggleInfoDrawerComponent {\n infoDrawerOpened$: Observable<boolean>;\n\n constructor(private store: Store<any>) {\n this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n }\n\n onClick() {\n this.store.dispatch(new ToggleInfoDrawerAction());\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AppStore,\n SetSelectedNodesAction,\n SnackbarErrorAction,\n SnackbarInfoAction,\n getAppSelection,\n getUserProfile\n} from '@alfresco/aca-shared/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { ProfileState, SelectionState } from '@alfresco/adf-extensions';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { LibraryMembershipErrorEvent, LibraryMembershipToggleEvent } from '@alfresco/adf-content-services';\n\n@Component({\n selector: 'app-toggle-join-library-button',\n template: `\n <button\n mat-icon-button\n color=\"primary\"\n #membership=\"libraryMembership\"\n (toggle)=\"onToggleEvent($event)\"\n (error)=\"onErrorEvent($event)\"\n [adf-library-membership]=\"(selection$ | async).library\"\n [isAdmin]=\"(profile$ | async).isAdmin\"\n [attr.title]=\"(membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate)\"\n >\n <mat-icon *ngIf=\"membership.isJoinRequested | async\">cancel</mat-icon>\n <mat-icon *ngIf=\"!(membership.isJoinRequested | async)\" svgIcon=\"adf:join_library\"></mat-icon>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-join-library' }\n})\nexport class ToggleJoinLibraryButtonComponent {\n selection$: Observable<SelectionState>;\n profile$: Observable<ProfileState>;\n\n constructor(private store: Store<AppStore>, private appHookService: AppHookService) {\n this.selection$ = this.store.select(getAppSelection);\n this.profile$ = this.store.select(getUserProfile);\n }\n\n onToggleEvent(event: LibraryMembershipToggleEvent) {\n this.store.dispatch(new SnackbarInfoAction(event.i18nKey));\n\n if (event.shouldReload) {\n this.appHookService.libraryJoined.next();\n } else {\n if (event.updatedEntry) {\n this.store.dispatch(new SetSelectedNodesAction([{ entry: event.updatedEntry, isLibrary: true } as any]));\n }\n this.appHookService.joinLibraryToggle.next();\n }\n }\n\n onErrorEvent(event: LibraryMembershipErrorEvent) {\n this.store.dispatch(new SnackbarErrorAction(event.i18nKey));\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { AppStore } from '@alfresco/aca-shared/store';\nimport { ToggleJoinLibraryButtonComponent } from './toggle-join-library-button.component';\n\n@Component({\n selector: 'app-toggle-join-library-menu',\n template: `\n <button\n mat-menu-item\n #membership=\"libraryMembership\"\n (toggle)=\"onToggleEvent($event)\"\n (error)=\"onErrorEvent($event)\"\n [adf-library-membership]=\"(selection$ | async).library\"\n [isAdmin]=\"(profile$ | async).isAdmin\"\n [attr.title]=\"(membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate)\"\n >\n <mat-icon *ngIf=\"membership.isJoinRequested | async\">cancel</mat-icon>\n <mat-icon *ngIf=\"!(membership.isJoinRequested | async)\" svgIcon=\"adf:join_library\"></mat-icon>\n <span>{{ (membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate) }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-join-library' }\n})\nexport class ToggleJoinLibraryMenuComponent extends ToggleJoinLibraryButtonComponent {\n constructor(store: Store<AppStore>, appHookService: AppHookService) {\n super(store, appHookService);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { AppStore, getAppSelection } from '@alfresco/aca-shared/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-toggle-favorite-library',\n template: `\n <button\n mat-menu-item\n (toggle)=\"onToggleEvent()\"\n [adf-favorite-library]=\"library\"\n [attr.title]=\"library.isFavorite ? ('APP.ACTIONS.REMOVE_FAVORITE' | translate) : ('APP.ACTIONS.FAVORITE' | translate)\"\n >\n <mat-icon *ngIf=\"library.isFavorite\">star</mat-icon>\n <mat-icon *ngIf=\"!library.isFavorite\">star_border</mat-icon>\n <span>{{ (library.isFavorite ? 'APP.ACTIONS.REMOVE_FAVORITE' : 'APP.ACTIONS.FAVORITE') | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-favorite-library' }\n})\nexport class ToggleFavoriteLibraryComponent implements OnInit, OnDestroy {\n library;\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>, private appHookService: AppHookService, private router: Router) {}\n\n ngOnInit() {\n const isFavoriteLibraries = this.router.url.startsWith('/favorite/libraries');\n\n this.store\n .select(getAppSelection)\n .pipe(distinctUntilChanged(), takeUntil(this.onDestroy$))\n .subscribe((selection: SelectionState) => {\n this.library = { ...selection.library };\n\n // favorite libraries list should already be marked as favorite\n if (selection.library && isFavoriteLibraries) {\n this.library.isFavorite = true;\n }\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n onToggleEvent() {\n this.appHookService.favoriteLibraryToggle.next();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, DownloadNodesAction, EditOfflineAction, SnackbarErrorAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { MinimalNodeEntity, NodeEntry, SharedLinkEntry, Node, NodesApi } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { isLocked } from '@alfresco/aca-shared';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\n\n@Component({\n selector: 'app-toggle-edit-offline',\n template: `\n <button mat-menu-item [attr.title]=\"nodeTitle | translate\" (click)=\"onClick()\">\n <ng-container *ngIf=\"isNodeLocked\">\n <mat-icon>cancel</mat-icon>\n <span>{{ 'APP.ACTIONS.EDIT_OFFLINE_CANCEL' | translate }}</span>\n </ng-container>\n\n <ng-container *ngIf=\"!isNodeLocked\">\n <mat-icon>edit</mat-icon>\n <span>{{ 'APP.ACTIONS.EDIT_OFFLINE' | translate }}</span>\n </ng-container>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-edit-offline' }\n})\nexport class ToggleEditOfflineComponent implements OnInit {\n private nodesApi: NodesApi;\n selection: MinimalNodeEntity;\n nodeTitle = '';\n isNodeLocked = false;\n\n constructor(private store: Store<AppStore>, private alfrescoApiService: AlfrescoApiService) {\n this.nodesApi = new NodesApi(this.alfrescoApiService.getInstance());\n }\n\n ngOnInit() {\n this.store.select(getAppSelection).subscribe(({ file }) => {\n this.selection = file;\n this.isNodeLocked = this.selection && isLocked(this.selection);\n this.nodeTitle = this.isNodeLocked ? 'APP.ACTIONS.EDIT_OFFLINE_CANCEL' : 'APP.ACTIONS.EDIT_OFFLINE';\n });\n }\n\n async onClick() {\n await this.toggleLock(this.selection);\n }\n\n private async toggleLock(node: NodeEntry | SharedLinkEntry) {\n const id = (node as SharedLinkEntry).entry.nodeId || node.entry.id;\n\n if (isLocked(this.selection)) {\n try {\n const response = await this.unlockNode(id);\n\n this.update(response?.entry);\n this.store.dispatch(new EditOfflineAction(this.selection));\n } catch {\n this.onUnlockError();\n }\n } else {\n try {\n const response = await this.lockNode(id);\n\n this.update(response?.entry);\n this.store.dispatch(new DownloadNodesAction([this.selection]));\n this.store.dispatch(new EditOfflineAction(this.selection));\n } catch {\n this.onLockError();\n }\n }\n }\n\n onLockError() {\n this.store.dispatch(\n new SnackbarErrorAction('APP.MESSAGES.ERRORS.LOCK_NODE', {\n fileName: this.selection.entry.name\n })\n );\n }\n\n onUnlockError() {\n this.store.dispatch(\n new SnackbarErrorAction('APP.MESSAGES.ERRORS.UNLOCK_NODE', {\n fileName: this.selection.entry.name\n })\n );\n }\n\n lockNode(nodeId: string) {\n return this.nodesApi.lockNode(nodeId, {\n type: 'ALLOW_OWNER_CHANGES',\n lifetime: 'PERSISTENT'\n });\n }\n\n unlockNode(nodeId: string) {\n return this.nodesApi.unlockNode(nodeId);\n }\n\n private update(data: Node) {\n if (data && data.properties) {\n const properties = this.selection.entry.properties || {};\n\n properties['cm:lockLifetime'] = data.properties['cm:lockLifetime'];\n properties['cm:lockOwner'] = data.properties['cm:lockOwner'];\n properties['cm:lockType'] = data.properties['cm:lockType'];\n\n this.selection.entry.properties = properties;\n }\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ViewNodeAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\nimport { take } from 'rxjs/operators';\nimport { SharedLinkEntry } from '@alfresco/js-api';\nimport { AcaFileAutoDownloadService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-view-node',\n template: `\n <button\n *ngIf=\"data.iconButton\"\n mat-icon-button\n [attr.aria-label]=\"data.title | translate\"\n [attr.title]=\"data.title | translate\"\n (click)=\"onClick()\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button *ngIf=\"data.menuButton\" mat-menu-item (click)=\"onClick()\">\n <mat-icon>visibility</mat-icon>\n <span>{{ data.title | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-view-node' }\n})\nexport class ViewNodeComponent {\n @Input() data: { title?: string; menuButton?: boolean; iconButton?: boolean };\n\n constructor(private store: Store<AppStore>, private router: Router, private fileAutoDownloadService: AcaFileAutoDownloadService) {}\n\n onClick() {\n this.store\n .select(getAppSelection)\n .pipe(take(1))\n .subscribe((selection) => {\n if (this.fileAutoDownloadService.shouldFileAutoDownload(selection.file.entry?.content?.sizeInBytes)) {\n this.fileAutoDownloadService.autoDownloadFile(selection.file);\n } else {\n let id: string;\n\n if (selection.file.entry.nodeType === 'app:filelink') {\n id = selection.file.entry.properties['cm:destination'];\n } else {\n id = (selection.file as SharedLinkEntry).entry.nodeId || (selection.file as any).entry.guid || selection.file.entry.id;\n }\n\n this.store.dispatch(new ViewNodeAction(id, { location: this.router.url }));\n }\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ToggleFavoriteComponent } from './toggle-favorite/toggle-favorite.component';\nimport { ToggleInfoDrawerComponent } from './toggle-info-drawer/toggle-info-drawer.component';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { ToggleJoinLibraryButtonComponent } from './toggle-join-library/toggle-join-library-button.component';\nimport { ToggleJoinLibraryMenuComponent } from './toggle-join-library/toggle-join-library-menu.component';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { ToggleFavoriteLibraryComponent } from './toggle-favorite-library/toggle-favorite-library.component';\nimport { ToggleEditOfflineComponent } from './toggle-edit-offline/toggle-edit-offline.component';\nimport { ViewNodeComponent } from './view-node/view-node.component';\nimport { SharedToolbarModule } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), ExtensionsModule, SharedToolbarModule, DirectivesModule],\n declarations: [\n ToggleFavoriteComponent,\n ToggleInfoDrawerComponent,\n ToggleJoinLibraryButtonComponent,\n ToggleJoinLibraryMenuComponent,\n ToggleFavoriteLibraryComponent,\n ToggleEditOfflineComponent,\n ViewNodeComponent\n ],\n exports: [\n ToggleFavoriteComponent,\n ToggleInfoDrawerComponent,\n ToggleJoinLibraryButtonComponent,\n ToggleJoinLibraryMenuComponent,\n ToggleFavoriteLibraryComponent,\n ToggleEditOfflineComponent,\n ViewNodeComponent,\n SharedToolbarModule\n ]\n})\nexport class AppToolbarModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Input, HostListener, OnInit, OnDestroy } from '@angular/core';\nimport { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { Store } from '@ngrx/store';\n\n@Directive({\n selector: '[acaExpansionPanel]',\n exportAs: 'acaExpansionPanel'\n})\nexport class ExpansionPanelDirective implements OnInit, OnDestroy {\n @Input() acaExpansionPanel;\n public hasActiveChildren = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostListener('click')\n onClick() {\n if (this.expansionPanel.expanded && !this.hasActiveLinks()) {\n const firstChild = this.acaExpansionPanel.children[0];\n if (firstChild.url) {\n this.router.navigate(this.getNavigationCommands(firstChild.url));\n } else {\n this.store.dispatch({\n type: firstChild.action.action,\n payload: this.getNavigationCommands(firstChild.action.payload)\n });\n }\n }\n }\n\n constructor(private store: Store<any>, private router: Router, private expansionPanel: MatExpansionPanel) {}\n\n hasActiveLinks() {\n if (this.acaExpansionPanel && this.acaExpansionPanel.children) {\n return this.acaExpansionPanel.children.some((child) => this.router.url.startsWith(child.url || child.action.payload));\n }\n return false;\n }\n\n ngOnInit() {\n this.hasActiveChildren = this.hasActiveLinks();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => {\n this.hasActiveChildren = this.hasActiveLinks();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n private getNavigationCommands(url: string): any[] {\n const urlTree = this.router.parseUrl(url);\n const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Input, OnInit, OnDestroy, HostListener } from '@angular/core';\nimport { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\n\n@Directive({\n selector: '[acaMenuPanel]',\n exportAs: 'acaMenuPanel'\n})\nexport class MenuPanelDirective implements OnInit, OnDestroy {\n @Input() acaMenuPanel;\n hasActiveChildren = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostListener('menuOpened')\n menuOpened() {\n if (this.acaMenuPanel.children && !this.hasActiveLinks()) {\n const firstChild = this.acaMenuPanel.children[0];\n if (firstChild.url) {\n this.router.navigate(this.getNavigationCommands(firstChild.url));\n } else {\n this.store.dispatch({\n type: firstChild.action.action,\n payload: this.getNavigationCommands(firstChild.action.payload)\n });\n }\n }\n }\n\n constructor(private store: Store<any>, private router: Router) {}\n\n hasActiveLinks() {\n if (this.acaMenuPanel && this.acaMenuPanel.children) {\n return this.acaMenuPanel.children.some((child) => this.router.url.startsWith(child.url || child.action.payload));\n }\n return false;\n }\n\n ngOnInit() {\n this.hasActiveChildren = this.hasActiveLinks();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => {\n this.hasActiveChildren = this.hasActiveLinks();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n private getNavigationCommands(url: string): any[] {\n const urlTree = this.router.parseUrl(url);\n const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, Input, HostListener } from '@angular/core';\nimport { PRIMARY_OUTLET, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { AppStore } from '@alfresco/aca-shared/store';\n\n@Directive({\n /* eslint-disable-next-line */\n selector: '[action]',\n exportAs: 'action'\n})\nexport class ActionDirective {\n @Input() action;\n\n @HostListener('click')\n onClick() {\n if (this.action.url) {\n this.router.navigate(this.getNavigationCommands(this.action.url));\n } else if (this.action.click) {\n this.store.dispatch({\n type: this.action.click.action,\n payload: this.getNavigationCommands(this.action.click.payload)\n });\n }\n }\n\n constructor(private router: Router, private store: Store<AppStore>) {}\n\n private getNavigationCommands(url: string): any[] {\n const urlTree = this.router.parseUrl(url);\n const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (!urlSegmentGroup) {\n return [url];\n }\n\n const urlSegments = urlSegmentGroup.segments;\n\n return urlSegments.reduce(function (acc, item) {\n acc.push(item.path, item.parameters);\n return acc;\n }, []);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, OnInit, Input, ElementRef, Renderer2, ContentChildren, QueryList, AfterContentInit, Optional } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ActionDirective } from './action.directive';\n\n@Directive({\n selector: '[acaActiveLink]',\n exportAs: 'acaActiveLink'\n})\nexport class ActiveLinkDirective implements OnInit, AfterContentInit {\n @Input() acaActiveLink;\n @ContentChildren(ActionDirective, { descendants: true })\n links: QueryList<ActionDirective>;\n isLinkActive = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private router: Router, private element: ElementRef, private renderer: Renderer2, @Optional() private action?: ActionDirective) {}\n\n ngOnInit() {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe((event: NavigationEnd) => {\n this.update(event.urlAfterRedirects);\n });\n }\n\n private update(url: string) {\n if (this.action) {\n const itemUrl = this.resolveUrl(this.action);\n this.render(url, itemUrl);\n }\n\n this.links.map((item) => {\n const itemUrl = this.resolveUrl(item);\n this.render(url, itemUrl);\n });\n }\n\n private render(routerUrl: string, actionUrl: string) {\n if (routerUrl && routerUrl.substring(1).startsWith(actionUrl)) {\n this.isLinkActive = true;\n this.renderer.addClass(this.element.nativeElement, this.acaActiveLink);\n } else {\n this.isLinkActive = false;\n this.renderer.removeClass(this.element.nativeElement, this.acaActiveLink);\n }\n }\n\n ngAfterContentInit() {\n this.links.changes.subscribe(() => this.update(this.router.url));\n this.update(this.router.url);\n }\n\n private resolveUrl(item): string {\n return (item.action && item.action.click && item.action.click.payload) || item.action.route;\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, Input, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'app-expand-menu',\n encapsulation: ViewEncapsulation.None,\n templateUrl: './expand-menu.component.html',\n host: { class: 'app-expand-menu' }\n})\nexport class ExpandMenuComponent implements OnInit {\n @Input()\n item: NavBarLinkRef;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.cd.detectChanges();\n }\n\n trackById(_index: number, obj: NavBarLinkRef) {\n return obj.id;\n }\n}\n","<ng-container *ngIf=\"!item.children\">\n <div class=\"item\">\n <button\n acaActiveLink=\"action-button--active\"\n [action]=\"item\"\n [attr.aria-label]=\"item.title | translate\"\n [id]=\"item.id\"\n [attr.data-automation-id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n mat-button\n class=\"action-button full-width\"\n >\n <adf-icon *ngIf=\"item.icon\" [value]=\"item.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ item.title | translate }}</span>\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"item.children && item.children.length\">\n <mat-expansion-panel\n [expanded]=\"true\"\n [acaExpansionPanel]=\"item\"\n #acaExpansionPanel=\"acaExpansionPanel\"\n [@.disabled]=\"true\"\n >\n <mat-expansion-panel-header expandedHeight=\"48px\" collapsedHeight=\"48px\" role=\"group\">\n <mat-panel-title>\n <div class=\"item\">\n <button\n [attr.aria-label]=\"item.title | translate\"\n [id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n [attr.data-automation-id]=\"item.id\"\n mat-button\n class=\"action-button full-width\"\n >\n <adf-icon *ngIf=\"item.icon\" [value]=\"item.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ item.title | translate }}</span>\n </button>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div *ngFor=\"let child of item.children; trackBy: trackById\" class=\"item\">\n <button\n acaActiveLink=\"action-button--active\"\n [action]=\"child\"\n [attr.aria-label]=\"child.title | translate\"\n [id]=\"child.id\"\n [attr.data-automation-id]=\"child.id\"\n [attr.title]=\"child.description | translate\"\n mat-button\n class=\"action-button full-width\"\n >\n <adf-icon *ngIf=\"child.icon\" [value]=\"child.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ child.title | translate }}</span>\n </button>\n </div>\n </mat-expansion-panel>\n</ng-container>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable, Subject } from 'rxjs';\nimport { AppStore, getAppName, getLogoPath } from '@alfresco/aca-shared/store';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-sidenav-header',\n templateUrl: `./sidenav-header.component.html`,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-sidenav-header' }\n})\nexport class SidenavHeaderComponent implements OnInit, OnDestroy {\n private onDestroy$ = new Subject<boolean>();\n\n appName$: Observable<string>;\n logo$: Observable<string>;\n landingPage: string;\n actions: Array<ContentActionRef> = [];\n\n @Output()\n toggleNavBar = new EventEmitter();\n\n constructor(public store: Store<AppStore>, private appConfigService: AppConfigService, private appExtensions: AppExtensionService) {\n this.appName$ = store.select(getAppName);\n this.logo$ = store.select(getLogoPath);\n this.landingPage = this.appConfigService.get('landingPage', '/personal-files');\n }\n\n ngOnInit() {\n this.appExtensions\n .getHeaderActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => {\n this.actions = actions;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n}\n","<div class=\"sidenav-header\">\n <div class=\"sidenav-header-title\">\n <div class=\"sidenav-header-title-logo\"\n tabindex=0\n (click)=\"toggleNavBar.emit()\"\n (keypress)=\"toggleNavBar.emit()\">\n <img\n src=\"{{ logo$ | async }}\"\n title=\"{{'APP.TOOLTIPS.COLLAPSE_NAVIGATION' | translate}}\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\" />\n </div>\n\n <div class=\"sidenav-header-title-text\" [routerLink]=\"landingPage\">\n {{ appName$ | async | translate }}\n </div>\n\n <ng-container *ngFor=\"let actionRef of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"actionRef\"></aca-toolbar-action>\n </ng-container>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { NavBarGroupRef, NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getSideNavState } from '@alfresco/aca-shared/store';\nimport { Subject } from 'rxjs';\nimport { takeUntil, distinctUntilChanged, debounceTime } from 'rxjs/operators';\nimport { AppExtensionService, AppService } from '@alfresco/aca-shared';\nimport { SidenavLayoutComponent } from '@alfresco/adf-core';\n\n@Component({\n selector: 'app-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-sidenav' }\n})\nexport class SidenavComponent implements OnInit, OnDestroy {\n @Input()\n data: {\n layout?: SidenavLayoutComponent;\n mode?: 'collapsed' | 'expanded';\n } = {};\n\n groups: Array<NavBarGroupRef> = [];\n private onDestroy$ = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>, private extensions: AppExtensionService, private appService: AppService) {}\n\n ngOnInit() {\n this.store\n .select(getSideNavState)\n .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.onDestroy$))\n .subscribe(() => {\n this.groups = this.extensions.getApplicationNavigation(this.extensions.navbar);\n });\n\n this.appService.appNavNarMode$.next(this.data.mode);\n this.appService.toggleAppNavBar$.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.toggleNavBar());\n }\n\n trackByGroupId(_: number, obj: NavBarGroupRef): string {\n return obj.id;\n }\n\n trackByLinkId(_: number, obj: NavBarLinkRef): string {\n return obj.id;\n }\n\n toggleClick() {\n this.toggleNavBar();\n }\n\n private toggleNavBar() {\n this.data.layout.toggleMenu();\n this.appService.appNavNarMode$.next(this.data.layout.isMenuMinimized ? 'collapsed' : 'expanded');\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<div class=\"sidenav\">\n <app-sidenav-header (toggleNavBar)=\"toggleClick()\"></app-sidenav-header>\n\n <div class=\"section-sub-actions\">\n <div *ngFor=\"let group of groups; trackBy: trackByGroupId\" class=\"section\">\n <mat-list-item *ngFor=\"let item of group.items; trackBy: trackByLinkId\">\n <ng-container *ngIf=\"!item.component\">\n <app-expand-menu [item]=\"item\"></app-expand-menu>\n </ng-container>\n <ng-container *ngIf=\"item.component\">\n <adf-dynamic-component [data]=\"{ item: item, state: 'expanded' }\" [id]=\"item.component\"></adf-dynamic-component>\n </ng-container>\n </mat-list-item>\n </div>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'app-button-menu',\n templateUrl: './button-menu.component.html',\n host: { class: 'app-button-menu' },\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonMenuComponent implements OnInit {\n @Input()\n item: NavBarLinkRef;\n\n constructor(private cd: ChangeDetectorRef, private overlayContainer: OverlayContainer) {\n this.overlayContainer.getContainerElement().classList.add('aca-menu-panel');\n }\n\n ngOnInit() {\n this.cd.detectChanges();\n }\n\n trackById(_index: number, obj: NavBarLinkRef) {\n return obj.id;\n }\n}\n","<ng-container *ngIf=\"!item.children\">\n <button\n class=\"action-button\"\n mat-icon-button\n acaActiveLink=\"action-button--active\"\n [action]=\"item\"\n [id]=\"item.id\"\n [attr.aria-label]=\"item.title | translate\"\n [attr.title]=\"item.description | translate\"\n [attr.data-automation-id]=\"item.id\"\n >\n <adf-icon [value]=\"item.icon\"></adf-icon>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"item.children && item.children.length\">\n <button\n [matMenuTriggerFor]=\"menu\"\n [acaMenuPanel]=\"item\"\n #acaMenuPanel=\"acaMenuPanel\"\n mat-icon-button\n [id]=\"item.id\"\n [attr.data-automation-id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n [attr.aria-label]=\"item.title | translate\"\n class=\"action-button\"\n [ngClass]=\"{\n 'action-button--active': acaMenuPanel.hasActiveChildren\n }\"\n >\n <adf-icon [value]=\"item.icon\"></adf-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\">\n <button\n *ngFor=\"let child of item.children; trackBy: trackById\"\n acaActiveLink=\"action-button--active\"\n [action]=\"child\"\n [attr.aria-label]=\"child.title | translate\"\n [id]=\"child.id\"\n [attr.title]=\"child.description | translate\"\n [attr.data-automation-id]=\"child.id\"\n mat-menu-item\n class=\"action-button\"\n >\n <adf-icon *ngIf=\"child.icon\" [value]=\"child.icon\"></adf-icon>\n <span class=\"action-button__label\">{{ child.title | translate }}</span>\n </button>\n </mat-menu>\n</ng-container>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { PeopleContentService } from '@alfresco/adf-content-services';\nimport { AuthenticationService, IdentityUserService } from '@alfresco/adf-core';\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'aca-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrls: ['./user-menu.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class UserMenuComponent implements OnInit {\n displayName$: Observable<{ firstName: string; initials: string }>;\n @Input()\n actionRef: ContentActionRef;\n @Input()\n data: { items: any[] };\n\n constructor(\n private peopleContentService: PeopleContentService,\n private identityUserService: IdentityUserService,\n private authService: AuthenticationService\n ) {}\n\n ngOnInit() {\n this.getUserInfo();\n if (this.data && this.data.items) {\n this.data.items.sort((a, b) => a.order - b.order);\n }\n }\n\n getUserInfo() {\n if (this.authService.isOauth()) {\n this.loadIdentityUserInfo();\n\n if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {\n this.loadEcmUserInfo();\n }\n } else if (this.isEcmLoggedIn()) {\n this.loadEcmUserInfo();\n }\n }\n\n get isLoggedIn(): boolean {\n if (this.authService.isKerberosEnabled()) {\n return true;\n }\n return this.authService.isLoggedIn();\n }\n\n private loadEcmUserInfo(): void {\n this.displayName$ = this.peopleContentService.getCurrentUserInfo().pipe(map((model) => this.parseDisplayName(model)));\n }\n\n private loadIdentityUserInfo() {\n this.displayName$ = of(this.identityUserService.getCurrentUserInfo()).pipe(map((model) => this.parseDisplayName(model)));\n }\n\n parseDisplayName(model: { firstName?: string; lastName?: string }): { firstName: string; initials: string } {\n const result = { firstName: '', initials: '' };\n if (model.firstName) {\n result.initials = model.firstName.charAt(0).toUpperCase();\n }\n if (model.lastName) {\n result.initials += model.lastName.charAt(0).toUpperCase();\n }\n return result;\n }\n\n private isEcmLoggedIn() {\n return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());\n }\n}\n","<button mat-button class=\"aca-user-menu-button\" [matMenuTriggerFor]=\"menu\"\ntitle=\"{{'APP.TOOLTIPS.OPTIONS_SETTINGS' | translate}}\">\n <div>{{ (displayName$ | async)?.initials }}</div>\n</button>\n\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let item of data.items\">\n <app-toolbar-menu-item [actionRef]=\"item\"></app-toolbar-menu-item>\n </ng-container>\n</mat-menu>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { RouterModule } from '@angular/router';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { ExpansionPanelDirective } from './directives/expansion-panel.directive';\nimport { MenuPanelDirective } from './directives/menu-panel.directive';\nimport { SidenavComponent } from './sidenav.component';\nimport { ActiveLinkDirective } from './directives/active-link.directive';\nimport { ExpandMenuComponent } from './components/expand-menu.component';\nimport { ButtonMenuComponent } from './components/button-menu.component';\nimport { ActionDirective } from './directives/action.directive';\nimport { SidenavHeaderComponent } from './components/sidenav-header.component';\nimport { SharedToolbarModule } from '@alfresco/aca-shared';\nimport { UserMenuComponent } from './user-menu/user-menu.component';\n\n@NgModule({\n imports: [CoreModule.forChild(), ExtensionsModule.forChild(), RouterModule, SharedToolbarModule],\n declarations: [\n MenuPanelDirective,\n ExpansionPanelDirective,\n ActiveLinkDirective,\n ActionDirective,\n ExpandMenuComponent,\n ButtonMenuComponent,\n SidenavComponent,\n SidenavHeaderComponent,\n UserMenuComponent\n ],\n exports: [\n MenuPanelDirective,\n ExpansionPanelDirective,\n ActiveLinkDirective,\n ActionDirective,\n ExpandMenuComponent,\n ButtonMenuComponent,\n SidenavComponent\n ]\n})\nexport class AppSidenavModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ChangeDetectionStrategy, OnInit, ViewEncapsulation, HostListener, inject } from '@angular/core';\nimport { PathInfo, MinimalNodeEntity } from '@alfresco/js-api';\nimport { Observable, BehaviorSubject, of } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { NavigateToParentFolder } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule],\n selector: 'aca-location-link',\n template: `\n <a\n href=\"\"\n [title]=\"nodeLocation$ | async\"\n (click)=\"goToLocation()\"\n class=\"adf-datatable-cell-value\"\n [innerHTML]=\"displayText | async | translate\"\n >\n </a>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'aca-location-link adf-location-cell adf-datatable-content-cell'\n }\n})\nexport class LocationLinkComponent implements OnInit {\n private store = inject(Store);\n private contentApi = inject(ContentApiService);\n private translationService = inject(TranslationService);\n\n private _path: PathInfo;\n\n nodeLocation$ = new BehaviorSubject(this.translationService.instant('APP.BROWSE.SEARCH.UNKNOWN_LOCATION'));\n displayText: Observable<string>;\n\n @Input()\n context: any;\n\n @Input()\n showLocation = false;\n\n @HostListener('mouseenter')\n onMouseEnter() {\n this.getTooltip(this._path);\n }\n\n goToLocation() {\n if (this.context) {\n const node: MinimalNodeEntity = this.context.row.node;\n this.store.dispatch(new NavigateToParentFolder(node));\n }\n }\n\n ngOnInit() {\n if (this.context) {\n const node: MinimalNodeEntity = this.context.row.node;\n if (node && node.entry && node.entry.path) {\n const path = node.entry.path;\n\n if (path && path.name && path.elements) {\n if (this.showLocation) {\n this.displayText = of(path.name.substring(1).replace(/\\//g, ' &#8250; '));\n } else {\n this.displayText = this.getDisplayText(path);\n }\n this._path = path;\n } else {\n this.displayText = of('APP.BROWSE.SEARCH.UNKNOWN_LOCATION');\n }\n }\n }\n }\n\n // todo: review once 5.2.3 is out\n private getDisplayText(path: PathInfo): Observable<string> {\n const elements = path.elements.map((e) => e.name);\n\n // for admin users\n if (elements.length === 1 && elements[0] === 'Company Home') {\n return of('APP.BROWSE.PERSONAL.TITLE');\n }\n\n // for non-admin users\n if (elements.length === 3 && elements[0] === 'Company Home' && elements[1] === 'User Homes') {\n return of('APP.BROWSE.PERSONAL.TITLE');\n }\n\n const result = elements[elements.length - 1];\n\n if (result === 'documentLibrary') {\n const fragment = path.elements[path.elements.length - 2];\n\n return new Observable<string>((observer) => {\n this.contentApi.getNodeInfo(fragment.id).subscribe(\n (node) => {\n observer.next(node.properties['cm:title'] || node.name || fragment.name);\n observer.complete();\n },\n () => {\n observer.next(fragment.name);\n observer.complete();\n }\n );\n });\n }\n\n return of(result);\n }\n\n // todo: review once 5.2.3 is out\n private getTooltip(path: PathInfo) {\n if (!path) {\n return;\n }\n\n let result: string = null;\n\n const elements = path.elements.map((e) => Object.assign({}, e));\n const personalFiles = this.translationService.instant('APP.BROWSE.PERSONAL.TITLE');\n const fileLibraries = this.translationService.instant('APP.BROWSE.LIBRARIES.TITLE');\n\n if (elements[0].name === 'Company Home') {\n elements[0].name = personalFiles;\n\n if (elements.length > 2) {\n if (elements[1].name === 'Sites') {\n const fragment = elements[2];\n this.contentApi.getNodeInfo(fragment.id).subscribe(\n (node) => {\n elements.splice(0, 2);\n elements[0].name = node.properties['cm:title'] || node.name || fragment.name;\n elements.splice(1, 1);\n elements.unshift({ id: null, name: fileLibraries });\n\n result = elements.map((e) => e.name).join('/');\n this.nodeLocation$.next(result);\n },\n () => {\n elements.splice(0, 2);\n elements.unshift({ id: null, name: fileLibraries });\n elements.splice(2, 1);\n\n result = elements.map((e) => e.name).join('/');\n this.nodeLocation$.next(result);\n }\n );\n }\n\n if (elements[1].name === 'User Homes') {\n elements.splice(0, 3);\n elements.unshift({ id: null, name: personalFiles });\n }\n }\n }\n\n result = elements.map((e) => e.name).join('/');\n this.nodeLocation$.next(result);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, ShareNodeAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatMenuModule, MatIconModule, TranslateModule, MatButtonModule],\n selector: 'app-toggle-shared',\n templateUrl: './toggle-shared.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ToggleSharedComponent implements OnInit, OnDestroy {\n @Input()\n data: {\n iconButton?: string;\n };\n\n selection$: Observable<SelectionState>;\n selectionState: SelectionState;\n selectionLabel = '';\n isShared = false;\n\n onDestroy$ = new Subject<void>();\n\n constructor(private store: Store<AppStore>) {}\n\n ngOnInit() {\n this.selection$ = this.store.select(getAppSelection);\n this.selection$.pipe(takeUntil(this.onDestroy$)).subscribe((selectionState) => {\n this.selectionState = selectionState;\n\n this.isShared =\n (this.selectionState.first && this.selectionState.first.entry && (this.selectionState.first.entry as any).sharedByUser) ||\n !!this.selectionState?.first?.entry?.properties?.['qshare:sharedId'];\n\n this.selectionLabel = this.isShared ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE';\n });\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n editSharedNode(selection: SelectionState, focusedElementOnCloseSelector: string) {\n this.store.dispatch(\n new ShareNodeAction(selection.first, {\n focusedElementOnCloseSelector\n })\n );\n }\n}\n","<ng-container *ngIf=\"selectionState\">\n <ng-container *ngIf=\"!data.iconButton\">\n <button mat-menu-item data-automation-id=\"share-action-button\" (click)=\"editSharedNode(selectionState, '.adf-context-menu-source')\">\n <mat-icon>link</mat-icon>\n <ng-container *ngIf=\"isShared; else not_shared\">\n <span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>\n </ng-container>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"data.iconButton\">\n <button\n mat-icon-button\n data-automation-id=\"share-action-button\"\n (click)=\"editSharedNode(selectionState, '#share-action-button')\"\n [attr.aria-label]=\"selectionLabel | translate\"\n [attr.title]=\"selectionLabel | translate\"\n id=\"share-action-button\"\n >\n <mat-icon>link</mat-icon>\n </button>\n </ng-container>\n</ng-container>\n\n<ng-template #not_shared>\n <span>{{ 'APP.ACTIONS.SHARE' | translate }}</span>\n</ng-template>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { LanguageMenuModule } from '@alfresco/adf-core';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [TranslateModule, MatIconModule, MatMenuModule, LanguageMenuModule],\n selector: 'aca-language-picker',\n template: `\n <button mat-menu-item [matMenuTriggerFor]=\"langMenu\">\n <mat-icon>language</mat-icon>\n {{ 'APP.LANGUAGE' | translate }}\n </button>\n <mat-menu #langMenu=\"matMenu\">\n <adf-language-menu></adf-language-menu>\n </mat-menu>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class LanguagePickerComponent {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { DirectiveModule } from '@alfresco/adf-core';\n\n@Component({\n standalone: true,\n imports: [TranslateModule, MatIconModule, MatMenuModule, DirectiveModule],\n selector: 'aca-logout',\n template: `\n <button mat-menu-item (click)=\"onLogoutEvent()\" adf-logout>\n <mat-icon>exit_to_app</mat-icon>\n <span>{{ 'APP.SIGN_OUT' | translate }}</span>\n </button>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class LogoutComponent {\n constructor(private store: Store) {}\n\n onLogoutEvent() {\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { IdentityUserService, AuthenticationService } from '@alfresco/adf-core';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { PeopleContentService } from '@alfresco/adf-content-services';\nimport { map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, RouterModule, MatMenuModule, TranslateModule],\n selector: 'app-user-info',\n templateUrl: './user-info.component.html',\n styleUrls: ['./user-info.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class UserInfoComponent implements OnInit {\n displayName$: Observable<{ firstName: string; initials: string; email: string }>;\n\n constructor(\n private peopleContentService: PeopleContentService,\n private identityUserService: IdentityUserService,\n private authService: AuthenticationService\n ) {}\n\n ngOnInit() {\n this.getUserInfo();\n }\n\n getUserInfo() {\n if (this.authService.isOauth()) {\n this.loadIdentityUserInfo();\n\n if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {\n this.loadEcmUserInfo();\n }\n } else if (this.isEcmLoggedIn()) {\n this.loadEcmUserInfo();\n }\n }\n\n get isLoggedIn(): boolean {\n if (this.authService.isKerberosEnabled()) {\n return true;\n }\n return this.authService.isLoggedIn();\n }\n\n private loadEcmUserInfo(): void {\n this.displayName$ = this.peopleContentService.getCurrentUserInfo().pipe(map((model) => this.parseDisplayName(model)));\n }\n\n private loadIdentityUserInfo() {\n this.displayName$ = of(this.identityUserService.getCurrentUserInfo()).pipe(map((model) => this.parseDisplayName(model)));\n }\n\n parseDisplayName(model: { firstName?: string; lastName?: string; email?: string }): { firstName: string; initials: string; email: string } {\n const result = { firstName: '', initials: '', email: '' };\n if (model.firstName) {\n result.firstName = model.firstName;\n result.initials = model.firstName.charAt(0).toUpperCase();\n }\n if (model.lastName) {\n result.firstName += ' ' + model.lastName;\n result.initials += model.lastName.charAt(0).toUpperCase();\n }\n if (model.email) {\n result.email = `${model.email}`;\n }\n return result;\n }\n\n private isEcmLoggedIn() {\n return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());\n }\n}\n","<div mat-menu-item class=\"aca-user-info\" [routerLink]=\"['/profile']\" title=\"{{'APP.TOOLTIPS.MY_PROFILE' | translate}}\">\n <button class=\"aca-user-info-button\">\n <div>{{ (displayName$ | async)?.initials }}</div>\n </button>\n <div class=\"aca-user-info-name-email\">\n <div>{{ (displayName$ | async)?.firstName }}</div>\n <div>{{ (displayName$ | async)?.email }}</div>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { LocationLinkComponent } from './location-link/location-link.component';\nimport { ToggleSharedComponent } from './toggle-shared/toggle-shared.component';\nimport { LanguagePickerComponent } from './language-picker/language-picker.component';\nimport { LogoutComponent } from './logout/logout.component';\nimport { UserInfoComponent } from './user-info/user-info.component';\n\nexport const APP_COMMON_DIRECTIVES = [\n LanguagePickerComponent,\n LocationLinkComponent,\n LogoutComponent,\n ToggleSharedComponent,\n UserInfoComponent\n] as const;\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport { QueriesApi, SitePaging } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\n\nexport interface LibrarySearchQuery {\n term: string;\n opts: {\n skipCount: number;\n maxItems: number;\n };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchLibrariesQueryBuilderService {\n _queriesApi: QueriesApi;\n get queriesApi(): QueriesApi {\n this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n return this._queriesApi;\n }\n\n private _userQuery = '';\n\n updated: Subject<any> = new Subject();\n executed: Subject<any> = new Subject();\n hadError: Subject<any> = new Subject();\n\n paging: { maxItems?: number; skipCount?: number } = null;\n\n get userQuery(): string {\n return this._userQuery;\n }\n\n set userQuery(value: string) {\n this._userQuery = value ? value.trim() : '';\n }\n\n constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n update(): void {\n const query = this.buildQuery();\n if (query) {\n this.updated.next(query);\n }\n }\n\n async execute() {\n const query = this.buildQuery();\n if (query) {\n const data = await this.findLibraries(query);\n this.executed.next(data);\n }\n }\n\n buildQuery(): LibrarySearchQuery {\n const query = this.userQuery;\n if (query && query.length > 1) {\n return {\n term: query,\n opts: {\n skipCount: this.paging && this.paging.skipCount,\n maxItems: this.paging && this.paging.maxItems\n }\n };\n }\n return null;\n }\n\n private findLibraries(libraryQuery: LibrarySearchQuery): Promise<SitePaging> {\n return this.queriesApi.findSites(libraryQuery.term, libraryQuery.opts).catch((err) => {\n this.hadError.next(err);\n return { list: { pagination: { totalItems: 0 }, entries: [] } };\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, ViewChild, ElementRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-search-input-control',\n templateUrl: './search-input-control.component.html',\n styleUrls: ['./search-input-control.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-search-control' }\n})\nexport class SearchInputControlComponent implements OnDestroy {\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n /** Type of the input field to render, e.g. \"search\" or \"text\" (default). */\n @Input()\n inputType = 'text';\n\n /** Emitted when the search is submitted pressing ENTER button.\n * The search term is provided as value of the event.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n submit: EventEmitter<any> = new EventEmitter();\n\n /** Emitted when the search term is changed. The search term is provided\n * in the 'value' property of the returned object. If the term is less\n * than three characters in length then the term is truncated to an empty\n * string.\n */\n @Output()\n searchChange: EventEmitter<string> = new EventEmitter();\n\n @ViewChild('searchInput', { static: true })\n searchInput: ElementRef;\n\n searchTerm = '';\n\n ngOnDestroy(): void {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n searchSubmit(event: any) {\n this.submit.emit(event);\n }\n\n inputChange(event: any) {\n this.searchChange.emit(event);\n }\n\n clear() {\n this.searchTerm = '';\n this.searchChange.emit('');\n }\n\n isTermTooShort() {\n return !!(this.searchTerm && this.searchTerm.length < 2);\n }\n}\n","<div class=\"app-search-container\">\n <button\n mat-icon-button\n id=\"app-search-button\"\n class=\"app-search-button\"\n (click)=\"searchSubmit(searchTerm)\"\n [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\"\n >\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n #searchInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"inputType\"\n id=\"app-control-input\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"inputChange($event)\"\n (keyup.enter)=\"searchSubmit($event)\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n autocomplete=\"off\"\n />\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon *ngIf=\"searchTerm.length\" (click)=\"clear()\" class=\"app-clear-icon\">clear</mat-icon>\n </div>\n </mat-form-field>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppHookService, AppService } from '@alfresco/aca-shared';\nimport { AppStore, SearchByTermAction, SearchOptionIds, SearchOptionModel, SnackbarErrorAction } from '@alfresco/aca-shared/store';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { NavigationEnd, PRIMARY_OUTLET, Router, RouterEvent, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { SearchInputControlComponent } from '../search-input-control/search-input-control.component';\nimport { SearchNavigationService } from '../search-navigation.service';\nimport { SearchLibrariesQueryBuilderService } from '../search-libraries-results/search-libraries-query-builder.service';\n\n@Component({\n selector: 'aca-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'aca-search-input' }\n})\nexport class SearchInputComponent implements OnInit, OnDestroy {\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n hasOneChange = false;\n hasNewChange = false;\n navigationTimer: any;\n has400LibraryError = false;\n hasLibrariesConstraint = false;\n searchOnChange: boolean;\n\n searchedWord: string = null;\n searchOptions: Array<SearchOptionModel> = [\n {\n id: SearchOptionIds.Files,\n key: 'SEARCH.INPUT.FILES',\n value: false,\n shouldDisable: this.isLibrariesChecked.bind(this)\n },\n {\n id: SearchOptionIds.Folders,\n key: 'SEARCH.INPUT.FOLDERS',\n value: false,\n shouldDisable: this.isLibrariesChecked.bind(this)\n },\n {\n id: SearchOptionIds.Libraries,\n key: 'SEARCH.INPUT.LIBRARIES',\n value: false,\n shouldDisable: this.isContentChecked.bind(this)\n }\n ];\n\n @ViewChild('searchInputControl', { static: true })\n searchInputControl: SearchInputControlComponent;\n\n @ViewChild(MatMenuTrigger, { static: true })\n trigger: MatMenuTrigger;\n\n constructor(\n private queryBuilder: SearchQueryBuilderService,\n private queryLibrariesBuilder: SearchLibrariesQueryBuilderService,\n private config: AppConfigService,\n private router: Router,\n private store: Store<AppStore>,\n private appHookService: AppHookService,\n private appService: AppService,\n public searchInputService: SearchNavigationService\n ) {\n this.searchOnChange = this.config.get<boolean>('search.aca:triggeredOnChange', true);\n }\n\n ngOnInit() {\n this.showInputValue();\n\n this.router.events\n .pipe(takeUntil(this.onDestroy$))\n .pipe(filter((e) => e instanceof RouterEvent))\n .subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.showInputValue();\n }\n });\n\n this.appHookService.library400Error.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.has400LibraryError = true;\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n });\n }\n\n exitSearch() {\n this.searchInputService.navigateBack();\n }\n\n showInputValue() {\n this.appService.appNavNarMode$.next('collapsed');\n this.has400LibraryError = false;\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n this.searchedWord = this.getUrlSearchTerm();\n\n if (this.searchInputControl) {\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n }\n\n ngOnDestroy(): void {\n this.appService.appNavNarMode$.next('expanded');\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n this.removeContentFilters();\n }\n\n onMenuOpened() {\n if (this.searchInputControl) {\n this.searchInputControl.searchInput?.nativeElement?.focus();\n }\n }\n\n /**\n * Called when the user submits the search, e.g. hits enter or clicks submit\n *\n * @param event Parameters relating to the search\n */\n onSearchSubmit(event: any) {\n const searchTerm = event.target ? (event.target as HTMLInputElement).value : event;\n if (searchTerm) {\n this.searchedWord = searchTerm;\n\n this.searchByOption();\n } else {\n this.store.dispatch(new SnackbarErrorAction('APP.BROWSE.SEARCH.EMPTY_SEARCH'));\n }\n\n if (this.trigger) {\n this.trigger.closeMenu();\n }\n }\n\n onSearchChange(searchTerm: string) {\n if (!this.searchOnChange) {\n return;\n }\n\n this.has400LibraryError = false;\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n this.searchedWord = searchTerm;\n\n if (this.hasOneChange) {\n this.hasNewChange = true;\n } else {\n this.hasOneChange = true;\n }\n\n if (this.hasNewChange) {\n clearTimeout(this.navigationTimer);\n this.hasNewChange = false;\n }\n\n this.navigationTimer = setTimeout(() => {\n if (searchTerm) {\n this.store.dispatch(new SearchByTermAction(searchTerm, this.searchOptions));\n }\n this.hasOneChange = false;\n }, 1000);\n }\n\n searchByOption() {\n this.syncInputValues();\n this.has400LibraryError = false;\n if (this.isLibrariesChecked()) {\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n if (this.onLibrariesSearchResults && this.isSameSearchTerm()) {\n this.queryLibrariesBuilder.update();\n } else if (this.searchedWord) {\n this.store.dispatch(new SearchByTermAction(this.searchedWord, this.searchOptions));\n }\n } else {\n if (this.isFoldersChecked() && !this.isFilesChecked()) {\n this.filterContent(SearchOptionIds.Folders);\n } else if (this.isFilesChecked() && !this.isFoldersChecked()) {\n this.filterContent(SearchOptionIds.Files);\n } else {\n this.removeContentFilters();\n }\n\n if (this.onSearchResults && this.isSameSearchTerm()) {\n this.queryBuilder.update();\n } else if (this.searchedWord) {\n this.store.dispatch(new SearchByTermAction(this.searchedWord, this.searchOptions));\n }\n }\n }\n\n get onLibrariesSearchResults() {\n return this.router.url.indexOf('/search-libraries') === 0;\n }\n\n get onSearchResults() {\n return !this.onLibrariesSearchResults && this.router.url.indexOf('/search') === 0;\n }\n\n isFilesChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Files);\n }\n\n isFoldersChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Folders);\n }\n\n isLibrariesChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Libraries);\n }\n\n isOptionChecked(optionId: string): boolean {\n const libItem = this.searchOptions.find((item) => item.id === optionId);\n return !!libItem && libItem.value;\n }\n\n isContentChecked(): boolean {\n return this.isFilesChecked() || this.isFoldersChecked();\n }\n\n evaluateLibrariesConstraint(): boolean {\n if (this.isLibrariesChecked()) {\n return this.has400LibraryError || this.searchInputControl.isTermTooShort();\n }\n return false;\n }\n\n filterContent(option: SearchOptionIds.Folders | SearchOptionIds.Files) {\n const oppositeOption = option === SearchOptionIds.Folders ? SearchOptionIds.Files : SearchOptionIds.Folders;\n\n this.queryBuilder.addFilterQuery(`+TYPE:'cm:${option}'`);\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${oppositeOption}'`);\n }\n\n removeContentFilters() {\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Files}'`);\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Folders}'`);\n }\n\n syncInputValues() {\n if (this.searchInputControl.searchTerm !== this.searchedWord) {\n if (this.searchInputControl.searchTerm) {\n this.searchedWord = this.searchInputControl.searchTerm;\n } else {\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n }\n }\n\n getUrlSearchTerm(): string {\n let searchTerm = '';\n if (this.onSearchResults || this.onLibrariesSearchResults) {\n const urlTree: UrlTree = this.router.parseUrl(this.router.url);\n const urlSegmentGroup: UrlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n if (urlSegmentGroup) {\n const urlSegments: UrlSegment[] = urlSegmentGroup.segments;\n searchTerm = urlSegments[0].parameters['q'] ? decodeURIComponent(urlSegments[0].parameters['q']) : '';\n }\n }\n\n return searchTerm;\n }\n\n isSameSearchTerm(): boolean {\n const urlSearchTerm = this.getUrlSearchTerm();\n return this.searchedWord === urlSearchTerm;\n }\n}\n","<div class=\"app-search-container searchMenuTrigger\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n\n <button mat-icon-button class=\"app-search-button\" (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [disabled]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon>arrow_drop_down</mat-icon>\n </div>\n\n <button mat-icon-button matSuffix class=\"app-suffix-search-icon-wrapper app-close-icon\" (click)=\"exitSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\" tabindex=0>\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n >\n </app-search-input-control>\n <mat-hint *ngIf=\"hasLibrariesConstraint\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\">\n <mat-checkbox\n *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { SearchInputComponent } from './search-input/search-input.component';\nimport { SearchInputControlComponent } from './search-input-control/search-input-control.component';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n imports: [CommonModule, CoreModule.forChild(), ContentModule.forChild(), A11yModule],\n declarations: [SearchInputComponent, SearchInputControlComponent],\n exports: [SearchInputComponent, SearchInputControlComponent]\n})\nexport class AppSearchInputModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentPipeModule, NameColumnComponent, NodesApiService } from '@alfresco/adf-content-services';\nimport { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NodeActionTypes } from '@alfresco/aca-shared/store';\nimport { LockedByComponent, isLocked } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, LockedByComponent, ContentPipeModule],\n selector: 'aca-custom-name-column',\n templateUrl: './name-column.component.html',\n styleUrls: ['./name-column.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'adf-datatable-content-cell adf-datatable-link adf-name-column aca-custom-name-column'\n }\n})\nexport class CustomNameColumnComponent extends NameColumnComponent implements OnInit, OnDestroy {\n private onDestroy$$ = new Subject<boolean>();\n\n isFile: boolean;\n isFileWriteLocked: boolean;\n\n constructor(element: ElementRef, private cd: ChangeDetectorRef, private actions$: Actions, private nodesService: NodesApiService) {\n super(element, nodesService);\n }\n\n ngOnInit() {\n this.updateValue();\n this.isFile = this.node?.entry && !this.node.entry.isFolder;\n this.isFileWriteLocked = isLocked(this.node);\n\n this.nodesService.nodeUpdated.pipe(takeUntil(this.onDestroy$$)).subscribe((node: any) => {\n const row = this.context.row;\n if (row) {\n const { entry } = row.node;\n const currentId = entry.nodeId || entry.id;\n const updatedId = node.nodeId || node.id;\n\n if (currentId === updatedId) {\n entry.name = node.name;\n row.node = { entry };\n this.updateValue();\n }\n\n this.isFile = this.node?.entry && !this.node.entry.isFolder;\n this.isFileWriteLocked = isLocked(this.node);\n }\n });\n\n this.actions$\n .pipe(\n ofType<any>(NodeActionTypes.EditOffline),\n filter((val) => this.node.entry.id === val.payload.entry.id),\n takeUntil(this.onDestroy$$)\n )\n .subscribe(() => {\n this.isFileWriteLocked = isLocked(this.node);\n this.cd.detectChanges();\n });\n }\n\n onLinkClick(event: Event) {\n event.stopPropagation();\n this.onClick();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.onDestroy$$.next(true);\n this.onDestroy$$.complete();\n }\n}\n","<div\n class=\"aca-custom-name-column\"\n [ngClass]=\"{\n 'aca-name-column-container': isFile && isFileWriteLocked\n }\"\n>\n <span\n role=\"link\"\n tabindex=0\n [attr.aria-label]=\"\n (isFile ? 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FILE_LINK_ARIA_LABEL' : 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FOLDER_LINK_ARIA_LABEL')\n | translate: { name: displayText$ | async }\n \"\n class=\"adf-datatable-cell-value\"\n title=\"{{ node | adfNodeNameTooltip }}\"\n (click)=\"onLinkClick($event)\"\n (keyup.enter)=\"onLinkClick($event)\"\n >\n {{ displayText$ | async }}\n </span>\n\n <ng-container *ngIf=\"isFile && isFileWriteLocked\">\n <aca-locked-by [node]=\"context.row.node\"></aca-locked-by>\n </ng-container>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { NgIf } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n standalone: true,\n imports: [NgIf, MatIconModule, MatTooltipModule],\n selector: 'aca-custom-thumbnail-column',\n templateUrl: './thumbnail-column.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ThumbnailColumnComponent implements OnChanges {\n private translation = inject(TranslationService);\n\n @Input()\n context: any;\n\n public thumbnailUrl?: string;\n public tooltip?: string;\n\n get isSelected(): boolean {\n return !!this.context.row.isSelected;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.context) {\n const context = changes.context.currentValue;\n\n if (context) {\n this.thumbnailUrl = this.getThumbnail(context);\n this.tooltip = this.getToolTip(context);\n } else {\n this.thumbnailUrl = null;\n this.tooltip = null;\n }\n }\n }\n\n private getThumbnail({ data, row, col }): string {\n return data.getValue(row, col);\n }\n\n private getToolTip({ row }): string {\n const displayName = row.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n return displayName ? `${this.translation.instant('APP.LOCKED_BY')} ${displayName}` : '';\n }\n}\n","<mat-icon class=\"adf-datatable-selected\" *ngIf=\"isSelected\" svgIcon=\"selected\"></mat-icon>\n<img *ngIf=\"!isSelected\" class=\"adf-datatable-center-img-ie\" [src]=\"thumbnailUrl\" [alt]=\"tooltip\" [matTooltip]=\"tooltip\" />\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { TagModule } from '@alfresco/adf-content-services';\nimport { ChangeDetectorRef, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n standalone: true,\n imports: [TagModule],\n selector: 'aca-tags-column',\n template: `\n <adf-tag-node-list [showDelete]=\"false\" [limitTagsDisplayed]=\"true\" [nodeId]=\"nodeId\" (results)=\"onTagsLoaded()\"> </adf-tag-node-list>\n `,\n styleUrls: ['./tags-column.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'adf-datatable-content-cell aca-tags-name-column'\n }\n})\nexport class TagsColumnComponent implements OnInit {\n @Input()\n context: any;\n\n nodeId: string;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.nodeId = this.context?.row?.id;\n }\n\n onTagsLoaded(): void {\n this.cd.detectChanges();\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CustomNameColumnComponent } from './name-column/name-column.component';\nimport { LockedByComponent } from '@alfresco/aca-shared';\nimport { ThumbnailColumnComponent } from './thumbnail-column/thumbnail-column.component';\nimport { TagsColumnComponent } from './tags-column/tags-column.component';\n\n@NgModule({\n imports: [LockedByComponent, ThumbnailColumnComponent, CustomNameColumnComponent, TagsColumnComponent]\n})\nexport class DocumentListCustomComponentsModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\nimport { ViewNodeAction, NavigateToFolder } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { takeUntil } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { AcaFileAutoDownloadService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'aca-search-results-row',\n templateUrl: './search-results-row.component.html',\n styleUrls: ['./search-results-row.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'aca-search-results-row' }\n})\nexport class SearchResultsRowComponent implements OnInit, OnDestroy {\n private node: MinimalNodeEntity;\n private onDestroy$ = new Subject<boolean>();\n\n @Input()\n context: any;\n\n name$ = new BehaviorSubject<string>('');\n title$ = new BehaviorSubject<string>('');\n\n isFile = false;\n\n constructor(\n private store: Store<any>,\n private nodesApiService: NodesApiService,\n private router: Router,\n private fileAutoDownloadService: AcaFileAutoDownloadService\n ) {}\n\n ngOnInit() {\n this.updateValues();\n\n this.nodesApiService.nodeUpdated.pipe(takeUntil(this.onDestroy$)).subscribe((node) => {\n const row = this.context.row;\n if (row) {\n const { entry } = row.node;\n\n if (entry.id === node.id) {\n entry.name = node.name;\n entry.properties = Object.assign({}, node.properties);\n\n this.updateValues();\n }\n }\n });\n }\n\n private updateValues() {\n this.node = this.context.row.node;\n this.isFile = this.node.entry.isFile;\n\n const { name, properties } = this.node.entry;\n const title = properties ? properties['cm:title'] : '';\n\n this.name$.next(name);\n\n if (title !== name) {\n this.title$.next(title ? `( ${title} )` : '');\n }\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n showPreview(event: Event) {\n event.stopPropagation();\n if (this.fileAutoDownloadService.shouldFileAutoDownload(this.node.entry.content.sizeInBytes)) {\n this.fileAutoDownloadService.autoDownloadFile(this.node);\n } else {\n this.store.dispatch(new ViewNodeAction(this.node.entry.id, { location: this.router.url }));\n }\n }\n\n navigate(event: Event) {\n event.stopPropagation();\n this.store.dispatch(new NavigateToFolder(this.node));\n }\n}\n","<div class=\"search-file-name\">\n <span tabindex=\"0\" role=\"link\" *ngIf=\"isFile\" (click)=\"showPreview($event)\" (keyup.enter)=\"showPreview($event)\" class=\"link\">\n {{ name$ | async }}\n </span>\n <span tabindex=\"0\" role=\"link\" *ngIf=\"!isFile\" (click)=\"navigate($event)\" (keyup.enter)=\"navigate($event)\" class=\"bold link\">\n {{ name$ | async }}\n </span>\n <span>{{ title$ | async }}</span>\n</div>\n<div class=\"result-location\">\n <aca-location-link [context]=\"context\" [showLocation]=\"true\"></aca-location-link>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { SearchSortingDefinition } from '@alfresco/adf-content-services/lib/search/models/search-sorting-definition.interface';\nimport { Component, OnInit, Output, ViewEncapsulation, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'aca-search-action-menu',\n templateUrl: './search-action-menu.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchActionMenuComponent implements OnInit {\n @Output()\n sortingSelected: EventEmitter<SearchSortingDefinition> = new EventEmitter();\n\n options: SearchSortingDefinition[] = [];\n\n constructor(private queryBuilder: SearchQueryBuilderService) {}\n\n ngOnInit(): void {\n this.options = this.queryBuilder.getSortingOptions();\n }\n\n onAscSortingClicked(option: SearchSortingDefinition) {\n option.ascending = true;\n this.sortingSelected.emit(option);\n }\n\n onDescSortingClicked(option: SearchSortingDefinition) {\n option.ascending = false;\n this.sortingSelected.emit(option);\n }\n}\n","<button mat-icon-button [matMenuTriggerFor]=\"dataSorting\" id=\"aca-button-action-menu\" aria-label=\"Search action menu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n\n<mat-menu #dataSorting=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"sorting\" id=\"aca-button-sorting-menu\">{{ 'SEARCH.SORT.SORTING_OPTION' | translate }}</button>\n</mat-menu>\n\n<mat-menu #sorting=\"matMenu\">\n <ng-template matMenuContent>\n <button\n mat-menu-item\n *ngFor=\"let option of options\"\n [id]=\"option.key + '-sorting-option'\"\n [matMenuTriggerFor]=\"direction\"\n [matMenuTriggerData]=\"{ option: option }\"\n >\n {{ option.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<mat-menu #direction=\"matMenu\">\n <ng-template matMenuContent let-option=\"option\">\n <button mat-menu-item [id]=\"option.key + '-sorting-option-asc'\" (click)=\"onAscSortingClicked(option)\">\n {{ 'SEARCH.SORT.ASCENDING' | translate }}\n </button>\n <button mat-menu-item [id]=\"option.key + '-sorting-option-desc'\" (click)=\"onDescSortingClicked(option)\">\n {{ 'SEARCH.SORT.DESCENDING' | translate }}\n </button>\n </ng-template>\n</mat-menu>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MinimalNodeEntity, Pagination, ResultSetPaging } from '@alfresco/js-api';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport {\n infoDrawerPreview,\n NavigateToFolder,\n SetInfoDrawerPreviewStateAction,\n SetInfoDrawerStateAction,\n showFacetFilter,\n ShowInfoDrawerPreviewAction,\n SnackbarErrorAction\n} from '@alfresco/aca-shared/store';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { combineLatest } from 'rxjs';\nimport { PageComponent } from '@alfresco/aca-shared';\nimport { SearchSortingDefinition } from '@alfresco/adf-content-services/lib/search/models/search-sorting-definition.interface';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'aca-search-results',\n templateUrl: './search-results.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./search-results.component.scss']\n})\nexport class SearchResultsComponent extends PageComponent implements OnInit {\n showFacetFilter$ = this.store.select(showFacetFilter);\n infoDrawerPreview$ = this.store.select(infoDrawerPreview);\n\n searchedWord: string;\n queryParamName = 'q';\n data: ResultSetPaging;\n sorting = ['name', 'asc'];\n isLoading = false;\n totalResults: number;\n\n constructor(private queryBuilder: SearchQueryBuilderService, private route: ActivatedRoute, private translationService: TranslationService) {\n super();\n\n queryBuilder.paging = {\n skipCount: 0,\n maxItems: 25\n };\n\n combineLatest([this.route.params, this.queryBuilder.configUpdated])\n .pipe(takeUntil(this.onDestroy$))\n .subscribe(([params, searchConfig]) => {\n // eslint-disable-next-line no-prototype-builtins\n this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;\n const query = this.formatSearchQuery(this.searchedWord, searchConfig['aca:fields']);\n if (query) {\n this.queryBuilder.userQuery = decodeURIComponent(query);\n }\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.queryBuilder.resetToDefaults();\n this.sorting = this.getSorting();\n\n this.subscriptions.push(\n this.queryBuilder.updated.subscribe((query) => {\n if (query) {\n this.sorting = this.getSorting();\n this.isLoading = true;\n }\n }),\n\n this.queryBuilder.executed.subscribe((data) => {\n this.queryBuilder.paging.skipCount = 0;\n\n this.onSearchResultLoaded(data);\n this.isLoading = false;\n }),\n\n this.queryBuilder.error.subscribe((err: any) => {\n this.onSearchError(err);\n })\n );\n\n if (this.route) {\n this.route.params.forEach((params: Params) => {\n // eslint-disable-next-line no-prototype-builtins\n this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;\n if (this.searchedWord) {\n this.queryBuilder.update();\n } else {\n this.queryBuilder.userQuery = null;\n this.queryBuilder.executed.next({\n list: { pagination: { totalItems: 0 }, entries: [] }\n });\n }\n });\n }\n }\n\n onSearchError(error: { message: any }) {\n const { statusCode } = JSON.parse(error.message).error;\n\n const messageKey = `APP.BROWSE.SEARCH.ERRORS.${statusCode}`;\n let translated = this.translationService.instant(messageKey);\n\n if (translated === messageKey) {\n translated = this.translationService.instant(`APP.BROWSE.SEARCH.ERRORS.GENERIC`);\n }\n\n this.store.dispatch(new SnackbarErrorAction(translated));\n }\n\n private isOperator(input: string): boolean {\n if (input) {\n input = input.trim().toUpperCase();\n\n const operators = ['AND', 'OR'];\n return operators.includes(input);\n }\n return false;\n }\n\n private formatFields(fields: string[], term: string): string {\n let prefix = '';\n let suffix = '*';\n\n if (term.startsWith('=')) {\n prefix = '=';\n suffix = '';\n term = term.substring(1);\n }\n\n return '(' + fields.map((field) => `${prefix}${field}:\"${term}${suffix}\"`).join(' OR ') + ')';\n }\n\n formatSearchQuery(userInput: string, fields = ['cm:name']) {\n if (!userInput) {\n return null;\n }\n\n if (/^http[s]?:\\/\\//.test(userInput)) {\n return this.formatFields(fields, userInput);\n }\n\n userInput = userInput.trim();\n\n if (userInput.includes(':') || userInput.includes('\"')) {\n return userInput;\n }\n\n const words = userInput.split(' ');\n\n if (words.length > 1) {\n const separator = words.some(this.isOperator) ? ' ' : ' AND ';\n\n return words\n .map((term) => {\n if (this.isOperator(term)) {\n return term;\n }\n\n return this.formatFields(fields, term);\n })\n .join(separator);\n }\n\n return this.formatFields(fields, userInput);\n }\n\n onSearchResultLoaded(nodePaging: ResultSetPaging) {\n this.data = nodePaging;\n this.totalResults = this.getNumberOfResults();\n }\n\n getNumberOfResults() {\n if (this.data?.list?.pagination) {\n return this.data.list.pagination.totalItems;\n }\n return 0;\n }\n\n onPaginationChanged(pagination: Pagination) {\n this.queryBuilder.paging = {\n maxItems: pagination.maxItems,\n skipCount: pagination.skipCount\n };\n this.queryBuilder.update();\n }\n\n private getSorting(): string[] {\n const primary = this.queryBuilder.getPrimarySorting();\n\n if (primary) {\n return [primary.key, primary.ascending ? 'asc' : 'desc'];\n }\n\n return ['name', 'asc'];\n }\n\n onNodeDoubleClick(node: MinimalNodeEntity) {\n if (node && node.entry) {\n if (node.entry.isFolder) {\n this.store.dispatch(new NavigateToFolder(node));\n return;\n }\n\n this.showPreview(node, { location: this.router.url });\n }\n }\n\n handleNodeClick(event: Event) {\n this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n }\n\n onPreviewClosed() {\n this.store.dispatch(new ShowInfoDrawerPreviewAction());\n }\n\n onDrawerClosed() {\n this.store.dispatch(new SetInfoDrawerPreviewStateAction(false));\n this.store.dispatch(new SetInfoDrawerStateAction(false));\n }\n\n onSearchSortingUpdate(option: SearchSortingDefinition) {\n this.queryBuilder.sorting = [{ ...option, ascending: option.ascending }];\n this.queryBuilder.update();\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <aca-search-input></aca-search-input>\n <div class=\"adf-toolbar--spacer adf-toolbar-divider\"></div>\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\" aria-live=\"polite\"> </mat-progress-bar>\n <div class=\"adf-search-results__content-header aca-content\">\n <div class=\"aca-content__filter-set\">\n <p>{{ 'APP.BROWSE.SEARCH.FILTER_SET' | translate }}</p>\n <adf-search-form></adf-search-form>\n </div>\n <mat-divider [vertical]=\"true\" class=\"aca-content__divider\"></mat-divider>\n <div class=\"aca-content__advanced-filters\">\n <div class=\"aca-content__advanced-filters--header\">\n <p>{{ 'APP.BROWSE.SEARCH.ADVANCED_FILTERS' | translate }}</p>\n <button\n mat-button\n adf-reset-search\n class=\"aca-content__reset-action\"\n title=\"{{ 'APP.BROWSE.SEARCH.RESET_ACTION' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.RESET_ACTION' | translate \">\n {{ 'APP.BROWSE.SEARCH.RESET' | translate }}\n </button>\n </div>\n <adf-search-filter-chips></adf-search-filter-chips>\n </div>\n </div>\n\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [selectionMode]=\"'multiple'\"\n [sortingMode]=\"'server'\"\n [sorting]=\"sorting\"\n [imageResolver]=\"imageResolver\"\n [node]=\"$any(data)\"\n (node-dblclick)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <data-column key=\"$thumbnail\" type=\"image\" [sr-title]=\"'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-custom-thumbnail-column [context]=\"context\"></aca-custom-thumbnail-column>\n </ng-template>\n\n <adf-data-column-header>\n <ng-template>\n <aca-search-action-menu (sortingSelected)=\"onSearchSortingUpdate($event)\"></aca-search-action-menu>\n </ng-template>\n </adf-data-column-header>\n </data-column>\n\n <data-column key type=\"text\" class=\"adf-ellipsis-cell adf-expand-cell-5\" title=\"APP.DOCUMENT_LIST.COLUMNS.NAME\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-search-results-row [context]=\"context\"></aca-search-results-row>\n </ng-template>\n </data-column>\n\n <data-column key=\"properties\" title=\"Description\" class=\"adf-expand-cell-3\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\">\n <ng-template let-context>\n <span class=\"adf-datatable-cell-value adf-ellipsis-cell\">\n {{context.row?.node?.entry?.properties && context.row?.node?.entry?.properties['cm:description']}}\n </span>\n </ng-template>\n </data-column>\n\n <data-column key=\"content.sizeInBytes\" type=\"fileSize\" title=\"APP.DOCUMENT_LIST.COLUMNS.SIZE\" class=\"adf-no-grow-cell adf-ellipsis-cell\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\"></data-column>\n <data-column key=\"modifiedAt\" type=\"date\" title=\"APP.DOCUMENT_LIST.COLUMNS.MODIFIED_ON\" class=\"adf-no-grow-cell adf-ellipsis-cell\" format=\"timeAgo\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\"></data-column>\n <data-column key=\"modifiedByUser.displayName\" title=\"APP.DOCUMENT_LIST.COLUMNS.MODIFIED_BY\" class=\"adf-no-grow-cell adf-ellipsis-cell\" [sortable]=\"false\" *ngIf=\"!isSmallScreen\"></data-column>\n <data-column key=\"$tags\" type=\"text\" title=\"APP.DOCUMENT_LIST.COLUMNS.TAGS\" class=\"adf-full-width adf-expand-cell-4\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-tags-column [context]=\"context\"></aca-tags-column>\n </ng-template>\n </data-column>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\">\n </adf-pagination>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"\n (infoDrawerPreview$ | async) === true ? 'adf-search-results--right_panel_section-extended' : 'adf-search-results--right_panel_section'\n \"\n *ngIf=\"infoDrawerOpened$ | async\"\n >\n <adf-alfresco-viewer\n class=\"adf-search-results--embedded_viewer\"\n [nodeId]=\"selection.last.entry.id\"\n *ngIf=\"infoDrawerPreview$ | async; else infoDrawerPanel\"\n >\n <adf-viewer-toolbar>\n <div class=\"adf-search-results--preview-toolbar\">\n <div>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onDrawerClosed()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <button\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREVIEW' | translate }}\"\n color=\"accent\"\n class=\"adf-search-results--visibility_button\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onPreviewClosed()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </div>\n </div>\n </adf-viewer-toolbar>\n </adf-alfresco-viewer>\n <ng-template #infoDrawerPanel>\n <div class=\"aca-sidebar\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </ng-template>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { NodePaging, Pagination, SiteEntry } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { SearchLibrariesQueryBuilderService } from './search-libraries-query-builder.service';\nimport { AppHookService, AppService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n selector: 'aca-search-results',\n templateUrl: './search-libraries-results.component.html',\n styleUrls: ['./search-libraries-results.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchLibrariesResultsComponent extends PageComponent implements OnInit {\n searchedWord: string;\n queryParamName = 'q';\n data: NodePaging;\n totalResults = 0;\n isLoading = false;\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private librariesQueryBuilder: SearchLibrariesQueryBuilderService,\n private route: ActivatedRoute,\n private appHookService: AppHookService,\n private appService: AppService\n ) {\n super();\n\n librariesQueryBuilder.paging = {\n skipCount: 0,\n maxItems: 25\n };\n }\n\n ngOnInit() {\n this.appService.appNavNarMode$.next('collapsed');\n super.ngOnInit();\n\n this.columns = this.extensions.documentListPresets.searchLibraries || [];\n\n this.subscriptions.push(\n this.appHookService.libraryJoined.subscribe(() => this.librariesQueryBuilder.update()),\n this.appHookService.libraryDeleted.subscribe(() => this.librariesQueryBuilder.update()),\n this.appHookService.libraryLeft.subscribe(() => this.librariesQueryBuilder.update()),\n\n this.librariesQueryBuilder.updated.subscribe(() => {\n this.isLoading = true;\n\n this.librariesQueryBuilder.execute();\n }),\n\n this.librariesQueryBuilder.executed.subscribe((data) => {\n this.onSearchResultLoaded(data);\n this.isLoading = false;\n }),\n\n this.librariesQueryBuilder.hadError.subscribe((err) => {\n try {\n const {\n error: { statusCode }\n } = JSON.parse(err.message);\n if (statusCode === 400) {\n this.appHookService.library400Error.next();\n }\n } catch (e) {}\n })\n );\n\n if (this.route) {\n this.route.params.forEach((params: Params) => {\n // eslint-disable-next-line no-prototype-builtins\n this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;\n const query = this.formatSearchQuery(this.searchedWord);\n\n if (query && query.length > 1) {\n this.librariesQueryBuilder.paging.skipCount = 0;\n this.librariesQueryBuilder.userQuery = query;\n this.librariesQueryBuilder.update();\n } else {\n this.librariesQueryBuilder.userQuery = null;\n this.librariesQueryBuilder.executed.next({\n list: { pagination: { totalItems: 0 }, entries: [] }\n });\n }\n });\n }\n }\n\n private formatSearchQuery(userInput: string) {\n if (!userInput) {\n return null;\n }\n return userInput.trim();\n }\n\n onSearchResultLoaded(nodePaging: NodePaging) {\n this.data = nodePaging;\n this.totalResults = this.getNumberOfResults();\n }\n\n getNumberOfResults() {\n if (this.data && this.data.list && this.data.list.pagination) {\n return this.data.list.pagination.totalItems;\n }\n return 0;\n }\n\n onPaginationChanged(pagination: Pagination) {\n this.librariesQueryBuilder.paging = {\n maxItems: pagination.maxItems,\n skipCount: pagination.skipCount\n };\n this.librariesQueryBuilder.update();\n }\n\n navigateTo(node: SiteEntry) {\n if (node && node.entry && node.entry.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <aca-search-input></aca-search-input>\n <div class=\"adf-toolbar--spacer adf-toolbar-divider\"></div>\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\"> </mat-progress-bar>\n <div class=\"adf-search-results__content-header content\" *ngIf=\"data?.list.entries.length\">\n <div class=\"content__side--left\">\n <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults !== 1\">\n {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_RESULTS' | translate: { number: totalResults } }}\n </div>\n <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults === 1\">\n {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_ONE_RESULT' | translate: { number: totalResults } }}\n </div>\n </div>\n </div>\n\n <adf-document-list\n #documentList\n acaContextActions\n acaDocumentList\n [showHeader]=\"showHeader\"\n [selectionMode]=\"'single'\"\n [sorting]=\"['name', 'asc']\"\n [node]=\"data\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\">\n </adf-pagination>\n </div>\n </div>\n </div>\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { ContentModule } from '@alfresco/adf-content-services';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { LockedByComponent, PageLayoutModule } from '@alfresco/aca-shared';\nimport { SearchResultsComponent } from './search-results/search-results.component';\nimport { SearchResultsRowComponent } from './search-results-row/search-results-row.component';\nimport { SearchLibrariesResultsComponent } from './search-libraries-results/search-libraries-results.component';\nimport { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';\nimport { AppToolbarModule } from '../toolbar/toolbar.module';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { SearchActionMenuComponent } from './search-action-menu/search-action-menu.component';\nimport { AppSearchInputModule } from './search-input.module';\nimport { LocationLinkComponent } from '../common/location-link/location-link.component';\nimport { ThumbnailColumnComponent } from '../dl-custom-components/thumbnail-column/thumbnail-column.component';\nimport { TagsColumnComponent } from '../dl-custom-components/tags-column/tags-column.component';\nimport { ContextMenuComponent } from '../context-menu/context-menu.component';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule.forChild(),\n ContentModule.forChild(),\n ExtensionsModule,\n AppInfoDrawerModule,\n AppToolbarModule,\n DirectivesModule,\n PageLayoutModule,\n ContextMenuComponent,\n LockedByComponent,\n AppSearchInputModule,\n LocationLinkComponent,\n ThumbnailColumnComponent,\n TagsColumnComponent\n ],\n declarations: [SearchResultsComponent, SearchLibrariesResultsComponent, SearchResultsRowComponent, SearchActionMenuComponent],\n exports: [SearchResultsComponent, SearchLibrariesResultsComponent, SearchResultsRowComponent, SearchActionMenuComponent]\n})\nexport class AppSearchResultsModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentApiService, PageComponent } from '@alfresco/aca-shared';\nimport { MinimalNodeEntity, MinimalNodeEntryEntity, PathElementEntity, PathInfo } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './favorites.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FavoritesComponent extends PageComponent implements OnInit {\n columns: DocumentListPresetRef[] = [];\n\n constructor(private contentApi: ContentApiService) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())\n ]);\n\n this.columns = this.extensions.documentListPresets.favorites;\n }\n\n navigate(favorite: MinimalNodeEntryEntity) {\n const { isFolder, id } = favorite;\n\n // TODO: rework as it will fail on non-English setups\n const isSitePath = (path: PathInfo): boolean => path && path.elements && path.elements.some(({ name }: PathElementEntity) => name === 'Sites');\n\n if (isFolder) {\n this.contentApi\n .getNode(id)\n .pipe(map((node) => node.entry))\n .subscribe(({ path }: MinimalNodeEntryEntity) => {\n const routeUrl = isSitePath(path) ? '/libraries' : '/personal-files';\n this.router.navigate([routeUrl, id]);\n });\n }\n }\n\n onNodeDoubleClick(node: MinimalNodeEntity) {\n if (node && node.entry) {\n if (node.entry.isFolder) {\n this.navigate(node.entry);\n }\n\n if (node.entry.isFile) {\n this.showPreview(node, { location: this.router.url });\n }\n }\n }\n\n handleNodeClick(event: Event) {\n this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.FAVORITES.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [currentFolderId]=\"'-favorites-'\"\n [selectionMode]=\"'multiple'\"\n [navigate]=\"false\"\n [sorting]=\"['modifiedAt', 'desc']\"\n [sortingMode]=\"'client'\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"star_rate\" [title]=\"'APP.BROWSE.FAVORITES.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.FAVORITES.EMPTY_STATE.TEXT\">\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\nimport { debounceTime } from 'rxjs/operators';\nimport { PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './recent-files.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class RecentFilesComponent extends PageComponent implements OnInit {\n columns: DocumentListPresetRef[] = [];\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())\n ]);\n\n this.columns = this.extensions.documentListPresets.recent || [];\n }\n\n onNodeDoubleClick(node: MinimalNodeEntity) {\n if (node && node.entry) {\n this.showPreview(node, { location: this.router.url });\n }\n }\n\n handleNodeClick(event: Event) {\n this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.RECENT.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [currentFolderId]=\"'-recent-'\"\n [selectionMode]=\"'multiple'\"\n [navigate]=\"false\"\n [sorting]=\"['modifiedAt', 'desc']\"\n [sortingMode]=\"'client'\"\n [imageResolver]=\"imageResolver\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"access_time\" [title]=\"'APP.BROWSE.RECENT.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.RECENT.EMPTY_STATE.TEXT\">\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { MinimalNodeEntity } from '@alfresco/js-api';\nimport { AppHookService, PageComponent } from '@alfresco/aca-shared';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\n\n@Component({\n templateUrl: './shared-files.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class SharedFilesComponent extends PageComponent implements OnInit {\n columns: DocumentListPresetRef[] = [];\n\n constructor(private appHookService: AppHookService) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.appHookService.linksUnshared.pipe(debounceTime(300)).subscribe(() => this.reload()),\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())\n ]);\n\n this.columns = this.extensions.documentListPresets.shared || [];\n }\n\n preview(node: MinimalNodeEntity) {\n this.showPreview(node, { location: this.router.url });\n }\n\n handleNodeClick(event: Event) {\n this.preview((event as CustomEvent).detail?.node);\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.SHARED.TITLE\"></adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [currentFolderId]=\"'-sharedlinks-'\"\n [selectionMode]=\"'multiple'\"\n [sorting]=\"['modifiedAt', 'desc']\"\n [imageResolver]=\"imageResolver\"\n [sortingMode]=\"'client'\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"people\" [title]=\"'APP.BROWSE.SHARED.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.SHARED.EMPTY_STATE.TEXT\">\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ContentApiService, PageComponent, PageLayoutModule, SharedToolbarModule } from '@alfresco/aca-shared';\nimport { NavigateToPreviousPage, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { Subject } from 'rxjs';\nimport { BreadcrumbModule, PermissionManagerModule } from '@alfresco/adf-content-services';\nimport { ToolbarModule } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MetadataTabComponent } from '../info-drawer/metadata-tab/metadata-tab.component';\nimport { CommentsTabComponent } from '../info-drawer/comments-tab/comments-tab.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n PageLayoutModule,\n PermissionManagerModule,\n BreadcrumbModule,\n ToolbarModule,\n SharedToolbarModule,\n MatIconModule,\n MatTabsModule,\n MatProgressBarModule,\n MatButtonModule,\n MetadataTabComponent,\n CommentsTabComponent\n ],\n selector: 'app-details-manager',\n templateUrl: './details.component.html',\n styleUrls: ['./details.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DetailsComponent extends PageComponent implements OnInit, OnDestroy {\n nodeId: string;\n isLoading: boolean;\n onDestroy$ = new Subject<boolean>();\n activeTab = 1;\n\n constructor(private route: ActivatedRoute, private contentApi: ContentApiService) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.isLoading = true;\n const { route } = this;\n const { data } = route.snapshot;\n this.title = data.title;\n\n this.route.params.subscribe((params) => {\n this.isLoading = true;\n this.setActiveTab(params.activeTab);\n this.nodeId = params.nodeId;\n this.contentApi.getNode(this.nodeId).subscribe((node) => {\n this.node = node.entry;\n this.isLoading = false;\n this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));\n });\n });\n }\n\n setActiveTab(tabName: string) {\n switch (tabName) {\n case 'comments':\n this.activeTab = 1;\n break;\n case 'permissions':\n this.activeTab = 2;\n break;\n case 'metadata':\n default:\n this.activeTab = 0;\n }\n }\n\n goBack() {\n this.store.dispatch(new NavigateToPreviousPage());\n }\n\n ngOnDestroy(): void {\n this.store.dispatch(new SetSelectedNodesAction([]));\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" (navigate)=\"goBack()\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"acs-details-container\">\n <div class=\"acs-details-title\">\n <div class=\"acs-details-breadcrumb\" role=\"heading\" aria-level=\"2\" *ngIf=\"node\">\n <span class=\"acs-details-breadcrumb-library\"> {{ node.name }} </span>\n -\n <span class=\"acs-details-breadcrumb-item\">{{ 'APP.INFO_DRAWER.TITLE' | translate }}</span>\n </div>\n <div class=\"acs-close-members-container\">\n <button mat-icon-button data-automation-id=\"close-library\" title=\"{{ 'APP.INFO_DRAWER.CLOSE_LIBRARY' | translate }}\" (click)=\"goBack()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </div>\n\n <mat-tab-group [selectedIndex]=\"activeTab\" class=\"adw-details-tabs\">\n <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.PROPERTIES' | translate }}\">\n <app-metadata-tab *ngIf=\"node && !isLoading; else loading\" [node]=\"node\"> </app-metadata-tab>\n </mat-tab>\n <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.COMMENTS' | translate }}\">\n <app-comments-tab *ngIf=\"node && !isLoading; else loading\" [node]=\"node\"> </app-comments-tab>\n </mat-tab>\n <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.PERMISSIONS' | translate }}\">\n <adf-permission-list *ngIf=\"node && !isLoading; else loading\" [nodeId]=\"node.id\"></adf-permission-list>\n </mat-tab>\n </mat-tab-group>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n\n<ng-template #loading>\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"> </mat-progress-bar>\n</ng-template>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppConfigService } from '@alfresco/adf-core';\n\n@Component({\n template: '',\n encapsulation: ViewEncapsulation.None\n})\nexport class HomeComponent implements OnInit {\n readonly DEFAULT_LANDING_PAGE = '/personal-files';\n\n constructor(private appConfig: AppConfigService, private router: Router) {}\n\n ngOnInit() {\n const landingPage = this.appConfig.get('landingPage', this.DEFAULT_LANDING_PAGE);\n this.router.navigateByUrl(landingPage);\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { PeopleApi, Person } from '@alfresco/js-api';\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { AppService } from '@alfresco/aca-shared';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, ReactiveFormsModule, MatButtonModule, MatIconModule, MatDividerModule, MatFormFieldModule],\n selector: 'app-view-profile',\n templateUrl: './view-profile.component.html',\n styleUrls: ['./view-profile.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ViewProfileComponent implements OnInit, OnDestroy {\n peopleApi: PeopleApi;\n\n profileForm: FormGroup;\n personDetails: Person;\n\n generalSectionDropdown = true;\n generalSectionButtonsToggle = true;\n\n loginSectionDropdown = false;\n loginSectionButtonsToggle = true;\n passwordSectionDropdown = false;\n\n contactSectionDropdown = false;\n contactSectionButtonsToggle = true;\n appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n private onDestroy$ = new Subject<boolean>();\n\n constructor(private router: Router, apiService: AlfrescoApiService, private appService: AppService) {\n this.peopleApi = new PeopleApi(apiService.getInstance());\n this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntil(this.onDestroy$));\n }\n\n ngOnInit() {\n this.populateForm(this.personDetails);\n this.peopleApi\n .getPerson('-me-')\n .then((userInfo) => {\n this.personDetails = userInfo?.entry;\n this.populateForm(userInfo?.entry);\n })\n .catch((error) => {\n throwError(error);\n });\n }\n\n toggleClick() {\n this.appService.toggleAppNavBar$.next();\n }\n\n populateForm(userInfo: Person) {\n this.profileForm = new FormGroup({\n jobTitle: new FormControl(userInfo?.jobTitle || ''),\n location: new FormControl(userInfo?.location || ''),\n telephone: new FormControl(userInfo?.telephone || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n mobile: new FormControl(userInfo?.mobile || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n oldPassword: new FormControl(''),\n newPassword: new FormControl(''),\n verifyPassword: new FormControl(''),\n companyName: new FormControl(userInfo?.company?.organization || ''),\n companyPostCode: new FormControl(userInfo?.company?.postcode || ''),\n companyAddress: new FormControl(userInfo?.company?.address1 || ''),\n companyTelephone: new FormControl(userInfo?.company?.telephone || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n companyEmail: new FormControl(userInfo?.company?.email || '', [Validators.email])\n });\n }\n\n navigateToPersonalFiles() {\n this.router.navigate(['/personal-files'], {\n replaceUrl: true\n });\n }\n\n toggleGeneralDropdown() {\n this.generalSectionDropdown = !this.generalSectionDropdown;\n\n if (!this.generalSectionDropdown) {\n this.generalSectionButtonsToggle = true;\n }\n }\n\n toggleGeneralButtons() {\n this.generalSectionButtonsToggle = !this.generalSectionButtonsToggle;\n\n if (!this.generalSectionButtonsToggle) {\n this.generalSectionDropdown = true;\n }\n }\n\n onSaveGeneralData(event) {\n this.generalSectionButtonsToggle = !this.generalSectionButtonsToggle;\n this.updatePersonDetails(event);\n }\n\n onSaveLoginData() {\n this.passwordSectionDropdown = !this.passwordSectionDropdown;\n this.loginSectionButtonsToggle = !this.loginSectionButtonsToggle;\n }\n\n onSaveCompanyData(event) {\n this.contactSectionButtonsToggle = !this.contactSectionButtonsToggle;\n this.updatePersonDetails(event);\n }\n\n toggleLoginDropdown() {\n this.loginSectionDropdown = !this.loginSectionDropdown;\n\n if (!this.loginSectionDropdown) {\n this.loginSectionButtonsToggle = true;\n }\n }\n\n toggleLoginButtons() {\n this.loginSectionButtonsToggle = !this.loginSectionButtonsToggle;\n this.passwordSectionDropdown = !this.passwordSectionDropdown;\n\n if (!this.loginSectionButtonsToggle) {\n this.loginSectionDropdown = true;\n this.passwordSectionDropdown = true;\n }\n }\n\n toggleContactDropdown() {\n this.contactSectionDropdown = !this.contactSectionDropdown;\n\n if (!this.contactSectionDropdown) {\n this.contactSectionButtonsToggle = true;\n }\n }\n\n toggleContactButtons() {\n this.contactSectionButtonsToggle = !this.contactSectionButtonsToggle;\n\n if (!this.contactSectionButtonsToggle) {\n this.contactSectionDropdown = true;\n }\n }\n\n updatePersonDetails(event) {\n if (this.profileForm.valid) {\n this.peopleApi\n .updatePerson('-me-', {\n jobTitle: event.value.jobTitle,\n location: event.value.location,\n telephone: event.value.telephone,\n mobile: event.value.mobile,\n company: {\n organization: event.value.companyName,\n postcode: event.value.companyPostCode,\n address1: event.value.companyAddress,\n telephone: event.value.companyTelephone,\n email: event.value.companyEmail\n }\n })\n .then((person) => {\n this.personDetails = person?.entry;\n this.populateForm(person?.entry);\n })\n .catch((error) => {\n this.populateForm(this.personDetails);\n throwError(error);\n });\n } else {\n this.populateForm(this.personDetails);\n }\n }\n\n isSaveButtonDisabled(): boolean {\n return this.profileForm.invalid;\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<div class=\"app-profile-container\">\n <div class=\"app-profile-row\">\n <div class=\"app-profile-title\">\n <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\" mat-icon-button (click)=\"toggleClick()\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n <mat-icon>menu</mat-icon>\n </button>\n <mat-icon class=\"app-profile-icon\" (click)=\"navigateToPersonalFiles()\" id=\"backButton\">arrow_back</mat-icon>\n <h3 class=\"app-profile\">{{'APP.EDIT_PROFILE.MY_PROFILE' | translate}}</h3>\n </div>\n </div>\n <div class=\"app-profile-general-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleGeneralDropdown()\" id=\"toggle-general-dropdown\">\n {{ generalSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.GENERAL' | translate}}</h4>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"generalSectionButtonsToggle\">\n <button mat-raised-button (click)=\"toggleGeneralButtons()\" id=\"general-edit-button\"\n class=\"app-general-edit\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!generalSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"general-cancel-button\"\n (click)=\"toggleGeneralButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"general-save-button\" [disabled]=\"profileForm.invalid\"\n (click)=\"onSaveGeneralData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-mat-divider\" *ngIf=\"generalSectionDropdown\"></mat-divider>\n <div *ngIf=\"generalSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.FIRST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.firstName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LAST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.lastName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.JOB_TITLE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.jobTitle}}</p>\n <input type=\"text\" value=\"\" formControlName=\"jobTitle\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LOCATION' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.location}}</p>\n <input type=\"text\" value=\"\" formControlName=\"location\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.telephone}}</p>\n <input type=\"tel\" name=\"Telephone\" value=\"\" formControlName=\"telephone\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('telephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.MOBILE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.mobile}}</p>\n <input type=\"tel\" value=\"\" formControlName=\"mobile\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('mobile').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"app-profile-contact-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general profile-general-bottom-radius\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleContactDropdown()\" id=\"toggle-contact-dropdown\">\n {{ contactSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.COMPANY_DETAILS' | translate}}</h4>\n </div>\n\n <div class=\"app-general-edit-btn\" *ngIf=\"contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-edit\" id=\"contact-edit-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"contact-cancel-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"contact-save-button\" [disabled]=\"profileForm.invalid\"\n (click)=\"onSaveCompanyData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-mat-divider\" *ngIf=\"contactSectionDropdown\"></mat-divider>\n <div *ngIf=\"contactSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.organization}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyName\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.ADDRESS' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.address1}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyAddress\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.POSTCODE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.postcode}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyPostCode\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.telephone}}</p>\n <input type=\"tel\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyTelephone\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyTelephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\"></mat-divider>\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.EMAIL' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.email}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyEmail\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyEmail').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthenticationService } from '@alfresco/adf-core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewProfileRuleGuard implements CanActivate {\n constructor(private authService: AuthenticationService) {}\n\n canActivate(): Observable<boolean> | Promise<boolean> | boolean {\n return this.isEcmLoggedIn() || this.authService.isOauth();\n }\n\n private isEcmLoggedIn(): boolean {\n return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { AlfrescoApiService } from '@alfresco/adf-core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { SharedLinkEntry, SharedlinksApi } from '@alfresco/js-api';\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, from, of, Subject } from 'rxjs';\nimport { catchError, mergeMap, takeUntil } from 'rxjs/operators';\nimport { AppExtensionService, AppService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'app-shared-link-view',\n templateUrl: './shared-link-view.component.html',\n styleUrls: ['shared-link-view.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-shared-link-view' }\n})\nexport class SharedLinkViewComponent implements OnInit, OnDestroy {\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n private sharedLinksApi: SharedlinksApi;\n sharedLinkId: string = null;\n viewerToolbarActions: Array<ContentActionRef> = [];\n\n constructor(\n private route: ActivatedRoute,\n private store: Store<AppStore>,\n private extensions: AppExtensionService,\n private alfrescoApiService: AlfrescoApiService,\n private appService: AppService\n ) {\n this.sharedLinksApi = new SharedlinksApi(this.alfrescoApiService.getInstance());\n }\n\n ngOnInit() {\n this.route.params\n .pipe(\n mergeMap((params) =>\n forkJoin([from(this.sharedLinksApi.getSharedLink(params.id)), of(params.id)]).pipe(catchError(() => of([null, params.id])))\n )\n )\n .subscribe(([sharedEntry, sharedId]: [SharedLinkEntry, string]) => {\n if (sharedEntry) {\n this.store.dispatch(new SetSelectedNodesAction([sharedEntry as any]));\n this.appService.openMobileAppDialog();\n }\n this.sharedLinkId = sharedId;\n });\n\n this.extensions\n .getSharedLinkViewerToolbarActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => {\n this.viewerToolbarActions = actions;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n trackByActionId(_: number, action: ContentActionRef) {\n return action.id;\n }\n}\n","<ng-container *ngIf=\"sharedLinkId\">\n <adf-alfresco-viewer [allowPrint]=\"false\" [allowDownload]=\"false\" [allowFullScreen]=\"false\" [sharedLinkId]=\"sharedLinkId\" [allowGoBack]=\"false\">\n <adf-viewer-toolbar-actions>\n <ng-container *ngFor=\"let action of viewerToolbarActions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"action\"></aca-toolbar-action>\n </ng-container>\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { getUserProfile } from '@alfresco/aca-shared/store';\nimport { DocumentListPresetRef, ExtensionsModule } from '@alfresco/adf-extensions';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { PageComponent, PageLayoutModule, SharedToolbarModule } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BreadcrumbModule, DocumentListModule } from '@alfresco/adf-content-services';\nimport { DataTableModule, PaginationModule, TemplateModule, ToolbarModule } from '@alfresco/adf-core';\nimport { DirectivesModule } from '../../directives/directives.module';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n PageLayoutModule,\n BreadcrumbModule,\n ToolbarModule,\n SharedToolbarModule,\n DocumentListModule,\n TemplateModule,\n DirectivesModule,\n PaginationModule,\n DataTableModule,\n ExtensionsModule\n ],\n templateUrl: './trashcan.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TrashcanComponent extends PageComponent implements OnInit {\n user$ = this.store.select(getUserProfile);\n columns: DocumentListPresetRef[] = [];\n\n ngOnInit() {\n super.ngOnInit();\n this.columns = this.extensions.documentListPresets.trashcan || [];\n }\n}\n","<aca-page-layout>\n <aca-page-layout-header>\n <adf-breadcrumb root=\"APP.BROWSE.TRASHCAN.TITLE\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-content>\n <div class=\"main-content\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [currentFolderId]=\"'-trashcan-'\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"true\"\n [navigate]=\"false\"\n [sortingMode]=\"'client'\"\n [imageResolver]=\"imageResolver\"\n [sorting]=\"['archivedAt', 'desc']\"\n >\n <adf-custom-empty-content-template>\n <adf-empty-content icon=\"delete\" [title]=\"'APP.BROWSE.TRASHCAN.EMPTY_STATE.TITLE'\">\n <p class=\"adf-empty-content__text\">\n {{ 'APP.BROWSE.TRASHCAN.EMPTY_STATE.FIRST_TEXT' | translate }}\n </p>\n <p class=\"adf-empty-content__text\">\n {{ 'APP.BROWSE.TRASHCAN.EMPTY_STATE.SECOND_TEXT' | translate }}\n </p>\n </adf-empty-content>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n\n <data-column\n *ngIf=\"!isSmallScreen && (user$ | async)?.isAdmin\"\n class=\"adf-ellipsis-cell\"\n key=\"archivedByUser.displayName\"\n title=\"APP.DOCUMENT_LIST.COLUMNS.DELETED_BY\"\n >\n </data-column>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { FilesComponent } from './components/files/files.component';\nimport { LibrariesComponent } from './components/libraries/libraries.component';\nimport { FavoriteLibrariesComponent } from './components/favorite-libraries/favorite-libraries.component';\nimport { SearchResultsComponent } from './components/search/search-results/search-results.component';\nimport { SearchLibrariesResultsComponent } from './components/search/search-libraries-results/search-libraries-results.component';\nimport { AppSharedRuleGuard, GenericErrorComponent, ExtensionRoute, ExtensionsDataLoaderGuard } from '@alfresco/aca-shared';\nimport { AuthGuard } from '@alfresco/adf-core';\nimport { FavoritesComponent } from './components/favorites/favorites.component';\nimport { RecentFilesComponent } from './components/recent-files/recent-files.component';\nimport { SharedFilesComponent } from './components/shared-files/shared-files.component';\nimport { DetailsComponent } from './components/details/details.component';\nimport { HomeComponent } from './components/home/home.component';\nimport { ViewProfileComponent } from './components/view-profile/view-profile.component';\nimport { ViewProfileRuleGuard } from './components/view-profile/view-profile.guard';\nimport { Route } from '@angular/router';\nimport { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';\nimport { TrashcanComponent } from './components/trashcan/trashcan.component';\nimport { ShellLayoutComponent } from '@alfresco/adf-core/shell';\n\nexport const CONTENT_ROUTES: ExtensionRoute[] = [\n {\n path: 'preview/s/:id',\n children: [\n {\n path: '',\n component: SharedLinkViewComponent,\n data: {\n title: 'APP.PREVIEW.TITLE'\n }\n }\n ]\n },\n {\n path: 'view',\n component: ShellLayoutComponent,\n children: [\n {\n path: ':nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n }\n];\n\nexport const CONTENT_LAYOUT_ROUTES: Route = {\n path: '',\n canActivate: [ExtensionsDataLoaderGuard],\n children: [\n {\n path: 'profile',\n canActivate: [ViewProfileRuleGuard],\n component: ViewProfileComponent\n },\n {\n path: '',\n component: HomeComponent\n },\n {\n path: 'personal-files',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n sortingPreferenceKey: 'personal-files',\n title: 'APP.BROWSE.PERSONAL.TITLE',\n defaultNodeId: '-my-'\n }\n },\n {\n path: 'details/:nodeId',\n children: [\n {\n path: '',\n component: DetailsComponent,\n data: {\n navigateSource: 'personal-files'\n }\n },\n {\n path: ':activeTab',\n component: DetailsComponent,\n data: {\n title: 'APP.BROWSE.PERSONAL.PERMISSIONS.TITLE',\n navigateSource: 'personal-files'\n }\n }\n ]\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'personal-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'personal-files/:folderId',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n title: 'APP.BROWSE.PERSONAL.TITLE',\n sortingPreferenceKey: 'personal-files'\n }\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'personal-files'\n }\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: ':folderId/preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'personal-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'personal-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'libraries',\n children: [\n {\n path: '',\n component: LibrariesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE',\n sortingPreferenceKey: 'libraries'\n }\n }\n ]\n },\n {\n path: 'libraries/:folderId',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE',\n sortingPreferenceKey: 'libraries-files'\n }\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'libraries'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ],\n data: {\n navigateSource: 'libraries'\n }\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'favorite',\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'libraries'\n },\n {\n path: 'libraries',\n component: FavoriteLibrariesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE',\n sortingPreferenceKey: 'favorite-libraries'\n }\n }\n ]\n },\n {\n path: 'favorite/libraries/:folderId',\n children: [\n {\n path: '',\n component: FilesComponent,\n data: {\n title: 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE',\n sortingPreferenceKey: 'libraries-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'libraries'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'favorites',\n data: {\n sortingPreferenceKey: 'favorites'\n },\n children: [\n {\n path: '',\n component: FavoritesComponent,\n data: {\n title: 'APP.BROWSE.FAVORITES.TITLE',\n sortingPreferenceKey: 'favorites'\n }\n // loadChildren:\n // './components/favorites/favorites.module#AppFavoritesModule'\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'favorites'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'favorites'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'favorites'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'recent-files',\n data: {\n sortingPreferenceKey: 'recent-files'\n },\n children: [\n {\n path: '',\n component: RecentFilesComponent,\n data: {\n title: 'APP.BROWSE.RECENT.TITLE'\n }\n // loadChildren:\n // './components/recent-files/recent-files.module#AppRecentFilesModule'\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'recent-files'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'recent-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'recent-files'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'shared',\n children: [\n {\n path: '',\n data: {\n title: 'APP.BROWSE.SHARED.TITLE',\n sortingPreferenceKey: 'shared-files'\n },\n component: SharedFilesComponent\n // loadChildren:\n // './components/shared-files/shared-files.module#AppSharedFilesModule'\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'shared'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'shared'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'shared'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ],\n canActivateChild: [AppSharedRuleGuard],\n canActivate: [AppSharedRuleGuard]\n },\n {\n path: 'trashcan',\n children: [\n {\n path: '',\n component: TrashcanComponent,\n data: {\n title: 'APP.BROWSE.TRASHCAN.TITLE',\n sortingPreferenceKey: 'trashcan'\n }\n }\n ]\n },\n {\n path: 'search',\n children: [\n {\n path: '',\n component: SearchResultsComponent,\n data: {\n title: 'APP.BROWSE.SEARCH.TITLE'\n }\n },\n // deprecated, backwards compatibility with ACA 1.8\n {\n path: 'preview/:nodeId',\n loadChildren: () => import('@alfresco/aca-preview').then((m) => m.PreviewModule),\n data: {\n navigateSource: 'search'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'search'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n },\n {\n path: 'view/:nodeId/:versionId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'search'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'search-libraries',\n children: [\n {\n path: '',\n component: SearchLibrariesResultsComponent,\n data: {\n title: 'APP.BROWSE.SEARCH.TITLE'\n }\n },\n {\n path: 'view/:nodeId',\n outlet: 'viewer',\n children: [\n {\n path: '',\n data: {\n navigateSource: 'search'\n },\n loadChildren: () => import('@alfresco/aca-viewer').then((m) => m.AcaViewerModule)\n }\n ]\n }\n ]\n },\n {\n path: 'nodes/:nodeId',\n children: [\n {\n path: '',\n loadChildren: () => import('@alfresco/aca-content/folder-rules').then((m) => m.AcaFolderRulesModule)\n }\n ]\n },\n {\n path: '**',\n component: GenericErrorComponent\n }\n ],\n canActivateChild: [AuthGuard]\n};\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getFileUploadingDialog } from '@alfresco/aca-shared/store';\n\n@Component({\n selector: 'aca-upload-files-dialog',\n templateUrl: './upload-files-dialog.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadFilesDialogComponent implements OnDestroy {\n showFileUploadingDialog$: Observable<boolean>;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>) {\n this.showFileUploadingDialog$ = this.store.select(getFileUploadingDialog).pipe(delay(0), takeUntil(this.onDestroy$));\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<adf-file-uploading-dialog *ngIf=\"showFileUploadingDialog$ | async\" position=\"left\">\n</adf-file-uploading-dialog>","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { SharedLinkViewComponent } from './shared-link-view.component';\nimport { CommonModule } from '@angular/common';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { AppToolbarModule } from '../toolbar/toolbar.module';\nimport { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';\nimport { CoreExtensionsModule } from '../../extensions/core.extensions.module';\nimport { ContentModule } from '@alfresco/adf-content-services';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreModule.forChild(),\n DirectivesModule,\n AppToolbarModule,\n CoreExtensionsModule.forChild(),\n AppInfoDrawerModule,\n ContentModule\n ],\n declarations: [SharedLinkViewComponent],\n exports: [SharedLinkViewComponent]\n})\nexport class AppSharedLinkViewModule {}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { HammerModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TRANSLATION_PROVIDER, CoreModule, AuthGuardEcm, LanguagePickerComponent, NotificationHistoryComponent } from '@alfresco/adf-core';\nimport {\n ContentModule,\n ContentVersionService,\n LibraryNameColumnComponent,\n LibraryRoleColumnComponent,\n LibraryStatusColumnComponent,\n TrashcanNameColumnComponent\n} from '@alfresco/adf-content-services';\nimport {\n DocumentBasePageService,\n ExtensionsDataLoaderGuard,\n PageLayoutModule,\n SharedModule,\n GenericErrorComponent,\n OpenInAppModule\n} from '@alfresco/aca-shared';\nimport * as rules from '@alfresco/aca-shared/rules';\n\nimport { FilesComponent } from './components/files/files.component';\nimport { LibrariesComponent } from './components/libraries/libraries.component';\nimport { FavoriteLibrariesComponent } from './components/favorite-libraries/favorite-libraries.component';\n\nimport { AppStoreModule } from './store/app-store.module';\nimport { MaterialModule } from './material.module';\nimport { CoreExtensionsModule } from './extensions/core.extensions.module';\nimport { AppInfoDrawerModule } from './components/info-drawer/info.drawer.module';\nimport { DirectivesModule } from './directives/directives.module';\nimport { ExtensionService, ExtensionsModule } from '@alfresco/adf-extensions';\nimport { AppToolbarModule } from './components/toolbar/toolbar.module';\nimport { AppSidenavModule } from './components/sidenav/sidenav.module';\nimport { APP_COMMON_DIRECTIVES } from './components/common/common.module';\nimport { AppSearchInputModule } from './components/search/search-input.module';\nimport { DocumentListCustomComponentsModule } from './components/dl-custom-components/document-list-custom-components.module';\nimport { AppSearchResultsModule } from './components/search/search-results.module';\nimport { FavoritesComponent } from './components/favorites/favorites.component';\nimport { RecentFilesComponent } from './components/recent-files/recent-files.component';\nimport { SharedFilesComponent } from './components/shared-files/shared-files.component';\nimport { CreateFromTemplateDialogComponent } from './dialogs/node-template/create-from-template.dialog';\nimport { DetailsComponent } from './components/details/details.component';\nimport { ContentUrlService } from './services/content-url.service';\nimport { HomeComponent } from './components/home/home.component';\n\nimport { CommonModule } from '@angular/common';\nimport { LocationLinkComponent } from './components/common/location-link/location-link.component';\nimport { LogoutComponent } from './components/common/logout/logout.component';\nimport { ToggleSharedComponent } from './components/common/toggle-shared/toggle-shared.component';\nimport { CustomNameColumnComponent } from './components/dl-custom-components/name-column/name-column.component';\nimport { CommentsTabComponent } from './components/info-drawer/comments-tab/comments-tab.component';\nimport { LibraryMetadataTabComponent } from './components/info-drawer/library-metadata-tab/library-metadata-tab.component';\nimport { MetadataTabComponent } from './components/info-drawer/metadata-tab/metadata-tab.component';\nimport { VersionsTabComponent } from './components/info-drawer/versions-tab/versions-tab.component';\nimport { PreviewComponent } from '@alfresco/aca-preview';\nimport { ToggleEditOfflineComponent } from './components/toolbar/toggle-edit-offline/toggle-edit-offline.component';\nimport { ToggleFavoriteLibraryComponent } from './components/toolbar/toggle-favorite-library/toggle-favorite-library.component';\nimport { ToggleFavoriteComponent } from './components/toolbar/toggle-favorite/toggle-favorite.component';\nimport { ToggleInfoDrawerComponent } from './components/toolbar/toggle-info-drawer/toggle-info-drawer.component';\nimport { ToggleJoinLibraryButtonComponent } from './components/toolbar/toggle-join-library/toggle-join-library-button.component';\nimport { ToggleJoinLibraryMenuComponent } from './components/toolbar/toggle-join-library/toggle-join-library-menu.component';\nimport { ViewNodeComponent } from './components/toolbar/view-node/view-node.component';\nimport { CONTENT_ROUTES } from './aca-content.routes';\nimport { RouterModule } from '@angular/router';\nimport { UploadFilesDialogComponent } from './components/upload-files-dialog/upload-files-dialog.component';\nimport { AppSharedLinkViewModule } from './components/shared-link-view/shared-link-view.module';\nimport { AcaFolderRulesModule } from '@alfresco/aca-content/folder-rules';\nimport { TagsColumnComponent } from './components/dl-custom-components/tags-column/tags-column.component';\nimport { UserInfoComponent } from './components/common/user-info/user-info.component';\nimport { SidenavComponent } from './components/sidenav/sidenav.component';\nimport { ContentManagementService } from './services/content-management.service';\nimport { ShellLayoutComponent, SHELL_NAVBAR_MIN_WIDTH } from '@alfresco/adf-core/shell';\nimport { UserMenuComponent } from './components/sidenav/user-menu/user-menu.component';\nimport { ContextMenuComponent } from './components/context-menu/context-menu.component';\nimport { ViewProfileComponent } from './components/view-profile/view-profile.component';\nimport { TrashcanComponent } from './components/trashcan/trashcan.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ContentModule.forRoot(),\n RouterModule.forChild(CONTENT_ROUTES),\n CoreModule.forChild(),\n ExtensionsModule.forChild(),\n CoreExtensionsModule.forChild(),\n SharedModule,\n MaterialModule,\n AppStoreModule,\n ...APP_COMMON_DIRECTIVES,\n PageLayoutModule,\n DirectivesModule,\n ContextMenuComponent,\n AppInfoDrawerModule,\n AppToolbarModule,\n AppSidenavModule,\n DocumentListCustomComponentsModule,\n AppSearchInputModule,\n AppSearchResultsModule,\n HammerModule,\n ViewProfileComponent,\n TrashcanComponent,\n AppSharedLinkViewModule,\n AcaFolderRulesModule,\n GenericErrorComponent,\n DetailsComponent,\n CreateFromTemplateDialogComponent,\n OpenInAppModule\n ],\n declarations: [\n FilesComponent,\n LibrariesComponent,\n FavoriteLibrariesComponent,\n FavoritesComponent,\n RecentFilesComponent,\n SharedFilesComponent,\n HomeComponent,\n UploadFilesDialogComponent\n ],\n providers: [\n { provide: ContentVersionService, useClass: ContentUrlService },\n { provide: DocumentBasePageService, useExisting: ContentManagementService },\n {\n provide: TRANSLATION_PROVIDER,\n multi: true,\n useValue: {\n name: 'app',\n source: 'assets'\n }\n },\n { provide: SHELL_NAVBAR_MIN_WIDTH, useValue: 0 }\n ]\n})\nexport class ContentServiceExtensionModule {\n constructor(public extensions: ExtensionService) {\n extensions.setAuthGuards({\n 'app.auth': AuthGuardEcm,\n 'app.extensions.dataLoaderGuard': ExtensionsDataLoaderGuard\n });\n\n extensions.setComponents({\n 'app.layout.main': ShellLayoutComponent,\n 'app.layout.sidenav': SidenavComponent,\n 'app.shell.sibling': UploadFilesDialogComponent,\n 'app.components.tabs.metadata': MetadataTabComponent,\n 'app.components.tabs.library.metadata': LibraryMetadataTabComponent,\n 'app.components.tabs.comments': CommentsTabComponent,\n 'app.components.tabs.versions': VersionsTabComponent,\n 'app.components.preview': PreviewComponent,\n 'app.toolbar.toggleInfoDrawer': ToggleInfoDrawerComponent,\n 'app.toolbar.toggleFavorite': ToggleFavoriteComponent,\n 'app.toolbar.toggleFavoriteLibrary': ToggleFavoriteLibraryComponent,\n 'app.toolbar.toggleJoinLibrary': ToggleJoinLibraryButtonComponent,\n 'app.menu.toggleJoinLibrary': ToggleJoinLibraryMenuComponent,\n 'app.shared-link.toggleSharedLink': ToggleSharedComponent,\n 'app.columns.name': CustomNameColumnComponent,\n 'app.columns.libraryName': LibraryNameColumnComponent,\n 'app.columns.libraryRole': LibraryRoleColumnComponent,\n 'app.columns.libraryStatus': LibraryStatusColumnComponent,\n 'app.columns.trashcanName': TrashcanNameColumnComponent,\n 'app.columns.location': LocationLinkComponent,\n 'app.columns.tags': TagsColumnComponent,\n 'app.toolbar.toggleEditOffline': ToggleEditOfflineComponent,\n 'app.toolbar.viewNode': ViewNodeComponent,\n 'app.languagePicker': LanguagePickerComponent,\n 'app.logout': LogoutComponent,\n 'app.user': UserInfoComponent,\n 'app.notification-center': NotificationHistoryComponent,\n 'app.user.menu': UserMenuComponent\n });\n\n extensions.setEvaluators({\n canCopyNode: rules.canCopyNode,\n canToggleJoinLibrary: rules.canToggleJoinLibrary,\n canEditFolder: rules.canEditFolder,\n isTrashcanItemSelected: rules.isTrashcanItemSelected,\n canViewFile: rules.canViewFile,\n canLeaveLibrary: rules.canLeaveLibrary,\n canToggleSharedLink: rules.canToggleSharedLink,\n canShowInfoDrawer: rules.canShowInfoDrawer,\n canManageFileVersions: rules.canManageFileVersions,\n canManagePermissions: rules.canManagePermissions,\n canToggleEditOffline: rules.canToggleEditOffline,\n canToggleFavorite: rules.canToggleFavorite,\n isLibraryManager: rules.isLibraryManager,\n canEditAspects: rules.canEditAspects,\n canInfoPreview: rules.canInfoPreview,\n showInfoSelectionButton: rules.showInfoSelectionButton,\n\n 'app.selection.canDelete': rules.canDeleteSelection,\n 'app.selection.file.canUnlock': rules.canUnlockFile,\n 'app.selection.file.canLock': rules.canLockFile,\n 'app.selection.canDownload': rules.canDownloadSelection,\n 'app.selection.notEmpty': rules.hasSelection,\n 'app.selection.canUnshare': rules.canUnshareNodes,\n 'app.selection.canAddFavorite': rules.canAddFavorite,\n 'app.selection.canRemoveFavorite': rules.canRemoveFavorite,\n 'app.selection.first.canUpdate': rules.canUpdateSelectedNode,\n 'app.selection.file': rules.hasFileSelected,\n 'app.selection.file.canShare': rules.canShareFile,\n 'app.selection.file.isShared': rules.isShared,\n 'app.selection.file.isLocked': rules.hasLockedFiles,\n 'app.selection.file.isLockOwner': rules.isUserWriteLockOwner,\n 'app.selection.file.canUploadVersion': rules.canUploadVersion,\n 'app.selection.library': rules.hasLibrarySelected,\n 'app.selection.isPrivateLibrary': rules.isPrivateLibrary,\n 'app.selection.hasLibraryRole': rules.hasLibraryRole,\n 'app.selection.hasNoLibraryRole': rules.hasNoLibraryRole,\n 'app.selection.folder': rules.hasFolderSelected,\n 'app.selection.folder.canUpdate': rules.canUpdateSelectedFolder,\n\n 'app.navigation.folder.canCreate': rules.canCreateFolder,\n 'app.navigation.folder.canUpload': rules.canUpload,\n 'app.navigation.isTrashcan': rules.isTrashcan,\n 'app.navigation.isNotTrashcan': rules.isNotTrashcan,\n 'app.navigation.isLibraries': rules.isLibraries,\n 'app.navigation.isLibraryFiles': rules.isLibraryFiles,\n 'app.navigation.isPersonalFiles': rules.isPersonalFiles,\n 'app.navigation.isNotLibraries': rules.isNotLibraries,\n 'app.navigation.isSharedFiles': rules.isSharedFiles,\n 'app.navigation.isNotSharedFiles': rules.isNotSharedFiles,\n 'app.navigation.isFavorites': rules.isFavorites,\n 'app.navigation.isNotFavorites': rules.isNotFavorites,\n 'app.navigation.isRecentFiles': rules.isRecentFiles,\n 'app.navigation.isNotRecentFiles': rules.isNotRecentFiles,\n 'app.navigation.isSearchResults': rules.isSearchResults,\n 'app.navigation.isNotSearchResults': rules.isNotSearchResults,\n 'app.navigation.isPreview': rules.isPreview,\n 'app.navigation.isSharedPreview': rules.isSharedPreview,\n 'app.navigation.isFavoritesPreview': rules.isFavoritesPreview,\n 'app.navigation.isSharedFileViewer': rules.isSharedFileViewer,\n\n 'repository.isQuickShareEnabled': rules.hasQuickShareEnabled,\n 'user.isAdmin': rules.isAdmin,\n 'app.canShowLogout': rules.canShowLogout,\n 'app.isContentServiceEnabled': rules.isContentServiceEnabled,\n 'app.isUploadSupported': rules.isUploadSupported,\n 'app.canCreateLibrary': rules.canCreateLibrary,\n 'app.isSearchSupported': rules.isSearchSupported\n });\n }\n}\n","/*!\n * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * Public API Surface of aca-content\n */\n\nexport * from './lib/aca-content.module';\nexport * from './lib/aca-content.routes';\nexport * from './lib/extensions/core.extensions.module';\nexport * from './lib/store/initial-state';\nexport * from './lib/services/content-url.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i1","i5","i3.NodeActionsService","i7","i8","i9.DocumentListDirective","i10","i6.DocumentListDirective","i5.ContentUrlService","i5.NodeActionsService","i6","i3.ContentManagementService","i3.SearchNavigationService","i4.ContentManagementService","i9","i6.NodeTemplateService","i1.ContextMenuService","i11","i2.ActionDirective","i5.ExpansionPanelDirective","i6.ActiveLinkDirective","i7.ActionDirective","i6.ExpandMenuComponent","i7.SidenavHeaderComponent","i6.MenuPanelDirective","i7.ActiveLinkDirective","i8.ActionDirective","i2.SearchLibrariesQueryBuilderService","i7.SearchNavigationService","i12","i13","i14","i15","i17.SearchInputControlComponent","i18","i6.LocationLinkComponent","i10.DocumentListDirective","i11.SearchInputComponent","i12.ThumbnailColumnComponent","i13.TagsColumnComponent","i14.SearchResultsRowComponent","i15.SearchActionMenuComponent","i16","i1.SearchLibrariesQueryBuilderService","i10.SearchInputComponent","LanguagePickerComponent"],"mappings":"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"}