@strapi/content-manager 0.0.0-experimental.a13c58eec89ab119f0e381fb79c0252979e9c125 → 0.0.0-experimental.a4161dd0ce4a6742074cbfc43734281e14a29baa

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 (470) hide show
  1. package/dist/admin/chunks/CardDragPreview-DwuraT0K.mjs +80 -0
  2. package/dist/admin/chunks/CardDragPreview-DwuraT0K.mjs.map +1 -0
  3. package/dist/admin/chunks/CardDragPreview-_dubYgXO.js +82 -0
  4. package/dist/admin/chunks/CardDragPreview-_dubYgXO.js.map +1 -0
  5. package/dist/admin/chunks/ComponentConfigurationPage-BdKTyTdt.mjs +276 -0
  6. package/dist/admin/chunks/ComponentConfigurationPage-BdKTyTdt.mjs.map +1 -0
  7. package/dist/admin/chunks/ComponentConfigurationPage-CDKJ1saA.js +298 -0
  8. package/dist/admin/chunks/ComponentConfigurationPage-CDKJ1saA.js.map +1 -0
  9. package/dist/admin/chunks/ComponentIcon-BZcTc4rj.mjs +153 -0
  10. package/dist/admin/chunks/ComponentIcon-BZcTc4rj.mjs.map +1 -0
  11. package/dist/admin/chunks/ComponentIcon-C-EjOUPA.js +176 -0
  12. package/dist/admin/chunks/ComponentIcon-C-EjOUPA.js.map +1 -0
  13. package/dist/admin/chunks/EditConfigurationPage-BW5fpvkO.js +180 -0
  14. package/dist/admin/chunks/EditConfigurationPage-BW5fpvkO.js.map +1 -0
  15. package/dist/admin/chunks/EditConfigurationPage-CaJ_CmJz.mjs +158 -0
  16. package/dist/admin/chunks/EditConfigurationPage-CaJ_CmJz.mjs.map +1 -0
  17. package/dist/admin/chunks/EditViewPage-BDekCXSy.mjs +315 -0
  18. package/dist/admin/chunks/EditViewPage-BDekCXSy.mjs.map +1 -0
  19. package/dist/admin/chunks/EditViewPage-CNacGhk_.js +338 -0
  20. package/dist/admin/chunks/EditViewPage-CNacGhk_.js.map +1 -0
  21. package/dist/admin/chunks/FieldTypeIcon-BY6MrVF4.mjs +56 -0
  22. package/dist/admin/chunks/FieldTypeIcon-BY6MrVF4.mjs.map +1 -0
  23. package/dist/admin/chunks/FieldTypeIcon-Bxh-7Jin.js +58 -0
  24. package/dist/admin/chunks/FieldTypeIcon-Bxh-7Jin.js.map +1 -0
  25. package/dist/admin/chunks/Form-2LZDIqUE.mjs +955 -0
  26. package/dist/admin/chunks/Form-2LZDIqUE.mjs.map +1 -0
  27. package/dist/admin/chunks/Form-CouVf26p.js +978 -0
  28. package/dist/admin/chunks/Form-CouVf26p.js.map +1 -0
  29. package/dist/admin/chunks/History-B7zZvnQF.mjs +1361 -0
  30. package/dist/admin/chunks/History-B7zZvnQF.mjs.map +1 -0
  31. package/dist/admin/chunks/History-Cv3uNjvV.js +1384 -0
  32. package/dist/admin/chunks/History-Cv3uNjvV.js.map +1 -0
  33. package/dist/admin/chunks/Input-BPTHgeyh.mjs +8671 -0
  34. package/dist/admin/chunks/Input-BPTHgeyh.mjs.map +1 -0
  35. package/dist/admin/chunks/Input-DPH5j7Yl.js +8706 -0
  36. package/dist/admin/chunks/Input-DPH5j7Yl.js.map +1 -0
  37. package/dist/admin/chunks/ListConfigurationPage-Cj1tt01r.js +818 -0
  38. package/dist/admin/chunks/ListConfigurationPage-Cj1tt01r.js.map +1 -0
  39. package/dist/admin/chunks/ListConfigurationPage-FS8YuoKF.mjs +795 -0
  40. package/dist/admin/chunks/ListConfigurationPage-FS8YuoKF.mjs.map +1 -0
  41. package/dist/admin/chunks/ListViewPage-BCmGmK7N.js +1154 -0
  42. package/dist/admin/chunks/ListViewPage-BCmGmK7N.js.map +1 -0
  43. package/dist/admin/chunks/ListViewPage-Xv5mmaJq.mjs +1132 -0
  44. package/dist/admin/chunks/ListViewPage-Xv5mmaJq.mjs.map +1 -0
  45. package/dist/admin/chunks/NoContentTypePage-Bbqw5ZV9.mjs +58 -0
  46. package/dist/admin/chunks/NoContentTypePage-Bbqw5ZV9.mjs.map +1 -0
  47. package/dist/admin/chunks/NoContentTypePage-DpvfQfhU.js +60 -0
  48. package/dist/admin/chunks/NoContentTypePage-DpvfQfhU.js.map +1 -0
  49. package/dist/admin/chunks/NoPermissionsPage-BYEkhBnk.js +39 -0
  50. package/dist/admin/chunks/NoPermissionsPage-BYEkhBnk.js.map +1 -0
  51. package/dist/admin/chunks/NoPermissionsPage-igrvpcW0.mjs +37 -0
  52. package/dist/admin/chunks/NoPermissionsPage-igrvpcW0.mjs.map +1 -0
  53. package/dist/admin/chunks/Preview-DR-9uYxZ.mjs +673 -0
  54. package/dist/admin/chunks/Preview-DR-9uYxZ.mjs.map +1 -0
  55. package/dist/admin/chunks/Preview-DlRltQbE.js +695 -0
  56. package/dist/admin/chunks/Preview-DlRltQbE.js.map +1 -0
  57. package/dist/admin/chunks/ar-DckYq_WK.mjs +222 -0
  58. package/dist/{_chunks/ar-CCEVvqGG.mjs.map → admin/chunks/ar-DckYq_WK.mjs.map} +1 -1
  59. package/dist/admin/chunks/ar-DeQBSsfl.js +227 -0
  60. package/dist/{_chunks/ru-BT3ybNny.js.map → admin/chunks/ar-DeQBSsfl.js.map} +1 -1
  61. package/dist/admin/chunks/ca-ClDTvatJ.js +202 -0
  62. package/dist/admin/chunks/ca-ClDTvatJ.js.map +1 -0
  63. package/dist/admin/chunks/ca-DviY7mRj.mjs +197 -0
  64. package/dist/admin/chunks/ca-DviY7mRj.mjs.map +1 -0
  65. package/dist/admin/chunks/cs-BJFxwIWj.js +126 -0
  66. package/dist/{_chunks/cs-CkJy6B2v.js.map → admin/chunks/cs-BJFxwIWj.js.map} +1 -1
  67. package/dist/admin/chunks/cs-C7OSYFQ7.mjs +122 -0
  68. package/dist/{_chunks/cs-CM2aBUar.mjs.map → admin/chunks/cs-C7OSYFQ7.mjs.map} +1 -1
  69. package/dist/admin/chunks/de-5QRlDHyR.mjs +195 -0
  70. package/dist/{_chunks/eu-CdALomew.mjs.map → admin/chunks/de-5QRlDHyR.mjs.map} +1 -1
  71. package/dist/admin/chunks/de-CbImAUA5.js +200 -0
  72. package/dist/{_chunks/gu-BRmF601H.js.map → admin/chunks/de-CbImAUA5.js.map} +1 -1
  73. package/dist/admin/chunks/en-CH__IC8g.js +316 -0
  74. package/dist/{_chunks/en-CHOp_xJv.js.map → admin/chunks/en-CH__IC8g.js.map} +1 -1
  75. package/dist/admin/chunks/en-DBP0Gaid.mjs +311 -0
  76. package/dist/{_chunks/en-D_BMf0hT.mjs.map → admin/chunks/en-DBP0Gaid.mjs.map} +1 -1
  77. package/dist/admin/chunks/es-C8vLuvZL.js +197 -0
  78. package/dist/{_chunks/es-9K52xZIr.js.map → admin/chunks/es-C8vLuvZL.js.map} +1 -1
  79. package/dist/admin/chunks/es-DkoWSExG.mjs +192 -0
  80. package/dist/{_chunks/ja-BHqhDq4V.mjs.map → admin/chunks/es-DkoWSExG.mjs.map} +1 -1
  81. package/dist/admin/chunks/eu-BG1xX7HK.mjs +198 -0
  82. package/dist/admin/chunks/eu-BG1xX7HK.mjs.map +1 -0
  83. package/dist/admin/chunks/eu-BJW3AvXu.js +203 -0
  84. package/dist/admin/chunks/eu-BJW3AvXu.js.map +1 -0
  85. package/dist/admin/chunks/fr-CFdRaRVj.mjs +215 -0
  86. package/dist/admin/chunks/fr-CFdRaRVj.mjs.map +1 -0
  87. package/dist/admin/chunks/fr-gQSilC7w.js +220 -0
  88. package/dist/admin/chunks/fr-gQSilC7w.js.map +1 -0
  89. package/dist/admin/chunks/gu-D5MMMXRs.mjs +196 -0
  90. package/dist/admin/chunks/gu-D5MMMXRs.mjs.map +1 -0
  91. package/dist/admin/chunks/gu-DPU4wyx7.js +201 -0
  92. package/dist/{_chunks/eu-VDH-3ovk.js.map → admin/chunks/gu-DPU4wyx7.js.map} +1 -1
  93. package/dist/admin/chunks/hi-Dp4omeBb.js +201 -0
  94. package/dist/admin/chunks/hi-Dp4omeBb.js.map +1 -0
  95. package/dist/admin/chunks/hi-lp17SCjr.mjs +196 -0
  96. package/dist/admin/chunks/hi-lp17SCjr.mjs.map +1 -0
  97. package/dist/{_chunks/hooks-BAaaKPS_.js → admin/chunks/hooks-D-sOYd1s.js} +6 -3
  98. package/dist/admin/chunks/hooks-D-sOYd1s.js.map +1 -0
  99. package/dist/admin/chunks/hooks-DMvik5y_.mjs +7 -0
  100. package/dist/admin/chunks/hooks-DMvik5y_.mjs.map +1 -0
  101. package/dist/admin/chunks/hu-CLka1U2C.mjs +198 -0
  102. package/dist/admin/chunks/hu-CLka1U2C.mjs.map +1 -0
  103. package/dist/admin/chunks/hu-CtFJuhTd.js +203 -0
  104. package/dist/admin/chunks/hu-CtFJuhTd.js.map +1 -0
  105. package/dist/admin/chunks/id-D7V5S1rB.js +161 -0
  106. package/dist/{_chunks/it-DkBIs7vD.js.map → admin/chunks/id-D7V5S1rB.js.map} +1 -1
  107. package/dist/admin/chunks/id-USfY9m1g.mjs +156 -0
  108. package/dist/{_chunks/id-BtwA9WJT.mjs.map → admin/chunks/id-USfY9m1g.mjs.map} +1 -1
  109. package/dist/admin/chunks/index-CISU19oJ.js +5450 -0
  110. package/dist/admin/chunks/index-CISU19oJ.js.map +1 -0
  111. package/dist/admin/chunks/index-C_e5v8f7.mjs +5383 -0
  112. package/dist/admin/chunks/index-C_e5v8f7.mjs.map +1 -0
  113. package/dist/admin/chunks/it-BAHrwmYS.mjs +158 -0
  114. package/dist/{_chunks/it-BrVPqaf1.mjs.map → admin/chunks/it-BAHrwmYS.mjs.map} +1 -1
  115. package/dist/admin/chunks/it-CQFpa_Dc.js +163 -0
  116. package/dist/{_chunks/ko-woFZPmLk.js.map → admin/chunks/it-CQFpa_Dc.js.map} +1 -1
  117. package/dist/admin/chunks/ja-BWKmBJFT.mjs +192 -0
  118. package/dist/{_chunks/ko-HVQRlfUI.mjs.map → admin/chunks/ja-BWKmBJFT.mjs.map} +1 -1
  119. package/dist/admin/chunks/ja-jdQM-B79.js +197 -0
  120. package/dist/{_chunks/de-CCEmbAah.js.map → admin/chunks/ja-jdQM-B79.js.map} +1 -1
  121. package/dist/admin/chunks/ko-CgADGBNt.mjs +191 -0
  122. package/dist/{_chunks/es-D34tqjMw.mjs.map → admin/chunks/ko-CgADGBNt.mjs.map} +1 -1
  123. package/dist/admin/chunks/ko-k46sEyzt.js +196 -0
  124. package/dist/{_chunks/ja-7sfIbjxE.js.map → admin/chunks/ko-k46sEyzt.js.map} +1 -1
  125. package/dist/admin/chunks/layout-CajJum-G.js +692 -0
  126. package/dist/admin/chunks/layout-CajJum-G.js.map +1 -0
  127. package/dist/admin/chunks/layout-CrqscUTi.mjs +672 -0
  128. package/dist/admin/chunks/layout-CrqscUTi.mjs.map +1 -0
  129. package/dist/admin/chunks/ml-CnhCfOn_.mjs +196 -0
  130. package/dist/admin/chunks/ml-CnhCfOn_.mjs.map +1 -0
  131. package/dist/admin/chunks/ml-DqxPwODx.js +201 -0
  132. package/dist/admin/chunks/ml-DqxPwODx.js.map +1 -0
  133. package/dist/admin/chunks/ms-Bh09NFff.mjs +140 -0
  134. package/dist/{_chunks/ms-m_WjyWx7.mjs.map → admin/chunks/ms-Bh09NFff.mjs.map} +1 -1
  135. package/dist/admin/chunks/ms-CvSC0OdG.js +145 -0
  136. package/dist/{_chunks/ms-BuFotyP_.js.map → admin/chunks/ms-CvSC0OdG.js.map} +1 -1
  137. package/dist/admin/chunks/nl-BEubhS8C.js +203 -0
  138. package/dist/admin/chunks/nl-BEubhS8C.js.map +1 -0
  139. package/dist/admin/chunks/nl-C8HYflTc.mjs +198 -0
  140. package/dist/admin/chunks/nl-C8HYflTc.mjs.map +1 -0
  141. package/dist/admin/chunks/objects-BJTP843m.js +343 -0
  142. package/dist/admin/chunks/objects-BJTP843m.js.map +1 -0
  143. package/dist/admin/chunks/objects-D2z-IJgu.mjs +317 -0
  144. package/dist/admin/chunks/objects-D2z-IJgu.mjs.map +1 -0
  145. package/dist/admin/chunks/pl-DWhGDzmM.js +200 -0
  146. package/dist/{_chunks/ca-Cmk45QO6.js.map → admin/chunks/pl-DWhGDzmM.js.map} +1 -1
  147. package/dist/admin/chunks/pl-MFCZJZuZ.mjs +195 -0
  148. package/dist/{_chunks/ca-5U32ON2v.mjs.map → admin/chunks/pl-MFCZJZuZ.mjs.map} +1 -1
  149. package/dist/admin/chunks/pt-BR-CPtAXD-4.js +202 -0
  150. package/dist/{_chunks/pt-BR-BiOz37D9.js.map → admin/chunks/pt-BR-CPtAXD-4.js.map} +1 -1
  151. package/dist/admin/chunks/pt-BR-CcotyBGJ.mjs +197 -0
  152. package/dist/{_chunks/pt-BR-C71iDxnh.mjs.map → admin/chunks/pt-BR-CcotyBGJ.mjs.map} +1 -1
  153. package/dist/admin/chunks/pt-BoPxN80n.js +96 -0
  154. package/dist/admin/chunks/pt-BoPxN80n.js.map +1 -0
  155. package/dist/admin/chunks/pt-HbmgeiYO.mjs +93 -0
  156. package/dist/admin/chunks/pt-HbmgeiYO.mjs.map +1 -0
  157. package/dist/admin/chunks/ru-C0op0ALG.js +232 -0
  158. package/dist/admin/chunks/ru-C0op0ALG.js.map +1 -0
  159. package/dist/admin/chunks/ru-CB4BUyQp.mjs +230 -0
  160. package/dist/{_chunks/ru-BE6A4Exp.mjs.map → admin/chunks/ru-CB4BUyQp.mjs.map} +1 -1
  161. package/dist/admin/chunks/sa-B_FuPyMw.js +201 -0
  162. package/dist/admin/chunks/sa-B_FuPyMw.js.map +1 -0
  163. package/dist/admin/chunks/sa-n_aPA-pU.mjs +196 -0
  164. package/dist/admin/chunks/sa-n_aPA-pU.mjs.map +1 -0
  165. package/dist/admin/chunks/sk-D_iXML2C.js +203 -0
  166. package/dist/admin/chunks/sk-D_iXML2C.js.map +1 -0
  167. package/dist/admin/chunks/sk-tn_BDjE2.mjs +198 -0
  168. package/dist/admin/chunks/sk-tn_BDjE2.mjs.map +1 -0
  169. package/dist/admin/chunks/sv-BstBC1Yp.js +203 -0
  170. package/dist/admin/chunks/sv-BstBC1Yp.js.map +1 -0
  171. package/dist/admin/chunks/sv-cq4ZrQRd.mjs +198 -0
  172. package/dist/admin/chunks/sv-cq4ZrQRd.mjs.map +1 -0
  173. package/dist/admin/chunks/th-lXoOCqPC.js +149 -0
  174. package/dist/{_chunks/th-D9_GfAjc.js.map → admin/chunks/th-lXoOCqPC.js.map} +1 -1
  175. package/dist/admin/chunks/th-mUH7hEtc.mjs +144 -0
  176. package/dist/{_chunks/th-BqbI8lIT.mjs.map → admin/chunks/th-mUH7hEtc.mjs.map} +1 -1
  177. package/dist/admin/chunks/tr-CkS6sLIE.js +200 -0
  178. package/dist/admin/chunks/tr-CkS6sLIE.js.map +1 -0
  179. package/dist/admin/chunks/tr-Yt38daxh.mjs +195 -0
  180. package/dist/{_chunks/de-C72KDNOl.mjs.map → admin/chunks/tr-Yt38daxh.mjs.map} +1 -1
  181. package/dist/admin/chunks/uk-B24MoTVg.js +145 -0
  182. package/dist/{_chunks/uk-C8EiqJY7.js.map → admin/chunks/uk-B24MoTVg.js.map} +1 -1
  183. package/dist/admin/chunks/uk-Cpgmm7gE.mjs +140 -0
  184. package/dist/{_chunks/uk-CR-zDhAY.mjs.map → admin/chunks/uk-Cpgmm7gE.mjs.map} +1 -1
  185. package/dist/admin/chunks/usePrev-CHotxABl.js +194 -0
  186. package/dist/admin/chunks/usePrev-CHotxABl.js.map +1 -0
  187. package/dist/admin/chunks/usePrev-DF3ZO0z4.mjs +187 -0
  188. package/dist/admin/chunks/usePrev-DF3ZO0z4.mjs.map +1 -0
  189. package/dist/admin/chunks/vi-BGr1X_HZ.js +112 -0
  190. package/dist/{_chunks/vi-CJlYDheJ.js.map → admin/chunks/vi-BGr1X_HZ.js.map} +1 -1
  191. package/dist/admin/chunks/vi-CvBGlTjr.mjs +108 -0
  192. package/dist/{_chunks/vi-DUXIk_fw.mjs.map → admin/chunks/vi-CvBGlTjr.mjs.map} +1 -1
  193. package/dist/admin/chunks/zh-BmF-sHaT.mjs +205 -0
  194. package/dist/admin/chunks/zh-BmF-sHaT.mjs.map +1 -0
  195. package/dist/admin/chunks/zh-DwFu_Kfj.js +210 -0
  196. package/dist/admin/chunks/zh-DwFu_Kfj.js.map +1 -0
  197. package/dist/admin/chunks/zh-Hans-CI0HKio3.mjs +934 -0
  198. package/dist/{_chunks/zh-Hans-BPQcRIyH.mjs.map → admin/chunks/zh-Hans-CI0HKio3.mjs.map} +1 -1
  199. package/dist/admin/chunks/zh-Hans-JVK9x7xr.js +953 -0
  200. package/dist/{_chunks/zh-Hans-9kOncHGw.js.map → admin/chunks/zh-Hans-JVK9x7xr.js.map} +1 -1
  201. package/dist/admin/index.js +25 -4
  202. package/dist/admin/index.js.map +1 -1
  203. package/dist/admin/index.mjs +17 -12
  204. package/dist/admin/index.mjs.map +1 -1
  205. package/dist/admin/src/components/InjectionZone.d.ts +7 -1
  206. package/dist/admin/src/content-manager.d.ts +6 -2
  207. package/dist/admin/src/exports.d.ts +1 -0
  208. package/dist/admin/src/features/DocumentContext.d.ts +42 -0
  209. package/dist/admin/src/features/DocumentRBAC.d.ts +3 -2
  210. package/dist/admin/src/history/services/historyVersion.d.ts +2 -2
  211. package/dist/admin/src/hooks/useDocument.d.ts +21 -4
  212. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  213. package/dist/admin/src/index.d.ts +1 -0
  214. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +3 -2
  215. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +3 -3
  216. package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +11 -0
  217. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +55 -0
  218. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
  219. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +4 -1
  220. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +4 -1
  221. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +10 -0
  222. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +10 -3
  223. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +1 -2
  224. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +32 -1
  225. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +3 -3
  226. package/dist/admin/src/pages/EditView/utils/data.d.ts +1 -0
  227. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -1
  228. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -1
  229. package/dist/admin/src/preview/index.d.ts +2 -3
  230. package/dist/admin/src/preview/pages/Preview.d.ts +3 -1
  231. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  232. package/dist/admin/src/router.d.ts +1 -1
  233. package/dist/admin/src/services/api.d.ts +1 -1
  234. package/dist/admin/src/services/components.d.ts +2 -2
  235. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  236. package/dist/admin/src/services/documents.d.ts +16 -19
  237. package/dist/admin/src/services/init.d.ts +1 -1
  238. package/dist/admin/src/services/relations.d.ts +2 -2
  239. package/dist/admin/src/services/uid.d.ts +3 -3
  240. package/dist/server/index.js +5461 -4346
  241. package/dist/server/index.js.map +1 -1
  242. package/dist/server/index.mjs +5433 -4315
  243. package/dist/server/index.mjs.map +1 -1
  244. package/dist/server/src/controllers/utils/metadata.d.ts +2 -1
  245. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  246. package/dist/server/src/history/controllers/history-version.d.ts +1 -1
  247. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  248. package/dist/server/src/history/services/history.d.ts +3 -3
  249. package/dist/server/src/history/services/history.d.ts.map +1 -1
  250. package/dist/server/src/history/services/utils.d.ts +6 -10
  251. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  252. package/dist/server/src/index.d.ts +3 -2
  253. package/dist/server/src/index.d.ts.map +1 -1
  254. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
  255. package/dist/server/src/preview/index.d.ts.map +1 -1
  256. package/dist/server/src/preview/services/index.d.ts +1 -0
  257. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  258. package/dist/server/src/preview/services/preview-config.d.ts +2 -0
  259. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  260. package/dist/server/src/preview/utils.d.ts +1 -0
  261. package/dist/server/src/preview/utils.d.ts.map +1 -1
  262. package/dist/server/src/register.d.ts.map +1 -1
  263. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  264. package/dist/server/src/services/document-metadata.d.ts +4 -2
  265. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  266. package/dist/server/src/services/index.d.ts +3 -2
  267. package/dist/server/src/services/index.d.ts.map +1 -1
  268. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  269. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  270. package/dist/server/src/services/utils/count.d.ts +1 -1
  271. package/dist/server/src/services/utils/count.d.ts.map +1 -1
  272. package/dist/server/src/services/utils/populate.d.ts +3 -3
  273. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  274. package/dist/shared/contracts/collection-types.d.ts +0 -1
  275. package/dist/shared/contracts/components.d.ts +0 -1
  276. package/dist/shared/contracts/content-types.d.ts +0 -1
  277. package/dist/shared/contracts/history-versions.d.ts +0 -1
  278. package/dist/shared/contracts/index.d.ts +0 -1
  279. package/dist/shared/contracts/init.d.ts +0 -1
  280. package/dist/shared/contracts/preview.d.ts +0 -1
  281. package/dist/shared/contracts/relations.d.ts +1 -2
  282. package/dist/shared/contracts/relations.d.ts.map +1 -1
  283. package/dist/shared/contracts/review-workflows.d.ts +0 -1
  284. package/dist/shared/contracts/single-types.d.ts +0 -1
  285. package/dist/shared/contracts/uid.d.ts +0 -1
  286. package/dist/shared/index.d.ts +0 -1
  287. package/dist/shared/index.js +35 -24
  288. package/dist/shared/index.js.map +1 -1
  289. package/dist/shared/index.mjs +34 -25
  290. package/dist/shared/index.mjs.map +1 -1
  291. package/package.json +19 -15
  292. package/dist/_chunks/CardDragPreview-C0QyJgRA.js +0 -69
  293. package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +0 -1
  294. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs +0 -70
  295. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +0 -1
  296. package/dist/_chunks/ComponentConfigurationPage-CB0JNNKL.js +0 -255
  297. package/dist/_chunks/ComponentConfigurationPage-CB0JNNKL.js.map +0 -1
  298. package/dist/_chunks/ComponentConfigurationPage-CTCh51QS.mjs +0 -236
  299. package/dist/_chunks/ComponentConfigurationPage-CTCh51QS.mjs.map +0 -1
  300. package/dist/_chunks/ComponentIcon-BXdiCGQp.js +0 -176
  301. package/dist/_chunks/ComponentIcon-BXdiCGQp.js.map +0 -1
  302. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs +0 -157
  303. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +0 -1
  304. package/dist/_chunks/EditConfigurationPage-BxTVjxBG.js +0 -151
  305. package/dist/_chunks/EditConfigurationPage-BxTVjxBG.js.map +0 -1
  306. package/dist/_chunks/EditConfigurationPage-CVyURlPG.mjs +0 -132
  307. package/dist/_chunks/EditConfigurationPage-CVyURlPG.mjs.map +0 -1
  308. package/dist/_chunks/EditViewPage-Cg78RUyS.js +0 -273
  309. package/dist/_chunks/EditViewPage-Cg78RUyS.js.map +0 -1
  310. package/dist/_chunks/EditViewPage-M1OkTFHV.mjs +0 -254
  311. package/dist/_chunks/EditViewPage-M1OkTFHV.mjs.map +0 -1
  312. package/dist/_chunks/Field-BQoMs_At.js +0 -5615
  313. package/dist/_chunks/Field-BQoMs_At.js.map +0 -1
  314. package/dist/_chunks/Field-D1UGGscZ.mjs +0 -5583
  315. package/dist/_chunks/Field-D1UGGscZ.mjs.map +0 -1
  316. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs +0 -50
  317. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +0 -1
  318. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js +0 -49
  319. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +0 -1
  320. package/dist/_chunks/Form-2uPHazrg.js +0 -779
  321. package/dist/_chunks/Form-2uPHazrg.js.map +0 -1
  322. package/dist/_chunks/Form-JOjqloMg.mjs +0 -758
  323. package/dist/_chunks/Form-JOjqloMg.mjs.map +0 -1
  324. package/dist/_chunks/History-D6LWunSa.mjs +0 -1022
  325. package/dist/_chunks/History-D6LWunSa.mjs.map +0 -1
  326. package/dist/_chunks/History-DoIdauuE.js +0 -1043
  327. package/dist/_chunks/History-DoIdauuE.js.map +0 -1
  328. package/dist/_chunks/ListConfigurationPage-C1eYSCV7.js +0 -652
  329. package/dist/_chunks/ListConfigurationPage-C1eYSCV7.js.map +0 -1
  330. package/dist/_chunks/ListConfigurationPage-C8J_y4eX.mjs +0 -632
  331. package/dist/_chunks/ListConfigurationPage-C8J_y4eX.mjs.map +0 -1
  332. package/dist/_chunks/ListViewPage-Nd8_ZHjF.js +0 -874
  333. package/dist/_chunks/ListViewPage-Nd8_ZHjF.js.map +0 -1
  334. package/dist/_chunks/ListViewPage-vkipJOxG.mjs +0 -850
  335. package/dist/_chunks/ListViewPage-vkipJOxG.mjs.map +0 -1
  336. package/dist/_chunks/NoContentTypePage-CAxkF2Vg.mjs +0 -51
  337. package/dist/_chunks/NoContentTypePage-CAxkF2Vg.mjs.map +0 -1
  338. package/dist/_chunks/NoContentTypePage-CsI4DiJk.js +0 -51
  339. package/dist/_chunks/NoContentTypePage-CsI4DiJk.js.map +0 -1
  340. package/dist/_chunks/NoPermissionsPage-D7c29n-i.js +0 -23
  341. package/dist/_chunks/NoPermissionsPage-D7c29n-i.js.map +0 -1
  342. package/dist/_chunks/NoPermissionsPage-DA5ACuoK.mjs +0 -23
  343. package/dist/_chunks/NoPermissionsPage-DA5ACuoK.mjs.map +0 -1
  344. package/dist/_chunks/Preview-Bwo9ft4j.mjs +0 -288
  345. package/dist/_chunks/Preview-Bwo9ft4j.mjs.map +0 -1
  346. package/dist/_chunks/Preview-DLxVMS5f.js +0 -307
  347. package/dist/_chunks/Preview-DLxVMS5f.js.map +0 -1
  348. package/dist/_chunks/Relations-Bddj_dxS.mjs +0 -730
  349. package/dist/_chunks/Relations-Bddj_dxS.mjs.map +0 -1
  350. package/dist/_chunks/Relations-CdFEx0mp.js +0 -750
  351. package/dist/_chunks/Relations-CdFEx0mp.js.map +0 -1
  352. package/dist/_chunks/ar-BUUWXIYu.js +0 -226
  353. package/dist/_chunks/ar-BUUWXIYu.js.map +0 -1
  354. package/dist/_chunks/ar-CCEVvqGG.mjs +0 -226
  355. package/dist/_chunks/ca-5U32ON2v.mjs +0 -201
  356. package/dist/_chunks/ca-Cmk45QO6.js +0 -201
  357. package/dist/_chunks/cs-CM2aBUar.mjs +0 -125
  358. package/dist/_chunks/cs-CkJy6B2v.js +0 -125
  359. package/dist/_chunks/de-C72KDNOl.mjs +0 -199
  360. package/dist/_chunks/de-CCEmbAah.js +0 -199
  361. package/dist/_chunks/en-CHOp_xJv.js +0 -302
  362. package/dist/_chunks/en-D_BMf0hT.mjs +0 -302
  363. package/dist/_chunks/es-9K52xZIr.js +0 -196
  364. package/dist/_chunks/es-D34tqjMw.mjs +0 -196
  365. package/dist/_chunks/eu-CdALomew.mjs +0 -202
  366. package/dist/_chunks/eu-VDH-3ovk.js +0 -202
  367. package/dist/_chunks/fr--pg5jUbt.mjs +0 -216
  368. package/dist/_chunks/fr--pg5jUbt.mjs.map +0 -1
  369. package/dist/_chunks/fr-B2Kyv8Z9.js +0 -216
  370. package/dist/_chunks/fr-B2Kyv8Z9.js.map +0 -1
  371. package/dist/_chunks/gu-BRmF601H.js +0 -200
  372. package/dist/_chunks/gu-CNpaMDpH.mjs +0 -200
  373. package/dist/_chunks/gu-CNpaMDpH.mjs.map +0 -1
  374. package/dist/_chunks/hi-CCJBptSq.js +0 -200
  375. package/dist/_chunks/hi-CCJBptSq.js.map +0 -1
  376. package/dist/_chunks/hi-Dwvd04m3.mjs +0 -200
  377. package/dist/_chunks/hi-Dwvd04m3.mjs.map +0 -1
  378. package/dist/_chunks/hooks-BAaaKPS_.js.map +0 -1
  379. package/dist/_chunks/hooks-E5u1mcgM.mjs +0 -8
  380. package/dist/_chunks/hooks-E5u1mcgM.mjs.map +0 -1
  381. package/dist/_chunks/hu-CeYvaaO0.mjs +0 -202
  382. package/dist/_chunks/hu-CeYvaaO0.mjs.map +0 -1
  383. package/dist/_chunks/hu-sNV_yLYy.js +0 -202
  384. package/dist/_chunks/hu-sNV_yLYy.js.map +0 -1
  385. package/dist/_chunks/id-B5Ser98A.js +0 -160
  386. package/dist/_chunks/id-B5Ser98A.js.map +0 -1
  387. package/dist/_chunks/id-BtwA9WJT.mjs +0 -160
  388. package/dist/_chunks/index-CltLAahy.js +0 -4207
  389. package/dist/_chunks/index-CltLAahy.js.map +0 -1
  390. package/dist/_chunks/index-DmNeuXH0.mjs +0 -4187
  391. package/dist/_chunks/index-DmNeuXH0.mjs.map +0 -1
  392. package/dist/_chunks/it-BrVPqaf1.mjs +0 -162
  393. package/dist/_chunks/it-DkBIs7vD.js +0 -162
  394. package/dist/_chunks/ja-7sfIbjxE.js +0 -196
  395. package/dist/_chunks/ja-BHqhDq4V.mjs +0 -196
  396. package/dist/_chunks/ko-HVQRlfUI.mjs +0 -195
  397. package/dist/_chunks/ko-woFZPmLk.js +0 -195
  398. package/dist/_chunks/layout-D63qmUOu.mjs +0 -471
  399. package/dist/_chunks/layout-D63qmUOu.mjs.map +0 -1
  400. package/dist/_chunks/layout-DslPJR5e.js +0 -489
  401. package/dist/_chunks/layout-DslPJR5e.js.map +0 -1
  402. package/dist/_chunks/ml-BihZwQit.mjs +0 -200
  403. package/dist/_chunks/ml-BihZwQit.mjs.map +0 -1
  404. package/dist/_chunks/ml-C2W8N8k1.js +0 -200
  405. package/dist/_chunks/ml-C2W8N8k1.js.map +0 -1
  406. package/dist/_chunks/ms-BuFotyP_.js +0 -144
  407. package/dist/_chunks/ms-m_WjyWx7.mjs +0 -144
  408. package/dist/_chunks/nl-D4R9gHx5.mjs +0 -202
  409. package/dist/_chunks/nl-D4R9gHx5.mjs.map +0 -1
  410. package/dist/_chunks/nl-bbEOHChV.js +0 -202
  411. package/dist/_chunks/nl-bbEOHChV.js.map +0 -1
  412. package/dist/_chunks/objects-BcXOv6_9.js +0 -47
  413. package/dist/_chunks/objects-BcXOv6_9.js.map +0 -1
  414. package/dist/_chunks/objects-D6yBsdmx.mjs +0 -45
  415. package/dist/_chunks/objects-D6yBsdmx.mjs.map +0 -1
  416. package/dist/_chunks/pl-sbx9mSt_.mjs +0 -199
  417. package/dist/_chunks/pl-sbx9mSt_.mjs.map +0 -1
  418. package/dist/_chunks/pl-uzwG-hk7.js +0 -199
  419. package/dist/_chunks/pl-uzwG-hk7.js.map +0 -1
  420. package/dist/_chunks/pt-BR-BiOz37D9.js +0 -201
  421. package/dist/_chunks/pt-BR-C71iDxnh.mjs +0 -201
  422. package/dist/_chunks/pt-BsaFvS8-.mjs +0 -95
  423. package/dist/_chunks/pt-BsaFvS8-.mjs.map +0 -1
  424. package/dist/_chunks/pt-CeXQuq50.js +0 -95
  425. package/dist/_chunks/pt-CeXQuq50.js.map +0 -1
  426. package/dist/_chunks/relations-B2h_O2Xw.js +0 -133
  427. package/dist/_chunks/relations-B2h_O2Xw.js.map +0 -1
  428. package/dist/_chunks/relations-X3M9aO-m.mjs +0 -134
  429. package/dist/_chunks/relations-X3M9aO-m.mjs.map +0 -1
  430. package/dist/_chunks/ru-BE6A4Exp.mjs +0 -231
  431. package/dist/_chunks/ru-BT3ybNny.js +0 -231
  432. package/dist/_chunks/sa-CcvkYInH.js +0 -200
  433. package/dist/_chunks/sa-CcvkYInH.js.map +0 -1
  434. package/dist/_chunks/sa-Dag0k-Z8.mjs +0 -200
  435. package/dist/_chunks/sa-Dag0k-Z8.mjs.map +0 -1
  436. package/dist/_chunks/sk-BFg-R8qJ.mjs +0 -202
  437. package/dist/_chunks/sk-BFg-R8qJ.mjs.map +0 -1
  438. package/dist/_chunks/sk-CvY09Xjv.js +0 -202
  439. package/dist/_chunks/sk-CvY09Xjv.js.map +0 -1
  440. package/dist/_chunks/sv-CUnfWGsh.mjs +0 -202
  441. package/dist/_chunks/sv-CUnfWGsh.mjs.map +0 -1
  442. package/dist/_chunks/sv-MYDuzgvT.js +0 -202
  443. package/dist/_chunks/sv-MYDuzgvT.js.map +0 -1
  444. package/dist/_chunks/th-BqbI8lIT.mjs +0 -148
  445. package/dist/_chunks/th-D9_GfAjc.js +0 -148
  446. package/dist/_chunks/tr-CgeK3wJM.mjs +0 -199
  447. package/dist/_chunks/tr-CgeK3wJM.mjs.map +0 -1
  448. package/dist/_chunks/tr-D9UH-O_R.js +0 -199
  449. package/dist/_chunks/tr-D9UH-O_R.js.map +0 -1
  450. package/dist/_chunks/uk-C8EiqJY7.js +0 -144
  451. package/dist/_chunks/uk-CR-zDhAY.mjs +0 -144
  452. package/dist/_chunks/useDebounce-CtcjDB3L.js +0 -28
  453. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +0 -1
  454. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +0 -29
  455. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +0 -1
  456. package/dist/_chunks/useDragAndDrop-DdHgKsqq.mjs +0 -231
  457. package/dist/_chunks/useDragAndDrop-DdHgKsqq.mjs.map +0 -1
  458. package/dist/_chunks/useDragAndDrop-J0TUUbR6.js +0 -249
  459. package/dist/_chunks/useDragAndDrop-J0TUUbR6.js.map +0 -1
  460. package/dist/_chunks/vi-CJlYDheJ.js +0 -111
  461. package/dist/_chunks/vi-DUXIk_fw.mjs +0 -111
  462. package/dist/_chunks/zh-BWZspA60.mjs +0 -209
  463. package/dist/_chunks/zh-BWZspA60.mjs.map +0 -1
  464. package/dist/_chunks/zh-CQQfszqR.js +0 -209
  465. package/dist/_chunks/zh-CQQfszqR.js.map +0 -1
  466. package/dist/_chunks/zh-Hans-9kOncHGw.js +0 -952
  467. package/dist/_chunks/zh-Hans-BPQcRIyH.mjs +0 -952
  468. package/dist/admin/src/preview/constants.d.ts +0 -1
  469. package/dist/server/src/preview/constants.d.ts +0 -2
  470. package/dist/server/src/preview/constants.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-DPH5j7Yl.js","sources":["../../../admin/src/features/DocumentContext.tsx","../../../admin/src/hooks/useLazyComponents.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/types.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.tsx","../../../admin/src/pages/EditView/components/EditorToolbarObserver.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Modifiers.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.ts","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.tsx","../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.tsx","../../../admin/src/pages/EditView/components/FormInputs/Component/Initializer.tsx","../../../admin/src/pages/EditView/components/FormInputs/ComponentContext.tsx","../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.tsx","../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.tsx","../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.tsx","../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.tsx","../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.tsx","../../../admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.tsx","../../../admin/src/pages/EditView/components/FormInputs/NotAllowed.tsx","../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx","../../../admin/src/pages/EditView/components/FormInputs/Relations/Relations.tsx","../../../admin/src/services/uid.ts","../../../admin/src/pages/EditView/components/FormInputs/UID.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.ts","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.ts","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/Editor.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.ts","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx","../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/Field.tsx","../../../admin/src/pages/EditView/components/InputRenderer.tsx","../../../admin/src/pages/EditView/components/FormLayout.tsx","../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx","../../../admin/src/pages/EditView/components/FormInputs/Component/Repeatable.tsx","../../../admin/src/pages/EditView/components/FormInputs/Component/Input.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@strapi/admin/strapi-admin';\n\nimport { useDocument, type UseDocument } from '../hooks/useDocument';\n\ninterface DocumentMeta {\n /**\n * The equivalent of the \":id\" url param value\n * i.e. gus5a67jcboa3o2zjnz39mb1\n */\n documentId: string;\n /**\n * The equivalent of the url \":slug\" param value\n * i.e. api::articles.article\n */\n model: string;\n /**\n * The equivalent of the url \":collectionType\" param value\n * i.e. collection-types or single-types\n */\n collectionType: string;\n}\n\ninterface DocumentContextValue {\n document: ReturnType<UseDocument>;\n meta: DocumentMeta;\n changeDocument: (newRelation: DocumentMeta) => void;\n}\n\nconst [DocumentProvider, useDocumentContext] =\n createContext<DocumentContextValue>('DocumentContext');\n\n/**\n * TODO: Document in contributor docs, Add unit test\n *\n * This context provider and its associated hook are used to access a document at its root level\n * and expose a function to change the current document being viewed to one of the root level docuemnt's relations.\n *\n * The useDocumentContext hook exposes:\n * - meta: information about the currentDocument,\n * - document: the actual document,\n * - changeDocument: a function to change the current document to one of its relations.\n */\nconst DocumentContextProvider = ({\n children,\n initialDocument,\n}: {\n children: React.ReactNode | React.ReactNode[];\n initialDocument: DocumentMeta;\n}) => {\n /**\n * Initialize with the \"root\" document and expose a setter method to change to\n * one of the root level document's relations.\n */\n const [currentDocumentMeta, changeDocument] = React.useState<DocumentMeta>(initialDocument);\n const document = useDocument(currentDocumentMeta);\n\n return (\n <DocumentProvider\n changeDocument={changeDocument}\n document={document}\n meta={currentDocumentMeta}\n >\n {children}\n </DocumentProvider>\n );\n};\n\nexport { DocumentContextProvider, useDocumentContext };\nexport type { DocumentMeta };\n","import { ComponentType, useCallback, useEffect, useState } from 'react';\n\nimport { StrapiAppContextValue, useStrapiApp } from '@strapi/admin/strapi-admin';\n\nconst componentStore = new Map<string, ComponentType | undefined>();\n\ntype LazyComponentStore = Record<string, ComponentType | undefined>;\n\ntype CustomField = NonNullable<ReturnType<StrapiAppContextValue['customFields']['get']>>;\n\ninterface UseLazyComponentsReturn {\n isLazyLoading: boolean;\n lazyComponentStore: LazyComponentStore;\n cleanup: () => void;\n}\n\n/**\n * @description A hook to lazy load custom field components\n */\nconst useLazyComponents = (componentUids: string[] = []): UseLazyComponentsReturn => {\n const [lazyComponentStore, setLazyComponentStore] = useState(Object.fromEntries(componentStore));\n /**\n * Start loading only if there are any components passed in\n * and there are some new to load\n */\n const newUids = componentUids.filter((uid) => !componentStore.get(uid));\n const [loading, setLoading] = useState(() => !!newUids.length);\n const getCustomField = useStrapiApp('useLazyComponents', (state) => state.customFields.get);\n\n useEffect(() => {\n const setStore = (store: Record<string, ComponentType | undefined>) => {\n setLazyComponentStore(store);\n setLoading(false);\n };\n\n const lazyLoadComponents = async (\n uids: string[],\n components: Array<ReturnType<CustomField['components']['Input']>>\n ) => {\n const modules = await Promise.all(components);\n\n uids.forEach((uid, index) => {\n componentStore.set(uid, modules[index].default);\n });\n\n setStore(Object.fromEntries(componentStore));\n };\n\n if (newUids.length > 0) {\n setLoading(true);\n\n const componentPromises = newUids.reduce<\n Array<ReturnType<CustomField['components']['Input']>>\n >((arrayOfPromises, uid) => {\n const customField = getCustomField(uid);\n\n if (customField) {\n arrayOfPromises.push(customField.components.Input());\n }\n\n return arrayOfPromises;\n }, []);\n\n if (componentPromises.length > 0) {\n lazyLoadComponents(newUids, componentPromises);\n }\n }\n }, [newUids, getCustomField]);\n\n /**\n * Wrap this in a callback so it can be used in\n * effects to cleanup the cached store if required\n */\n const cleanup = useCallback(() => {\n componentStore.clear();\n setLazyComponentStore({});\n }, []);\n\n return { isLazyLoading: loading, lazyComponentStore, cleanup };\n};\n\nexport { useLazyComponents };\nexport type { UseLazyComponentsReturn, LazyComponentStore };\n","export const codeLanguages: {\n value: string;\n label: string;\n decorate?: string;\n}[] = [\n {\n value: 'asm',\n label: 'Assembly',\n decorate: 'asmatmel',\n },\n {\n value: 'bash',\n label: 'Bash',\n },\n {\n value: 'c',\n label: 'C',\n },\n {\n value: 'clojure',\n label: 'Clojure',\n },\n {\n value: 'cobol',\n label: 'COBOL',\n },\n {\n value: 'cpp',\n label: 'C++',\n },\n {\n value: 'csharp',\n label: 'C#',\n },\n {\n value: 'css',\n label: 'CSS',\n },\n {\n value: 'dart',\n label: 'Dart',\n },\n {\n value: 'dockerfile',\n label: 'Dockerfile',\n decorate: 'docker',\n },\n {\n value: 'elixir',\n label: 'Elixir',\n },\n {\n value: 'erlang',\n label: 'Erlang',\n },\n {\n value: 'fortran',\n label: 'Fortran',\n },\n {\n value: 'fsharp',\n label: 'F#',\n },\n {\n value: 'go',\n label: 'Go',\n },\n {\n value: 'graphql',\n label: 'GraphQL',\n },\n {\n value: 'groovy',\n label: 'Groovy',\n },\n {\n value: 'haskell',\n label: 'Haskell',\n },\n {\n value: 'haxe',\n label: 'Haxe',\n },\n {\n value: 'html',\n label: 'HTML',\n },\n {\n value: 'ini',\n label: 'INI',\n },\n {\n value: 'java',\n label: 'Java',\n },\n {\n value: 'javascript',\n label: 'JavaScript',\n },\n {\n value: 'jsx',\n label: 'JavaScript (React)',\n },\n {\n value: 'json',\n label: 'JSON',\n },\n {\n value: 'julia',\n label: 'Julia',\n },\n {\n value: 'kotlin',\n label: 'Kotlin',\n },\n {\n value: 'latex',\n label: 'LaTeX',\n },\n {\n value: 'lua',\n label: 'Lua',\n },\n {\n value: 'markdown',\n label: 'Markdown',\n },\n {\n value: 'matlab',\n label: 'MATLAB',\n },\n {\n value: 'makefile',\n label: 'Makefile',\n },\n {\n value: 'objectivec',\n label: 'Objective-C',\n },\n {\n value: 'perl',\n label: 'Perl',\n },\n {\n value: 'php',\n label: 'PHP',\n },\n {\n value: 'plaintext',\n label: 'Plain text',\n },\n {\n value: 'powershell',\n label: 'PowerShell',\n },\n {\n value: 'python',\n label: 'Python',\n },\n {\n value: 'r',\n label: 'R',\n },\n {\n value: 'ruby',\n label: 'Ruby',\n },\n {\n value: 'rust',\n label: 'Rust',\n },\n {\n value: 'sas',\n label: 'SAS',\n },\n {\n value: 'scala',\n label: 'Scala',\n },\n {\n value: 'scheme',\n label: 'Scheme',\n },\n {\n value: 'shell',\n label: 'Shell',\n },\n {\n value: 'sql',\n label: 'SQL',\n },\n {\n value: 'stata',\n label: 'Stata',\n },\n {\n value: 'swift',\n label: 'Swift',\n },\n {\n value: 'typescript',\n label: 'TypeScript',\n decorate: 'ts',\n },\n {\n value: 'tsx',\n label: 'TypeScript (React)',\n },\n {\n value: 'vbnet',\n label: 'VB.NET',\n },\n {\n value: 'xml',\n label: 'XML',\n },\n {\n value: 'yaml',\n label: 'YAML',\n decorate: 'yml',\n },\n];\n","import { type Element, type Path, Editor, Transforms } from 'slate';\n\n/**\n * Extracts some logic that is common to most blocks' handleConvert functions.\n * @returns The path of the converted block\n */\nconst baseHandleConvert = <T extends Element>(\n editor: Editor,\n attributesToSet: Partial<T> & { type: T['type'] }\n): void | Path => {\n // If there is no selection, convert last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n\n // If the selection is inside a list, split the list so that the modified block is outside of it\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n split: true,\n at: editor.selection ?? lastNodePath,\n });\n\n // Make sure we get a block node, not an inline node\n const [, updatedLastNodePath] = Editor.last(editor, []);\n const entry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type !== 'text' && node.type !== 'link',\n at: editor.selection ?? updatedLastNodePath,\n });\n\n if (!entry || Editor.isEditor(entry[0])) {\n return;\n }\n\n const [element, elementPath] = entry;\n\n Transforms.setNodes(\n editor,\n {\n ...getAttributesToClear(element),\n ...attributesToSet,\n } as Partial<Element>,\n { at: elementPath }\n );\n\n return elementPath;\n};\n\n/**\n * Set all attributes except type and children to null so that Slate deletes them\n */\nconst getAttributesToClear = (element: Element) => {\n const { children: _children, type: _type, ...extra } = element;\n\n const attributesToClear = Object.keys(extra).reduce(\n (currentAttributes, key) => ({ ...currentAttributes, [key]: null }),\n {}\n );\n\n return attributesToClear as Record<string, null>;\n};\n\nexport { baseHandleConvert, getAttributesToClear };\n","import { type Text, Editor, Node, Transforms } from 'slate';\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * Inserts a line break the first time the user presses enter, and exits the node the second time.\n */\nconst pressEnterTwiceToExit = (editor: Editor) => {\n /**\n * To determine if we should break out of the node, check 2 things:\n * 1. If the cursor is at the end of the node\n * 2. If the last line of the node is empty\n */\n const nodeEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && !['link', 'text'].includes(node.type),\n });\n if (!nodeEntry || !editor.selection) {\n return;\n }\n const [node, nodePath] = nodeEntry;\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, nodePath);\n const lastTextNode = node.children.at(-1);\n const isEmptyLine = isText(lastTextNode) && lastTextNode.text.endsWith('\\n');\n\n if (isNodeEnd && isEmptyLine) {\n // Remove the last line break\n Transforms.delete(editor, { distance: 1, unit: 'character', reverse: true });\n // Break out of the node by creating a new paragraph\n Transforms.insertNodes(editor, {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n });\n return;\n }\n\n // Otherwise insert a new line within the node\n Transforms.insertText(editor, '\\n');\n\n // If there's nothing after the cursor, disable modifiers\n if (isNodeEnd) {\n ['bold', 'italic', 'underline', 'strikethrough', 'code'].forEach((modifier) => {\n Editor.removeMark(editor, modifier);\n });\n }\n};\n\nexport { pressEnterTwiceToExit };\n","import * as React from 'react';\n\nimport { Box, SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { CodeBlock as CodeBlockIcon } from '@strapi/icons';\nimport * as Prism from 'prismjs';\nimport { useIntl } from 'react-intl';\nimport { BaseRange, Element, Editor, Node, NodeEntry, Transforms } from 'slate';\nimport { useSelected, type RenderElementProps, useFocused, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { useBlocksEditorContext, type BlocksStore } from '../BlocksEditor';\nimport { codeLanguages } from '../utils/constants';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { pressEnterTwiceToExit } from '../utils/enterKey';\nimport { type Block } from '../utils/types';\n\nimport 'prismjs/themes/prism-solarizedlight.css';\nimport 'prismjs/components/prism-asmatmel';\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-basic';\nimport 'prismjs/components/prism-c';\nimport 'prismjs/components/prism-clojure';\nimport 'prismjs/components/prism-cobol';\nimport 'prismjs/components/prism-cpp';\nimport 'prismjs/components/prism-csharp';\nimport 'prismjs/components/prism-dart';\nimport 'prismjs/components/prism-docker';\nimport 'prismjs/components/prism-elixir';\nimport 'prismjs/components/prism-erlang';\nimport 'prismjs/components/prism-fortran';\nimport 'prismjs/components/prism-fsharp';\nimport 'prismjs/components/prism-go';\nimport 'prismjs/components/prism-graphql';\nimport 'prismjs/components/prism-groovy';\nimport 'prismjs/components/prism-haskell';\nimport 'prismjs/components/prism-haxe';\nimport 'prismjs/components/prism-ini';\nimport 'prismjs/components/prism-java';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-jsx';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-julia';\nimport 'prismjs/components/prism-kotlin';\nimport 'prismjs/components/prism-latex';\nimport 'prismjs/components/prism-lua';\nimport 'prismjs/components/prism-markdown';\nimport 'prismjs/components/prism-matlab';\nimport 'prismjs/components/prism-makefile';\nimport 'prismjs/components/prism-objectivec';\nimport 'prismjs/components/prism-perl';\nimport 'prismjs/components/prism-php';\nimport 'prismjs/components/prism-powershell';\nimport 'prismjs/components/prism-python';\nimport 'prismjs/components/prism-r';\nimport 'prismjs/components/prism-ruby';\nimport 'prismjs/components/prism-rust';\nimport 'prismjs/components/prism-sas';\nimport 'prismjs/components/prism-scala';\nimport 'prismjs/components/prism-scheme';\nimport 'prismjs/components/prism-sql';\nimport 'prismjs/components/prism-stata';\nimport 'prismjs/components/prism-swift';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/components/prism-tsx';\nimport 'prismjs/components/prism-vbnet';\nimport 'prismjs/components/prism-yaml';\n\ntype BaseRangeCustom = BaseRange & { className: string };\n\nexport const decorateCode = ([node, path]: NodeEntry) => {\n const ranges: BaseRangeCustom[] = [];\n\n // make sure it is an Slate Element\n if (!Element.isElement(node) || node.type !== 'code') return ranges;\n // transform the Element into a string\n const text = Node.string(node);\n const language = codeLanguages.find((lang) => lang.value === node.language);\n const decorateKey = language?.decorate ?? language?.value;\n\n const selectedLanguage = Prism.languages[decorateKey || 'plaintext'];\n\n // create \"tokens\" with \"prismjs\" and put them in \"ranges\"\n const tokens = Prism.tokenize(text, selectedLanguage);\n let start = 0;\n for (const token of tokens) {\n const length = token.length;\n const end = start + length;\n if (typeof token !== 'string') {\n ranges.push({\n anchor: { path, offset: start },\n focus: { path, offset: end },\n className: `token ${token.type}`,\n });\n }\n start = end;\n }\n\n // these will be found in \"renderLeaf\" in \"leaf\" and their \"className\" will be applied\n return ranges;\n};\n\nconst CodeBlock = styled.pre`\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral100};\n max-width: 100%;\n overflow: auto;\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};\n flex-shrink: 1;\n\n & > code {\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n color: ${({ theme }) => theme.colors.neutral800};\n overflow: auto;\n max-width: 100%;\n }\n`;\n\nconst CodeEditor = (props: RenderElementProps) => {\n const { editor } = useBlocksEditorContext('ImageDialog');\n const editorIsFocused = useFocused();\n const imageIsSelected = useSelected();\n const { formatMessage } = useIntl();\n const [isSelectOpen, setIsSelectOpen] = React.useState(false);\n const shouldDisplayLanguageSelect = (editorIsFocused && imageIsSelected) || isSelectOpen;\n\n return (\n <Box position=\"relative\" width=\"100%\">\n <CodeBlock {...props.attributes}>\n <code>{props.children}</code>\n </CodeBlock>\n {shouldDisplayLanguageSelect && (\n <Box\n position=\"absolute\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n borderStyle=\"solid\"\n borderWidth=\"0.5px\"\n shadow=\"tableShadow\"\n top=\"100%\"\n marginTop={1}\n right={0}\n padding={1}\n hasRadius\n >\n <SingleSelect\n onChange={(open) => {\n Transforms.setNodes(\n editor,\n { language: open.toString() },\n { match: (node) => !Editor.isEditor(node) && node.type === 'code' }\n );\n }}\n value={(props.element.type === 'code' && props.element.language) || 'plaintext'}\n onOpenChange={(open) => {\n setIsSelectOpen(open);\n\n // Focus the editor again when closing the select so the user can continue typing\n if (!open) {\n ReactEditor.focus(editor);\n }\n }}\n onCloseAutoFocus={(e) => e.preventDefault()}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.code.languageLabel',\n defaultMessage: 'Select a language',\n })}\n >\n {codeLanguages.map(({ value, label }) => (\n <SingleSelectOption value={value} key={value}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Box>\n )}\n </Box>\n );\n};\n\nconst codeBlocks: Pick<BlocksStore, 'code'> = {\n code: {\n renderElement: (props) => <CodeEditor {...props} />,\n icon: CodeBlockIcon,\n label: {\n id: 'components.Blocks.blocks.code',\n defaultMessage: 'Code block',\n },\n matchNode: (node) => node.type === 'code',\n isInBlocksSelector: true,\n handleConvert(editor) {\n baseHandleConvert<Block<'code'>>(editor, { type: 'code', language: 'plaintext' });\n },\n handleEnterKey(editor) {\n pressEnterTwiceToExit(editor);\n },\n snippets: ['```'],\n },\n};\n\nexport { codeBlocks };\n","import * as React from 'react';\n\nimport { Typography, TypographyComponent } from '@strapi/design-system';\nimport {\n HeadingFive,\n HeadingFour,\n HeadingOne,\n HeadingSix,\n HeadingThree,\n HeadingTwo,\n} from '@strapi/icons';\nimport { Editor } from 'slate';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { type Block } from '../utils/types';\n\nconst H1 = styled<TypographyComponent<'h1'>>(Typography).attrs({ tag: 'h1' })`\n font-size: 4.2rem;\n line-height: ${({ theme }) => theme.lineHeights[1]};\n`;\n\nconst H2 = styled<TypographyComponent<'h2'>>(Typography).attrs({ tag: 'h2' })`\n font-size: 3.5rem;\n line-height: ${({ theme }) => theme.lineHeights[1]};\n`;\n\nconst H3 = styled<TypographyComponent<'h3'>>(Typography).attrs({ tag: 'h3' })`\n font-size: 2.9rem;\n line-height: ${({ theme }) => theme.lineHeights[1]};\n`;\n\nconst H4 = styled<TypographyComponent<'h4'>>(Typography).attrs({ tag: 'h4' })`\n font-size: 2.4rem;\n line-height: ${({ theme }) => theme.lineHeights[1]};\n`;\n\nconst H5 = styled<TypographyComponent<'h5'>>(Typography).attrs({ tag: 'h5' })`\n font-size: 2rem;\n line-height: ${({ theme }) => theme.lineHeights[1]};\n`;\n\nconst H6 = styled<TypographyComponent<'h6'>>(Typography).attrs({ tag: 'h6' })`\n font-size: 1.6rem;\n line-height: ${({ theme }) => theme.lineHeights[1]};\n`;\n\n/**\n * Common handler for converting a node to a heading\n */\nconst handleConvertToHeading = (editor: Editor, level: Block<'heading'>['level']) => {\n baseHandleConvert<Block<'heading'>>(editor, { type: 'heading', level });\n};\n\nconst headingBlocks: Pick<\n BlocksStore,\n 'heading-one' | 'heading-two' | 'heading-three' | 'heading-four' | 'heading-five' | 'heading-six'\n> = {\n 'heading-one': {\n renderElement: (props) => <H1 {...props.attributes}>{props.children}</H1>,\n icon: HeadingOne,\n label: {\n id: 'components.Blocks.blocks.heading1',\n defaultMessage: 'Heading 1',\n },\n handleConvert: (editor) => handleConvertToHeading(editor, 1),\n matchNode: (node) => node.type === 'heading' && node.level === 1,\n isInBlocksSelector: true,\n snippets: ['#'],\n dragHandleTopMargin: '14px',\n },\n 'heading-two': {\n renderElement: (props) => <H2 {...props.attributes}>{props.children}</H2>,\n icon: HeadingTwo,\n label: {\n id: 'components.Blocks.blocks.heading2',\n defaultMessage: 'Heading 2',\n },\n handleConvert: (editor) => handleConvertToHeading(editor, 2),\n matchNode: (node) => node.type === 'heading' && node.level === 2,\n isInBlocksSelector: true,\n snippets: ['##'],\n dragHandleTopMargin: '10px',\n },\n 'heading-three': {\n renderElement: (props) => <H3 {...props.attributes}>{props.children}</H3>,\n icon: HeadingThree,\n label: {\n id: 'components.Blocks.blocks.heading3',\n defaultMessage: 'Heading 3',\n },\n handleConvert: (editor) => handleConvertToHeading(editor, 3),\n matchNode: (node) => node.type === 'heading' && node.level === 3,\n isInBlocksSelector: true,\n snippets: ['###'],\n dragHandleTopMargin: '7px',\n },\n 'heading-four': {\n renderElement: (props) => <H4 {...props.attributes}>{props.children}</H4>,\n icon: HeadingFour,\n label: {\n id: 'components.Blocks.blocks.heading4',\n defaultMessage: 'Heading 4',\n },\n handleConvert: (editor) => handleConvertToHeading(editor, 4),\n matchNode: (node) => node.type === 'heading' && node.level === 4,\n isInBlocksSelector: true,\n snippets: ['####'],\n dragHandleTopMargin: '4px',\n },\n 'heading-five': {\n renderElement: (props) => <H5 {...props.attributes}>{props.children}</H5>,\n icon: HeadingFive,\n label: {\n id: 'components.Blocks.blocks.heading5',\n defaultMessage: 'Heading 5',\n },\n handleConvert: (editor) => handleConvertToHeading(editor, 5),\n matchNode: (node) => node.type === 'heading' && node.level === 5,\n isInBlocksSelector: true,\n snippets: ['#####'],\n },\n 'heading-six': {\n renderElement: (props) => <H6 {...props.attributes}>{props.children}</H6>,\n icon: HeadingSix,\n label: {\n id: 'components.Blocks.blocks.heading6',\n defaultMessage: 'Heading 6',\n },\n handleConvert: (editor) => handleConvertToHeading(editor, 6),\n matchNode: (node) => node.type === 'heading' && node.level === 6,\n isInBlocksSelector: true,\n snippets: ['######'],\n dragHandleTopMargin: '-2px',\n },\n};\n\nexport { headingBlocks };\n","import * as React from 'react';\n\nimport { useStrapiApp } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FlexComponent } from '@strapi/design-system';\nimport { Image as Picture } from '@strapi/icons';\nimport { type Element, Transforms, Editor } from 'slate';\nimport { useFocused, type RenderElementProps, useSelected } from 'slate-react';\nimport { styled, css } from 'styled-components';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../../../utils/urls';\nimport { useBlocksEditorContext, type BlocksStore } from '../BlocksEditor';\nimport { type Block } from '../utils/types';\n\nimport type { Schema } from '@strapi/types';\n\nconst ImageWrapper = styled<FlexComponent>(Flex)<{ $isFocused?: boolean }>`\n transition-property: box-shadow;\n transition-duration: 0.2s;\n ${(props) =>\n props.$isFocused &&\n css`\n box-shadow: ${props.theme.colors.primary600} 0px 0px 0px 3px;\n `}\n\n & > img {\n height: auto;\n // The max-height is decided with the design team, the 56px is the height of the toolbar\n max-height: calc(512px - 56px);\n max-width: 100%;\n object-fit: contain;\n }\n`;\n\nconst IMAGE_SCHEMA_FIELDS = [\n 'name',\n 'alternativeText',\n 'url',\n 'caption',\n 'width',\n 'height',\n 'formats',\n 'hash',\n 'ext',\n 'mime',\n 'size',\n 'previewUrl',\n 'provider',\n 'provider_metadata',\n 'createdAt',\n 'updatedAt',\n];\n\nconst pick = <T extends object, K extends keyof T>(object: T, keys: K[]): Pick<T, K> => {\n const entries = keys.map((key) => [key, object[key]]);\n return Object.fromEntries(entries);\n};\n\n// Type guard to force TypeScript to narrow the type of the element in Blocks component\nconst isImage = (element: Element): element is Block<'image'> => {\n return element.type === 'image';\n};\n\n// Added a background color to the image wrapper to make it easier to recognize the image block\nconst Image = ({ attributes, children, element }: RenderElementProps) => {\n const editorIsFocused = useFocused();\n const imageIsSelected = useSelected();\n\n if (!isImage(element)) {\n return null;\n }\n const { url, alternativeText, width, height } = element.image;\n\n return (\n <Box {...attributes}>\n {children}\n <ImageWrapper\n background=\"neutral100\"\n contentEditable={false}\n justifyContent=\"center\"\n $isFocused={editorIsFocused && imageIsSelected}\n hasRadius\n >\n <img src={url} alt={alternativeText} width={width} height={height} />\n </ImageWrapper>\n </Box>\n );\n};\n\nconst ImageDialog = () => {\n const [isOpen, setIsOpen] = React.useState(true);\n const { editor } = useBlocksEditorContext('ImageDialog');\n const components = useStrapiApp('ImageDialog', (state) => state.components);\n\n if (!components || !isOpen) return null;\n\n const MediaLibraryDialog = components['media-library'] as React.ComponentType<{\n allowedTypes: Schema.Attribute.MediaKind[];\n onClose: () => void;\n onSelectAssets: (_images: Schema.Attribute.MediaValue<true>) => void;\n }>;\n\n const insertImages = (images: Block<'image'>['image'][]) => {\n // If the selection is inside a list, split the list so that the modified block is outside of it\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n split: true,\n });\n\n // Save the path of the node that is being replaced by an image to insert the images there later\n // It's the closest full block node above the selection\n const nodeEntryBeingReplaced = Editor.above(editor, {\n match(node) {\n if (Editor.isEditor(node)) return false;\n\n const isInlineNode = ['text', 'link'].includes(node.type);\n\n return !isInlineNode;\n },\n });\n\n if (!nodeEntryBeingReplaced) return;\n const [, pathToInsert] = nodeEntryBeingReplaced;\n\n // Remove the previous node that is being replaced by an image\n Transforms.removeNodes(editor);\n\n // Convert images to nodes and insert them\n const nodesToInsert = images.map((image) => {\n const imageNode: Block<'image'> = {\n type: 'image',\n image,\n children: [{ type: 'text', text: '' }],\n };\n return imageNode;\n });\n Transforms.insertNodes(editor, nodesToInsert, { at: pathToInsert });\n\n // Set the selection on the image since it was cleared by calling removeNodes\n Transforms.select(editor, pathToInsert);\n };\n\n const handleSelectAssets = (images: Schema.Attribute.MediaValue<true>) => {\n const formattedImages = images.map((image) => {\n // Create an object with imageSchema defined and exclude unnecessary props coming from media library config\n const expectedImage = pick(image, IMAGE_SCHEMA_FIELDS);\n\n const nodeImage: Block<'image'>['image'] = {\n ...expectedImage,\n alternativeText: expectedImage.alternativeText || expectedImage.name,\n url: prefixFileUrlWithBackendUrl(image.url),\n };\n\n return nodeImage;\n });\n\n insertImages(formattedImages);\n setIsOpen(false);\n };\n\n return (\n <MediaLibraryDialog\n allowedTypes={['images']}\n onClose={() => setIsOpen(false)}\n onSelectAssets={handleSelectAssets}\n />\n );\n};\n\nconst imageBlocks: Pick<BlocksStore, 'image'> = {\n image: {\n renderElement: (props) => <Image {...props} />,\n icon: Picture,\n label: {\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n },\n matchNode: (node) => node.type === 'image',\n isInBlocksSelector: true,\n handleBackspaceKey(editor) {\n // Prevent issue where the image remains when it's the only block in the document\n if (editor.children.length === 1) {\n Transforms.setNodes(editor, {\n type: 'paragraph',\n // @ts-expect-error we're only setting image as null so that Slate deletes it\n image: null,\n children: [{ type: 'text', text: '' }],\n });\n } else {\n Transforms.removeNodes(editor);\n }\n },\n handleEnterKey(editor) {\n Transforms.insertNodes(editor, {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n });\n },\n handleConvert: () => {\n /**\n * All the logic is managed inside the ImageDialog component,\n * because the blocks are only created when the user selects images in the modal and submits\n * and if he closes the modal, then no changes are made to the editor\n */\n return () => <ImageDialog />;\n },\n snippets: ['!['],\n },\n};\n\nexport { imageBlocks };\n","import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (editor: Editor, link: { url: string; text: string }) => {\n const { url, text } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nexport { insertLink, editLink, removeLink };\n","import type { Schema } from '@strapi/types';\nimport type { Element, Node } from 'slate';\n\ntype Block<T extends Element['type']> = Extract<Node, { type: T }>;\n\n// Wrap Object.entries to get the correct types\nconst getEntries = <T extends object>(object: T) =>\n Object.entries(object) as [keyof T, T[keyof T]][];\n\n// Wrap Object.keys to get the correct types\nconst getKeys = <T extends object>(object: T) => Object.keys(object) as (keyof T)[];\n\nconst isLinkNode = (element: Element): element is Schema.Attribute.LinkInlineNode => {\n return element.type === 'link';\n};\n\nconst isListNode = (element: Element): element is Schema.Attribute.ListBlockNode => {\n return element.type === 'list';\n};\n\nexport { type Block, getEntries, getKeys, isLinkNode, isListNode };\n","import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Editor, Path, Range, Transforms } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { editLink, removeLink } from '../utils/links';\nimport { isLinkNode, type Block } from '../utils/types';\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url && link.url === linkUrl && elementText && elementText === linkText);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width=\"368px\">\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n },\n};\n\nexport { linkBlocks };\n","import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { BulletList, NumberList } from '@strapi/icons';\nimport { type Text, Editor, Node, Transforms, Path } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled, type CSSProperties, css } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { isListNode, type Block } from '../utils/types';\n\nconst listStyle = css`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n margin-inline-start: ${({ theme }) => theme.spaces[0]};\n margin-inline-end: ${({ theme }) => theme.spaces[0]};\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n\n ol,\n ul {\n margin-block-start: ${({ theme }) => theme.spaces[0]};\n margin-block-end: ${({ theme }) => theme.spaces[0]};\n }\n\n li {\n margin-inline-start: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Orderedlist = styled.ol<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst Unorderedlist = styled.ul<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst orderedStyles = ['decimal', 'lower-alpha', 'upper-roman'];\nconst unorderedStyles = ['disc', 'circle', 'square'];\n\nconst List = ({ attributes, children, element }: RenderElementProps) => {\n if (!isListNode(element)) {\n return null;\n }\n\n // Decide the subsequent style by referencing the given styles according to the format,\n // allowing for infinite nested lists\n const listStyles = element.format === 'ordered' ? orderedStyles : unorderedStyles;\n const nextIndex = (element.indentLevel || 0) % listStyles!.length;\n const listStyleType = listStyles![nextIndex];\n\n if (element.format === 'ordered') {\n return (\n <Orderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Orderedlist>\n );\n }\n\n return (\n <Unorderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Unorderedlist>\n );\n};\n\nconst replaceListWithEmptyBlock = (editor: Editor, currentListPath: Path) => {\n // Delete the empty list\n Transforms.removeNodes(editor, { at: currentListPath });\n\n if (currentListPath[0] === 0) {\n // If the list was the only (or first) block element then insert empty paragraph as editor needs default value\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: currentListPath }\n );\n Transforms.select(editor, currentListPath);\n }\n};\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * Common handler for the backspace event on ordered and unordered lists\n */\nconst handleBackspaceKeyOnList = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const [currentListItem, currentListItemPath] = Editor.parent(editor, editor.selection.anchor);\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-2) === 0;\n\n if (isListEmpty) {\n const parentListEntry = Editor.above(editor, {\n at: currentListPath,\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n if (!parentListEntry) {\n event.preventDefault();\n replaceListWithEmptyBlock(editor, currentListPath);\n }\n } else if (isFocusAtTheBeginningOfAChild) {\n // If the focus is at the beginning of a child node we need to replace it with a paragraph\n Transforms.liftNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n Transforms.setNodes(editor, { type: 'paragraph' });\n } else if (isListItemEmpty) {\n const previousEntry = Editor.previous(editor, {\n at: currentListItemPath,\n });\n const nextEntry = Editor.next(editor, {\n at: currentListItemPath,\n });\n\n if (previousEntry && nextEntry) {\n // If previous and next nodes are lists or list-items, delete empty list item\n event.preventDefault();\n Transforms.removeNodes(editor, {\n at: currentListItemPath,\n });\n\n // If previous and next nodes are lists with same format and indent Levels, then merge the nodes\n const [previousList] = previousEntry;\n const [nextList] = nextEntry;\n if (\n !Editor.isEditor(previousList) &&\n !isText(previousList) &&\n isListNode(previousList) &&\n !Editor.isEditor(nextList) &&\n !isText(nextList) &&\n isListNode(nextList)\n ) {\n if (\n previousList.type === 'list' &&\n nextList.type === 'list' &&\n previousList.format === nextList.format &&\n previousList.indentLevel === nextList.indentLevel\n ) {\n Transforms.mergeNodes(editor, {\n at: currentListItemPath,\n });\n }\n }\n }\n }\n};\n\n/**\n * Common handler for the enter key on ordered and unordered lists\n */\nconst handleEnterKeyOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-1) === 0;\n\n if (isListEmpty) {\n replaceListWithEmptyBlock(editor, currentListPath);\n } else if (isFocusAtTheBeginningOfAChild && !isListItemEmpty) {\n // If the focus is at the beginning of a child node, shift below the list item and create a new list-item\n const currentNode = Editor.above(editor, { at: editor.selection.anchor });\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n if (currentNode) {\n const path = currentNode[1];\n const updatedPath = [...path.slice(0, -1), path[path.length - 1] + 1];\n Transforms.select(editor, {\n anchor: { path: updatedPath.concat(0), offset: 0 },\n focus: { path: updatedPath.concat(0), offset: 0 },\n });\n }\n } else if (isListItemEmpty) {\n // Check if there is a list above the current list and shift list-item under it\n if (\n !Editor.isEditor(currentList) &&\n isListNode(currentList) &&\n currentList?.indentLevel &&\n currentList.indentLevel > 0\n ) {\n const previousIndentLevel = currentList.indentLevel - 1;\n\n const parentListNodeEntry = Editor.above(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n node.type === 'list' &&\n (node.indentLevel || 0) === previousIndentLevel,\n });\n\n if (parentListNodeEntry) {\n // Get the parent list path and add 1 to it to exit from the current list\n const modifiedPath = currentListItemPath.slice(0, -1);\n if (modifiedPath.length > 0) {\n modifiedPath[modifiedPath.length - 1] += 1;\n }\n\n // Shift list-item under parent list\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: modifiedPath,\n });\n return;\n }\n }\n\n // Otherwise delete the empty list item and create a new paragraph below the parent list\n Transforms.removeNodes(editor, { at: currentListItemPath });\n\n const createdParagraphPath = Path.next(currentListPath);\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: createdParagraphPath }\n );\n\n // Move the selection to the newly created paragraph\n Transforms.select(editor, createdParagraphPath);\n } else {\n // Check if the cursor is at the end of the list item\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, currentListItemPath);\n\n if (isNodeEnd) {\n // If there was nothing after the cursor, create a fresh new list item,\n // in order to avoid carrying over the modifiers from the previous list item\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n } else {\n // If there is something after the cursor, split the current list item,\n // so that we keep the content and the modifiers\n Transforms.splitNodes(editor);\n }\n }\n};\n\n/**\n * Common handler for converting a node to a list\n */\nconst handleConvertToList = (editor: Editor, format: Block<'list'>['format']) => {\n const convertedPath = baseHandleConvert<Block<'list-item'>>(editor, { type: 'list-item' });\n\n if (!convertedPath) return;\n\n Transforms.wrapNodes(editor, { type: 'list', format, children: [] }, { at: convertedPath });\n};\n\n/**\n * Common handler for the tab key on ordered and unordered lists\n */\nconst handleTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n // Skip tabbing if list-item is the first item in the list\n if (currentListItem === currentList.children[0]) return;\n\n const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);\n const previousNode = currentList.children[currentListItemIndex - 1];\n\n // If previous node is a list block then move the list-item under it\n if (previousNode.type === 'list') {\n const nodePath = ReactEditor.findPath(editor, previousNode);\n const insertAtPath = previousNode.children.length;\n\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: nodePath.concat(insertAtPath),\n });\n return;\n }\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Wrap list-item with list block on tab\n Transforms.wrapNodes(editor, {\n type: 'list',\n format: currentList.format,\n indentLevel: (currentList.indentLevel || 0) + 1,\n children: [],\n });\n }\n};\n\nconst listBlocks: Pick<BlocksStore, 'list-ordered' | 'list-unordered' | 'list-item'> = {\n 'list-ordered': {\n renderElement: (props) => <List {...props} />,\n label: {\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n },\n icon: NumberList,\n matchNode: (node) => node.type === 'list' && node.format === 'ordered',\n isInBlocksSelector: true,\n handleConvert: (editor) => handleConvertToList(editor, 'ordered'),\n handleEnterKey: handleEnterKeyOnList,\n handleBackspaceKey: handleBackspaceKeyOnList,\n handleTab: handleTabOnList,\n snippets: ['1.'],\n },\n 'list-unordered': {\n renderElement: (props) => <List {...props} />,\n label: {\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n },\n icon: BulletList,\n matchNode: (node) => node.type === 'list' && node.format === 'unordered',\n isInBlocksSelector: true,\n handleConvert: (editor) => handleConvertToList(editor, 'unordered'),\n handleEnterKey: handleEnterKeyOnList,\n handleBackspaceKey: handleBackspaceKeyOnList,\n handleTab: handleTabOnList,\n snippets: ['-', '*', '+'],\n },\n 'list-item': {\n renderElement: (props) => (\n <Typography tag=\"li\" {...props.attributes}>\n {props.children}\n </Typography>\n ),\n // No handleConvert, list items are created when converting to the parent list\n matchNode: (node) => node.type === 'list-item',\n isInBlocksSelector: false,\n dragHandleTopMargin: '-2px',\n },\n};\n\nexport { listBlocks };\n","import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { Paragraph } from '@strapi/icons';\nimport { type Text, Editor, Transforms } from 'slate';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { type Block } from '../utils/types';\n\nconst paragraphBlocks: Pick<BlocksStore, 'paragraph'> = {\n paragraph: {\n renderElement: (props) => (\n <Typography tag=\"p\" variant=\"omega\" {...props.attributes}>\n {props.children}\n </Typography>\n ),\n icon: Paragraph,\n label: {\n id: 'components.Blocks.blocks.text',\n defaultMessage: 'Text',\n },\n matchNode: (node) => node.type === 'paragraph',\n isInBlocksSelector: true,\n dragHandleTopMargin: '-2px',\n handleConvert(editor) {\n baseHandleConvert<Block<'paragraph'>>(editor, { type: 'paragraph' });\n },\n handleEnterKey(editor) {\n if (!editor.selection) {\n return;\n }\n\n // We need to keep track of the initial position of the cursor\n const anchorPathInitialPosition = editor.selection.anchor.path;\n /**\n * Split the nodes where the cursor is. This will create a new paragraph with the content\n * after the cursor, while retaining all the children, modifiers etc.\n */\n Transforms.splitNodes(editor, {\n // Makes sure we always create a new node,\n // even if there's nothing to the right of the cursor in the node.\n always: true,\n });\n\n // Check if the created node is empty (if there was no text after the cursor in the node)\n // This lets us know if we need to carry over the modifiers from the previous node\n const parentBlockEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n if (!parentBlockEntry) {\n return;\n }\n const [, parentBlockPath] = parentBlockEntry;\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, parentBlockPath);\n\n /**\n * Delete and recreate the node that was created at the right of the cursor.\n * This is to avoid node pollution\n * (e.g. keeping the level attribute when converting a heading to a paragraph).\n * Select the parent of the selection because we want the full block, not the leaf.\n * And copy its children to make sure we keep the modifiers.\n */\n const [fragmentedNode] = Editor.parent(editor, editor.selection.anchor.path);\n Transforms.removeNodes(editor);\n\n // Check if after the current position there is another node\n const hasNextNode = editor.children.length - anchorPathInitialPosition[0] > 1;\n\n // Insert the new node at the right position.\n // The next line after the editor selection if present or otherwise at the end of the editor.\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n // Don't carry over the modifiers from the previous node if there was no text after the cursor\n children: (isNodeEnd ? [{ type: 'text', text: '' }] : fragmentedNode.children) as Text[],\n },\n {\n at: hasNextNode ? [anchorPathInitialPosition[0] + 1] : [editor.children.length],\n }\n );\n\n /**\n * The new selection will by default be at the end of the created node.\n * Instead we manually move it to the start of the created node.\n * Make sure to we go to the start of the node and not the start of the leaf.\n */\n Transforms.select(editor, editor.start([anchorPathInitialPosition[0] + 1]));\n },\n },\n};\n\nexport { paragraphBlocks };\n","import { Quotes } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { pressEnterTwiceToExit } from '../utils/enterKey';\nimport { type Block } from '../utils/types';\n\nconst Blockquote = styled.blockquote.attrs({ role: 'blockquote' })`\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n border-left: ${({ theme }) => `${theme.spaces[1]} solid ${theme.colors.neutral200}`};\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[4]};\n color: ${({ theme }) => theme.colors.neutral600};\n`;\n\nconst quoteBlocks: Pick<BlocksStore, 'quote'> = {\n quote: {\n renderElement: (props) => (\n // The div is needed to make sure the padding bottom from BlocksContent is applied properly\n // when the quote is the last block in the editor\n <div>\n <Blockquote {...props.attributes}>{props.children}</Blockquote>\n </div>\n ),\n icon: Quotes,\n label: {\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n },\n matchNode: (node) => node.type === 'quote',\n isInBlocksSelector: true,\n handleConvert(editor) {\n baseHandleConvert<Block<'quote'>>(editor, { type: 'quote' });\n },\n handleEnterKey(editor) {\n pressEnterTwiceToExit(editor);\n },\n snippets: ['>'],\n },\n};\n\nexport { quoteBlocks };\n","import * as React from 'react';\n\nimport { useElementOnScreen } from '@strapi/admin/strapi-admin';\nimport { IconButton, Menu } from '@strapi/design-system';\nimport { More } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * ObservedToolbarComponent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ObservedToolbarComponentProps {\n index: number;\n lastVisibleIndex: number;\n setLastVisibleIndex: React.Dispatch<React.SetStateAction<number>>;\n rootRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n}\n\nconst ObservedToolbarComponent = ({\n index,\n lastVisibleIndex,\n setLastVisibleIndex,\n rootRef,\n children,\n}: ObservedToolbarComponentProps) => {\n const isVisible = index <= lastVisibleIndex;\n\n const containerRef = useElementOnScreen<HTMLDivElement>(\n (isVisible) => {\n /**\n * It's the MoreMenu's job to make an item not visible when there's not room for it.\n * But we need to react here to the element becoming visible again.\n */\n if (isVisible) {\n setLastVisibleIndex((prev) => Math.max(prev, index));\n }\n },\n { threshold: 1, root: rootRef.current }\n );\n\n return (\n <div\n ref={containerRef}\n style={{\n /**\n * Use visibility so that the element occupies the space if requires even when there's not\n * enough room for it to be visible. The empty reserved space will be clipped by the\n * overflow:hidden rule on the parent, so it doesn't affect the UI.\n * This way we can keep observing its visiblity and react to browser resize events.\n */\n visibility: isVisible ? 'visible' : 'hidden',\n }}\n >\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditorToolbarObserver\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface ObservedComponent {\n toolbar: React.ReactNode;\n menu: React.ReactNode;\n key: string;\n}\n\nexport const EditorToolbarObserver = ({\n observedComponents,\n menuTriggerVariant = 'ghost',\n}: {\n observedComponents: ObservedComponent[];\n menuTriggerVariant?: Menu.TriggerProps['variant'];\n}) => {\n const { formatMessage } = useIntl();\n const toolbarRef = React.useRef<HTMLElement>(null);\n\n const [lastVisibleIndex, setLastVisibleIndex] = React.useState<number>(\n observedComponents.length - 1\n );\n const hasHiddenItems = lastVisibleIndex < observedComponents.length - 1;\n const menuIndex = lastVisibleIndex + 1;\n\n const [open, setOpen] = React.useState(false);\n const isMenuOpenWithContent = open && hasHiddenItems;\n const menuTriggerRef = useElementOnScreen<HTMLButtonElement>(\n (isVisible) => {\n // We only react to the menu becoming invisible. When that happens, we hide the last item.\n if (!isVisible) {\n /**\n * If there's no room for any item, the index can be -1.\n * This is intentional, in that case only the more menu will be visible.\n **/\n setLastVisibleIndex((prev) => prev - 1);\n // Maintain the menu state if it has content\n setOpen(isMenuOpenWithContent);\n }\n },\n { threshold: 1, root: toolbarRef.current }\n );\n\n return observedComponents\n .map((component, index) => {\n return (\n <ObservedToolbarComponent\n key={component.key}\n index={index}\n lastVisibleIndex={lastVisibleIndex}\n setLastVisibleIndex={setLastVisibleIndex}\n rootRef={toolbarRef}\n >\n {component.toolbar}\n </ObservedToolbarComponent>\n );\n })\n .toSpliced(\n menuIndex,\n 0,\n <Menu.Root\n key=\"more-menu\"\n defaultOpen={false}\n open={isMenuOpenWithContent}\n onOpenChange={setOpen}\n >\n <Menu.Trigger\n paddingLeft={0}\n paddingRight={0}\n ref={menuTriggerRef}\n variant={menuTriggerVariant}\n style={{ visibility: hasHiddenItems ? 'visible' : 'hidden' }}\n label={formatMessage({ id: 'global.more', defaultMessage: 'More' })}\n tag={IconButton}\n icon={<More />}\n />\n <Menu.Content\n onCloseAutoFocus={(e) => e.preventDefault()}\n maxHeight=\"100%\"\n minWidth=\"256px\"\n popoverPlacement=\"bottom-end\"\n >\n {observedComponents.slice(menuIndex).map((component) => (\n <React.Fragment key={component.key}>{component.menu}</React.Fragment>\n ))}\n </Menu.Content>\n </Menu.Root>\n );\n};\n","import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport { useElementOnScreen } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n IconButton,\n} from '@strapi/design-system';\nimport { Link, More } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { EditorToolbarObserver } from '../../EditorToolbarObserver';\n\nimport {\n type BlocksStore,\n type SelectorBlockKey,\n isSelectorBlockKey,\n useBlocksEditorContext,\n} from './BlocksEditor';\nimport { insertLink } from './utils/links';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: 6px;\n padding-bottom: 6px;\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onMouseDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n >\n <Icon fill={disabled ? 'neutral300' : enabledColor} />\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n\n const blockKeysToInclude: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(optionKey)) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey].handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey].matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n placeholder={formatMessage(blocks[blockSelected].label)}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => (\n <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\n />\n ))}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={<Icon fill={isSelected ? 'primary600' : 'neutral600'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n const { formatMessage } = useIntl();\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`].handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph'].handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n <Icon />\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem onSelect={addLink} isActive={isLinkActive()} disabled={isLinkDisabled()}>\n <Link />\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\ninterface ObservedToolbarComponentProps {\n index: number;\n lastVisibleIndex: number;\n setLastVisibleIndex: React.Dispatch<React.SetStateAction<number>>;\n rootRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n}\n\nconst ObservedToolbarComponent = ({\n index,\n lastVisibleIndex,\n setLastVisibleIndex,\n rootRef,\n children,\n}: ObservedToolbarComponentProps) => {\n const isVisible = index <= lastVisibleIndex;\n\n const containerRef = useElementOnScreen<HTMLDivElement>(\n (isVisible) => {\n /**\n * It's the MoreMenu's job to make an item not visible when there's not room for it.\n * But we need to react here to the element becoming visible again.\n */\n if (isVisible) {\n setLastVisibleIndex((prev) => Math.max(prev, index));\n }\n },\n { threshold: 1, root: rootRef.current }\n );\n\n return (\n <div\n ref={containerRef}\n style={{\n /**\n * Use visibility so that the element occupies the space if requires even when there's not\n * enough room for it to be visible. The empty reserved space will be clipped by the\n * overflow:hidden rule on the parent, so it doesn't affect the UI.\n * This way we can keep observing its visiblity and react to browser resize events.\n */\n visibility: isVisible ? 'visible' : 'hidden',\n }}\n >\n {children}\n </div>\n );\n};\n\ninterface ObservedComponent {\n toolbar: React.ReactNode;\n menu: React.ReactNode;\n key: string;\n}\n\ninterface MoreMenuProps {\n setLastVisibleIndex: React.Dispatch<React.SetStateAction<number>>;\n hasHiddenItems: boolean;\n rootRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n}\n\nconst MoreMenu = ({ setLastVisibleIndex, hasHiddenItems, rootRef, children }: MoreMenuProps) => {\n const { formatMessage } = useIntl();\n const containerRef = useElementOnScreen<HTMLButtonElement>(\n (isVisible) => {\n // We only react to the menu becoming invisible. When that happens, we hide the last item.\n if (!isVisible) {\n /**\n * If there's no room for any item, the index can be -1.\n * This is intentional, in that case only the more menu will be visible.\n **/\n setLastVisibleIndex((prev) => prev - 1);\n }\n },\n { threshold: 1, root: rootRef.current }\n );\n\n return (\n <Menu.Root defaultOpen={false}>\n <Menu.Trigger\n endIcon={null}\n paddingLeft={0}\n paddingRight={0}\n ref={containerRef}\n style={{ visibility: hasHiddenItems ? 'visible' : 'hidden' }}\n >\n <IconButton\n variant=\"ghost\"\n label={formatMessage({ id: 'global.more', defaultMessage: 'More' })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content onCloseAutoFocus={(e) => e.preventDefault()}>{children}</Menu.Content>\n </Menu.Root>\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n &:hover {\n background-color: ${({ theme }) => theme.colors.primary100};\n }\n\n ${(props) =>\n props.isActive &&\n css`\n font-weight: bold;\n background-color: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: bold;\n `}\n\n > span {\n display: inline-flex;\n gap: ${({ theme }) => theme.spaces[2]};\n align-items: center;\n }\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral600};\n }\n`;\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem onSelect={handleSelect} isActive={isActive}>\n <Icon />\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\" gap={1}>\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper gap={2} padding={2} width=\"100%\">\n <BlocksDropdown />\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n","import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n IconButton,\n IconButtonComponent,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Drag } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Editor, Range, Transforms } from 'slate';\nimport { ReactEditor, type RenderElementProps, type RenderLeafProps, Editable } from 'slate-react';\nimport { styled, CSSProperties, css } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDragAndDrop, DIRECTIONS } from '../../../../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { decorateCode } from './Blocks/Code';\nimport { type BlocksStore, useBlocksEditorContext } from './BlocksEditor';\nimport { useConversionModal } from './BlocksToolbar';\nimport { type ModifiersStore } from './Modifiers';\nimport { getEntries, isLinkNode, isListNode } from './utils/types';\n\nconst StyledEditable = styled(Editable)<{ isExpandedMode: boolean }>`\n // The outline style is set on the wrapper with :focus-within\n outline: none;\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[3]};\n height: 100%;\n // For fullscreen align input in the center with fixed width\n width: ${(props) => (props.isExpandedMode ? '512px' : '100%')};\n margin: auto;\n\n > *:last-child {\n padding-bottom: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Wrapper = styled<BoxComponent>(Box)<{ isOverDropTarget: boolean }>`\n position: ${({ isOverDropTarget }) => isOverDropTarget && 'relative'};\n`;\n\ntype DragDirection = (typeof DIRECTIONS)[keyof typeof DIRECTIONS];\n\nconst DropPlaceholder = styled<BoxComponent>(Box)<{\n dragDirection: DragDirection | null;\n placeholderMargin: 1 | 2;\n}>`\n position: absolute;\n right: 0;\n\n // Show drop placeholder 8px above or below the drop target\n ${({ dragDirection, theme, placeholderMargin }) => css`\n top: ${dragDirection === DIRECTIONS.UPWARD && `-${theme.spaces[placeholderMargin]}`};\n bottom: ${dragDirection === DIRECTIONS.DOWNWARD && `-${theme.spaces[placeholderMargin]}`};\n `}\n`;\n\nconst DragItem = styled<FlexComponent>(Flex)<{ $dragVisibility: CSSProperties['visibility'] }>`\n // Style each block rendered using renderElement()\n & > [data-slate-node='element'] {\n width: 100%;\n opacity: inherit;\n }\n\n // Set the visibility of drag button\n [role='button'] {\n visibility: ${(props) => props.$dragVisibility};\n opacity: inherit;\n }\n &[aria-disabled='true'] {\n user-drag: none;\n }\n`;\n\nconst DragIconButton = styled<IconButtonComponent<'div'>>(IconButton)<{\n $dragHandleTopMargin?: CSSProperties['marginTop'];\n}>`\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[0]};\n padding-right: ${({ theme }) => theme.spaces[0]};\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n visibility: hidden;\n cursor: grab;\n opacity: inherit;\n margin-top: ${(props) => props.$dragHandleTopMargin ?? 0};\n\n &:hover {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n &:active {\n cursor: grabbing;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n &[aria-disabled='true'] {\n visibility: hidden;\n }\n svg {\n min-width: ${({ theme }) => theme.spaces[3]};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype Direction = {\n setDragDirection: (direction: DragDirection) => void;\n dragDirection: DragDirection | null;\n};\n\ntype DragAndDropElementProps = Direction & {\n children: RenderElementProps['children'];\n index: Array<number>;\n dragHandleTopMargin?: CSSProperties['marginTop'];\n};\n\nconst DragAndDropElement = ({\n children,\n index,\n setDragDirection,\n dragDirection,\n dragHandleTopMargin,\n}: DragAndDropElementProps) => {\n const { editor, disabled, name, setLiveText } = useBlocksEditorContext('drag-and-drop');\n const { formatMessage } = useIntl();\n const [dragVisibility, setDragVisibility] = React.useState<CSSProperties['visibility']>('hidden');\n\n const handleMoveBlock = React.useCallback(\n (newIndex: Array<number>, currentIndex: Array<number>) => {\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Add 1 to the index for the live text message\n const currentIndexPosition = [currentIndex[0] + 1, ...currentIndex.slice(1)];\n const newIndexPosition = [newIndex[0] + 1, ...newIndex.slice(1)];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndexPosition.join(',')}`,\n position: `${newIndexPosition.join(',')} of ${editor.children.length}`,\n }\n )\n );\n },\n [editor, formatMessage, name, setLiveText]\n );\n\n const [{ handlerId, isDragging, isOverDropTarget, direction }, blockRef, dropRef, dragRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.BLOCKS}_${name}`,\n index,\n item: {\n index,\n displayedValue: children,\n },\n onDropItem(currentIndex, newIndex) {\n if (newIndex) handleMoveBlock(newIndex, currentIndex);\n },\n });\n\n const composedBoxRefs = useComposedRefs(blockRef, dropRef);\n\n // Set Drag direction before loosing state while dragging\n React.useEffect(() => {\n if (direction) {\n setDragDirection(direction);\n }\n }, [direction, setDragDirection]);\n\n // On selection change hide drag handle\n React.useEffect(() => {\n setDragVisibility('hidden');\n }, [editor.selection]);\n\n return (\n <Wrapper ref={composedBoxRefs} isOverDropTarget={isOverDropTarget}>\n {isOverDropTarget && (\n <DropPlaceholder\n borderStyle=\"solid\"\n borderColor=\"secondary200\"\n borderWidth=\"2px\"\n width=\"calc(100% - 24px)\"\n marginLeft=\"auto\"\n dragDirection={dragDirection}\n // For list items placeholder reduce the margin around\n placeholderMargin={children.props.as && children.props.as === 'li' ? 1 : 2}\n />\n )}\n {isDragging ? (\n <CloneDragItem dragHandleTopMargin={dragHandleTopMargin}>{children}</CloneDragItem>\n ) : (\n <DragItem\n ref={dragRef}\n data-handler-id={handlerId}\n gap={2}\n paddingLeft={2}\n alignItems=\"start\"\n onDragStart={(event) => {\n const target = event.target as HTMLElement;\n const currentTarget = event.currentTarget as HTMLElement;\n\n // Dragging action should only trigger drag event when button is dragged, however update styles on the whole dragItem.\n if (target.getAttribute('role') !== 'button') {\n event.preventDefault();\n } else {\n // Setting styles using dragging state is not working, so set it on current target element as nodes get dragged\n currentTarget.style.opacity = '0.5';\n }\n }}\n onDragEnd={(event) => {\n const currentTarget = event.currentTarget as HTMLElement;\n currentTarget.style.opacity = '1';\n }}\n onMouseMove={() => setDragVisibility('visible')}\n onSelect={() => setDragVisibility('visible')}\n onMouseLeave={() => setDragVisibility('hidden')}\n aria-disabled={disabled}\n $dragVisibility={dragVisibility}\n >\n <DragIconButton\n tag=\"div\"\n contentEditable={false}\n role=\"button\"\n tabIndex={0}\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onClick={(e) => e.stopPropagation()}\n aria-disabled={disabled}\n disabled={disabled}\n draggable\n // For some blocks top margin added to drag handle to align at the text level\n $dragHandleTopMargin={dragHandleTopMargin}\n >\n <Drag color=\"primary500\" />\n </DragIconButton>\n {children}\n </DragItem>\n )}\n </Wrapper>\n );\n};\n\ninterface CloneDragItemProps {\n children: RenderElementProps['children'];\n dragHandleTopMargin?: CSSProperties['marginTop'];\n}\n\n// To prevent applying opacity to the original item being dragged, display a cloned element without opacity.\nconst CloneDragItem = ({ children, dragHandleTopMargin }: CloneDragItemProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <DragItem gap={2} paddingLeft={2} alignItems=\"start\" $dragVisibility=\"visible\">\n <DragIconButton\n tag=\"div\"\n role=\"button\"\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n $dragHandleTopMargin={dragHandleTopMargin}\n >\n <Drag color=\"neutral600\" />\n </DragIconButton>\n {children}\n </DragItem>\n );\n};\n\ninterface ExtendedRenderLeafProps extends RenderLeafProps {\n leaf: RenderLeafProps['leaf'] & { className?: string };\n}\n\nconst baseRenderLeaf = (props: ExtendedRenderLeafProps, modifiers: ModifiersStore) => {\n // Recursively wrap the children for each active modifier\n const wrappedChildren = getEntries(modifiers).reduce((currentChildren, modifierEntry) => {\n const [name, modifier] = modifierEntry;\n\n if (props.leaf[name]) {\n return modifier.renderLeaf(currentChildren);\n }\n\n return currentChildren;\n }, props.children);\n\n return (\n <span {...props.attributes} className={props.leaf.className}>\n {wrappedChildren}\n </span>\n );\n};\n\ntype BaseRenderElementProps = Direction & {\n props: RenderElementProps['children'];\n blocks: BlocksStore;\n editor: Editor;\n};\n\nconst baseRenderElement = ({\n props,\n blocks,\n editor,\n setDragDirection,\n dragDirection,\n}: BaseRenderElementProps) => {\n const { element } = props;\n\n const blockMatch = Object.values(blocks).find((block) => block.matchNode(element));\n const block = blockMatch || blocks.paragraph;\n const nodePath = ReactEditor.findPath(editor, element);\n\n // Link is inline block so it cannot be dragged\n // List items and nested list blocks i.e. lists with indent level higher than 0 are skipped from dragged items\n if (\n isLinkNode(element) ||\n (isListNode(element) && element.indentLevel && element.indentLevel > 0) ||\n element.type === 'list-item'\n ) {\n return block.renderElement(props);\n }\n\n return (\n <DragAndDropElement\n index={nodePath}\n setDragDirection={setDragDirection}\n dragDirection={dragDirection}\n dragHandleTopMargin={block.dragHandleTopMargin}\n >\n {block.renderElement(props)}\n </DragAndDropElement>\n );\n};\n\ninterface BlocksContentProps {\n placeholder?: string;\n ariaLabelId: string;\n}\n\nconst BlocksContent = ({ placeholder, ariaLabelId }: BlocksContentProps) => {\n const { editor, disabled, blocks, modifiers, setLiveText, isExpandedMode } =\n useBlocksEditorContext('BlocksContent');\n const blocksRef = React.useRef<HTMLDivElement>(null);\n const { formatMessage } = useIntl();\n const [dragDirection, setDragDirection] = React.useState<DragDirection | null>(null);\n const { modalElement, handleConversionResult } = useConversionModal();\n\n // Create renderLeaf function based on the modifiers store\n const renderLeaf = React.useCallback(\n (props: ExtendedRenderLeafProps) => baseRenderLeaf(props, modifiers),\n [modifiers]\n );\n\n const handleMoveBlocks = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const start = Range.start(editor.selection);\n const currentIndex = [start.path[0]];\n let newIndexPosition = 0;\n\n if (event.key === 'ArrowUp') {\n newIndexPosition = currentIndex[0] > 0 ? currentIndex[0] - 1 : currentIndex[0];\n } else {\n newIndexPosition =\n currentIndex[0] < editor.children.length - 1 ? currentIndex[0] + 1 : currentIndex[0];\n }\n\n const newIndex = [newIndexPosition];\n\n if (newIndexPosition !== currentIndex[0]) {\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n\n event.preventDefault();\n }\n };\n\n // Create renderElement function base on the blocks store\n const renderElement = React.useCallback(\n (props: RenderElementProps) =>\n baseRenderElement({ props, blocks, editor, dragDirection, setDragDirection }),\n [blocks, editor, dragDirection, setDragDirection]\n );\n\n const checkSnippet = (event: React.KeyboardEvent<HTMLElement>) => {\n // Get current text block\n if (!editor.selection) {\n return;\n }\n\n const [textNode, textNodePath] = Editor.node(editor, editor.selection.anchor.path);\n\n // Narrow the type to a text node\n if (Editor.isEditor(textNode) || textNode.type !== 'text') {\n return;\n }\n\n // Don't check for snippets if we're not at the start of a block\n if (textNodePath.at(-1) !== 0) {\n return;\n }\n\n // Check if the text node starts with a known snippet\n const blockMatchingSnippet = Object.values(blocks).find((block) => {\n return block.snippets?.includes(textNode.text);\n });\n\n if (blockMatchingSnippet?.handleConvert) {\n // Prevent the space from being created and delete the snippet\n event.preventDefault();\n Transforms.delete(editor, {\n distance: textNode.text.length,\n unit: 'character',\n reverse: true,\n });\n\n // Convert the selected block\n const maybeRenderModal = blockMatchingSnippet.handleConvert(editor);\n handleConversionResult(maybeRenderModal);\n }\n };\n\n const handleEnter = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block.matchNode(selectedNode));\n if (!selectedBlock) {\n return;\n }\n\n // Allow forced line breaks when shift is pressed\n if (event.shiftKey && selectedNode.type !== 'image') {\n Transforms.insertText(editor, '\\n');\n return;\n }\n\n // Check if there's an enter handler for the selected block\n if (selectedBlock.handleEnterKey) {\n selectedBlock.handleEnterKey(editor);\n } else {\n blocks.paragraph.handleEnterKey!(editor);\n }\n };\n\n const handleBackspaceEvent = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block.matchNode(selectedNode));\n\n if (!selectedBlock) {\n return;\n }\n\n if (selectedBlock.handleBackspaceKey) {\n selectedBlock.handleBackspaceKey(editor, event);\n }\n };\n\n const handleTab = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) {\n return;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n const selectedBlock = Object.values(blocks).find((block) => block.matchNode(selectedNode));\n if (!selectedBlock) {\n return;\n }\n\n if (selectedBlock.handleTab) {\n event.preventDefault();\n selectedBlock.handleTab(editor);\n }\n };\n\n const handleKeyboardShortcuts = (event: React.KeyboardEvent<HTMLElement>) => {\n const isCtrlOrCmd = event.metaKey || event.ctrlKey;\n\n if (isCtrlOrCmd) {\n // Check if there's a modifier to toggle\n Object.values(modifiers).forEach((value) => {\n if (value.isValidEventKey(event)) {\n value.handleToggle(editor);\n return;\n }\n });\n if (event.shiftKey && ['ArrowUp', 'ArrowDown'].includes(event.key)) {\n handleMoveBlocks(editor, event);\n }\n }\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLElement> = (event) => {\n // Find the right block-specific handlers for enter and backspace key presses\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n return handleEnter(event);\n case 'Backspace':\n return handleBackspaceEvent(event);\n case 'Tab':\n return handleTab(event);\n case 'Escape':\n return ReactEditor.blur(editor);\n }\n\n handleKeyboardShortcuts(event);\n\n // Check if a snippet was triggered\n if (event.key === ' ') {\n checkSnippet(event);\n }\n };\n\n /**\n * scrollSelectionIntoView : Slate's default method to scroll a DOM selection into the view,\n * thats shifting layout for us when there is a overflowY:scroll on the viewport.\n * We are overriding it to check if the selection is not fully within the visible area of the editor,\n * we use scrollBy one line to the bottom\n */\n const handleScrollSelectionIntoView = () => {\n if (!editor.selection) return;\n const domRange = ReactEditor.toDOMRange(editor, editor.selection);\n const domRect = domRange.getBoundingClientRect();\n const blocksInput = blocksRef.current;\n\n if (!blocksInput) {\n return;\n }\n\n const editorRect = blocksInput.getBoundingClientRect();\n\n // Check if the selection is not fully within the visible area of the editor\n if (domRect.top < editorRect.top || domRect.bottom > editorRect.bottom) {\n // Scroll by one line to the bottom\n blocksInput.scrollBy({\n top: 28, // 20px is the line-height + 8px line gap\n behavior: 'smooth',\n });\n }\n };\n\n return (\n <Box\n ref={blocksRef}\n grow={1}\n width=\"100%\"\n overflow=\"auto\"\n fontSize={2}\n background=\"neutral0\"\n color=\"neutral800\"\n lineHeight={6}\n paddingRight={7}\n paddingTop={6}\n paddingBottom={3}\n >\n <StyledEditable\n aria-labelledby={ariaLabelId}\n readOnly={disabled}\n placeholder={placeholder}\n isExpandedMode={isExpandedMode}\n decorate={decorateCode}\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n onKeyDown={handleKeyDown}\n scrollSelectionIntoView={handleScrollSelectionIntoView}\n // As we have our own handler to drag and drop the elements returing true will skip slate's own event handler\n onDrop={() => {\n return true;\n }}\n onDragStart={() => {\n return true;\n }}\n />\n {modalElement}\n </Box>\n );\n};\n\nexport { BlocksContent, BlocksContentProps };\n","import * as React from 'react';\n\nimport { Box, Flex, FocusTrap, Portal, IconButton, FlexComponent } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\nconst CollapseIconButton = styled(IconButton)`\n position: absolute;\n bottom: 1.2rem;\n right: 1.2rem;\n`;\n\nconst ExpandWrapper = styled<FlexComponent>(Flex)`\n // Background with 20% opacity\n background: ${({ theme }) => `${theme.colors.neutral800}1F`};\n`;\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onCollapse: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onCollapse,\n ariaDescriptionId,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n React.useEffect(() => {\n if (isExpandedMode) {\n document.body.classList.add('lock-body-scroll');\n }\n\n return () => {\n document.body.classList.remove('lock-body-scroll');\n };\n }, [isExpandedMode]);\n\n if (isExpandedMode) {\n return (\n <Portal role=\"dialog\" aria-modal={false}>\n <FocusTrap onEscape={onCollapse}>\n <ExpandWrapper\n position=\"fixed\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={4}\n justifyContent=\"center\"\n onClick={onCollapse}\n >\n <Box<'div'>\n background=\"neutral0\"\n hasRadius\n shadow=\"popupShadow\"\n overflow=\"hidden\"\n width=\"90%\"\n height=\"90%\"\n onClick={(e) => e.stopPropagation()}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n <Flex height=\"100%\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <CollapseIconButton\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onCollapse}\n >\n <Collapse />\n </CollapseIconButton>\n </Flex>\n </Box>\n </ExpandWrapper>\n </FocusTrap>\n </Portal>\n );\n }\n\n return (\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {children}\n </InputWrapper>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n","import * as React from 'react';\n\nimport { Typography, TypographyComponent } from '@strapi/design-system';\nimport { Bold, Italic, Underline, StrikeThrough, Code } from '@strapi/icons';\nimport { type MessageDescriptor } from 'react-intl';\nimport { Editor, Text, Transforms } from 'slate';\nimport { styled, css } from 'styled-components';\n\nconst stylesToInherit = css`\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`;\n\nconst BoldText = styled<TypographyComponent>(Typography).attrs({ fontWeight: 'bold' })`\n ${stylesToInherit}\n`;\n\nconst ItalicText = styled<TypographyComponent>(Typography)`\n font-style: italic;\n ${stylesToInherit}\n`;\n\nconst UnderlineText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'underline',\n})`\n ${stylesToInherit}\n`;\n\nconst StrikeThroughText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'line-through',\n})`\n ${stylesToInherit}\n`;\n\nconst InlineCode = styled.code`\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n padding: ${({ theme }) => `0 ${theme.spaces[2]}`};\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n color: inherit;\n`;\n\ntype ModifierKey = Exclude<keyof Text, 'type' | 'text'>;\n\ntype ModifiersStore = {\n [K in ModifierKey]: {\n icon: React.ComponentType;\n isValidEventKey: (event: React.KeyboardEvent<HTMLElement>) => boolean;\n label: MessageDescriptor;\n checkIsActive: (editor: Editor) => boolean;\n handleToggle: (editor: Editor) => void;\n renderLeaf: (children: React.JSX.Element | string) => React.JSX.Element;\n };\n};\n\n/**\n * The default handler for checking if a modifier is active\n */\nconst baseCheckIsActive = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n if (!marks) return false;\n\n return Boolean(marks[name]);\n};\n\n/**\n * The default handler for toggling a modifier\n */\nconst baseHandleToggle = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n\n // If there is no selection, set selection to the end of line\n if (!editor.selection) {\n const endOfEditor = Editor.end(editor, []);\n Transforms.select(editor, endOfEditor);\n }\n\n // Toggle the modifier\n if (marks?.[name]) {\n Editor.removeMark(editor, name);\n } else {\n Editor.addMark(editor, name, true);\n }\n};\n\nconst modifiers: ModifiersStore = {\n bold: {\n icon: Bold,\n isValidEventKey: (event) => event.key === 'b',\n label: { id: 'components.Blocks.modifiers.bold', defaultMessage: 'Bold' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'bold'),\n handleToggle: (editor) => baseHandleToggle(editor, 'bold'),\n renderLeaf: (children) => <BoldText>{children}</BoldText>,\n },\n italic: {\n icon: Italic,\n isValidEventKey: (event) => event.key === 'i',\n label: { id: 'components.Blocks.modifiers.italic', defaultMessage: 'Italic' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'italic'),\n handleToggle: (editor) => baseHandleToggle(editor, 'italic'),\n renderLeaf: (children) => <ItalicText>{children}</ItalicText>,\n },\n underline: {\n icon: Underline,\n isValidEventKey: (event) => event.key === 'u',\n label: { id: 'components.Blocks.modifiers.underline', defaultMessage: 'Underline' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'underline'),\n handleToggle: (editor) => baseHandleToggle(editor, 'underline'),\n renderLeaf: (children) => <UnderlineText>{children}</UnderlineText>,\n },\n strikethrough: {\n icon: StrikeThrough,\n isValidEventKey: (event) => event.key === 'S' && event.shiftKey,\n label: { id: 'components.Blocks.modifiers.strikethrough', defaultMessage: 'Strikethrough' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'strikethrough'),\n handleToggle: (editor) => baseHandleToggle(editor, 'strikethrough'),\n renderLeaf: (children) => <StrikeThroughText>{children}</StrikeThroughText>,\n },\n code: {\n icon: Code,\n isValidEventKey: (event) => event.key === 'e',\n label: { id: 'components.Blocks.modifiers.code', defaultMessage: 'Inline code' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'code'),\n handleToggle: (editor) => baseHandleToggle(editor, 'code'),\n renderLeaf: (children) => <InlineCode>{children}</InlineCode>,\n },\n};\n\nexport { type ModifiersStore, modifiers };\n","import { type Editor } from 'slate';\n\n/**\n * Images are void elements. They handle the rendering of their children instead of Slate.\n * See the Slate documentation for more information:\n * - https://docs.slatejs.org/api/nodes/element#void-vs-not-void\n * - https://docs.slatejs.org/api/nodes/element#rendering-void-elements\n */\nconst withImages = (editor: Editor) => {\n const { isVoid } = editor;\n\n editor.isVoid = (element) => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n return editor;\n};\n\nexport { withImages };\n","import { type BaseEditor, Path, Transforms, Range, Point, Editor } from 'slate';\n\nimport { insertLink } from '../utils/links';\n\ninterface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nexport { withLinks, type LinkEditor };\n","import { type Text, Node, Editor, Element, Transforms } from 'slate';\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * This plugin is used to normalize the Slate document to match the Strapi schema.\n */\nconst withStrapiSchema = (editor: Editor) => {\n const { normalizeNode } = editor;\n\n /**\n * On the strapi schema, we want text nodes to have type: text\n * By default, Slate add text nodes without type: text\n * So we add this normalization for the cases when Slate add text nodes automatically\n */\n editor.normalizeNode = (entry) => {\n const [node, path] = entry;\n\n if (!Element.isElement(node) && !isText(node)) {\n Transforms.setNodes(editor, { type: 'text' }, { at: path });\n\n return;\n }\n\n normalizeNode(entry);\n };\n\n return editor;\n};\n\nexport { withStrapiSchema };\n","import * as React from 'react';\n\nimport { createContext, type FieldValue } from '@strapi/admin/strapi-admin';\nimport { IconButton, Divider, VisuallyHidden } from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, type Descendant, createEditor } from 'slate';\nimport { withHistory } from 'slate-history';\nimport { type RenderElementProps, Slate, withReact, ReactEditor, useSlate } from 'slate-react';\nimport { styled, type CSSProperties } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { codeBlocks } from './Blocks/Code';\nimport { headingBlocks } from './Blocks/Heading';\nimport { imageBlocks } from './Blocks/Image';\nimport { linkBlocks } from './Blocks/Link';\nimport { listBlocks } from './Blocks/List';\nimport { paragraphBlocks } from './Blocks/Paragraph';\nimport { quoteBlocks } from './Blocks/Quote';\nimport { BlocksContent, type BlocksContentProps } from './BlocksContent';\nimport { BlocksToolbar } from './BlocksToolbar';\nimport { EditorLayout } from './EditorLayout';\nimport { type ModifiersStore, modifiers } from './Modifiers';\nimport { withImages } from './plugins/withImages';\nimport { withLinks } from './plugins/withLinks';\nimport { withStrapiSchema } from './plugins/withStrapiSchema';\n\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * BlocksEditorProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseBlock {\n renderElement: (props: RenderElementProps) => React.JSX.Element;\n matchNode: (node: Schema.Attribute.BlocksNode) => boolean;\n handleConvert?: (editor: Editor) => void | (() => React.JSX.Element);\n handleEnterKey?: (editor: Editor) => void;\n handleBackspaceKey?: (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => void;\n handleTab?: (editor: Editor) => void;\n snippets?: string[];\n dragHandleTopMargin?: CSSProperties['marginTop'];\n}\n\ninterface NonSelectorBlock extends BaseBlock {\n isInBlocksSelector: false;\n}\n\ninterface SelectorBlock extends BaseBlock {\n isInBlocksSelector: true;\n icon: React.ComponentType;\n label: MessageDescriptor;\n}\n\ntype NonSelectorBlockKey = 'list-item' | 'link';\n\nconst selectorBlockKeys = [\n 'paragraph',\n 'heading-one',\n 'heading-two',\n 'heading-three',\n 'heading-four',\n 'heading-five',\n 'heading-six',\n 'list-ordered',\n 'list-unordered',\n 'image',\n 'quote',\n 'code',\n] as const;\n\ntype SelectorBlockKey = (typeof selectorBlockKeys)[number];\n\nconst isSelectorBlockKey = (key: unknown): key is SelectorBlockKey => {\n return typeof key === 'string' && selectorBlockKeys.includes(key as SelectorBlockKey);\n};\n\ntype BlocksStore = {\n [K in SelectorBlockKey]: SelectorBlock;\n} & {\n [K in NonSelectorBlockKey]: NonSelectorBlock;\n};\n\ninterface BlocksEditorContextValue {\n blocks: BlocksStore;\n modifiers: ModifiersStore;\n disabled: boolean;\n name: string;\n setLiveText: (text: string) => void;\n isExpandedMode: boolean;\n}\n\nconst [BlocksEditorProvider, usePartialBlocksEditorContext] =\n createContext<BlocksEditorContextValue>('BlocksEditor');\n\nfunction useBlocksEditorContext(\n consumerName: string\n): BlocksEditorContextValue & { editor: Editor } {\n const context = usePartialBlocksEditorContext(consumerName, (state) => state);\n const editor = useSlate();\n\n return {\n ...context,\n editor,\n };\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BlocksEditor\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditorDivider = styled(Divider)`\n background: ${({ theme }) => theme.colors.neutral200};\n`;\n\nconst ExpandIconButton = styled(IconButton)`\n position: absolute;\n bottom: 1.2rem;\n right: 1.2rem;\n box-shadow: ${({ theme }) => theme.shadows.filterShadow};\n`;\n\n/**\n * Forces an update of the Slate editor when the value prop changes from outside of Slate.\n * The root cause is that Slate is not a controlled component: https://github.com/ianstormtaylor/slate/issues/4612\n * Why not use JSON.stringify(value) as the key?\n * Because it would force a rerender of the entire editor every time the user types a character.\n * Why not use the entity id as the key, since it's unique for each locale?\n * Because it would not solve the problem when using the \"fill in from other locale\" feature\n */\nfunction useResetKey(value?: Schema.Attribute.BlocksValue): {\n key: number;\n incrementSlateUpdatesCount: () => void;\n} {\n // Keep track how many times Slate detected a change from a user interaction in the editor\n const slateUpdatesCount = React.useRef(0);\n // Keep track of how many times the value prop was updated, whether from within editor or from outside\n const valueUpdatesCount = React.useRef(0);\n // Use a key to force a rerender of the Slate editor when needed\n const [key, setKey] = React.useState(0);\n\n React.useEffect(() => {\n valueUpdatesCount.current += 1;\n\n // If the 2 refs are not equal, it means the value was updated from outside\n if (valueUpdatesCount.current !== slateUpdatesCount.current) {\n // So we change the key to force a rerender of the Slate editor,\n // which will pick up the new value through its initialValue prop\n setKey((previousKey) => previousKey + 1);\n\n // Then bring the 2 refs back in sync\n slateUpdatesCount.current = valueUpdatesCount.current;\n }\n }, [value]);\n\n return { key, incrementSlateUpdatesCount: () => (slateUpdatesCount.current += 1) };\n}\n\nconst pipe =\n (...fns: ((baseEditor: Editor) => Editor)[]) =>\n (value: Editor) =>\n fns.reduce<Editor>((prev, fn) => fn(prev), value);\n\ninterface BlocksEditorProps\n extends Pick<FieldValue<Schema.Attribute.BlocksValue>, 'onChange' | 'value' | 'error'>,\n BlocksContentProps {\n disabled?: boolean;\n name: string;\n}\n\nconst BlocksEditor = React.forwardRef<{ focus: () => void }, BlocksEditorProps>(\n ({ disabled = false, name, onChange, value, error, ...contentProps }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const [editor] = React.useState(() =>\n pipe(withHistory, withImages, withStrapiSchema, withReact, withLinks)(createEditor())\n );\n const [liveText, setLiveText] = React.useState('');\n const ariaDescriptionId = React.useId();\n const [isExpandedMode, setIsExpandedMode] = React.useState(false);\n\n const handleToggleExpand = () => {\n setIsExpandedMode((prev) => !prev);\n };\n\n /**\n * Editable is not able to hold the ref, https://github.com/ianstormtaylor/slate/issues/4082\n * so with \"useImperativeHandle\" we can use ReactEditor methods to expose to the parent above\n * also not passing forwarded ref here, gives console warning.\n */\n React.useImperativeHandle(\n forwardedRef,\n () => ({\n focus() {\n ReactEditor.focus(editor);\n },\n }),\n [editor]\n );\n\n const { key, incrementSlateUpdatesCount } = useResetKey(value);\n\n const handleSlateChange = (state: Descendant[]) => {\n const isAstChange = editor.operations.some((op) => op.type !== 'set_selection');\n\n if (isAstChange) {\n incrementSlateUpdatesCount();\n\n onChange(name, state as Schema.Attribute.BlocksValue);\n }\n };\n\n const blocks: BlocksStore = {\n ...paragraphBlocks,\n ...headingBlocks,\n ...listBlocks,\n ...linkBlocks,\n ...imageBlocks,\n ...quoteBlocks,\n ...codeBlocks,\n };\n\n return (\n <>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('components.Blocks.dnd.instruction'),\n defaultMessage: `To reorder blocks, press Command or Control along with Shift and the Up or Down arrow keys`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <Slate\n editor={editor}\n initialValue={value || [{ type: 'paragraph', children: [{ type: 'text', text: '' }] }]}\n onChange={handleSlateChange}\n key={key}\n >\n <BlocksEditorProvider\n blocks={blocks}\n modifiers={modifiers}\n disabled={disabled}\n name={name}\n setLiveText={setLiveText}\n isExpandedMode={isExpandedMode}\n >\n <EditorLayout\n error={error}\n disabled={disabled}\n onCollapse={handleToggleExpand}\n ariaDescriptionId={ariaDescriptionId}\n >\n <BlocksToolbar />\n <EditorDivider width=\"100%\" />\n <BlocksContent {...contentProps} />\n {!isExpandedMode && (\n <ExpandIconButton\n label={formatMessage({\n id: getTranslation('components.Blocks.expand'),\n defaultMessage: 'Expand',\n })}\n onClick={handleToggleExpand}\n >\n <Expand />\n </ExpandIconButton>\n )}\n </EditorLayout>\n </BlocksEditorProvider>\n </Slate>\n </>\n );\n }\n);\n\nexport {\n type BlocksStore,\n type SelectorBlockKey,\n BlocksEditor,\n BlocksEditorProvider,\n useBlocksEditorContext,\n isSelectorBlockKey,\n};\n","import * as React from 'react';\n\nimport { useField, type InputProps } from '@strapi/admin/strapi-admin';\nimport { Field, Flex } from '@strapi/design-system';\n\nimport { BlocksEditor } from './BlocksEditor';\n\nimport type { Schema } from '@strapi/types';\n\ninterface BlocksInputProps extends Omit<InputProps, 'type'> {\n labelAction?: React.ReactNode;\n type: Schema.Attribute.Blocks['type'];\n}\n\nconst BlocksInput = React.forwardRef<{ focus: () => void }, BlocksInputProps>(\n ({ label, name, required = false, hint, labelAction, ...editorProps }, forwardedRef) => {\n const id = React.useId();\n const field = useField(name);\n\n return (\n <Field.Root id={id} name={name} hint={hint} error={field.error} required={required}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <BlocksEditor\n name={name}\n error={field.error}\n ref={forwardedRef}\n value={field.value}\n onChange={field.onChange}\n ariaLabelId={id}\n {...editorProps}\n />\n <Field.Hint />\n <Field.Error />\n </Flex>\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBlocksInput = React.memo(BlocksInput);\n\nexport { MemoizedBlocksInput as BlocksInput };\n","import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\ninterface InitializerProps {\n disabled?: boolean;\n name: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n}\n\nconst Initializer = ({ disabled, name, onClick }: InitializerProps) => {\n const { formatMessage } = useIntl();\n\n const field = useField(name);\n\n return (\n <>\n <Box\n tag=\"button\"\n background={disabled ? 'neutral150' : 'neutral100'}\n borderColor={field.error ? 'danger600' : 'neutral200'}\n hasRadius\n disabled={disabled}\n onClick={onClick}\n paddingTop={9}\n paddingBottom={9}\n type=\"button\"\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <Flex direction=\"column\" gap={2}>\n <Flex justifyContent=\"center\" color={disabled ? 'neutral500' : 'primary600'}>\n <PlusCircle width=\"3.2rem\" height=\"3.2rem\" />\n </Flex>\n <Flex justifyContent=\"center\">\n <Typography\n textColor={disabled ? 'neutral600' : 'primary600'}\n variant=\"pi\"\n fontWeight=\"bold\"\n >\n {formatMessage({\n id: getTranslation('components.empty-repeatable'),\n defaultMessage: 'No entry yet. Click to add one.',\n })}\n </Typography>\n </Flex>\n </Flex>\n </Box>\n </>\n );\n};\n\nexport { Initializer };\nexport type { InitializerProps };\n","import { createContext } from '@strapi/admin/strapi-admin';\n\ninterface ComponentContextValue {\n /**\n * The id of the component. It will be undefined if the component\n * has not been created in the database yet. This could be on a new\n * or existing entry.\n */\n id?: number;\n /**\n * The level of the component. This is used to determine the nesting\n * of the component. The default is set to -1 so that the base level is 0\n * for the top level component, and increases by 1 for each level of nesting.\n */\n level: number;\n /**\n * The uid of the component. This is used to determine the type of the\n * component. Within an attribute, it is normally the `component` value.\n * It will be undefined if the hook is not called within the confines\n * of a provider.\n */\n uid?: string;\n /**\n * The type of component parent. It will be undefined if the hook\n * is not called within the confines of a provider.\n */\n type?: 'dynamiczone' | 'repeatable' | 'component';\n}\n\n/**\n * We use this component to wrap any individual component field in the Edit View,\n * this could be a component field in a dynamic zone, a component within a repeatable space,\n * or even nested components.\n *\n * We primarily need this to provide the component id to the components so that they can\n * correctly fetch their relations.\n */\nconst [ComponentProvider, useComponent] = createContext<ComponentContextValue>('ComponentContext', {\n id: undefined,\n level: -1,\n uid: undefined,\n type: undefined,\n});\n\nexport { ComponentProvider, useComponent };\n","import * as React from 'react';\n\nimport { Button, Flex, Typography, TypographyComponent } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface AddComponentButtonProps {\n children: React.ReactNode;\n hasError?: boolean;\n isDisabled?: boolean;\n isOpen?: boolean;\n onClick: React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n}\n\nconst AddComponentButton = ({\n hasError,\n isDisabled,\n isOpen,\n children,\n onClick,\n}: AddComponentButtonProps) => {\n return (\n <StyledButton\n type=\"button\"\n onClick={onClick}\n disabled={isDisabled}\n background=\"neutral0\"\n style={{ cursor: isDisabled ? 'not-allowed' : 'pointer' }}\n variant=\"tertiary\"\n >\n <Flex tag=\"span\" gap={2}>\n <StyledAddIcon aria-hidden $isOpen={isOpen} $hasError={hasError && !isOpen} />\n <Typography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor={hasError && !isOpen ? 'danger600' : 'neutral600'}\n >\n {children}\n </Typography>\n </Flex>\n </StyledButton>\n );\n};\n\nconst StyledAddIcon = styled(PlusCircle)<{ $isOpen?: boolean; $hasError?: boolean }>`\n height: ${({ theme }) => theme.spaces[6]};\n width: ${({ theme }) => theme.spaces[6]};\n transform: ${({ $isOpen }) => ($isOpen ? 'rotate(45deg)' : 'rotate(0deg)')};\n\n > circle {\n fill: ${({ theme, $hasError }) =>\n $hasError ? theme.colors.danger200 : theme.colors.neutral150};\n }\n > path {\n fill: ${({ theme, $hasError }) =>\n $hasError ? theme.colors.danger600 : theme.colors.neutral500};\n }\n`;\n\nconst StyledButton = styled(Button)`\n padding-left: ${({ theme }) => theme.spaces[3]};\n border-radius: 26px;\n box-shadow: ${({ theme }) => theme.shadows.filterShadow};\n height: 5rem;\n`;\n\nexport { AddComponentButton };\nexport type { AddComponentButtonProps };\n","import * as React from 'react';\n\nimport { Accordion, Box, Flex, FlexComponent, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ComponentIcon } from '../../../../../components/ComponentIcon';\nimport { RESPONSIVE_CONTAINER_BREAKPOINTS } from '../../FormLayout';\n\ninterface ComponentCategoryProps {\n category: string;\n components?: Array<{\n uid: string;\n displayName: string;\n icon?: string;\n }>;\n onAddComponent: (\n componentUid: string\n ) => React.MouseEventHandler<HTMLButtonElement> & React.MouseEventHandler<HTMLDivElement>;\n variant?: Accordion.Variant;\n}\n\nconst ComponentCategory = ({\n category,\n components = [],\n variant = 'primary',\n onAddComponent,\n}: ComponentCategoryProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Accordion.Item value={category}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger>\n {formatMessage({ id: category, defaultMessage: category })}\n </Accordion.Trigger>\n </Accordion.Header>\n <ResponsiveAccordionContent>\n <Grid paddingTop={4} paddingBottom={4} paddingLeft={3} paddingRight={3}>\n {components.map(({ uid, displayName, icon }) => (\n <ComponentBox\n key={uid}\n tag=\"button\"\n type=\"button\"\n background=\"neutral100\"\n justifyContent=\"center\"\n onClick={onAddComponent(uid)}\n hasRadius\n height=\"8.4rem\"\n shrink={0}\n borderColor=\"neutral200\"\n >\n <Flex direction=\"column\" gap={1} alignItems=\"center\" justifyContent=\"center\">\n <ComponentIcon color=\"currentColor\" background=\"primary200\" icon={icon} />\n\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {displayName}\n </Typography>\n </Flex>\n </ComponentBox>\n ))}\n </Grid>\n </ResponsiveAccordionContent>\n </Accordion.Item>\n );\n};\n\nconst ResponsiveAccordionContent = styled(Accordion.Content)`\n container-type: inline-size;\n`;\n\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: repeat(auto-fill, 100%);\n grid-gap: ${({ theme }) => theme.spaces[1]};\n\n @container (min-width: ${() => RESPONSIVE_CONTAINER_BREAKPOINTS.sm}) {\n grid-template-columns: repeat(auto-fill, 14rem);\n }\n`;\n\nconst ComponentBox = styled<FlexComponent<'button'>>(Flex)`\n color: ${({ theme }) => theme.colors.neutral600};\n cursor: pointer;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ComponentCategory };\nexport type { ComponentCategoryProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Accordion, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { ComponentCategory, ComponentCategoryProps } from './ComponentCategory';\n\ninterface ComponentPickerProps {\n dynamicComponentsByCategory?: Record<string, NonNullable<ComponentCategoryProps['components']>>;\n isOpen?: boolean;\n onClickAddComponent: (componentUid: string) => void;\n}\n\nconst ComponentPicker = ({\n dynamicComponentsByCategory = {},\n isOpen,\n onClickAddComponent,\n}: ComponentPickerProps) => {\n const { formatMessage } = useIntl();\n\n const handleAddComponentToDz = (componentUid: string) => () => {\n onClickAddComponent(componentUid);\n };\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Box\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={5}\n paddingRight={5}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n hasRadius\n >\n <Flex justifyContent=\"center\">\n <Typography fontWeight=\"bold\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('components.DynamicZone.ComponentPicker-label'),\n defaultMessage: 'Pick one component',\n })}\n </Typography>\n </Flex>\n <Box paddingTop={2}>\n <Accordion.Root defaultValue={Object.keys(dynamicComponentsByCategory)[0]}>\n {Object.entries(dynamicComponentsByCategory).map(([category, components], index) => (\n <ComponentCategory\n key={category}\n category={category}\n components={components}\n onAddComponent={handleAddComponentToDz}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n />\n ))}\n </Accordion.Root>\n </Box>\n </Box>\n );\n};\n\nexport { ComponentPicker };\nexport type { ComponentPickerProps };\n","import * as React from 'react';\n\nimport { useForm, useField } from '@strapi/admin/strapi-admin';\nimport {\n Accordion,\n Box,\n Flex,\n Grid,\n IconButton,\n useComposedRefs,\n Menu,\n MenuItem,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Drag, More, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COMPONENT_ICONS } from '../../../../../components/ComponentIcon';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../../../../hooks/useDragAndDrop';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { InputRenderer, type InputRendererProps } from '../../InputRenderer';\n\nimport type { ComponentPickerProps } from './ComponentPicker';\n\ninterface DynamicComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel'>,\n Pick<ComponentPickerProps, 'dynamicComponentsByCategory'> {\n componentUid: string;\n disabled?: boolean;\n index: number;\n name: string;\n onAddComponent: (componentUid: string, index: number) => void;\n onRemoveComponentClick: () => void;\n onMoveComponent: (dragIndex: number, hoverIndex: number) => void;\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicComponent = ({\n componentUid,\n disabled,\n index,\n name,\n onRemoveComponentClick,\n onMoveComponent,\n onGrabItem,\n onDropItem,\n onCancel,\n dynamicComponentsByCategory = {},\n onAddComponent,\n children,\n}: DynamicComponentProps) => {\n const { formatMessage } = useIntl();\n const formValues = useForm('DynamicComponent', (state) => state.values);\n const documentMeta = useDocumentContext('DynamicComponent', (state) => state.meta);\n const {\n edit: { components },\n } = useDocumentLayout(documentMeta.model);\n\n const title = React.useMemo(() => {\n const { mainField } = components[componentUid]?.settings ?? { mainField: 'id' };\n\n const mainFieldValue = getIn(formValues, `${name}.${index}.${mainField}`);\n\n const displayedValue =\n mainField === 'id' || !mainFieldValue ? '' : String(mainFieldValue).trim();\n\n const mainValue = displayedValue.length > 0 ? `- ${displayedValue}` : displayedValue;\n\n return mainValue;\n }, [componentUid, components, formValues, name, index]);\n\n const { icon, displayName } = React.useMemo(() => {\n const [category] = componentUid.split('.');\n const { icon, displayName } = (dynamicComponentsByCategory[category] ?? []).find(\n (component) => component.uid === componentUid\n ) ?? { icon: null, displayName: null };\n\n return { icon, displayName };\n }, [componentUid, dynamicComponentsByCategory]);\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.DYNAMIC_ZONE}_${name}`,\n index,\n item: {\n index,\n displayedValue: `${displayName} ${title}`,\n icon,\n },\n onMoveItem: onMoveComponent,\n onDropItem,\n onGrabItem,\n onCancel,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n /**\n * We don't need the accordion's to communicate with each other,\n * so a unique value for their state is enough.\n */\n const accordionValue = React.useId();\n\n const { value = [], rawError } = useField(`${name}.${index}`);\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n\n React.useEffect(() => {\n if (rawError && value) {\n setCollapseToOpen(accordionValue);\n }\n }, [rawError, value, accordionValue]);\n\n const composedBoxRefs = useComposedRefs(boxRef, dropRef);\n\n const accordionActions = disabled ? null : (\n <>\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n {\n id: getTranslation('components.DynamicZone.delete-label'),\n defaultMessage: 'Delete {name}',\n },\n { name: title }\n )}\n onClick={onRemoveComponentClick}\n >\n <Trash />\n </IconButton>\n <IconButton\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n <Menu.Root>\n <Menu.Trigger size=\"S\" endIcon={null} paddingLeft={0} paddingRight={0}>\n <IconButton\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslation('components.DynamicZone.more-actions'),\n defaultMessage: 'More actions',\n })}\n tag=\"span\"\n >\n <More aria-hidden focusable={false} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-above'),\n defaultMessage: 'Add component above',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <MenuItem key={componentUid} onSelect={() => onAddComponent(uid, index)}>\n {displayName}\n </MenuItem>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n <Menu.SubRoot>\n <Menu.SubTrigger>\n {formatMessage({\n id: getTranslation('components.DynamicZone.add-item-below'),\n defaultMessage: 'Add component below',\n })}\n </Menu.SubTrigger>\n <Menu.SubContent>\n {Object.entries(dynamicComponentsByCategory).map(([category, components]) => (\n <React.Fragment key={category}>\n <Menu.Label>{category}</Menu.Label>\n {components.map(({ displayName, uid }) => (\n <MenuItem key={componentUid} onSelect={() => onAddComponent(uid, index + 1)}>\n {displayName}\n </MenuItem>\n ))}\n </React.Fragment>\n ))}\n </Menu.SubContent>\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n </>\n );\n\n const accordionTitle = title ? `${displayName} ${title}` : displayName;\n\n return (\n <ComponentContainer tag=\"li\" width=\"100%\">\n <Flex justifyContent=\"center\">\n <Rectangle background=\"neutral200\" />\n </Flex>\n <StyledBox ref={composedBoxRefs} hasRadius>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Root value={collapseToOpen} onValueChange={setCollapseToOpen}>\n <Accordion.Item value={accordionValue}>\n <Accordion.Header>\n <Accordion.Trigger\n icon={\n icon && COMPONENT_ICONS[icon]\n ? COMPONENT_ICONS[icon]\n : COMPONENT_ICONS.dashboard\n }\n >\n {accordionTitle}\n </Accordion.Trigger>\n <Accordion.Actions>{accordionActions}</Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <AccordionContentRadius background=\"neutral0\">\n <Box paddingLeft={6} paddingRight={6} paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={4}>\n {components[componentUid]?.layout?.map((row, rowInd) => (\n <Grid.Item\n col={12}\n key={rowInd}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <ResponsiveGridRoot gap={4}>\n {row.map(({ size, ...field }) => {\n const fieldName = `${name}.${index}.${field.name}`;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.components.${componentUid}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <ResponsiveGridItem\n col={size}\n key={fieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children ? (\n children({ ...fieldWithTranslatedLabel, name: fieldName })\n ) : (\n <InputRenderer {...fieldWithTranslatedLabel} name={fieldName} />\n )}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n </Grid.Item>\n ))}\n </Grid.Root>\n </Box>\n </AccordionContentRadius>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )}\n </StyledBox>\n </ComponentContainer>\n );\n};\n\n// TODO: Delete once https://github.com/strapi/design-system/pull/858\n// is merged and released.\nconst StyledBox = styled<BoxComponent>(Box)`\n > div:first-child {\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n }\n`;\n\nconst AccordionContentRadius = styled<BoxComponent>(Box)`\n border-radius: 0 0 ${({ theme }) => theme.spaces[1]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst Rectangle = styled<BoxComponent>(Box)`\n width: ${({ theme }) => theme.spaces[2]};\n height: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst Preview = styled.span`\n display: block;\n background-color: ${({ theme }) => theme.colors.primary100};\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n padding: ${({ theme }) => theme.spaces[6]};\n`;\n\nconst ComponentContainer = styled<BoxComponent<'li'>>(Box)`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nexport { DynamicComponent };\nexport type { DynamicComponentProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\n\ninterface DynamicZoneLabelProps {\n label?: React.ReactNode;\n labelAction?: React.ReactNode;\n name: string;\n numberOfComponents?: number;\n required?: boolean;\n hint?: React.ReactNode;\n}\n\nconst DynamicZoneLabel = ({\n hint,\n label,\n labelAction,\n name,\n numberOfComponents = 0,\n required,\n}: DynamicZoneLabelProps) => {\n return (\n <Flex justifyContent=\"center\">\n <Box\n paddingTop={3}\n paddingBottom={3}\n paddingRight={4}\n paddingLeft={4}\n borderRadius=\"26px\"\n background=\"neutral0\"\n shadow=\"filterShadow\"\n color=\"neutral500\"\n >\n <Flex direction=\"column\" justifyContent=\"center\">\n <Flex maxWidth=\"35.6rem\">\n <Typography variant=\"pi\" textColor=\"neutral600\" fontWeight=\"bold\" ellipsis>\n {label || name}&nbsp;\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\" fontWeight=\"bold\">\n ({numberOfComponents})\n </Typography>\n {required && <Typography textColor=\"danger600\">*</Typography>}\n {labelAction && <Box paddingLeft={1}>{labelAction}</Box>}\n </Flex>\n {hint && (\n <Box paddingTop={1} maxWidth=\"35.6rem\">\n <Typography variant=\"pi\" textColor=\"neutral600\" ellipsis>\n {hint}\n </Typography>\n </Box>\n )}\n </Flex>\n </Box>\n </Flex>\n );\n};\n\nexport { DynamicZoneLabel };\nexport type { DynamicZoneLabelProps };\n","import * as React from 'react';\n\nimport {\n createContext,\n InputProps,\n useField,\n useForm,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, VisuallyHidden } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { type EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { AddComponentButton } from './AddComponentButton';\nimport { ComponentPicker } from './ComponentPicker';\nimport { DynamicComponent, DynamicComponentProps } from './DynamicComponent';\nimport { DynamicZoneLabel, DynamicZoneLabelProps } from './DynamicZoneLabel';\n\nimport type { InputRendererProps } from '../../InputRenderer';\nimport type { Schema } from '@strapi/types';\n\ninterface DynamicZoneContextValue {\n isInDynamicZone: boolean;\n}\n\nconst [DynamicZoneProvider, useDynamicZone] = createContext<DynamicZoneContextValue>(\n 'DynamicZone',\n {\n isInDynamicZone: false,\n }\n);\n\ninterface DynamicZoneProps\n extends Omit<Extract<EditFieldLayout, { type: 'dynamiczone' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'>,\n Pick<DynamicZoneLabelProps, 'labelAction'> {\n children?: (props: InputRendererProps) => React.ReactNode;\n}\n\nconst DynamicZone = ({\n attribute,\n disabled: disabledProp,\n hint,\n label,\n labelAction,\n name,\n required = false,\n children,\n}: DynamicZoneProps) => {\n // We cannot use the default props here\n const { max = Infinity, min = -Infinity } = attribute ?? {};\n\n const [addComponentIsOpen, setAddComponentIsOpen] = React.useState(false);\n const [liveText, setLiveText] = React.useState('');\n\n const document = useDocumentContext('DynamicZone', (state) => state.document);\n const { components, isLoading } = document;\n\n const disabled = disabledProp || isLoading;\n const { addFieldRow, removeFieldRow, moveFieldRow } = useForm(\n 'DynamicZone',\n ({ addFieldRow, removeFieldRow, moveFieldRow }) => ({\n addFieldRow,\n removeFieldRow,\n moveFieldRow,\n })\n );\n\n type DzWithTempKey =\n Schema.Attribute.GetDynamicZoneValue<Schema.Attribute.DynamicZone>[number] & {\n __temp_key__: number;\n };\n\n const { value = [], error } = useField<Array<DzWithTempKey>>(name);\n\n const dynamicComponentsByCategory = React.useMemo(() => {\n return attribute.components.reduce<\n NonNullable<DynamicComponentProps['dynamicComponentsByCategory']>\n >((acc, componentUid) => {\n const { category, info } = components[componentUid] ?? { info: {} };\n\n const component = { uid: componentUid, displayName: info.displayName, icon: info.icon };\n\n if (!acc[category]) {\n acc[category] = [];\n }\n\n acc[category] = [...acc[category], component];\n\n return acc;\n }, {});\n }, [attribute.components, components]);\n\n const { formatMessage } = useIntl();\n\n const { toggleNotification } = useNotification();\n\n const dynamicDisplayedComponentsLength = value.length;\n\n const handleAddComponent = (uid: string, position?: number) => {\n setAddComponentIsOpen(false);\n\n const schema = components[uid];\n const form = createDefaultForm(schema, components);\n const transformations = pipe(transformDocument(schema, components), (data) => ({\n ...data,\n __component: uid,\n }));\n\n const data = transformations(form);\n\n addFieldRow(name, data, position);\n };\n\n const handleClickOpenPicker = () => {\n if (dynamicDisplayedComponentsLength < max) {\n setAddComponentIsOpen((prev) => !prev);\n } else {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponent = (newIndex: number, currentIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleRemoveComponent = (name: string, currentIndex: number) => () => {\n removeFieldRow(name, currentIndex);\n };\n\n const hasError = error !== undefined;\n\n const renderButtonLabel = () => {\n if (addComponentIsOpen) {\n return formatMessage({ id: 'app.utils.close-label', defaultMessage: 'Close' });\n }\n\n if (hasError && dynamicDisplayedComponentsLength > max) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.extra-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # extra components} one {is # extra component} other {are # extra components}}',\n },\n {\n number: dynamicDisplayedComponentsLength - max,\n }\n );\n }\n\n if (hasError && dynamicDisplayedComponentsLength < min) {\n return formatMessage(\n {\n id: getTranslation(`components.DynamicZone.missing-components`),\n defaultMessage:\n 'There {number, plural, =0 {are # missing components} one {is # missing component} other {are # missing components}}',\n },\n { number: min - dynamicDisplayedComponentsLength }\n );\n }\n\n return formatMessage(\n {\n id: getTranslation('components.DynamicZone.add-component'),\n defaultMessage: 'Add a component to {componentName}',\n },\n { componentName: label || name }\n );\n };\n\n const level = useComponent('DynamicZone', (state) => state.level);\n\n const ariaDescriptionId = React.useId();\n\n return (\n <DynamicZoneProvider isInDynamicZone>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {dynamicDisplayedComponentsLength > 0 && (\n <Box>\n <DynamicZoneLabel\n hint={hint}\n label={label}\n labelAction={labelAction}\n name={name}\n numberOfComponents={dynamicDisplayedComponentsLength}\n required={required}\n />\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <ol aria-describedby={ariaDescriptionId}>\n {value.map((field, index) => (\n <ComponentProvider\n key={field.__temp_key__}\n level={level + 1}\n uid={field.__component}\n // id is always a number in a dynamic zone.\n id={field.id as number}\n type=\"dynamiczone\"\n >\n <DynamicComponent\n disabled={disabled}\n name={name}\n index={index}\n componentUid={field.__component}\n onMoveComponent={handleMoveComponent}\n onRemoveComponentClick={handleRemoveComponent(name, index)}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n onAddComponent={handleAddComponent}\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n >\n {children}\n </DynamicComponent>\n </ComponentProvider>\n ))}\n </ol>\n </Box>\n )}\n <Flex justifyContent=\"center\">\n <AddComponentButton\n hasError={hasError}\n isDisabled={disabled}\n isOpen={addComponentIsOpen}\n onClick={handleClickOpenPicker}\n >\n {renderButtonLabel()}\n </AddComponentButton>\n </Flex>\n <ComponentPicker\n dynamicComponentsByCategory={dynamicComponentsByCategory}\n isOpen={addComponentIsOpen}\n onClickAddComponent={handleAddComponent}\n />\n </Flex>\n </DynamicZoneProvider>\n );\n};\n\nexport { DynamicZone, useDynamicZone };\nexport type { DynamicZoneProps };\n","import { Field, TextInput } from '@strapi/design-system';\nimport { EyeStriked } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { InputProps } from '@strapi/admin/strapi-admin';\nimport type { Schema } from '@strapi/types';\n\ninterface NotAllowedInputProps extends Omit<InputProps, 'type'> {\n type: Schema.Attribute.Kind;\n}\n\nconst NotAllowedInput = ({ hint, label, required, name }: NotAllowedInputProps) => {\n const { formatMessage } = useIntl();\n\n const placeholder = formatMessage({\n id: 'components.NotAllowedInput.text',\n defaultMessage: 'No permissions to see this field',\n });\n\n return (\n <Field.Root id={name} hint={hint} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <TextInput\n disabled\n placeholder={placeholder}\n startAction={<EyeStriked fill=\"neutral600\" />}\n type=\"text\"\n value=\"\"\n />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { NotAllowedInput };\n","import * as React from 'react';\n\nimport { Form as FormContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\n\ninterface RelationModalProps {\n open: boolean;\n onToggle: () => void;\n id?: string;\n model: string;\n relationUrl: string;\n}\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst CustomModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst RelationModal = ({ open, onToggle, id, model, relationUrl }: RelationModalProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={open} onOpenChange={onToggle}>\n <CustomModalContent>\n <Modal.Header>\n <Flex>\n <IconButton\n withTooltip={false}\n label=\"Back\"\n variant=\"ghost\"\n disabled\n onClick={() => {}}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n </Modal.Header>\n <RelationModalBody\n id={id}\n model={model}\n collectionType={getCollectionType(relationUrl)!}\n isModalOpen={open}\n onToggleModal={onToggle}\n />\n <Modal.Footer>\n <Button onClick={onToggle} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </CustomModalContent>\n </Modal.Root>\n );\n};\n\ninterface RelationModalBodyProps {\n model: string;\n id?: string;\n collectionType: string;\n isModalOpen: boolean;\n onToggleModal: () => void;\n}\n\nconst RelationModalBody = ({ id }: RelationModalBodyProps) => {\n const { formatMessage } = useIntl();\n const documentMeta = useDocumentContext('RelationModalBody', (state) => state.meta);\n const documentResponse = useDocumentContext('RelationModalBody', (state) => state.document);\n const documentLayoutResponse = useDocumentLayout(documentMeta.model);\n\n const initialValues = documentResponse.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: documentMeta.model,\n }))\n );\n\n if (isLoading || documentResponse.isLoading || documentLayoutResponse.isLoading) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !documentMeta.model ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const hasDraftAndPublished = documentResponse.schema?.options?.draftAndPublish ?? false;\n\n return (\n <Modal.Body>\n <DocumentRBAC permissions={permissions} model={documentMeta.model}>\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n {hasDraftAndPublished ? (\n <Box marginTop={1}>\n <DocumentStatus status={documentResponse.document?.status} />\n </Box>\n ) : null}\n </Flex>\n <FormContext initialValues={initialValues} method={id ? 'PUT' : 'POST'}>\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout layout={documentLayoutResponse.edit.layout} hasBackground={false} />\n </Box>\n </Flex>\n </FormContext>\n </DocumentRBAC>\n </Modal.Body>\n );\n};\n\nexport { RelationModal };\n","import * as React from 'react';\n\nimport {\n type InputProps,\n useField,\n useForm,\n useNotification,\n useFocusInputField,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Combobox,\n ComboboxOption,\n Flex,\n IconButton,\n TextButton,\n Tooltip,\n Typography,\n VisuallyHidden,\n useComposedRefs,\n Link,\n Field,\n FlexComponent,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Cross, Drag, ArrowClockwise } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { FixedSizeList, ListChildComponentProps } from 'react-window';\nimport { styled } from 'styled-components';\n\nimport { RelationDragPreviewProps } from '../../../../../components/DragPreviews/RelationDragPreview';\nimport { COLLECTION_TYPES } from '../../../../../constants/collections';\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { useDebounce } from '../../../../../hooks/useDebounce';\nimport { type UseDocument, useDoc } from '../../../../../hooks/useDocument';\nimport { type EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport {\n DROP_SENSITIVITY,\n UseDragAndDropOptions,\n useDragAndDrop,\n} from '../../../../../hooks/useDragAndDrop';\nimport {\n useGetRelationsQuery,\n useLazySearchRelationsQuery,\n RelationResult,\n} from '../../../../../services/relations';\nimport { buildValidParams } from '../../../../../utils/api';\nimport { getRelationLabel } from '../../../../../utils/relations';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { useComponent } from '../ComponentContext';\nimport { RelationModal, getCollectionType } from '../Relations/RelationModal';\n\nimport type { Schema } from '@strapi/types';\n\n/**\n * Remove a relation, whether it's been already saved or not.\n * It's used both in RelationsList, where the \"remove relation\" button is, and in the input,\n * because we sometimes need to remove a previous relation when selecting a new one.\n */\nfunction useHandleDisconnect(fieldName: string, consumerName: string) {\n const field = useField(fieldName);\n const removeFieldRow = useForm(consumerName, (state) => state.removeFieldRow);\n const addFieldRow = useForm(consumerName, (state) => state.addFieldRow);\n\n const handleDisconnect: ListItemProps['data']['handleDisconnect'] = (relation) => {\n if (field.value && field.value.connect) {\n /**\n * A relation will exist in the `connect` array _if_ it has\n * been added without saving. In this case, we just remove it\n * from the connect array\n */\n const indexOfRelationInConnectArray = field.value.connect.findIndex(\n (rel: NonNullable<RelationsFormValue['connect']>[number]) => rel.id === relation.id\n );\n\n if (indexOfRelationInConnectArray >= 0) {\n removeFieldRow(`${fieldName}.connect`, indexOfRelationInConnectArray);\n return;\n }\n }\n\n addFieldRow(`${fieldName}.disconnect`, {\n id: relation.id,\n apiData: {\n id: relation.id,\n documentId: relation.documentId,\n locale: relation.locale,\n },\n });\n };\n\n return handleDisconnect;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * RelationsField\n * -----------------------------------------------------------------------------------------------*/\nconst RELATIONS_TO_DISPLAY = 5;\nconst ONE_WAY_RELATIONS = ['oneWay', 'oneToOne', 'manyToOne', 'oneToManyMorph', 'oneToOneMorph'];\n\ntype RelationPosition =\n | (Pick<RelationResult, 'status' | 'locale'> & {\n before: string;\n end?: never;\n })\n | { end: boolean; before?: never; status?: never; locale?: never };\n\ninterface Relation extends Pick<RelationResult, 'documentId' | 'id' | 'locale' | 'status'> {\n href: string;\n label: string;\n position?: RelationPosition;\n __temp_key__: string;\n apiData?: {\n documentId: RelationResult['documentId'];\n id: RelationResult['id'];\n locale?: RelationResult['locale'];\n position: RelationPosition;\n };\n}\n\ninterface RelationsFieldProps\n extends Omit<Extract<EditFieldLayout, { type: 'relation' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'> {}\n\nexport interface RelationsFormValue {\n connect?: Relation[];\n disconnect?: Pick<Relation, 'id'>[];\n}\n\n/**\n * TODO: we get a rather ugly flash when we remove a single relation from the list leaving\n * no other relations when we press save. The initial relation re-renders, probably because\n * of the lag in the Form cleaning it's \"disconnect\" array, whilst our data has not been invalidated.\n *\n * Could we invalidate relation data on the document actions? Should we?\n */\n\n/**\n * @internal\n * @description The relations field holds a lot of domain logic for handling relations which is rather complicated\n * At present we do not expose this to plugin developers, however, they are able to overwrite it themselves should\n * they wish to do so.\n */\nconst UnstableRelationsField = React.forwardRef<HTMLDivElement, RelationsFieldProps>(\n ({ disabled, label, ...props }, ref) => {\n const documentMeta = useDocumentContext('RelationsField', (state) => state.meta);\n const documentResponse = useDocumentContext('RelationsField', (state) => state.document);\n const changeDocument = useDocumentContext('RelationsField', (state) => state.changeDocument);\n\n const [currentPage, setCurrentPage] = React.useState(1);\n const documentId = documentResponse.document?.documentId;\n\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams();\n const params = buildValidParams(query);\n\n const isMorph = props.attribute.relation.toLowerCase().includes('morph');\n const isDisabled = isMorph || disabled;\n\n const { componentId, componentUID } = useComponent('RelationsField', ({ uid, id }) => ({\n componentId: id,\n componentUID: uid,\n }));\n\n const isSubmitting = useForm('RelationsList', (state) => state.isSubmitting);\n\n React.useEffect(() => {\n setCurrentPage(1);\n }, [isSubmitting]);\n\n /**\n * We'll always have a documentId in a created entry, so we look for a componentId first.\n * Same with `uid` and `documentModel`.\n */\n const id = componentId ? componentId.toString() : documentId;\n const model = componentUID ?? documentMeta.model;\n\n /**\n * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.\n * Where the above example would a nested field within two components, however\n * we only require the field on the component not the complete path since we query\n * individual components. Therefore we split the string and take the last item.\n */\n const [targetField] = props.name.split('.').slice(-1);\n\n const { data, isLoading, isFetching } = useGetRelationsQuery(\n {\n model,\n targetField,\n // below we don't run the query if there is no id.\n id,\n params: {\n ...params,\n pageSize: RELATIONS_TO_DISPLAY,\n page: currentPage,\n },\n },\n {\n refetchOnMountOrArgChange: true,\n skip: !id,\n selectFromResult: (result) => {\n return {\n ...result,\n data: {\n ...result.data,\n results: result.data?.results ? result.data.results : [],\n },\n };\n },\n }\n );\n\n const handleLoadMore = () => {\n setCurrentPage((prev) => prev + 1);\n };\n\n const field = useField(props.name);\n\n const isFetchingMoreRelations = isLoading || isFetching;\n\n const realServerRelationsCount =\n 'pagination' in data && data.pagination ? data.pagination.total : 0;\n\n /**\n * Items that are already connected, but reordered would be in\n * this list, so to get an accurate figure, we remove them.\n */\n const relationsConnected =\n (field.value?.connect ?? []).filter(\n (rel: Relation) => data.results.findIndex((relation) => relation.id === rel.id) === -1\n ).length ?? 0;\n const relationsDisconnected = field.value?.disconnect?.length ?? 0;\n\n const relationsCount = realServerRelationsCount + relationsConnected - relationsDisconnected;\n\n /**\n * This is it, the source of truth for reordering in conjunction with partial loading & updating\n * of relations. Relations on load are given __temp_key__ when fetched, because we don't want to\n * create brand new keys everytime the data updates, just keep adding them onto the newly loaded ones.\n */\n const relations = React.useMemo(() => {\n const ctx = {\n field: field.value,\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n href: `../${COLLECTION_TYPES}/${props.attribute.targetModel}`,\n mainField: props.mainField,\n };\n\n /**\n * Tidy up our data.\n */\n const transformations = pipe(\n removeConnected(ctx),\n removeDisconnected(ctx),\n addLabelAndHref(ctx)\n );\n\n const transformedRels = transformations([...data.results]);\n\n /**\n * THIS IS CRUCIAL. If you don't sort by the __temp_key__ which comes from fractional indexing\n * then the list will be in the wrong order.\n */\n return [...transformedRels, ...(field.value?.connect ?? [])].sort((a, b) => {\n if (a.__temp_key__ < b.__temp_key__) return -1;\n if (a.__temp_key__ > b.__temp_key__) return 1;\n return 0;\n });\n }, [\n data.results,\n field.value,\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n props.attribute.targetModel,\n props.mainField,\n ]);\n\n const handleDisconnect = useHandleDisconnect(props.name, 'RelationsField');\n\n const handleConnect: RelationsInputProps['onChange'] = (relation) => {\n const [lastItemInList] = relations.slice(-1);\n\n const item = {\n id: relation.id,\n apiData: {\n id: relation.id,\n documentId: relation.documentId,\n locale: relation.locale,\n },\n status: relation.status,\n /**\n * If there's a last item, that's the first key we use to generate out next one.\n */\n __temp_key__: generateNKeysBetween(lastItemInList?.__temp_key__ ?? null, null, 1)[0],\n // Fallback to `id` if there is no `mainField` value, which will overwrite the above `id` property with the exact same data.\n [props.mainField?.name ?? 'documentId']: relation[props.mainField?.name ?? 'documentId'],\n label: getRelationLabel(relation, props.mainField),\n // @ts-expect-error – targetModel does exist on the attribute, but it's not typed.\n href: `../${COLLECTION_TYPES}/${props.attribute.targetModel}/${relation.documentId}?${relation.locale ? `plugins[i18n][locale]=${relation.locale}` : ''}`,\n };\n\n if (ONE_WAY_RELATIONS.includes(props.attribute.relation)) {\n // Remove any existing relation so they can be replaced with the new one\n field.value?.connect?.forEach(handleDisconnect);\n relations.forEach(handleDisconnect);\n\n field.onChange(`${props.name}.connect`, [item]);\n } else {\n field.onChange(`${props.name}.connect`, [...(field.value?.connect ?? []), item]);\n }\n };\n\n return (\n <Flex\n ref={ref}\n direction=\"column\"\n gap={3}\n justifyContent=\"space-between\"\n alignItems=\"stretch\"\n wrap=\"wrap\"\n >\n <StyledFlex direction=\"column\" alignItems=\"start\" gap={2} width=\"100%\">\n <RelationsInput\n disabled={isDisabled}\n // NOTE: we should not default to using the documentId if the component is being created (componentUID is undefined)\n id={componentUID ? (componentId ? `${componentId}` : '') : documentId}\n label={`${label} ${relationsCount > 0 ? `(${relationsCount})` : ''}`}\n model={model}\n onChange={handleConnect}\n {...props}\n />\n {'pagination' in data &&\n data.pagination &&\n data.pagination.pageCount > data.pagination.page ? (\n <TextButton\n disabled={isFetchingMoreRelations}\n onClick={handleLoadMore}\n loading={isFetchingMoreRelations}\n startIcon={<ArrowClockwise />}\n // prevent the label from line-wrapping\n shrink={0}\n >\n {formatMessage({\n id: getTranslation('relation.loadMore'),\n defaultMessage: 'Load More',\n })}\n </TextButton>\n ) : null}\n </StyledFlex>\n <UnstableRelationsList\n data={relations}\n serverData={data.results}\n disabled={isDisabled}\n name={props.name}\n isLoading={isFetchingMoreRelations}\n relationType={props.attribute.relation}\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n targetModel={props.attribute.targetModel}\n setCurrentDocument={changeDocument}\n />\n </Flex>\n );\n }\n);\n\nconst RelationsField = React.forwardRef<HTMLDivElement, RelationsFieldProps>(\n ({ disabled, label, ...props }, ref) => {\n const [currentPage, setCurrentPage] = React.useState(1);\n const { document, model: documentModel } = useDoc();\n const documentId = document?.documentId;\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams();\n const params = buildValidParams(query);\n\n const isMorph = props.attribute.relation.toLowerCase().includes('morph');\n const isDisabled = isMorph || disabled;\n\n const { componentId, componentUID } = useComponent('RelationsField', ({ uid, id }) => ({\n componentId: id,\n componentUID: uid,\n }));\n\n const isSubmitting = useForm('RelationsList', (state) => state.isSubmitting);\n\n React.useEffect(() => {\n setCurrentPage(1);\n }, [isSubmitting]);\n\n /**\n * We'll always have a documentId in a created entry, so we look for a componentId first.\n * Same with `uid` and `documentModel`.\n */\n const id = componentId ? componentId.toString() : documentId;\n const model = componentUID ?? documentModel;\n\n /**\n * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.\n * Where the above example would a nested field within two components, however\n * we only require the field on the component not the complete path since we query\n * individual components. Therefore we split the string and take the last item.\n */\n const [targetField] = props.name.split('.').slice(-1);\n\n const { data, isLoading, isFetching } = useGetRelationsQuery(\n {\n model,\n targetField,\n // below we don't run the query if there is no id.\n id: id!,\n params: {\n ...params,\n pageSize: RELATIONS_TO_DISPLAY,\n page: currentPage,\n },\n },\n {\n refetchOnMountOrArgChange: true,\n skip: !id,\n selectFromResult: (result) => {\n return {\n ...result,\n data: {\n ...result.data,\n results: result.data?.results ? result.data.results : [],\n },\n };\n },\n }\n );\n\n const handleLoadMore = () => {\n setCurrentPage((prev) => prev + 1);\n };\n\n const field = useField(props.name);\n\n const isFetchingMoreRelations = isLoading || isFetching;\n\n const realServerRelationsCount =\n 'pagination' in data && data.pagination ? data.pagination.total : 0;\n\n /**\n * Items that are already connected, but reordered would be in\n * this list, so to get an accurate figure, we remove them.\n */\n const relationsConnected =\n (field.value?.connect ?? []).filter(\n (rel: Relation) => data.results.findIndex((relation) => relation.id === rel.id) === -1\n ).length ?? 0;\n const relationsDisconnected = field.value?.disconnect?.length ?? 0;\n\n const relationsCount = realServerRelationsCount + relationsConnected - relationsDisconnected;\n\n /**\n * This is it, the source of truth for reordering in conjunction with partial loading & updating\n * of relations. Relations on load are given __temp_key__ when fetched, because we don't want to\n * create brand new keys everytime the data updates, just keep adding them onto the newly loaded ones.\n */\n const relations = React.useMemo(() => {\n const ctx = {\n field: field.value,\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n href: `../${COLLECTION_TYPES}/${props.attribute.targetModel}`,\n mainField: props.mainField,\n };\n\n /**\n * Tidy up our data.\n */\n const transformations = pipe(\n removeConnected(ctx),\n removeDisconnected(ctx),\n addLabelAndHref(ctx)\n );\n\n const transformedRels = transformations([...data.results]);\n\n /**\n * THIS IS CRUCIAL. If you don't sort by the __temp_key__ which comes from fractional indexing\n * then the list will be in the wrong order.\n */\n return [...transformedRels, ...(field.value?.connect ?? [])].sort((a, b) => {\n if (a.__temp_key__ < b.__temp_key__) return -1;\n if (a.__temp_key__ > b.__temp_key__) return 1;\n return 0;\n });\n }, [\n data.results,\n field.value,\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n props.attribute.targetModel,\n props.mainField,\n ]);\n\n const handleDisconnect = useHandleDisconnect(props.name, 'RelationsField');\n\n const handleConnect: RelationsInputProps['onChange'] = (relation) => {\n const [lastItemInList] = relations.slice(-1);\n\n const item = {\n id: relation.id,\n apiData: {\n id: relation.id,\n documentId: relation.documentId,\n locale: relation.locale,\n },\n status: relation.status,\n /**\n * If there's a last item, that's the first key we use to generate out next one.\n */\n __temp_key__: generateNKeysBetween(lastItemInList?.__temp_key__ ?? null, null, 1)[0],\n // Fallback to `id` if there is no `mainField` value, which will overwrite the above `id` property with the exact same data.\n [props.mainField?.name ?? 'documentId']: relation[props.mainField?.name ?? 'documentId'],\n label: getRelationLabel(relation, props.mainField),\n // @ts-expect-error – targetModel does exist on the attribute, but it's not typed.\n href: `../${COLLECTION_TYPES}/${props.attribute.targetModel}/${relation.documentId}?${relation.locale ? `plugins[i18n][locale]=${relation.locale}` : ''}`,\n };\n\n if (ONE_WAY_RELATIONS.includes(props.attribute.relation)) {\n // Remove any existing relation so they can be replaced with the new one\n field.value?.connect?.forEach(handleDisconnect);\n relations.forEach(handleDisconnect);\n\n field.onChange(`${props.name}.connect`, [item]);\n } else {\n field.onChange(`${props.name}.connect`, [...(field.value?.connect ?? []), item]);\n }\n };\n\n return (\n <Flex\n ref={ref}\n direction=\"column\"\n gap={3}\n justifyContent=\"space-between\"\n alignItems=\"stretch\"\n wrap=\"wrap\"\n >\n <StyledFlex direction=\"column\" alignItems=\"start\" gap={2} width=\"100%\">\n <RelationsInput\n disabled={isDisabled}\n // NOTE: we should not default to using the documentId if the component is being created (componentUID is undefined)\n id={componentUID ? (componentId ? `${componentId}` : '') : documentId}\n label={`${label} ${relationsCount > 0 ? `(${relationsCount})` : ''}`}\n model={model}\n onChange={handleConnect}\n {...props}\n />\n {'pagination' in data &&\n data.pagination &&\n data.pagination.pageCount > data.pagination.page ? (\n <TextButton\n disabled={isFetchingMoreRelations}\n onClick={handleLoadMore}\n loading={isFetchingMoreRelations}\n startIcon={<ArrowClockwise />}\n // prevent the label from line-wrapping\n shrink={0}\n >\n {formatMessage({\n id: getTranslation('relation.loadMore'),\n defaultMessage: 'Load More',\n })}\n </TextButton>\n ) : null}\n </StyledFlex>\n <RelationsList\n data={relations}\n serverData={data.results}\n disabled={isDisabled}\n name={props.name}\n isLoading={isFetchingMoreRelations}\n relationType={props.attribute.relation}\n />\n </Flex>\n );\n }\n);\n\n/**\n * TODO: this can be removed once we stop shipping Inputs with\n * labels wrapped round in DS@2.\n */\nconst StyledFlex = styled<FlexComponent>(Flex)`\n & > div {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Relation Transformations\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TransformationContext extends Pick<RelationsFieldProps, 'mainField'> {\n field?: RelationsFormValue;\n href: string;\n}\n\n/**\n * If it's in the connected array, it can get out of our data array,\n * we'll be putting it back in later and sorting it anyway.\n */\nconst removeConnected =\n ({ field }: TransformationContext) =>\n (relations: RelationResult[]) => {\n return relations.filter((relation) => {\n const connectedRelations = field?.connect ?? [];\n\n return connectedRelations.findIndex((rel) => rel.id === relation.id) === -1;\n });\n };\n\n/**\n * @description Removes relations that are in the `disconnect` array of the field\n */\nconst removeDisconnected =\n ({ field }: TransformationContext) =>\n (relations: RelationResult[]): RelationResult[] =>\n relations.filter((relation) => {\n const disconnectedRelations = field?.disconnect ?? [];\n\n return disconnectedRelations.findIndex((rel) => rel.id === relation.id) === -1;\n });\n\n/**\n * @description Adds a label and href to the relation object we use this to render\n * a better UI where we can link to the relation and display a human-readable label.\n */\nconst addLabelAndHref =\n ({ mainField, href }: TransformationContext) =>\n (relations: RelationResult[]): Relation[] =>\n relations.map((relation) => {\n return {\n ...relation,\n // Fallback to `id` if there is no `mainField` value, which will overwrite the above `documentId` property with the exact same data.\n [mainField?.name ?? 'documentId']: relation[mainField?.name ?? 'documentId'],\n label: getRelationLabel(relation, mainField),\n href: `${href}/${relation.documentId}?${relation.locale ? `plugins[i18n][locale]=${relation.locale}` : ''}`,\n };\n });\n\n/* -------------------------------------------------------------------------------------------------\n * RelationsInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RelationsInputProps extends Omit<RelationsFieldProps, 'type'> {\n id?: string;\n model: string;\n onChange: (\n relation: Pick<RelationResult, 'documentId' | 'id' | 'locale' | 'status'> & {\n [key: string]: any;\n }\n ) => void;\n}\n\n/**\n * @description Contains all the logic for the combobox that can search\n * for relations and then add them to the field's connect array.\n */\nconst RelationsInput = ({\n hint,\n id,\n model,\n label,\n labelAction,\n name,\n mainField,\n placeholder,\n required,\n unique: _unique,\n 'aria-label': _ariaLabel,\n onChange,\n ...props\n}: RelationsInputProps) => {\n const [textValue, setTextValue] = React.useState<string | undefined>('');\n const [searchParams, setSearchParams] = React.useState({\n _q: '',\n page: 1,\n });\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams();\n\n const { formatMessage } = useIntl();\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n const field = useField<RelationsFormValue>(name);\n\n const searchParamsDebounced = useDebounce(searchParams, 300);\n const [searchForTrigger, { data, isLoading }] = useLazySearchRelationsQuery();\n\n /**\n * Because we're using a lazy query, we need to trigger the search\n * when the component mounts and when the search params change.\n * We also need to trigger the search when the field value changes\n * so that we can filter out the relations that are already connected.\n */\n React.useEffect(() => {\n /**\n * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.\n * Where the above example would a nested field within two components, however\n * we only require the field on the component not the complete path since we query\n * individual components. Therefore we split the string and take the last item.\n */\n const [targetField] = name.split('.').slice(-1);\n\n searchForTrigger({\n model,\n targetField,\n params: {\n ...buildValidParams(query),\n id: id ?? '',\n pageSize: 10,\n idsToInclude: field.value?.disconnect?.map((rel) => rel.id.toString()) ?? [],\n idsToOmit: field.value?.connect?.map((rel) => rel.id.toString()) ?? [],\n ...searchParamsDebounced,\n },\n });\n }, [\n field.value?.connect,\n field.value?.disconnect,\n id,\n model,\n name,\n query,\n searchForTrigger,\n searchParamsDebounced,\n ]);\n\n const handleSearch = async (search: string) => {\n setSearchParams((s) => ({ ...s, _q: search, page: 1 }));\n };\n\n const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;\n\n const options = data?.results ?? [];\n\n const handleChange = (relationId?: string) => {\n if (!relationId) {\n return;\n }\n\n const relation = options.find((opt) => opt.id.toString() === relationId);\n\n if (!relation) {\n // This is very unlikely to happen, but it ensures we don't have any data for.\n console.error(\n \"You've tried to add a relation with an id that does not exist in the options you can see, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('relation.error-adding-relation'),\n defaultMessage: 'An error occurred while trying to add the relation.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n /**\n * You need to give this relation a correct _temp_key_ but\n * this component doesn't know about those ones, you can't rely\n * on the connect array because that doesn't hold items that haven't\n * moved. So use a callback to fill in the gaps when connecting.\n *\n */\n onChange(relation);\n };\n\n const handleLoadMore = () => {\n if (!data || !data.pagination) {\n return;\n } else if (data.pagination.page < data.pagination.pageCount) {\n setSearchParams((s) => ({ ...s, page: s.page + 1 }));\n }\n };\n\n React.useLayoutEffect(() => {\n setTextValue('');\n }, [field.value]);\n\n return (\n <Field.Root error={field.error} hint={hint} name={name} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <Combobox\n ref={fieldRef}\n name={name}\n autocomplete=\"list\"\n placeholder={\n placeholder ||\n formatMessage({\n id: getTranslation('relation.add'),\n defaultMessage: 'Add relation',\n })\n }\n hasMoreItems={hasNextPage}\n loading={isLoading}\n onOpenChange={() => {\n handleSearch(textValue ?? '');\n }}\n noOptionsMessage={() =>\n formatMessage({\n id: getTranslation('relation.notAvailable'),\n defaultMessage: 'No relations available',\n })\n }\n loadingMessage={formatMessage({\n id: getTranslation('relation.isLoading'),\n defaultMessage: 'Relations are loading',\n })}\n onLoadMore={handleLoadMore}\n textValue={textValue}\n onChange={handleChange}\n onTextValueChange={(text) => {\n setTextValue(text);\n }}\n onInputChange={(event) => {\n handleSearch(event.currentTarget.value);\n }}\n {...props}\n >\n {options.map((opt) => {\n const textValue = getRelationLabel(opt, mainField);\n\n return (\n <ComboboxOption key={opt.id} value={opt.id.toString()} textValue={textValue}>\n <Flex gap={2} justifyContent=\"space-between\">\n <Typography ellipsis>{textValue}</Typography>\n {opt.status ? <DocumentStatus status={opt.status} /> : null}\n </Flex>\n </ComboboxOption>\n );\n })}\n </Combobox>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationsList\n * -----------------------------------------------------------------------------------------------*/\nconst RELATION_ITEM_HEIGHT = 50;\nconst RELATION_GUTTER = 4;\n\ninterface RelationsListProps extends Pick<RelationsFieldProps, 'disabled' | 'name'> {\n data: Relation[];\n isLoading?: boolean;\n relationType: Schema.Attribute.RelationKind.Any;\n /**\n * The existing relations connected on the server. We need these to diff against.\n */\n serverData: RelationResult[];\n}\n\ninterface UnstableRelationsListProps extends Pick<RelationsFieldProps, 'disabled' | 'name'> {\n data: Relation[];\n isLoading?: boolean;\n relationType: Schema.Attribute.RelationKind.Any;\n /**\n * The existing relations connected on the server. We need these to diff against.\n */\n serverData: RelationResult[];\n targetModel: string;\n setCurrentDocument?: (newDocument: {\n documentId: string;\n model: string;\n collectionType: string;\n }) => void;\n}\n\nconst UnstableRelationsList = ({\n data,\n serverData,\n disabled,\n name,\n isLoading,\n relationType,\n targetModel,\n setCurrentDocument,\n}: UnstableRelationsListProps) => {\n const ariaDescriptionId = React.useId();\n const { formatMessage } = useIntl();\n const listRef = React.useRef<FixedSizeList>(null);\n const outerListRef = React.useRef<HTMLUListElement>(null);\n const [overflow, setOverflow] = React.useState<'top' | 'bottom' | 'top-bottom'>();\n const [liveText, setLiveText] = React.useState('');\n const field = useField(name);\n\n React.useEffect(() => {\n if (data.length <= RELATIONS_TO_DISPLAY) {\n return setOverflow(undefined);\n }\n\n const handleNativeScroll = (e: Event) => {\n const el = e.target as HTMLUListElement;\n const parentScrollContainerHeight = (el.parentNode as HTMLDivElement).scrollHeight;\n const maxScrollBottom = el.scrollHeight - el.scrollTop;\n\n if (el.scrollTop === 0) {\n return setOverflow('bottom');\n }\n\n if (maxScrollBottom === parentScrollContainerHeight) {\n return setOverflow('top');\n }\n\n return setOverflow('top-bottom');\n };\n\n const outerListRefCurrent = outerListRef?.current;\n\n if (!isLoading && data.length > 0 && outerListRefCurrent) {\n outerListRef.current.addEventListener('scroll', handleNativeScroll);\n }\n\n return () => {\n if (outerListRefCurrent) {\n outerListRefCurrent.removeEventListener('scroll', handleNativeScroll);\n }\n };\n }, [isLoading, data.length]);\n\n const getItemPos = (index: number) => `${index + 1} of ${data.length}`;\n\n const handleMoveItem: UseDragAndDropOptions['onMoveItem'] = (newIndex, oldIndex) => {\n const item = data[oldIndex];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: item.label ?? item.documentId,\n position: getItemPos(newIndex),\n }\n )\n );\n\n /**\n * Splicing mutates the array, so we need to create a new array\n */\n const newData = [...data];\n const currentRow = data[oldIndex];\n\n const startKey =\n oldIndex > newIndex ? newData[newIndex - 1]?.__temp_key__ : newData[newIndex]?.__temp_key__;\n const endKey =\n oldIndex > newIndex ? newData[newIndex]?.__temp_key__ : newData[newIndex + 1]?.__temp_key__;\n\n /**\n * We're moving the relation between two other relations, so\n * we need to generate a new key that keeps the order\n */\n const [newKey] = generateNKeysBetween(startKey, endKey, 1);\n\n newData.splice(oldIndex, 1);\n newData.splice(newIndex, 0, { ...currentRow, __temp_key__: newKey });\n\n /**\n * Now we diff against the server to understand what's different so we\n * can keep the connect array nice and tidy. It also needs reversing because\n * we reverse the relations from the server in the first place.\n */\n const connectedRelations = newData\n .reduce<Relation[]>((acc, relation, currentIndex, array) => {\n const relationOnServer = serverData.find((oldRelation) => oldRelation.id === relation.id);\n\n const relationInFront = array[currentIndex + 1];\n\n if (!relationOnServer || relationOnServer.__temp_key__ !== relation.__temp_key__) {\n const position = relationInFront\n ? {\n before: relationInFront.documentId,\n locale: relationInFront.locale,\n status:\n 'publishedAt' in relationInFront && relationInFront.publishedAt\n ? ('published' as Relation['status'])\n : ('draft' as Relation['status']),\n }\n : { end: true };\n\n const relationWithPosition: Relation = {\n ...relation,\n ...{\n apiData: {\n id: relation.id,\n documentId: relation.documentId,\n locale: relation.locale,\n position,\n },\n },\n };\n\n return [...acc, relationWithPosition];\n }\n\n return acc;\n }, [])\n .toReversed();\n\n field.onChange(`${name}.connect`, connectedRelations);\n };\n\n const handleGrabItem: UseDragAndDropOptions['onGrabItem'] = (index) => {\n const item = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: item.label ?? item.documentId,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem: UseDragAndDropOptions['onDropItem'] = (index) => {\n const { href: _href, label, ...item } = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: label ?? item.documentId,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleCancel: UseDragAndDropOptions['onCancel'] = (index) => {\n const item = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: item.label ?? item.documentId,\n }\n )\n );\n };\n\n const handleDisconnect = useHandleDisconnect(name, 'RelationsList');\n\n /**\n * These relation types will only ever have one item\n * in their list, so you can't reorder a single item!\n */\n const canReorder = !ONE_WAY_RELATIONS.includes(relationType);\n\n const dynamicListHeight =\n data.length > RELATIONS_TO_DISPLAY\n ? Math.min(data.length, RELATIONS_TO_DISPLAY) * (RELATION_ITEM_HEIGHT + RELATION_GUTTER) +\n RELATION_ITEM_HEIGHT / 2\n : Math.min(data.length, RELATIONS_TO_DISPLAY) * (RELATION_ITEM_HEIGHT + RELATION_GUTTER);\n\n return (\n <ShadowBox $overflowDirection={overflow}>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n {/* @ts-expect-error – width is expected, but we've not needed to pass it before. */}\n <FixedSizeList\n height={dynamicListHeight}\n ref={listRef}\n outerRef={outerListRef}\n itemCount={data.length}\n itemSize={RELATION_ITEM_HEIGHT + RELATION_GUTTER}\n itemData={{\n ariaDescribedBy: ariaDescriptionId,\n canDrag: canReorder,\n disabled,\n handleCancel,\n handleDropItem,\n handleGrabItem,\n handleMoveItem,\n name,\n handleDisconnect,\n relations: data,\n targetModel,\n setCurrentDocument,\n }}\n itemKey={(index) => data[index].id}\n innerElementType=\"ol\"\n >\n {UnstableListItem}\n </FixedSizeList>\n </ShadowBox>\n );\n};\n\nconst RelationsList = ({\n data,\n serverData,\n disabled,\n name,\n isLoading,\n relationType,\n}: RelationsListProps) => {\n const ariaDescriptionId = React.useId();\n const { formatMessage } = useIntl();\n const listRef = React.useRef<FixedSizeList>(null);\n const outerListRef = React.useRef<HTMLUListElement>(null);\n const [overflow, setOverflow] = React.useState<'top' | 'bottom' | 'top-bottom'>();\n const [liveText, setLiveText] = React.useState('');\n const field = useField(name);\n\n React.useEffect(() => {\n if (data.length <= RELATIONS_TO_DISPLAY) {\n return setOverflow(undefined);\n }\n\n const handleNativeScroll = (e: Event) => {\n const el = e.target as HTMLUListElement;\n const parentScrollContainerHeight = (el.parentNode as HTMLDivElement).scrollHeight;\n const maxScrollBottom = el.scrollHeight - el.scrollTop;\n\n if (el.scrollTop === 0) {\n return setOverflow('bottom');\n }\n\n if (maxScrollBottom === parentScrollContainerHeight) {\n return setOverflow('top');\n }\n\n return setOverflow('top-bottom');\n };\n\n const outerListRefCurrent = outerListRef?.current;\n\n if (!isLoading && data.length > 0 && outerListRefCurrent) {\n outerListRef.current.addEventListener('scroll', handleNativeScroll);\n }\n\n return () => {\n if (outerListRefCurrent) {\n outerListRefCurrent.removeEventListener('scroll', handleNativeScroll);\n }\n };\n }, [isLoading, data.length]);\n\n const getItemPos = (index: number) => `${index + 1} of ${data.length}`;\n\n const handleMoveItem: UseDragAndDropOptions['onMoveItem'] = (newIndex, oldIndex) => {\n const item = data[oldIndex];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: item.label ?? item.documentId,\n position: getItemPos(newIndex),\n }\n )\n );\n\n /**\n * Splicing mutates the array, so we need to create a new array\n */\n const newData = [...data];\n const currentRow = data[oldIndex];\n\n const startKey =\n oldIndex > newIndex ? newData[newIndex - 1]?.__temp_key__ : newData[newIndex]?.__temp_key__;\n const endKey =\n oldIndex > newIndex ? newData[newIndex]?.__temp_key__ : newData[newIndex + 1]?.__temp_key__;\n\n /**\n * We're moving the relation between two other relations, so\n * we need to generate a new key that keeps the order\n */\n const [newKey] = generateNKeysBetween(startKey, endKey, 1);\n\n newData.splice(oldIndex, 1);\n newData.splice(newIndex, 0, { ...currentRow, __temp_key__: newKey });\n\n /**\n * Now we diff against the server to understand what's different so we\n * can keep the connect array nice and tidy. It also needs reversing because\n * we reverse the relations from the server in the first place.\n */\n const connectedRelations = newData\n .reduce<Relation[]>((acc, relation, currentIndex, array) => {\n const relationOnServer = serverData.find((oldRelation) => oldRelation.id === relation.id);\n\n const relationInFront = array[currentIndex + 1];\n\n if (!relationOnServer || relationOnServer.__temp_key__ !== relation.__temp_key__) {\n const position = relationInFront\n ? {\n before: relationInFront.documentId,\n locale: relationInFront.locale,\n status:\n 'publishedAt' in relationInFront && relationInFront.publishedAt\n ? ('published' as Relation['status'])\n : ('draft' as Relation['status']),\n }\n : { end: true };\n\n const relationWithPosition: Relation = {\n ...relation,\n ...{\n apiData: {\n id: relation.id,\n documentId: relation.documentId,\n locale: relation.locale,\n position,\n },\n },\n };\n\n return [...acc, relationWithPosition];\n }\n\n return acc;\n }, [])\n .toReversed();\n\n field.onChange(`${name}.connect`, connectedRelations);\n };\n\n const handleGrabItem: UseDragAndDropOptions['onGrabItem'] = (index) => {\n const item = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: item.label ?? item.documentId,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem: UseDragAndDropOptions['onDropItem'] = (index) => {\n const { href: _href, label, ...item } = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: label ?? item.documentId,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleCancel: UseDragAndDropOptions['onCancel'] = (index) => {\n const item = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: item.label ?? item.documentId,\n }\n )\n );\n };\n\n const handleDisconnect = useHandleDisconnect(name, 'RelationsList');\n\n /**\n * These relation types will only ever have one item\n * in their list, so you can't reorder a single item!\n */\n const canReorder = !ONE_WAY_RELATIONS.includes(relationType);\n\n const dynamicListHeight =\n data.length > RELATIONS_TO_DISPLAY\n ? Math.min(data.length, RELATIONS_TO_DISPLAY) * (RELATION_ITEM_HEIGHT + RELATION_GUTTER) +\n RELATION_ITEM_HEIGHT / 2\n : Math.min(data.length, RELATIONS_TO_DISPLAY) * (RELATION_ITEM_HEIGHT + RELATION_GUTTER);\n\n return (\n <ShadowBox $overflowDirection={overflow}>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n {/* @ts-expect-error – width is expected, but we've not needed to pass it before. */}\n <FixedSizeList\n height={dynamicListHeight}\n ref={listRef}\n outerRef={outerListRef}\n itemCount={data.length}\n itemSize={RELATION_ITEM_HEIGHT + RELATION_GUTTER}\n itemData={{\n ariaDescribedBy: ariaDescriptionId,\n canDrag: canReorder,\n disabled,\n handleCancel,\n handleDropItem,\n handleGrabItem,\n handleMoveItem,\n name,\n handleDisconnect,\n relations: data,\n }}\n itemKey={(index) => data[index].id}\n innerElementType=\"ol\"\n >\n {ListItem}\n </FixedSizeList>\n </ShadowBox>\n );\n};\n\nconst ShadowBox = styled<BoxComponent>(Box)<{\n $overflowDirection?: 'top-bottom' | 'top' | 'bottom';\n}>`\n position: relative;\n overflow: hidden;\n flex: 1;\n\n &:before,\n &:after {\n position: absolute;\n width: 100%;\n height: 4px;\n z-index: 1;\n }\n\n &:before {\n /* TODO: as for DS Table component we would need this to be handled by the DS theme */\n content: '';\n background: linear-gradient(rgba(3, 3, 5, 0.2) 0%, rgba(0, 0, 0, 0) 100%);\n top: 0;\n opacity: ${({ $overflowDirection }) =>\n $overflowDirection === 'top-bottom' || $overflowDirection === 'top' ? 1 : 0};\n transition: opacity 0.2s ease-in-out;\n }\n\n &:after {\n /* TODO: as for DS Table component we would need this to be handled by the DS theme */\n content: '';\n background: linear-gradient(0deg, rgba(3, 3, 5, 0.2) 0%, rgba(0, 0, 0, 0) 100%);\n bottom: 0;\n opacity: ${({ $overflowDirection }) =>\n $overflowDirection === 'top-bottom' || $overflowDirection === 'bottom' ? 1 : 0};\n transition: opacity 0.2s ease-in-out;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ListItem\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ListItemProps extends Pick<ListChildComponentProps, 'style' | 'index'> {\n data: {\n ariaDescribedBy: string;\n canDrag?: boolean;\n disabled?: boolean;\n handleCancel: UseDragAndDropOptions['onCancel'];\n handleDropItem: UseDragAndDropOptions['onDropItem'];\n handleGrabItem: UseDragAndDropOptions['onGrabItem'];\n handleMoveItem: UseDragAndDropOptions['onMoveItem'];\n handleDisconnect: (relation: Relation) => void;\n name: string;\n relations: Relation[];\n targetModel: string;\n setCurrentDocument?: (newRelation: {\n documentId: string;\n model: string;\n collectionType: string;\n }) => void;\n };\n}\n\nconst CustomTextButton = styled(TextButton)`\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n }\n`;\n\nconst UnstableListItem = ({ data, index, style }: ListItemProps) => {\n const {\n ariaDescribedBy,\n canDrag = false,\n disabled = false,\n handleCancel,\n handleDisconnect,\n handleDropItem,\n handleGrabItem,\n handleMoveItem,\n name,\n relations,\n targetModel,\n setCurrentDocument,\n } = data;\n\n const { formatMessage } = useIntl();\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n\n const { id, label, status, documentId, href, apiData } = relations[index];\n\n const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop<number, Omit<RelationDragPreviewProps, 'width'>, HTMLDivElement>(\n canDrag && !disabled,\n {\n type: `${ItemTypes.RELATION}_${name}`,\n index,\n item: {\n displayedValue: label,\n status,\n id: id,\n index,\n },\n onMoveItem: handleMoveItem,\n onDropItem: handleDropItem,\n onGrabItem: handleGrabItem,\n onCancel: handleCancel,\n dropSensitivity: DROP_SENSITIVITY.REGULAR,\n }\n );\n\n const composedRefs = useComposedRefs<HTMLDivElement>(relationRef, dragRef);\n\n const handleChangeModalContent = () => {\n if (setCurrentDocument) {\n const newRelation = {\n documentId: documentId ? documentId : apiData?.documentId || '',\n model: targetModel,\n collectionType: getCollectionType(href)!,\n };\n setCurrentDocument(newRelation);\n }\n };\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage());\n }, [dragPreviewRef]);\n\n return (\n <Box\n style={style}\n tag=\"li\"\n ref={dropRef}\n aria-describedby={ariaDescribedBy}\n cursor={canDrag ? 'all-scroll' : 'default'}\n >\n {isDragging ? (\n <RelationItemPlaceholder />\n ) : (\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={canDrag ? 2 : 4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background={disabled ? 'neutral150' : 'neutral0'}\n justifyContent=\"space-between\"\n ref={composedRefs}\n data-handler-id={handlerId}\n >\n <FlexWrapper gap={1}>\n {canDrag ? (\n <IconButton\n tag=\"div\"\n role=\"button\"\n tabIndex={0}\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.RelationInput.icon-button-aria-label'),\n defaultMessage: 'Drag',\n })}\n variant=\"ghost\"\n onKeyDown={handleKeyDown}\n disabled={disabled}\n >\n <Drag />\n </IconButton>\n ) : null}\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip description={label}>\n {/* eslint-disable-next-line no-console */}\n {isModalOpen ? (\n <CustomTextButton onClick={handleChangeModalContent}>{label}</CustomTextButton>\n ) : (\n <CustomTextButton\n onClick={() => {\n setIsModalOpen(true);\n handleChangeModalContent();\n }}\n >\n {label}\n </CustomTextButton>\n )}\n </Tooltip>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n {isModalOpen && (\n <RelationModal\n open={isModalOpen}\n onToggle={() => {\n setIsModalOpen(!isModalOpen);\n }}\n model={targetModel}\n id={documentId ? documentId : apiData?.documentId}\n relationUrl={href}\n />\n )}\n </Flex>\n </FlexWrapper>\n <Box paddingLeft={4}>\n <IconButton\n onClick={() => handleDisconnect(relations[index])}\n disabled={disabled}\n label={formatMessage({\n id: getTranslation('relation.disconnect'),\n defaultMessage: 'Remove',\n })}\n variant=\"ghost\"\n size=\"S\"\n >\n <Cross />\n </IconButton>\n </Box>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst ListItem = ({ data, index, style }: ListItemProps) => {\n const {\n ariaDescribedBy,\n canDrag = false,\n disabled = false,\n handleCancel,\n handleDisconnect,\n handleDropItem,\n handleGrabItem,\n handleMoveItem,\n name,\n relations,\n } = data;\n const { formatMessage } = useIntl();\n\n const { href, id, label, status } = relations[index];\n\n const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop<number, Omit<RelationDragPreviewProps, 'width'>, HTMLDivElement>(\n canDrag && !disabled,\n {\n type: `${ItemTypes.RELATION}_${name}`,\n index,\n item: {\n displayedValue: label,\n status,\n id: id,\n index,\n },\n onMoveItem: handleMoveItem,\n onDropItem: handleDropItem,\n onGrabItem: handleGrabItem,\n onCancel: handleCancel,\n dropSensitivity: DROP_SENSITIVITY.REGULAR,\n }\n );\n\n const composedRefs = useComposedRefs<HTMLDivElement>(relationRef, dragRef);\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage());\n }, [dragPreviewRef]);\n\n return (\n <Box\n style={style}\n tag=\"li\"\n ref={dropRef}\n aria-describedby={ariaDescribedBy}\n cursor={canDrag ? 'all-scroll' : 'default'}\n >\n {isDragging ? (\n <RelationItemPlaceholder />\n ) : (\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={canDrag ? 2 : 4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background={disabled ? 'neutral150' : 'neutral0'}\n justifyContent=\"space-between\"\n ref={composedRefs}\n data-handler-id={handlerId}\n >\n <FlexWrapper gap={1}>\n {canDrag ? (\n <IconButton\n tag=\"div\"\n role=\"button\"\n tabIndex={0}\n withTooltip={false}\n label={formatMessage({\n id: getTranslation('components.RelationInput.icon-button-aria-label'),\n defaultMessage: 'Drag',\n })}\n variant=\"ghost\"\n onKeyDown={handleKeyDown}\n disabled={disabled}\n >\n <Drag />\n </IconButton>\n ) : null}\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip description={label}>\n {href ? (\n <LinkEllipsis tag={NavLink} to={href} isExternal={false}>\n {label}\n </LinkEllipsis>\n ) : (\n <Typography textColor={disabled ? 'neutral600' : 'primary600'} ellipsis>\n {label}\n </Typography>\n )}\n </Tooltip>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <Box paddingLeft={4}>\n <IconButton\n onClick={() => handleDisconnect(relations[index])}\n disabled={disabled}\n label={formatMessage({\n id: getTranslation('relation.disconnect'),\n defaultMessage: 'Remove',\n })}\n variant=\"ghost\"\n size=\"S\"\n >\n <Cross />\n </IconButton>\n </Box>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst FlexWrapper = styled<FlexComponent>(Flex)`\n width: 100%;\n /* Used to prevent endAction to be pushed out of container */\n min-width: 0;\n\n & > div[role='button'] {\n cursor: all-scroll;\n }\n`;\n\nconst DisconnectButton = styled.button`\n svg path {\n fill: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral600 : theme.colors.neutral500};\n }\n\n &:hover svg path,\n &:focus svg path {\n fill: ${({ theme, disabled }) => !disabled && theme.colors.neutral600};\n }\n`;\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst RelationItemPlaceholder = () => (\n <Box\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n background=\"primary100\"\n height={`calc(100% - ${RELATION_GUTTER}px)`}\n />\n);\n\nconst MemoizedRelationsField = React.memo(RelationsField);\nconst MemoizedUnstableRelationsField = React.memo(UnstableRelationsField);\n\nexport {\n MemoizedRelationsField as RelationsInput,\n MemoizedUnstableRelationsField as UnstableRelationsInput,\n FlexWrapper,\n DisconnectButton,\n LinkEllipsis,\n};\nexport type { RelationsFieldProps };\n","/**\n * Related to the InputUID component, not the UIDs of content-types.\n */\n\nimport { GenerateUID, CheckUIDAvailability } from '../../../shared/contracts/uid';\n\nimport { contentManagerApi } from './api';\n\nconst uidApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getDefaultUID: builder.query<\n GenerateUID.Response['data'],\n GenerateUID.Request['body'] & {\n params: GenerateUID.Request['query'];\n }\n >({\n query: ({ params, ...data }) => {\n return {\n url: '/content-manager/uid/generate',\n method: 'POST',\n data,\n config: {\n params,\n },\n };\n },\n transformResponse: (response: GenerateUID.Response) => response.data,\n }),\n generateUID: builder.mutation<\n GenerateUID.Response['data'],\n GenerateUID.Request['body'] & {\n params: GenerateUID.Request['query'];\n }\n >({\n query: ({ params, ...data }) => ({\n url: '/content-manager/uid/generate',\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n transformResponse: (response: GenerateUID.Response) => response.data,\n }),\n getAvailability: builder.query<\n CheckUIDAvailability.Response,\n CheckUIDAvailability.Request['body'] & {\n params: CheckUIDAvailability.Request['query'];\n }\n >({\n query: ({ params, ...data }) => ({\n url: '/content-manager/uid/check-availability',\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n providesTags: (_res, _error, params) => [\n { type: 'UidAvailability', id: params.contentTypeUID },\n ],\n }),\n }),\n});\n\nconst { useGenerateUIDMutation, useGetDefaultUIDQuery, useGetAvailabilityQuery } = uidApi;\n\nexport { useGenerateUIDMutation, useGetDefaultUIDQuery, useGetAvailabilityQuery };\n","import * as React from 'react';\n\nimport {\n type InputProps,\n useField,\n useForm,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n useFocusInputField,\n} from '@strapi/admin/strapi-admin';\nimport {\n Field,\n Flex,\n FlexComponent,\n TextInput,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { CheckCircle, WarningCircle, Loader, ArrowClockwise } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\nimport { styled, keyframes } from 'styled-components';\n\nimport { useDebounce } from '../../../../hooks/useDebounce';\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../../router';\nimport {\n useGenerateUIDMutation,\n useGetAvailabilityQuery,\n useGetDefaultUIDQuery,\n} from '../../../../services/uid';\nimport { buildValidParams } from '../../../../utils/api';\n\nimport type { CheckUIDAvailability } from '../../../../../../shared/contracts/uid';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * InputUID\n * -----------------------------------------------------------------------------------------------*/\n\nconst UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\n\ninterface UIDInputProps extends Omit<InputProps, 'type'> {\n type: Schema.Attribute.TypeOf<Schema.Attribute.UID>;\n}\n\nconst UIDInput = React.forwardRef<any, UIDInputProps>(\n ({ hint, label, labelAction, name, required, ...props }, ref) => {\n const { model, id } = useDoc();\n const allFormValues = useForm('InputUID', (form) => form.values);\n const [availability, setAvailability] = React.useState<CheckUIDAvailability.Response>();\n const [showRegenerate, setShowRegenerate] = React.useState(false);\n const isCloning = useMatch(CLONE_PATH) !== null;\n const field = useField(name);\n const debouncedValue = useDebounce(field.value, 300);\n const hasChanged = debouncedValue !== field.initialValue;\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const {\n data: defaultGeneratedUID,\n isLoading: isGeneratingDefaultUID,\n error: apiError,\n } = useGetDefaultUIDQuery(\n {\n contentTypeUID: model,\n field: name,\n data: {\n id: id ?? '',\n ...allFormValues,\n },\n params,\n },\n {\n skip: field.value || !required,\n }\n );\n\n React.useEffect(() => {\n if (apiError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(apiError),\n });\n }\n }, [apiError, formatAPIError, toggleNotification]);\n\n /**\n * If the defaultGeneratedUID is available, then we set it as the value,\n * but we also want to set it as the initialValue too.\n */\n React.useEffect(() => {\n if (defaultGeneratedUID && field.value === undefined) {\n field.onChange(name, defaultGeneratedUID);\n }\n }, [defaultGeneratedUID, field, name]);\n\n const [generateUID, { isLoading: isGeneratingUID }] = useGenerateUIDMutation();\n\n const handleRegenerateClick = async () => {\n try {\n const res = await generateUID({\n contentTypeUID: model,\n field: name,\n data: { id: id ?? '', ...allFormValues },\n params,\n });\n\n if ('data' in res) {\n field.onChange(name, res.data);\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred.',\n }),\n });\n }\n };\n\n const {\n data: availabilityData,\n isLoading: isCheckingAvailability,\n error: availabilityError,\n } = useGetAvailabilityQuery(\n {\n contentTypeUID: model,\n field: name,\n value: debouncedValue ? debouncedValue.trim() : '',\n params,\n },\n {\n // Don't check availability if the value is empty or wasn't changed\n skip: !Boolean(\n (hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())\n ),\n }\n );\n\n React.useEffect(() => {\n if (availabilityError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(availabilityError),\n });\n }\n }, [availabilityError, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n /**\n * always store the data in state because that way as seen below\n * we can then remove the data to stop showing the label.\n */\n setAvailability(availabilityData);\n\n let timer: number;\n\n if (availabilityData?.isAvailable) {\n timer = window.setTimeout(() => {\n setAvailability(undefined);\n }, 4000);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }, [availabilityData]);\n\n const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;\n\n const fieldRef = useFocusInputField(name);\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const shouldShowAvailability =\n (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;\n\n return (\n <Field.Root hint={hint} name={name} error={field.error} required={required}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <TextInput\n ref={composedRefs}\n disabled={props.disabled}\n endAction={\n <Flex position=\"relative\" gap={1}>\n {shouldShowAvailability && (\n <TextValidation\n alignItems=\"center\"\n gap={1}\n justifyContent=\"flex-end\"\n $available={!!availability?.isAvailable}\n data-not-here-outer\n position=\"absolute\"\n pointerEvents=\"none\"\n right={6}\n width=\"100px\"\n >\n {availability?.isAvailable ? <CheckCircle /> : <WarningCircle />}\n\n <Typography\n textColor={availability.isAvailable ? 'success600' : 'danger600'}\n variant=\"pi\"\n >\n {formatMessage(\n availability.isAvailable\n ? {\n id: 'content-manager.components.uid.available',\n defaultMessage: 'Available',\n }\n : {\n id: 'content-manager.components.uid.unavailable',\n defaultMessage: 'Unavailable',\n }\n )}\n </Typography>\n </TextValidation>\n )}\n\n {!props.disabled && (\n <>\n {showRegenerate && (\n <TextValidation alignItems=\"center\" justifyContent=\"flex-end\" gap={1}>\n <Typography textColor=\"primary600\" variant=\"pi\">\n {formatMessage({\n id: 'content-manager.components.uid.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Typography>\n </TextValidation>\n )}\n\n <FieldActionWrapper\n onClick={handleRegenerateClick}\n label={formatMessage({\n id: 'content-manager.components.uid.regenerate',\n defaultMessage: 'Regenerate',\n })}\n onMouseEnter={() => setShowRegenerate(true)}\n onMouseLeave={() => setShowRegenerate(false)}\n >\n {isLoading ? (\n <LoadingWrapper data-testid=\"loading-wrapper\">\n <Loader />\n </LoadingWrapper>\n ) : (\n <ArrowClockwise />\n )}\n </FieldActionWrapper>\n </>\n )}\n </Flex>\n }\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * FieldActionWrapper\n * -----------------------------------------------------------------------------------------------*/\n\nconst FieldActionWrapper = styled(Field.Action)`\n width: 1.6rem;\n\n svg {\n height: 1.6rem;\n width: 1.6rem;\n path {\n fill: ${({ theme }) => theme.colors.neutral400};\n }\n }\n\n svg:hover {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TextValidation\n * -----------------------------------------------------------------------------------------------*/\n\nconst TextValidation = styled<FlexComponent>(Flex)<{ $available?: boolean }>`\n svg {\n height: 1.2rem;\n width: 1.2rem;\n\n path {\n fill: ${({ theme, $available }) =>\n $available ? theme.colors.success600 : theme.colors.danger600};\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingWrapper\n * -----------------------------------------------------------------------------------------------*/\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n`;\n\nconst LoadingWrapper = styled<FlexComponent>(Flex)`\n animation: ${rotation} 2s infinite linear;\n`;\n\nconst MemoizedUIDInput = React.memo(UIDInput);\n\nexport { MemoizedUIDInput as UIDInput };\nexport type { UIDInputProps };\n","import { getLanguage, highlight, highlightAuto } from 'highlight.js';\nimport Markdown from 'markdown-it';\n// @ts-expect-error - library does not export types\nimport abbr from 'markdown-it-abbr';\nimport container from 'markdown-it-container';\n// @ts-expect-error - library does not export types\nimport deflist from 'markdown-it-deflist';\nimport emoji from 'markdown-it-emoji';\nimport footnote from 'markdown-it-footnote';\n// @ts-expect-error - library does not export types\nimport ins from 'markdown-it-ins';\n// @ts-expect-error - library does not export types\nimport mark from 'markdown-it-mark';\n// @ts-expect-error - library does not export types\nimport sub from 'markdown-it-sub';\n// @ts-expect-error - library does not export types\nimport sup from 'markdown-it-sup';\n\nimport 'highlight.js/styles/solarized-dark.css';\n\nconst md: Markdown = new Markdown({\n html: true, // Enable HTML tags in source\n xhtmlOut: false,\n breaks: true,\n langPrefix: 'language-',\n linkify: true,\n typographer: true,\n // Code from: https://github.com/markdown-it/markdown-it/blob/master/support/demo_template/index.js#L83\n highlight(str, lang) {\n if (lang && lang !== 'auto' && getLanguage(lang)) {\n return (\n '<pre class=\"hljs language-' +\n md.utils.escapeHtml(lang.toLowerCase()) +\n '\"><code>' +\n highlight(lang, str, true).value +\n '</code></pre>'\n );\n }\n\n if (lang === 'auto') {\n const result = highlightAuto(str);\n\n return (\n '<pre class=\"hljs language-' +\n md.utils.escapeHtml(result.language!) +\n '\"><code>' +\n result.value +\n '</code></pre>'\n );\n }\n\n return '<pre class=\"hljs\"><code>' + md.utils.escapeHtml(str) + '</code></pre>';\n },\n})\n .use(abbr)\n .use(container, 'warning')\n .use(container, 'tip')\n .use(deflist)\n .use(emoji)\n .use(footnote)\n .use(ins)\n .use(mark)\n .use(sub)\n .use(sup);\n\n// Code from: https://github.com/markdown-it/markdown-it-footnote/blob/master/index.js#L29\nmd.renderer.rules.footnote_ref = (tokens, idx, options, env, slf) => {\n const caption = slf.rules.footnote_caption?.(tokens, idx, options, env, slf);\n\n return '<sup class=\"footnote-ref\"><span>' + caption + '</span></sup>';\n};\n\nmd.renderer.rules.footnote_anchor = () => {\n /* ↩ with escape code to prevent display as Apple Emoji on iOS */\n return ' <span class=\"footnote-backref\">\\u21a9\\uFE0E</span>';\n};\n\nexport { md };\n","import * as React from 'react';\n\nimport sanitizeHtml from 'sanitize-html';\nimport { styled } from 'styled-components';\n\nimport { md } from './utils/mdRenderer';\n\ninterface PreviewWysiwygProps {\n data?: string;\n}\n\nconst PreviewWysiwyg = ({ data = '' }: PreviewWysiwygProps) => {\n const html = React.useMemo(\n () =>\n sanitizeHtml(md.render(data.replaceAll('\\\\n', '\\n') || ''), {\n ...sanitizeHtml.defaults,\n allowedTags: false,\n allowedAttributes: {\n '*': ['href', 'align', 'alt', 'center', 'width', 'height', 'type', 'controls', 'target'],\n img: ['src', 'alt'],\n source: ['src', 'type'],\n },\n }),\n [data]\n );\n\n return (\n <Wrapper>\n <div dangerouslySetInnerHTML={{ __html: html }} />\n </Wrapper>\n );\n};\n\nconst Wrapper = styled.div`\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};\n font-size: 1.4rem;\n background-color: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral800};\n line-height: ${({ theme }) => theme.lineHeights[6]};\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-block-start: ${({ theme }) => theme.spaces[2]};\n margin-block-end: ${({ theme }) => theme.spaces[2]};\n }\n\n p {\n margin-bottom: ${({ theme }) => theme.spaces[2]};\n }\n\n h1 {\n font-size: 3.6rem;\n font-weight: 600;\n }\n\n h2 {\n font-size: 3rem;\n font-weight: 500;\n }\n\n h3 {\n font-size: 2.4rem;\n font-weight: 500;\n }\n\n h4 {\n font-size: 2rem;\n font-weight: 500;\n }\n\n strong {\n font-weight: 800;\n }\n\n em {\n font-style: italic;\n }\n\n blockquote {\n margin-top: ${({ theme }) => theme.spaces[8]};\n margin-bottom: ${({ theme }) => theme.spaces[7]};\n font-size: 1.4rem;\n font-weight: 400;\n border-left: 4px solid ${({ theme }) => theme.colors.neutral150};\n font-style: italic;\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[5]};\n }\n\n img {\n max-width: 100%;\n }\n\n table {\n thead {\n background: ${({ theme }) => theme.colors.neutral150};\n\n th {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n }\n tr {\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n }\n th,\n td {\n padding: ${({ theme }) => theme.spaces[4]};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-bottom: 0;\n border-top: 0;\n }\n }\n\n pre,\n code {\n font-size: 1.4rem;\n border-radius: 4px;\n /* \n Hard coded since the color is the same between themes,\n theme.colors.neutral800 changes between themes.\n\n Matches the color of the JSON Input component.\n */\n background-color: #32324d;\n max-width: 100%;\n overflow: auto;\n padding: ${({ theme }) => theme.spaces[2]};\n }\n\n /* Inline code */\n p,\n pre,\n td {\n > code {\n color: #839496;\n }\n }\n\n ol {\n list-style-type: decimal;\n margin-block-start: ${({ theme }) => theme.spaces[4]};\n margin-block-end: ${({ theme }) => theme.spaces[4]};\n margin-inline-start: 0px;\n margin-inline-end: 0px;\n padding-inline-start: ${({ theme }) => theme.spaces[4]};\n\n ol,\n ul {\n margin-block-start: 0px;\n margin-block-end: 0px;\n }\n }\n\n ul {\n list-style-type: disc;\n margin-block-start: ${({ theme }) => theme.spaces[4]};\n margin-block-end: ${({ theme }) => theme.spaces[4]};\n margin-inline-start: 0px;\n margin-inline-end: 0px;\n padding-inline-start: ${({ theme }) => theme.spaces[4]};\n\n ul,\n ol {\n margin-block-start: 0px;\n margin-block-end: 0px;\n }\n }\n`;\n\nexport { PreviewWysiwyg };\n","import CodeMirror from 'codemirror5';\n\n// Disabling eslint on purpose\n/* eslint-disable */\n\nvar listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/,\n emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n unorderedListRE = /[*+-]\\s/;\n\n/*\n functions coming from CodeMirror addons continuelist.js\n ===> https://github.com/codemirror/CodeMirror/blob/master/addon/edit/continuelist.js\n\n we imported it because the way the addon ask to use markdown mode\n since we have our own markdown preview system we couldn't use it directly\n only thing we changed is removing the part that enabled addon only with markdown mode\n*/\n\nfunction newlineAndIndentContinueMarkdownList(cm: CodeMirror.Editor) {\n // @ts-expect-error - cm does not recognize disableInput.\n if (cm.getOption('disableInput')) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n\n var eolState = cm.getStateAfter(pos.line);\n var inList = eolState.list !== false;\n var inQuote = eolState.quote !== 0;\n\n var line = cm.getLine(pos.line),\n match = listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n if (!ranges[i].empty() || (!inList && !inQuote) || !match || cursorBeforeBullet) {\n cm.execCommand('newlineAndIndent');\n return;\n }\n if (emptyListRE.test(line)) {\n var endOfQuote = inQuote && />\\s*$/.test(line);\n var endOfList = !/>\\s*$/.test(line);\n if (endOfQuote || endOfList)\n cm.replaceRange(\n '',\n {\n line: pos.line,\n ch: 0,\n },\n {\n line: pos.line,\n ch: pos.ch + 1,\n }\n );\n replacements[i] = '\\n';\n } else {\n var indent = match[1],\n after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf('>') >= 0);\n var bullet = numbered ? parseInt(match[3], 10) + 1 + match[4] : match[2].replace('x', ' ');\n replacements[i] = '\\n' + indent + bullet + after;\n\n if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n\n cm.replaceSelections(replacements);\n}\n\nfunction incrementRemainingMarkdownListNumbers(cm: CodeMirror.Editor, pos: CodeMirror.Position) {\n var startLine = pos.line,\n lookAhead = 0,\n skipCount = 0;\n var startItem = listRE.exec(cm.getLine(startLine)),\n startIndent = startItem![1];\n\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber);\n var nextItem = listRE.exec(nextLine);\n\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = parseInt(startItem![3], 10) + lookAhead - skipCount;\n var nextNumber = parseInt(nextItem[3], 10),\n itemNumber = nextNumber;\n\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n if (newNumber > nextNumber) itemNumber = newNumber + 1;\n cm.replaceRange(\n nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n {\n line: nextLineNumber,\n ch: 0,\n },\n {\n line: nextLineNumber,\n ch: nextLine.length,\n }\n );\n } else {\n if (startIndent.length > nextIndent.length) return;\n // This doesn't run if the next line immediately indents, as it is\n // not clear of the users intention (new indented item or same level)\n if (startIndent.length < nextIndent.length && lookAhead === 1) return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n}\n\nexport { newlineAndIndentContinueMarkdownList };\n","import * as React from 'react';\n\nimport CodeMirror, { EditorFromTextArea } from 'codemirror5';\nimport { styled } from 'styled-components';\n\nimport { PreviewWysiwyg } from './PreviewWysiwyg';\nimport { newlineAndIndentContinueMarkdownList } from './utils/continueList';\n\nimport type { FieldValue, InputProps } from '@strapi/admin/strapi-admin';\n\nimport 'codemirror5/addon/display/placeholder';\n\ninterface EditorApi {\n focus: () => void;\n scrollIntoView: (args?: Parameters<HTMLElement['scrollIntoView']>[0]) => void;\n}\n\ninterface EditorProps extends Omit<FieldValue, 'initialValue'>, Omit<InputProps, 'type' | 'label'> {\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isPreviewMode?: boolean;\n isExpandMode?: boolean;\n textareaRef: React.RefObject<HTMLTextAreaElement>;\n}\n\nconst Editor = React.forwardRef<EditorApi, EditorProps>(\n (\n {\n disabled,\n editorRef,\n error,\n isPreviewMode,\n isExpandMode,\n name,\n onChange,\n placeholder,\n textareaRef,\n value,\n },\n forwardedRef\n ) => {\n const onChangeRef = React.useRef(onChange);\n\n React.useEffect(() => {\n if (editorRef.current) {\n // Ensure the editor and its wrapper are cleaned up whenever this view is re-rendered\n // e.g. in case of re-ordering wysiwyg components in a DynamicZone\n editorRef.current.toTextArea();\n }\n editorRef.current = CodeMirror.fromTextArea(textareaRef.current!, {\n lineWrapping: true,\n extraKeys: {\n Enter: 'newlineAndIndentContinueMarkdownList',\n Tab: false,\n 'Shift-Tab': false,\n },\n readOnly: false,\n smartIndent: false,\n placeholder,\n spellcheck: true,\n inputStyle: 'contenteditable',\n });\n\n // @ts-expect-error – doesn't think command exists?\n CodeMirror.commands.newlineAndIndentContinueMarkdownList =\n newlineAndIndentContinueMarkdownList;\n editorRef.current.on('change', (doc) => {\n onChangeRef.current(name, doc.getValue());\n });\n }, [editorRef, textareaRef, name, placeholder]);\n\n React.useEffect(() => {\n if (value && !editorRef.current.hasFocus()) {\n editorRef.current.setValue(value);\n }\n }, [editorRef, value]);\n\n React.useEffect(() => {\n if (isPreviewMode || disabled) {\n editorRef.current.setOption('readOnly', 'nocursor');\n } else {\n editorRef.current.setOption('readOnly', false);\n }\n }, [disabled, isPreviewMode, editorRef]);\n\n React.useEffect(() => {\n if (error) {\n editorRef.current.setOption('screenReaderLabel', error);\n } else {\n // to replace with translation\n editorRef.current.setOption('screenReaderLabel', 'Editor');\n }\n }, [editorRef, error]);\n\n React.useImperativeHandle(\n forwardedRef,\n () => ({\n focus() {\n editorRef.current.getInputField().focus();\n },\n scrollIntoView(args?: Parameters<HTMLElement['scrollIntoView']>[0]) {\n editorRef.current.getInputField().scrollIntoView(args);\n },\n }),\n [editorRef]\n );\n\n return (\n <EditorAndPreviewWrapper>\n <EditorStylesContainer $isExpandMode={isExpandMode} $disabled={disabled || isPreviewMode}>\n <textarea ref={textareaRef} />\n </EditorStylesContainer>\n {isPreviewMode && <PreviewWysiwyg data={value} />}\n </EditorAndPreviewWrapper>\n );\n }\n);\n\nconst EditorAndPreviewWrapper = styled.div`\n position: relative;\n height: calc(100% - 48px);\n`;\n\nconst EditorStylesContainer = styled.div<{ $disabled?: boolean; $isExpandMode?: boolean }>`\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed !important' : 'auto')};\n height: 100%;\n /* BASICS */\n .CodeMirror-placeholder {\n color: ${({ theme }) => theme.colors.neutral600} !important;\n }\n\n .CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-size: 1.4rem;\n height: ${({ $isExpandMode }) =>\n $isExpandMode\n ? '100%'\n : '410px'}; // 512px(total height) - 48px (header) - 52px(footer) - 2px border\n color: ${({ theme }) => theme.colors.neutral800};\n direction: ltr;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,\n 'Open Sans', 'Helvetica Neue', sans-serif;\n }\n\n /* PADDING */\n\n .CodeMirror-lines {\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};\n /* Vertical padding around content */\n }\n\n .CodeMirror-scrollbar-filler,\n .CodeMirror-gutter-filler {\n /* The little square between H and V scrollbars */\n background-color: ${({ theme }) => `${theme.colors.neutral0}`};\n }\n\n /* GUTTER */\n\n .CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n }\n .CodeMirror-linenumbers {\n }\n .CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n }\n\n .CodeMirror-guttermarker {\n color: black;\n }\n .CodeMirror-guttermarker-subtle {\n color: #999;\n }\n\n /* CURSOR */\n\n .CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n }\n /* Shown when moving in bi-directional text */\n .CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n }\n .cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n }\n .cm-fat-cursor div.CodeMirror-cursors {\n /* z-index: 1; */\n }\n\n .cm-fat-cursor-mark {\n background-color: rgba(20, 255, 20, 0.5);\n -webkit-animation: blink 1.06s steps(1) infinite;\n -moz-animation: blink 1.06s steps(1) infinite;\n animation: blink 1.06s steps(1) infinite;\n }\n .cm-animate-fat-cursor {\n width: auto;\n border: 0;\n -webkit-animation: blink 1.06s steps(1) infinite;\n -moz-animation: blink 1.06s steps(1) infinite;\n animation: blink 1.06s steps(1) infinite;\n background-color: #7e7;\n }\n\n /* Can style cursor different in overwrite (non-insert) mode */\n .CodeMirror-overwrite .CodeMirror-cursor {\n }\n\n .cm-tab {\n display: inline-block;\n text-decoration: inherit;\n }\n\n .CodeMirror-rulers {\n position: absolute;\n left: 0;\n right: 0;\n top: -50px;\n bottom: 0;\n overflow: hidden;\n }\n .CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0;\n bottom: 0;\n position: absolute;\n }\n\n /* DEFAULT THEME */\n\n .cm-header,\n .cm-strong {\n font-weight: bold;\n }\n .cm-em {\n font-style: italic;\n }\n .cm-link {\n text-decoration: underline;\n }\n .cm-strikethrough {\n text-decoration: line-through;\n }\n\n .CodeMirror-composing {\n border-bottom: 2px solid;\n }\n\n /* Default styles for common addons */\n\n div.CodeMirror span.CodeMirror-matchingbracket {\n color: #0b0;\n }\n div.CodeMirror span.CodeMirror-nonmatchingbracket {\n color: #a22;\n }\n .CodeMirror-matchingtag {\n background: rgba(255, 150, 0, 0.3);\n }\n .CodeMirror-activeline-background {\n background: #e8f2ff;\n }\n\n /* STOP */\n\n /* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n .CodeMirror {\n position: relative;\n overflow: hidden;\n background: ${({ theme }) => `${theme.colors.neutral0}`};\n }\n\n .CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 50px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -50px;\n margin-right: -50px;\n padding-bottom: 50px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n }\n .CodeMirror-sizer {\n position: relative;\n border-right: 50px solid transparent;\n }\n\n /* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n .CodeMirror-vscrollbar,\n .CodeMirror-hscrollbar,\n .CodeMirror-scrollbar-filler,\n .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 1;\n display: none;\n outline: none;\n }\n\n .CodeMirror-vscrollbar {\n right: 0;\n top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n }\n .CodeMirror-hscrollbar {\n bottom: 0;\n left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n }\n .CodeMirror-scrollbar-filler {\n right: 0;\n bottom: 0;\n }\n\n .CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n }\n /* Reset some styles that the rest of the page might have set */\n .CodeMirror pre.CodeMirror-line,\n .CodeMirror pre.CodeMirror-line-like {\n -moz-border-radius: 0;\n -webkit-border-radius: 0;\n border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: 1.5;\n color: inherit;\n /* z-index: 2; */\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n }\n\n .CodeMirror pre.CodeMirror-line-like {\n z-index: 2;\n }\n\n .CodeMirror-wrap pre.CodeMirror-line,\n .CodeMirror-wrap pre.CodeMirror-line-like {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n }\n\n .CodeMirror-linebackground {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: 0;\n }\n\n .CodeMirror-linewidget {\n position: relative;\n /* z-index: 2; */\n padding: 0.1px; /* Force widget margins to stay inside of the container */\n }\n\n .CodeMirror-widget {\n }\n\n .CodeMirror-rtl pre {\n direction: rtl;\n }\n\n .CodeMirror-code {\n outline: none;\n }\n\n /* Force content-box sizing for the elements where we expect it */\n .CodeMirror-scroll,\n .CodeMirror-sizer,\n .CodeMirror-gutter,\n .CodeMirror-gutters,\n .CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n }\n\n .CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n }\n\n .CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n border-color: ${({ theme }) => `${theme.colors.neutral800}`};\n }\n .CodeMirror-measure pre {\n position: static;\n }\n\n div.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n + div {\n z-index: 0 !important;\n }\n }\n\n div.CodeMirror-dragcursors {\n visibility: visible;\n }\n\n .CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n }\n\n .CodeMirror-selected {\n background: ${({ theme }) => theme.colors.neutral200};\n /* z-index: -10; */\n }\n .CodeMirror-crosshair {\n cursor: crosshair;\n }\n\n /* Used to force a border model for a node */\n .cm-force-border {\n padding-right: 0.1px;\n }\n\n /* See issue #2901 */\n .cm-tab-wrap-hack:after {\n content: '';\n }\n\n /* Help users use markselection to safely style text background */\n span.CodeMirror-selectedtext {\n background: none;\n }\n\n span {\n color: ${({ theme }) => theme.colors.neutral800} !important;\n }\n`;\n\nexport { Editor };\nexport type { EditorProps, EditorApi };\n","import * as React from 'react';\n\nimport {\n Button,\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n FocusTrap,\n Portal,\n Typography,\n} from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { PreviewWysiwyg } from './PreviewWysiwyg';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n isExpandMode: boolean;\n error?: string;\n previewContent?: string;\n onCollapse: () => void;\n}\n\nconst EditorLayout = ({\n children,\n isExpandMode,\n error,\n previewContent = '',\n onCollapse,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n\n React.useEffect(() => {\n if (isExpandMode) {\n document.body.classList.add('lock-body-scroll');\n }\n\n return () => {\n document.body.classList.remove('lock-body-scroll');\n };\n }, [isExpandMode]);\n\n if (isExpandMode) {\n return (\n <Portal role=\"dialog\" aria-modal={false}>\n <FocusTrap onEscape={onCollapse}>\n <ExpandWrapper\n position=\"fixed\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={4}\n justifyContent=\"center\"\n onClick={onCollapse}\n >\n <Box<'div'>\n background=\"neutral0\"\n hasRadius\n shadow=\"popupShadow\"\n overflow=\"hidden\"\n width=\"90%\"\n height=\"90%\"\n onClick={(e) => e.stopPropagation()}\n >\n <Flex height=\"100%\" alignItems=\"flex-start\">\n <BoxWithBorder flex=\"1\" height=\"100%\">\n {children}\n </BoxWithBorder>\n <Flex alignItems=\"start\" direction=\"column\" flex={1} height=\"100%\" width=\"100%\">\n <Flex\n height=\"4.8rem\"\n background=\"neutral100\"\n justifyContent=\"flex-end\"\n shrink={0}\n width=\"100%\"\n >\n <ExpandButton onClick={onCollapse} variant=\"tertiary\" size=\"M\">\n <Typography>\n {formatMessage({\n id: 'components.Wysiwyg.collapse',\n defaultMessage: 'Collapse',\n })}\n </Typography>\n <Collapse />\n </ExpandButton>\n </Flex>\n\n <Box position=\"relative\" height=\"100%\" width=\"100%\">\n <PreviewWysiwyg data={previewContent} />\n </Box>\n </Flex>\n </Flex>\n </Box>\n </ExpandWrapper>\n </FocusTrap>\n </Portal>\n );\n }\n\n return (\n <Flex\n borderColor={error ? 'danger600' : 'neutral200'}\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n hasRadius\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children}\n </Flex>\n );\n};\n\nconst ExpandWrapper = styled<FlexComponent>(Flex)`\n background: ${({ theme }) =>\n `${theme.colors.neutral800}${Math.floor(0.2 * 255)\n .toString(16)\n .padStart(2, '0')}`};\n`;\n\nconst BoxWithBorder = styled<BoxComponent>(Box)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n`;\n\nconst ExpandButton = styled(Button)`\n background-color: transparent;\n border: none;\n align-items: center;\n\n & > span {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n }\n\n svg {\n margin-left: ${({ theme }) => `${theme.spaces[2]}`};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral700};\n width: 1.2rem;\n height: 1.2rem;\n }\n }\n`;\n\nexport { EditorLayout, ExpandButton };\nexport type { EditorLayoutProps };\n","import { MutableRefObject } from 'react';\n\nimport CodeMirror from 'codemirror5';\n\nexport const replaceText = (markdownName: string, textToChange: string) => {\n let editedText;\n\n switch (markdownName) {\n case 'Strikethrough':\n editedText = `~~${textToChange}~~`;\n break;\n case 'Bold':\n editedText = `**${textToChange}**`;\n break;\n case 'Italic':\n editedText = `_${textToChange}_`;\n break;\n case 'Underline':\n editedText = `<u>${textToChange}</u>`;\n break;\n case 'Code':\n editedText = `\\`\\`\\`\\n${textToChange}\\n\\`\\`\\``;\n break;\n case 'Link':\n editedText = `[${textToChange}](link)`;\n break;\n case 'Quote':\n editedText = `>${textToChange}`;\n break;\n default:\n editedText = textToChange;\n }\n\n return editedText;\n};\n\nexport const insertText = (markdownName: string) => {\n let editedText;\n // object to calculate text that will be selected after insert of markdown\n const selection = { start: markdownName.length, end: 0 };\n\n switch (markdownName) {\n case 'Strikethrough':\n editedText = `~~${markdownName}~~`;\n selection.end = 2;\n break;\n case 'Bold':\n editedText = `**${markdownName}**`;\n selection.end = 2;\n break;\n case 'Italic':\n editedText = `_${markdownName}_`;\n selection.end = 1;\n break;\n case 'alt':\n editedText = `[${markdownName}]()`;\n selection.end = 3;\n break;\n case 'Underline':\n editedText = `<u>${markdownName}</u>`;\n selection.end = 4;\n break;\n case 'Code':\n editedText = `\\`\\`\\`\\n${markdownName}\\n\\`\\`\\``;\n selection.end = 3;\n break;\n case 'Link':\n editedText = `[${markdownName}](link)`;\n selection.end = 7;\n break;\n case 'Quote':\n editedText = `>${markdownName}`;\n selection.end = 0;\n break;\n default:\n editedText = '';\n }\n\n return { editedText, selection };\n};\n\nexport const insertListOrTitle = (markdown: string) => {\n let textToInsert;\n\n switch (markdown) {\n case 'BulletList':\n textToInsert = '- ';\n break;\n case 'NumberList':\n textToInsert = '1. ';\n break;\n case 'h1':\n textToInsert = '# ';\n break;\n case 'h2':\n textToInsert = '## ';\n break;\n case 'h3':\n textToInsert = '### ';\n break;\n case 'h4':\n textToInsert = '#### ';\n break;\n case 'h5':\n textToInsert = '##### ';\n break;\n case 'h6':\n textToInsert = '###### ';\n break;\n default:\n return '';\n }\n\n return textToInsert;\n};\n\n// EDITOR ACTIONS FUNCTIONS\n\nexport const markdownHandler = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n markdownType: string\n) => {\n const textToEdit = editor.current.getSelection();\n let textToInsert;\n\n if (textToEdit) {\n const editedText = replaceText(markdownType, textToEdit);\n editor.current.replaceSelection(editedText);\n editor.current.focus();\n } else {\n textToInsert = insertText(markdownType);\n editor.current.replaceSelection(textToInsert.editedText);\n editor.current.focus();\n // set selection-focus to text to replace with content\n const { line, ch } = editor.current.getCursor();\n const endSelection = ch - textToInsert.selection.end;\n const startSelection = ch - textToInsert.selection.end - textToInsert.selection.start;\n editor.current.setSelection({ line, ch: startSelection }, { line, ch: endSelection });\n }\n};\n\nexport const listHandler = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n listType: string\n) => {\n const doc = editor.current.getDoc();\n const insertion = listType === 'BulletList' ? '- ' : '1. ';\n\n if (doc.somethingSelected()) {\n const selections = doc.listSelections();\n let remove: boolean | null = null;\n\n editor.current.operation(function () {\n selections.forEach(function (selection) {\n const pos = [selection.head.line, selection.anchor.line].sort();\n\n // Remove if the first text starts with it\n if (remove == null) {\n remove = doc.getLine(pos[0]).startsWith(insertion);\n }\n\n for (let i = pos[0]; i <= pos[1]; i++) {\n if (remove) {\n // Don't remove if we don't start with it\n if (doc.getLine(i).startsWith(insertion)) {\n doc.replaceRange('', { line: i, ch: 0 }, { line: i, ch: insertion.length });\n }\n } else {\n const lineInsertion = listType === 'BulletList' ? '- ' : `${i + 1}. `;\n doc.replaceRange(lineInsertion, { line: i, ch: 0 });\n }\n }\n });\n });\n } else {\n const { line: currentLine } = doc.getCursor();\n const listToInsert = insertListOrTitle(listType);\n const lineContent = editor.current.getLine(currentLine);\n\n const textToInsert = listToInsert + lineContent;\n editor.current.setSelection(\n { line: currentLine, ch: 0 },\n { line: currentLine, ch: lineContent.length }\n );\n editor.current.replaceSelection(textToInsert);\n }\n\n editor.current.focus();\n};\n\nexport const titleHandler = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n titleType: string\n) => {\n const { line: currentLine } = editor.current.getCursor();\n const titleToInsert = insertListOrTitle(titleType);\n const lineContent = editor.current.getLine(currentLine);\n\n // replace hashtags followed by a space in case user want to change the type of title\n const lineWithNoTitle = lineContent.replace(/#{1,6}\\s/g, '').trim();\n\n const textToInsert = titleToInsert + lineWithNoTitle;\n editor.current.setSelection(\n { line: currentLine, ch: 0 },\n { line: currentLine, ch: lineContent.length }\n );\n editor.current.replaceSelection(textToInsert);\n\n setTimeout(() => {\n const newLastLineLength = editor.current.getLine(currentLine).length;\n editor.current.focus();\n editor.current.setCursor({ line: currentLine, ch: newLastLineLength });\n }, 0);\n};\n\nexport const insertFile = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n files: any[]\n) => {\n let { line } = editor.current.getCursor();\n const { ch } = editor.current.getCursor();\n\n files.forEach((file, i) => {\n let contentLength = editor.current.getLine(line).length;\n editor.current.setCursor({ line, ch: contentLength });\n // create a new line after first image markdown inserted\n // or if there is content in current line\n\n if (i > 0 || (i === 0 && ch !== 0)) {\n contentLength = editor.current.getLine(line).length;\n editor.current.setCursor({ line, ch: contentLength });\n line++;\n editor.current.replaceSelection('\\n');\n }\n\n if (file.mime.includes('image')) {\n editor.current.replaceSelection(`![${file.alt}](${file.url})`);\n } else {\n editor.current.replaceSelection(`[${file.alt}](${file.url})`);\n }\n });\n\n setTimeout(() => editor.current.focus(), 0);\n};\n\n// NEXT FUNCTIONS FOR QUOTE OR CODE MARKDOWN\n\nconst insertWithTextToEdit = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n markdownType: string,\n line: number,\n contentLength: number,\n textToEdit: string\n) => {\n const textToInsert = replaceText(markdownType, textToEdit);\n\n // remove content after current line\n const contentToMove = editor.current.getRange(\n { line: line + 1, ch: 0 },\n { line: Infinity, ch: Infinity }\n );\n editor.current.replaceRange('', { line: line + 1, ch: 0 }, { line: Infinity, ch: Infinity });\n\n // remove word that was selected\n // set cursor end of line + move to next line\n // add text to insert\n editor.current.replaceSelection('');\n editor.current.setCursor({ line, ch: contentLength });\n editor.current.replaceSelection('\\n');\n editor.current.replaceSelection(textToInsert);\n\n if (markdownType === 'Code') {\n const { line: newLine } = editor.current.getCursor();\n editor.current.setCursor({ line: newLine - 1, ch: textToEdit.length });\n }\n\n // add content we had to remove earlier\n editor.current.replaceRange(\n contentToMove,\n { line: line + 4, ch: 0 },\n { line: Infinity, ch: Infinity }\n );\n\n editor.current.focus();\n};\n\nconst insertWithoutTextToEdit = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n markdownType: string,\n line: number,\n contentLength: number\n) => {\n const textToInsert = insertText(markdownType);\n\n // remove content after current line\n const contentToMove = editor.current.getRange(\n { line: line + 1, ch: 0 },\n { line: Infinity, ch: Infinity }\n );\n editor.current.replaceRange('', { line: line + 1, ch: 0 }, { line: Infinity, ch: Infinity });\n\n // replace cursor to next line\n editor.current.setCursor({ line, ch: contentLength });\n editor.current.replaceSelection('\\n');\n editor.current.replaceSelection(textToInsert.editedText);\n\n // set selection on \"Code\" or \"Quote\" word\n\n if (markdownType === 'Code') {\n line += 2;\n\n editor.current.setSelection({ line, ch: 0 }, { line, ch: 4 });\n } else {\n line += 1;\n\n const { ch } = editor.current.getCursor();\n const endSelection = ch - textToInsert.selection.end;\n const startSelection = ch - textToInsert.selection.end - textToInsert.selection.start;\n editor.current.setSelection({ line, ch: startSelection }, { line, ch: endSelection });\n }\n\n // add content we had to remove earlier\n editor.current.replaceRange(\n contentToMove,\n { line: line + 2, ch: 0 },\n { line: Infinity, ch: Infinity }\n );\n editor.current.focus();\n};\n\nexport const quoteAndCodeHandler = (\n editor: MutableRefObject<CodeMirror.EditorFromTextArea>,\n markdownType: string\n) => {\n const textToEdit = editor.current.getSelection();\n const { line } = editor.current.getCursor();\n const contentLength = editor.current.getLine(line).length;\n\n if (textToEdit) {\n insertWithTextToEdit(editor, markdownType, line, contentLength, textToEdit);\n } else {\n insertWithoutTextToEdit(editor, markdownType, line, contentLength);\n }\n};\n","import { Button, IconButton, IconButtonComponent, IconButtonGroup } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n// NAV BUTTONS\nexport const MainButtons = styled(IconButtonGroup)`\n margin-left: ${({ theme }) => theme.spaces[4]};\n`;\n\nexport const MoreButton = styled<IconButtonComponent>(IconButton)`\n margin: ${({ theme }) => `0 ${theme.spaces[2]}`};\n`;\n\n// NAV\n\nexport const IconButtonGroupMargin = styled(IconButtonGroup)`\n margin-right: ${({ theme }) => `${theme.spaces[2]}`};\n`;\n\n// FOOTER\nexport const ExpandButton = styled(Button)`\n background-color: transparent;\n border: none;\n align-items: center;\n\n & > span {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n }\n\n svg {\n margin-left: ${({ theme }) => `${theme.spaces[2]}`};\n path {\n fill: ${({ theme }) => theme.colors.neutral700};\n width: 1.2rem;\n height: 1.2rem;\n }\n }\n`;\n","import { ButtonProps, Box, Flex, Typography } from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ExpandButton } from './WysiwygStyles';\n\ninterface WysiwygFooterProps {\n onToggleExpand: ButtonProps['onClick'];\n}\n\nconst WysiwygFooter = ({ onToggleExpand }: WysiwygFooterProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box padding={2} background=\"neutral100\" borderRadius={`0 0 0.4rem 0.4rem`}>\n <Flex justifyContent=\"flex-end\" alignItems=\"flex-end\">\n <ExpandButton id=\"expand\" onClick={onToggleExpand} variant=\"tertiary\" size=\"M\">\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: 'components.WysiwygBottomControls.fullscreen',\n defaultMessage: 'Expand',\n })}\n </Typography>\n <Expand />\n </ExpandButton>\n </Flex>\n </Box>\n );\n};\n\nexport { WysiwygFooter };\nexport type { WysiwygFooterProps };\n","import * as React from 'react';\n\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item onSelect={() => handleActionClick('Bold', editorRef)} disabled={isDisabled}>\n <Flex tag=\"span\" gap={2}>\n <Bold aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item onSelect={() => handleActionClick('Italic', editorRef)} disabled={isDisabled}>\n <Flex tag=\"span\" gap={2}>\n <Italic aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n <Underline aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n <StrikeThrough aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n <BulletList aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n <NumberList aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item onSelect={() => handleActionClick('Code', editorRef)} disabled={isDisabled}>\n <Flex tag=\"span\" gap={2}>\n <Code aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n <Image aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n <Link aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item onSelect={() => handleActionClick('Quote', editorRef)} disabled={isDisabled}>\n <Flex tag=\"span\" gap={2}>\n <Quotes aria-hidden fill=\"neutral600\" />\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={4}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral600\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral600\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral600\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral600\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral600\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral600\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex gap={2} overflow=\"hidden\" width=\"100%\">\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav };\nexport type { WysiwygNavProps };\n","import * as React from 'react';\n\nimport { useField, useStrapiApp, type InputProps } from '@strapi/admin/strapi-admin';\nimport { Field, Flex } from '@strapi/design-system';\nimport { EditorFromTextArea } from 'codemirror5';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../../utils/urls';\n\nimport { Editor, EditorApi } from './Editor';\nimport { EditorLayout } from './EditorLayout';\nimport { insertFile } from './utils/utils';\nimport { WysiwygFooter } from './WysiwygFooter';\nimport { WysiwygNav } from './WysiwygNav';\n\nimport type { Schema } from '@strapi/types';\n\ninterface WysiwygProps extends Omit<InputProps, 'type'> {\n labelAction?: React.ReactNode;\n type: Schema.Attribute.RichText['type'];\n}\n\nconst Wysiwyg = React.forwardRef<EditorApi, WysiwygProps>(\n ({ hint, disabled, label, name, placeholder, required, labelAction }, forwardedRef) => {\n const field = useField(name);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const editorRef = React.useRef<EditorFromTextArea>(\n null\n ) as React.MutableRefObject<EditorFromTextArea>;\n const [isPreviewMode, setIsPreviewMode] = React.useState(false);\n const [mediaLibVisible, setMediaLibVisible] = React.useState(false);\n const [isExpandMode, setIsExpandMode] = React.useState(false);\n const components = useStrapiApp('ImageDialog', (state) => state.components);\n\n const MediaLibraryDialog = components['media-library'];\n\n const handleToggleMediaLib = () => setMediaLibVisible((prev) => !prev);\n const handleTogglePreviewMode = () => setIsPreviewMode((prev) => !prev);\n const handleToggleExpand = () => {\n setIsPreviewMode(false);\n setIsExpandMode((prev) => !prev);\n };\n\n const handleSelectAssets = (files: any[]) => {\n const formattedFiles = files.map((f) => ({\n alt: f.alternativeText || f.name,\n url: prefixFileUrlWithBackendUrl(f.url),\n mime: f.mime,\n }));\n\n insertFile(editorRef, formattedFiles);\n setMediaLibVisible(false);\n };\n\n return (\n <Field.Root name={name} hint={hint} error={field.error} required={required}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n <EditorLayout\n isExpandMode={isExpandMode}\n error={field.error}\n previewContent={field.value}\n onCollapse={handleToggleExpand}\n >\n <WysiwygNav\n isExpandMode={isExpandMode}\n editorRef={editorRef}\n isPreviewMode={isPreviewMode}\n onToggleMediaLib={handleToggleMediaLib}\n onTogglePreviewMode={isExpandMode ? undefined : handleTogglePreviewMode}\n disabled={disabled}\n />\n\n <Editor\n disabled={disabled}\n isExpandMode={isExpandMode}\n editorRef={editorRef}\n error={field.error}\n isPreviewMode={isPreviewMode}\n name={name}\n onChange={field.onChange}\n placeholder={placeholder}\n textareaRef={textareaRef}\n value={field.value}\n ref={forwardedRef}\n />\n\n {!isExpandMode && <WysiwygFooter onToggleExpand={handleToggleExpand} />}\n </EditorLayout>\n <Field.Hint />\n <Field.Error />\n </Flex>\n {mediaLibVisible && (\n // @ts-expect-error – TODO: fix this way of injecting because it's not really typeable without a registry.\n <MediaLibraryDialog onClose={handleToggleMediaLib} onSelectAssets={handleSelectAssets} />\n )}\n </Field.Root>\n );\n }\n);\n\nconst MemoizedWysiwyg = React.memo(Wysiwyg);\n\nexport { MemoizedWysiwyg as Wysiwyg };\nexport type { WysiwygProps };\n","import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentContext } from '../../../features/DocumentContext';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocLayout, useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput, UnstableRelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'>;\n\nconst InputRenderer = ({ visible, hint: providedHint, ...props }: InputRendererProps) => {\n const { id: rootId } = useDoc();\n const documentMeta = useDocumentContext('InputRenderer', (state) => state.meta);\n const documentResponse = useDocumentContext('InputRenderer', (state) => state.document);\n const documentLayout = useDocumentLayout(documentMeta.model);\n\n const document = documentResponse?.document;\n const collectionType = documentMeta.collectionType;\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = rootId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n const {\n edit: { components: rootDocumentComponents },\n } = useDocLayout();\n\n const components =\n Object.keys(rootDocumentComponents).length !== 0\n ? rootDocumentComponents\n : documentLayout.edit.components;\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n return <CustomInput {...props} {...field} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n return <CustomInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n return (\n <ComponentInput\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <InputRenderer {...inputProps} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return <DynamicZone {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'relation':\n if (window.strapi.future.isEnabled('unstableRelationsOnTheFly')) {\n return <UnstableRelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n }\n return <RelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'richtext':\n return <Wysiwyg {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'uid':\n return <UIDInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = !['biginteger', 'integer', 'number', 'dynamiczone', 'component'].includes(\n attribute.type\n )\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n","import { Box, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useDocumentContext } from '../../../features/DocumentContext';\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nexport const RESPONSIVE_CONTAINER_BREAKPOINTS = {\n sm: '27.5rem', // 440px\n};\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\n// We need to use a different grid item for the responsive layout in the test environment\n// because @container is not supported in jsdom and it throws an error\nexport const ResponsiveGridItem =\n // TODO: we need to find a better solution to avoid using process.env.NODE_ENV in the code to fix the tests with this styled component\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n @container (min-width: ${RESPONSIVE_CONTAINER_BREAKPOINTS.sm}) {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n model?: string;\n}\n\nconst FormLayout = ({ layout, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const documentMeta = useDocumentContext('FormLayout', (state) => state.meta);\n const model = documentMeta.model;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.content-types.${model}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...fieldWithTranslatedLabel} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n key={index}\n {...(hasBackground && {\n padding: 6,\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n })}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n const fieldWithTranslatedLabel = {\n ...field,\n label: formatMessage({\n id: `content-manager.content-types.${model}.${field.name}`,\n defaultMessage: field.label,\n }),\n };\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...fieldWithTranslatedLabel} />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n ))}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n","import { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({ ...field, label: translatedLabel, name: completeFieldName })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n","import * as React from 'react';\n\nimport { useField, useNotification, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n TextButton,\n VisuallyHidden,\n Accordion,\n IconButton,\n useComposedRefs,\n BoxComponent,\n} from '@strapi/design-system';\nimport { Plus, Drag, Trash } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../../../../constants/dragAndDrop';\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { useDragAndDrop, type UseDragAndDropOptions } from '../../../../../hooks/useDragAndDrop';\nimport { usePrev } from '../../../../../hooks/usePrev';\nimport { getIn } from '../../../../../utils/objects';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport { Initializer } from './Initializer';\n\nimport type { ComponentInputProps } from './Input';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ntype RepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst RepeatableComponent = ({\n attribute,\n disabled,\n name,\n mainField,\n children,\n layout,\n}: RepeatableComponentProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const search = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const components = useDocumentContext(\n 'RepeatableComponent',\n (state) => state.document.components\n );\n\n const {\n value = [],\n error,\n rawError,\n } = useField<Schema.Attribute.ComponentValue<`${string}.${string}`, true>>(name);\n const addFieldRow = useForm('RepeatableComponent', (state) => state.addFieldRow);\n const moveFieldRow = useForm('RepeatableComponent', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('RepeatableComponent', (state) => state.removeFieldRow);\n const { max = Infinity } = attribute;\n\n const [collapseToOpen, setCollapseToOpen] = React.useState<string>('');\n const [liveText, setLiveText] = React.useState('');\n\n React.useEffect(() => {\n const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;\n const hasNestedValue = value && Array.isArray(value) && value.length > 0;\n\n if (hasNestedErrors && hasNestedValue) {\n const errorOpenItems = rawError\n .map((_: unknown, idx: number) => {\n return value[idx] ? value[idx].__temp_key__ : null;\n })\n .filter((value) => !!value);\n\n if (errorOpenItems && errorOpenItems.length > 0) {\n setCollapseToOpen((collapseToOpen) => {\n if (!errorOpenItems.includes(collapseToOpen)) {\n return errorOpenItems[0];\n }\n\n return collapseToOpen;\n });\n }\n }\n }, [rawError, value]);\n\n /**\n * Get the temp key of the component that has the field that is currently focussed\n * as defined by the `field` query param. We can then force this specific component\n * to be in its \"open\" state.\n */\n const componentTmpKeyWithFocussedField = React.useMemo(() => {\n if (search.has('field')) {\n const fieldParam = search.get('field');\n\n if (!fieldParam) {\n return undefined;\n }\n\n const [, path] = fieldParam.split(`${name}.`);\n\n if (getIn(value, path, undefined) !== undefined) {\n const [subpath] = path.split('.');\n\n return getIn(value, subpath, undefined)?.__temp_key__;\n }\n }\n\n return undefined;\n }, [search, name, value]);\n\n const prevValue = usePrev(value);\n\n React.useEffect(() => {\n /**\n * When we add a new item to the array, we want to open the collapse.\n */\n if (prevValue && prevValue.length < value.length) {\n setCollapseToOpen(value[value.length - 1].__temp_key__);\n }\n }, [value, prevValue]);\n\n React.useEffect(() => {\n if (typeof componentTmpKeyWithFocussedField === 'string') {\n setCollapseToOpen(componentTmpKeyWithFocussedField);\n }\n }, [componentTmpKeyWithFocussedField]);\n\n const toggleCollapses = () => {\n setCollapseToOpen('');\n };\n\n const handleClick = () => {\n if (value.length < max) {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n addFieldRow(name, data);\n // setCollapseToOpen(nextTempKey);\n } else if (value.length >= max) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: getTranslation('components.notification.info.maximum-requirement'),\n }),\n });\n }\n };\n\n const handleMoveComponentField: ComponentProps['onMoveItem'] = (newIndex, currentIndex) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: `${name}.${currentIndex}`,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow(name, currentIndex, newIndex);\n };\n\n const handleValueChange = (key: string) => {\n setCollapseToOpen(key);\n };\n\n const getItemPos = (index: number) => `${index + 1} of ${value.length}`;\n\n const handleCancel = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: `${name}.${index}`,\n }\n )\n );\n };\n\n const handleGrabItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: `${name}.${index}`,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const ariaDescriptionId = React.useId();\n\n const level = useComponent('RepeatableComponent', (state) => state.level);\n\n if (value.length === 0) {\n return <Initializer disabled={disabled} name={name} onClick={handleClick} />;\n }\n\n return (\n <Box hasRadius>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n <AccordionRoot\n $error={error}\n value={collapseToOpen}\n onValueChange={handleValueChange}\n aria-describedby={ariaDescriptionId}\n >\n {value.map(({ __temp_key__: key, id }, index) => {\n const nameWithIndex = `${name}.${index}`;\n return (\n <ComponentProvider\n key={key}\n // id is always a number in a component\n id={id as number}\n uid={attribute.component}\n level={level + 1}\n type=\"repeatable\"\n >\n <Component\n disabled={disabled}\n name={nameWithIndex}\n attribute={attribute}\n index={index}\n mainField={mainField}\n onMoveItem={handleMoveComponentField}\n onDeleteComponent={() => {\n removeFieldRow(name, index);\n toggleCollapses();\n }}\n toggleCollapses={toggleCollapses}\n onCancel={handleCancel}\n onDropItem={handleDropItem}\n onGrabItem={handleGrabItem}\n __temp_key__={key}\n >\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${nameWithIndex}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Component>\n </ComponentProvider>\n );\n })}\n <TextButtonCustom disabled={disabled} onClick={handleClick} startIcon={<Plus />}>\n {formatMessage({\n id: getTranslation('containers.EditView.add.new-entry'),\n defaultMessage: 'Add an entry',\n })}\n </TextButtonCustom>\n </AccordionRoot>\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: string }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst TextButtonCustom = styled(TextButton)`\n width: 100%;\n display: flex;\n justify-content: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral200};\n padding-inline: ${(props) => props.theme.spaces[6]};\n padding-block: ${(props) => props.theme.spaces[3]};\n\n &:not([disabled]) {\n cursor: pointer;\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n }\n\n span {\n font-weight: 600;\n font-size: 1.4rem;\n line-height: 2.4rem;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ComponentProps\n extends Pick<UseDragAndDropOptions, 'onGrabItem' | 'onDropItem' | 'onCancel' | 'onMoveItem'>,\n Pick<RepeatableComponentProps, 'mainField'> {\n attribute: Schema.Attribute.Component<`${string}.${string}`, boolean>;\n disabled?: boolean;\n index: number;\n name: string;\n onDeleteComponent?: React.MouseEventHandler<HTMLButtonElement>;\n toggleCollapses: () => void;\n children: React.ReactNode;\n __temp_key__: string;\n}\n\nconst Component = ({\n disabled,\n index,\n name,\n mainField = {\n name: 'id',\n type: 'integer',\n },\n children,\n onDeleteComponent,\n toggleCollapses,\n __temp_key__,\n ...dragProps\n}: ComponentProps) => {\n const { formatMessage } = useIntl();\n\n const displayValue = useForm('RepeatableComponent', (state) => {\n return getIn(state.values, [...name.split('.'), mainField.name]);\n });\n\n const accordionRef = React.useRef<HTMLButtonElement>(null!);\n\n /**\n * The last item in the fieldName array will be the index of this component.\n * Drag and drop should be isolated to the parent component so nested repeatable\n * components are not affected by the drag and drop of the parent component in\n * their own re-ordering context.\n */\n const componentKey = name.split('.').slice(0, -1).join('.');\n\n const [{ handlerId, isDragging, handleKeyDown }, boxRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(!disabled, {\n type: `${ItemTypes.COMPONENT}_${componentKey}`,\n index,\n item: {\n index,\n displayedValue: displayValue,\n },\n onStart() {\n // Close all collapses\n toggleCollapses();\n },\n ...dragProps,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const composedAccordionRefs = useComposedRefs<HTMLButtonElement>(accordionRef, dragRef);\n const composedBoxRefs = useComposedRefs<HTMLDivElement>(\n boxRef as React.RefObject<HTMLDivElement>,\n dropRef\n );\n\n return (\n <>\n {isDragging ? (\n <Preview />\n ) : (\n <Accordion.Item ref={composedBoxRefs} value={__temp_key__}>\n <Accordion.Header>\n <Accordion.Trigger>{displayValue}</Accordion.Trigger>\n <Accordion.Actions>\n <IconButton\n variant=\"ghost\"\n onClick={onDeleteComponent}\n label={formatMessage({\n id: getTranslation('containers.Edit.delete'),\n defaultMessage: 'Delete',\n })}\n >\n <Trash />\n </IconButton>\n <IconButton\n ref={composedAccordionRefs}\n variant=\"ghost\"\n onClick={(e) => e.stopPropagation()}\n data-handler-id={handlerId}\n label={formatMessage({\n id: getTranslation('components.DragHandle-label'),\n defaultMessage: 'Drag',\n })}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral100\"\n padding={6}\n gap={6}\n >\n {children}\n </Flex>\n </Accordion.Content>\n </Accordion.Item>\n )}\n </>\n );\n};\n\nconst Preview = () => {\n return <StyledSpan tag=\"span\" padding={6} background=\"primary100\" />;\n};\n\nconst StyledSpan = styled<BoxComponent<'span'>>(Box)`\n display: block;\n outline: 1px dashed ${({ theme }) => theme.colors.primary500};\n outline-offset: -1px;\n`;\n\nexport { RepeatableComponent };\nexport type { RepeatableComponentProps };\n","import * as React from 'react';\n\nimport { InputProps, useField } from '@strapi/admin/strapi-admin';\nimport { Field, Flex, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../features/DocumentContext';\nimport { EditFieldLayout } from '../../../../../hooks/useDocumentLayout';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { transformDocument } from '../../../utils/data';\nimport { createDefaultForm } from '../../../utils/forms';\nimport { type InputRendererProps } from '../../InputRenderer';\n\nimport { Initializer } from './Initializer';\nimport { NonRepeatableComponent } from './NonRepeatable';\nimport { RepeatableComponent } from './Repeatable';\n\ninterface ComponentInputProps\n extends Omit<Extract<EditFieldLayout, { type: 'component' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'> {\n labelAction?: React.ReactNode;\n children: (props: InputRendererProps) => React.ReactNode;\n /**\n * We need layout to come from the props, and not via a hook, because Content History needs\n * a way to modify the normal component layout to add hidden fields.\n */\n layout: EditFieldLayout[][];\n}\n\nconst ComponentInput = ({\n label,\n required,\n name,\n attribute,\n disabled,\n labelAction,\n ...props\n}: ComponentInputProps) => {\n const { formatMessage } = useIntl();\n const field = useField(name);\n\n const showResetComponent = !attribute.repeatable && field.value && !disabled;\n\n const components = useDocumentContext('ComponentInput', (state) => state.document.components);\n\n const handleInitialisationClick = () => {\n const schema = components[attribute.component];\n const form = createDefaultForm(schema, components);\n const data = transformDocument(schema, components)(form);\n\n field.onChange(name, data);\n };\n\n return (\n <Field.Root error={field.error} required={required}>\n <Flex justifyContent=\"space-between\">\n <Field.Label action={labelAction}>\n {label}\n {attribute.repeatable && (\n <>&nbsp;({Array.isArray(field.value) ? field.value.length : 0})</>\n )}\n </Field.Label>\n\n {showResetComponent && (\n <IconButton\n label={formatMessage({\n id: getTranslation('components.reset-entry'),\n defaultMessage: 'Reset Entry',\n })}\n variant=\"ghost\"\n onClick={() => {\n field.onChange(name, null);\n }}\n >\n <Trash />\n </IconButton>\n )}\n </Flex>\n {/**\n * if the field isn't repeatable then we display a button to start the field\n * TODO: should this just live in the `NonRepeatableComponent`?\n */}\n {!attribute.repeatable && !field.value && (\n <Initializer disabled={disabled} name={name} onClick={handleInitialisationClick} />\n )}\n {!attribute.repeatable && field.value ? (\n <NonRepeatableComponent attribute={attribute} name={name} disabled={disabled} {...props}>\n {props.children}\n </NonRepeatableComponent>\n ) : null}\n {attribute.repeatable && (\n <RepeatableComponent attribute={attribute} name={name} disabled={disabled} {...props}>\n {props.children}\n </RepeatableComponent>\n )}\n <Field.Error />\n </Field.Root>\n );\n};\n\nconst MemoizedComponentInput = React.memo(ComponentInput);\n\nexport { MemoizedComponentInput as ComponentInput };\nexport type { ComponentInputProps };\n"],"names":["DocumentProvider","useDocumentContext","createContext","DocumentContextProvider","children","initialDocument","currentDocumentMeta","changeDocument","React","useState","document","useDocument","_jsx","meta","componentStore","Map","useLazyComponents","componentUids","lazyComponentStore","setLazyComponentStore","Object","fromEntries","newUids","filter","uid","get","loading","setLoading","length","getCustomField","useStrapiApp","state","customFields","useEffect","setStore","store","lazyLoadComponents","uids","components","modules","Promise","all","forEach","index","set","default","componentPromises","reduce","arrayOfPromises","customField","push","Input","cleanup","useCallback","clear","isLazyLoading","codeLanguages","value","label","decorate","baseHandleConvert","editor","attributesToSet","_","lastNodePath","Editor","last","Transforms","unwrapNodes","match","node","isEditor","type","split","at","selection","updatedLastNodePath","entry","above","element","elementPath","setNodes","getAttributesToClear","_children","_type","extra","attributesToClear","keys","currentAttributes","key","isText","Node","isNode","pressEnterTwiceToExit","nodeEntry","includes","nodePath","isNodeEnd","isEnd","anchor","lastTextNode","isEmptyLine","text","endsWith","delete","distance","unit","reverse","insertNodes","insertText","modifier","removeMark","decorateCode","path","ranges","Element","isElement","string","language","find","lang","decorateKey","selectedLanguage","Prism","languages","tokens","tokenize","start","token","end","offset","focus","className","CodeBlock","styled","pre","theme","borderRadius","colors","neutral100","spaces","neutral800","CodeEditor","props","useBlocksEditorContext","editorIsFocused","useFocused","imageIsSelected","useSelected","formatMessage","useIntl","isSelectOpen","setIsSelectOpen","shouldDisplayLanguageSelect","_jsxs","Box","position","width","attributes","code","background","borderColor","borderStyle","borderWidth","shadow","top","marginTop","right","padding","hasRadius","SingleSelect","onChange","open","toString","onOpenChange","ReactEditor","onCloseAutoFocus","e","preventDefault","aria-label","id","defaultMessage","map","SingleSelectOption","codeBlocks","renderElement","icon","CodeBlockIcon","matchNode","isInBlocksSelector","handleConvert","handleEnterKey","snippets","H1","Typography","attrs","tag","lineHeights","H2","H3","H4","H5","H6","handleConvertToHeading","level","headingBlocks","HeadingOne","dragHandleTopMargin","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","ImageWrapper","Flex","$isFocused","css","primary600","IMAGE_SCHEMA_FIELDS","pick","object","entries","isImage","Image","url","alternativeText","height","image","contentEditable","justifyContent","img","src","alt","ImageDialog","isOpen","setIsOpen","MediaLibraryDialog","insertImages","images","nodeEntryBeingReplaced","isInlineNode","pathToInsert","removeNodes","nodesToInsert","imageNode","select","handleSelectAssets","formattedImages","expectedImage","nodeImage","name","prefixFileUrlWithBackendUrl","allowedTypes","onClose","onSelectAssets","imageBlocks","Picture","handleBackspaceKey","removeLink","SlateElement","insertLink","linkNodes","Array","from","nodes","Range","isCollapsed","link","wrapNodes","editLink","linkEntry","linkPath","linkNodeChildrens","childPath","concat","getEntries","getKeys","isLinkNode","isListNode","StyledLink","RemoveButton","Button","$visible","LinkContent","forwardRef","forwardedRef","findPath","popoverOpen","setPopoverOpen","lastInsertedLinkPath","Path","equals","elementText","child","join","linkText","setLinkText","linkUrl","setLinkUrl","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","target","URL","startsWith","error","handleSave","stopPropagation","parentPath","parent","handleClose","current","inputNotDirty","Popover","Root","Trigger","ref","href","onClick","color","Content","onPointerDownOutside","direction","gap","Field","alignItems","Label","placeholder","variant","disabled","Boolean","Link","linkBlocks","listStyle","Orderedlist","ol","$listStyleType","Unorderedlist","ul","orderedStyles","unorderedStyles","List","listStyles","format","nextIndex","indentLevel","listStyleType","replaceListWithEmptyBlock","currentListPath","handleBackspaceKeyOnList","event","currentListItem","currentListItemPath","currentList","isListEmpty","isListItemEmpty","isFocusAtTheBeginningOfAChild","parentListEntry","liftNodes","previousEntry","previous","nextEntry","next","previousList","nextList","mergeNodes","handleEnterKeyOnList","currentListItemEntry","currentNode","updatedPath","slice","previousIndentLevel","parentListNodeEntry","modifiedPath","moveNodes","to","createdParagraphPath","splitNodes","handleConvertToList","convertedPath","handleTabOnList","currentListItemIndex","findIndex","item","previousNode","insertAtPath","listBlocks","NumberList","handleTab","BulletList","paragraphBlocks","paragraph","Paragraph","anchorPathInitialPosition","always","parentBlockEntry","parentBlockPath","fragmentedNode","hasNextNode","Blockquote","blockquote","role","fontWeights","regular","neutral200","neutral600","quoteBlocks","quote","div","Quotes","ObservedToolbarComponent","lastVisibleIndex","setLastVisibleIndex","rootRef","isVisible","containerRef","useElementOnScreen","prev","Math","max","threshold","root","style","visibility","EditorToolbarObserver","observedComponents","menuTriggerVariant","toolbarRef","hasHiddenItems","menuIndex","setOpen","isMenuOpenWithContent","menuTriggerRef","component","toolbar","toSpliced","Menu","defaultOpen","paddingLeft","paddingRight","IconButton","More","maxHeight","minWidth","popoverPlacement","Fragment","menu","ToolbarWrapper","neutral150","ToolbarSeparator","Toolbar","Separator","FlexButton","primary100","SelectWrapper","useConversionModal","modalElement","setModalComponent","handleConversionResult","renderModal","cloneElement","Date","now","ToolbarButton","Icon","isActive","handleClick","labelMessage","enabledColor","Tooltip","ToggleItem","data-state","onMouseDown","aria-disabled","asChild","fill","BlocksDropdown","blocks","blockKeysToInclude","currentKeys","block","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","editorIsEmpty","isEmpty","currentListEntry","maybeRenderModal","preventSelectFocus","selectedNode","anchorNode","edge","depth","anchorBlockKey","blockKey","_Fragment","startIcon","BlockOption","isSelected","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","StyledMenuItem","onSelect","LinkButton","isLinkActive","unhangRange","isLinkDisabled","addLink","shouldSaveLinkPath","Item","BlocksToolbar","modifiers","checkButtonDisabled","isButtonDisabled","checkIsActive","handleToggle","ToggleGroup","grow","overflow","StyledEditable","Editable","isExpandedMode","Wrapper","isOverDropTarget","DropPlaceholder","dragDirection","placeholderMargin","DIRECTIONS","UPWARD","DOWNWARD","DragItem","$dragVisibility","DragIconButton","$dragHandleTopMargin","neutral500","DragAndDropElement","setDragDirection","setLiveText","dragVisibility","setDragVisibility","handleMoveBlock","newIndex","currentIndex","currentIndexPosition","newIndexPosition","getTranslation","handlerId","isDragging","blockRef","dropRef","dragRef","useDragAndDrop","ItemTypes","BLOCKS","displayedValue","onDropItem","composedBoxRefs","useComposedRefs","marginLeft","as","CloneDragItem","data-handler-id","onDragStart","currentTarget","getAttribute","opacity","onDragEnd","onMouseMove","onMouseLeave","tabIndex","withTooltip","draggable","Drag","baseRenderLeaf","wrappedChildren","currentChildren","modifierEntry","leaf","renderLeaf","span","baseRenderElement","blockMatch","values","BlocksContent","ariaLabelId","blocksRef","handleMoveBlocks","checkSnippet","textNode","textNodePath","blockMatchingSnippet","handleEnter","selectedBlock","shiftKey","handleBackspaceEvent","handleKeyboardShortcuts","isCtrlOrCmd","metaKey","ctrlKey","isValidEventKey","handleKeyDown","blur","handleScrollSelectionIntoView","domRange","toDOMRange","domRect","getBoundingClientRect","blocksInput","editorRect","bottom","scrollBy","behavior","fontSize","lineHeight","paddingTop","paddingBottom","aria-labelledby","readOnly","onKeyDown","scrollSelectionIntoView","onDrop","CollapseIconButton","ExpandWrapper","EditorLayout","onCollapse","ariaDescriptionId","body","classList","add","remove","Portal","aria-modal","FocusTrap","onEscape","left","zIndex","aria-describedby","Collapse","InputWrapper","$disabled","$hasError","danger600","neutral0","undefined","stylesToInherit","BoldText","fontWeight","ItalicText","UnderlineText","textDecoration","StrikeThroughText","InlineCode","baseCheckIsActive","marks","baseHandleToggle","endOfEditor","addMark","bold","Bold","italic","Italic","underline","Underline","strikethrough","StrikeThrough","Code","withImages","isVoid","withLinks","isInline","apply","insertData","operation","hasPrevious","transform","linksInSelection","selectionIsInLink","selectionIsAtEndOfLink","Point","data","pastedText","getData","withStrapiSchema","normalizeNode","selectorBlockKeys","BlocksEditorProvider","usePartialBlocksEditorContext","consumerName","context","useSlate","EditorDivider","Divider","ExpandIconButton","shadows","filterShadow","useResetKey","slateUpdatesCount","valueUpdatesCount","setKey","previousKey","incrementSlateUpdatesCount","pipe","fns","fn","BlocksEditor","contentProps","withHistory","withReact","createEditor","liveText","useId","setIsExpandedMode","handleToggleExpand","useImperativeHandle","handleSlateChange","isAstChange","operations","some","op","VisuallyHidden","aria-live","Slate","initialValue","Expand","BlocksInput","required","hint","labelAction","editorProps","field","useField","action","Hint","Error","MemoizedBlocksInput","memo","Initializer","cursor","PlusCircle","textColor","ComponentProvider","useComponent","AddComponentButton","hasError","isDisabled","StyledButton","StyledAddIcon","aria-hidden","$isOpen","danger200","ComponentCategory","category","onAddComponent","Accordion","Header","ResponsiveAccordionContent","Grid","displayName","ComponentBox","shrink","ComponentIcon","RESPONSIVE_CONTAINER_BREAKPOINTS","sm","motion","easings","easeOutQuad","primary200","ComponentPicker","dynamicComponentsByCategory","onClickAddComponent","handleAddComponentToDz","componentUid","defaultValue","DynamicComponent","onRemoveComponentClick","onMoveComponent","onGrabItem","onCancel","formValues","useForm","documentMeta","edit","useDocumentLayout","model","title","useMemo","mainField","settings","mainFieldValue","getIn","String","trim","mainValue","boxRef","dragPreviewRef","DYNAMIC_ZONE","onMoveItem","getEmptyImage","captureDraggingState","accordionValue","rawError","collapseToOpen","setCollapseToOpen","accordionActions","Trash","size","endIcon","focusable","SubRoot","SubTrigger","SubContent","MenuItem","accordionTitle","ComponentContainer","Rectangle","StyledBox","Preview","onValueChange","COMPONENT_ICONS","dashboard","Actions","AccordionContentRadius","layout","row","rowInd","col","s","xs","ResponsiveGridRoot","fieldName","fieldWithTranslatedLabel","ResponsiveGridItem","InputRenderer","tableShadow","primary500","DynamicZoneLabel","numberOfComponents","maxWidth","ellipsis","DynamicZoneProvider","useDynamicZone","isInDynamicZone","DynamicZone","attribute","disabledProp","Infinity","min","addComponentIsOpen","setAddComponentIsOpen","isLoading","addFieldRow","removeFieldRow","moveFieldRow","acc","info","toggleNotification","useNotification","dynamicDisplayedComponentsLength","handleAddComponent","schema","form","createDefaultForm","transformations","transformDocument","__component","handleClickOpenPicker","message","handleMoveComponent","getItemPos","handleCancel","handleGrabItem","handleDropItem","handleRemoveComponent","renderButtonLabel","number","componentName","__temp_key__","NotAllowedInput","TextInput","startAction","EyeStriked","getCollectionType","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","CustomModalContent","Modal","RelationModal","onToggle","relationUrl","marginRight","ArrowLeft","RelationModalBody","collectionType","isModalOpen","onToggleModal","Footer","documentResponse","documentLayoutResponse","initialValues","getInitialFormValues","permissions","useRBAC","PERMISSIONS","subject","Loader","small","EmptyStateLayout","WarningCircle","content","documentTitle","getTitle","hasDraftAndPublished","options","draftAndPublish","Body","DocumentRBAC","DocumentStatus","status","FormContext","method","flex","FormLayout","hasBackground","useHandleDisconnect","handleDisconnect","relation","connect","indexOfRelationInConnectArray","rel","apiData","documentId","locale","RELATIONS_TO_DISPLAY","ONE_WAY_RELATIONS","UnstableRelationsField","currentPage","setCurrentPage","query","useQueryParams","params","buildValidParams","isMorph","toLowerCase","componentId","componentUID","isSubmitting","targetField","isFetching","useGetRelationsQuery","pageSize","page","refetchOnMountOrArgChange","skip","selectFromResult","result","results","handleLoadMore","isFetchingMoreRelations","realServerRelationsCount","pagination","total","relationsConnected","relationsDisconnected","disconnect","relationsCount","relations","ctx","targetModel","removeConnected","removeDisconnected","addLabelAndHref","transformedRels","sort","a","b","handleConnect","lastItemInList","generateNKeysBetween","getRelationLabel","wrap","StyledFlex","RelationsInput","pageCount","TextButton","ArrowClockwise","UnstableRelationsList","serverData","relationType","setCurrentDocument","RelationsField","documentModel","useDoc","RelationsList","connectedRelations","disconnectedRelations","unique","_unique","_ariaLabel","textValue","setTextValue","searchParams","setSearchParams","_q","fieldRef","useFocusInputField","searchParamsDebounced","useDebounce","searchForTrigger","useLazySearchRelationsQuery","idsToInclude","idsToOmit","handleSearch","search","hasNextPage","handleChange","relationId","opt","console","useLayoutEffect","Combobox","autocomplete","hasMoreItems","noOptionsMessage","loadingMessage","onLoadMore","onTextValueChange","onInputChange","ComboboxOption","RELATION_ITEM_HEIGHT","RELATION_GUTTER","listRef","outerListRef","setOverflow","handleNativeScroll","el","parentScrollContainerHeight","parentNode","scrollHeight","maxScrollBottom","scrollTop","outerListRefCurrent","addEventListener","removeEventListener","handleMoveItem","oldIndex","newData","currentRow","startKey","endKey","newKey","splice","array","relationOnServer","oldRelation","relationInFront","before","publishedAt","relationWithPosition","toReversed","_href","canReorder","dynamicListHeight","ShadowBox","$overflowDirection","FixedSizeList","outerRef","itemCount","itemSize","itemData","ariaDescribedBy","canDrag","itemKey","innerElementType","UnstableListItem","ListItem","CustomTextButton","fontSizes","setIsModalOpen","relationRef","RELATION","dropSensitivity","DROP_SENSITIVITY","REGULAR","composedRefs","handleChangeModalContent","newRelation","RelationItemPlaceholder","FlexWrapper","description","Cross","LinkEllipsis","NavLink","isExternal","DisconnectButton","button","MemoizedRelationsField","MemoizedUnstableRelationsField","uidApi","contentManagerApi","injectEndpoints","endpoints","builder","getDefaultUID","config","transformResponse","response","generateUID","mutation","getAvailability","providesTags","_res","_error","contentTypeUID","useGenerateUIDMutation","useGetDefaultUIDQuery","useGetAvailabilityQuery","UID_REGEX","UIDInput","allFormValues","availability","setAvailability","showRegenerate","setShowRegenerate","isCloning","useMatch","CLONE_PATH","debouncedValue","hasChanged","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","defaultGeneratedUID","isGeneratingDefaultUID","apiError","isGeneratingUID","handleRegenerateClick","res","err","availabilityData","isCheckingAvailability","availabilityError","test","timer","isAvailable","window","setTimeout","clearTimeout","shouldShowAvailability","endAction","TextValidation","$available","data-not-here-outer","pointerEvents","CheckCircle","FieldActionWrapper","onMouseEnter","LoadingWrapper","data-testid","Action","neutral400","success600","rotation","keyframes","MemoizedUIDInput","md","Markdown","html","xhtmlOut","breaks","langPrefix","linkify","typographer","highlight","str","getLanguage","utils","escapeHtml","highlightAuto","use","abbr","container","deflist","emoji","footnote","ins","mark","sub","sup","renderer","rules","footnote_ref","idx","env","slf","caption","footnote_caption","footnote_anchor","PreviewWysiwyg","sanitizeHtml","render","replaceAll","defaults","allowedTags","allowedAttributes","source","dangerouslySetInnerHTML","__html","listRE","emptyListRE","unorderedListRE","newlineAndIndentContinueMarkdownList","cm","getOption","CodeMirror","Pass","listSelections","replacements","i","pos","head","eolState","getStateAfter","line","inList","list","inQuote","getLine","exec","cursorBeforeBullet","ch","empty","execCommand","endOfQuote","endOfList","replaceRange","indent","after","numbered","indexOf","bullet","parseInt","replace","incrementRemainingMarkdownListNumbers","replaceSelections","startLine","lookAhead","skipCount","startItem","startIndent","nextLineNumber","nextLine","nextItem","nextIndent","newNumber","nextNumber","itemNumber","isNaN","editorRef","isPreviewMode","isExpandMode","textareaRef","onChangeRef","toTextArea","fromTextArea","lineWrapping","extraKeys","Enter","Tab","smartIndent","spellcheck","inputStyle","commands","on","doc","getValue","hasFocus","setValue","setOption","getInputField","scrollIntoView","args","EditorAndPreviewWrapper","EditorStylesContainer","$isExpandMode","textarea","previewContent","BoxWithBorder","ExpandButton","floor","padStart","neutral700","replaceText","markdownName","textToChange","editedText","insertListOrTitle","markdown","textToInsert","markdownHandler","markdownType","textToEdit","getSelection","replaceSelection","getCursor","endSelection","startSelection","setSelection","listHandler","listType","getDoc","insertion","somethingSelected","selections","lineInsertion","currentLine","listToInsert","lineContent","titleHandler","titleType","titleToInsert","lineWithNoTitle","newLastLineLength","setCursor","insertFile","files","file","contentLength","mime","insertWithTextToEdit","contentToMove","getRange","newLine","insertWithoutTextToEdit","quoteAndCodeHandler","IconButtonGroup","WysiwygFooter","onToggleExpand","WysiwygNav","onToggleMediaLib","onTogglePreviewMode","handleActionClick","currentEditorRef","Wysiwyg","setIsPreviewMode","mediaLibVisible","setMediaLibVisible","setIsExpandMode","handleToggleMediaLib","handleTogglePreviewMode","formattedFiles","f","MemoizedWysiwyg","visible","providedHint","rootId","documentLayout","isFormDisabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","editableFields","readableFields","canUserReadField","canUserEditField","fields","app","attributeHasCustomFieldProperty","useFieldHint","rootDocumentComponents","useDocLayout","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","ComponentInput","inputProps","strapi","future","isEnabled","UnstableRelationsInput","enum","_mainField","restProps","maximum","minimum","getMinMax","units","maxValue","hasMinAndMax","divider","br","Number","maxLength","minLength","MemoizedInputRenderer","process","NODE_ENV","panel","gridRowIndex","NonRepeatableComponent","isNested","completeFieldName","translatedLabel","RepeatableComponent","searchString","useLocation","URLSearchParams","hasNestedErrors","isArray","hasNestedValue","errorOpenItems","componentTmpKeyWithFocussedField","has","fieldParam","subpath","prevValue","usePrev","toggleCollapses","handleMoveComponentField","handleValueChange","AccordionRoot","$error","nameWithIndex","Component","onDeleteComponent","TextButtonCustom","Plus","dragProps","displayValue","accordionRef","componentKey","COMPONENT","onStart","composedAccordionRefs","StyledSpan","showResetComponent","repeatable","handleInitialisationClick","MemoizedComponentInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,CAACA,gBAAAA,EAAkBC,kBAAmB,CAAA,GAC1CC,yBAAoC,CAAA,iBAAA,CAAA;AAEtC;;;;;;;;;;AAUC,UACKC,uBAA0B,GAAA,CAAC,EAC/BC,QAAQ,EACRC,eAAe,EAIhB,GAAA;AACC;;;AAGC,MACD,MAAM,CAACC,mBAAAA,EAAqBC,eAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAeJ,eAAAA,CAAAA;AAC3E,IAAA,MAAMK,WAAWC,iBAAYL,CAAAA,mBAAAA,CAAAA;AAE7B,IAAA,qBACEM,cAACZ,CAAAA,gBAAAA,EAAAA;QACCO,cAAgBA,EAAAA,cAAAA;QAChBG,QAAUA,EAAAA,QAAAA;QACVG,IAAMP,EAAAA,mBAAAA;AAELF,QAAAA,QAAAA,EAAAA;;AAGP;;AC/DA,MAAMU,iBAAiB,IAAIC,GAAAA,EAAAA;AAY3B;;AAEC,IACKC,MAAAA,iBAAAA,GAAoB,CAACC,aAAAA,GAA0B,EAAE,GAAA;AACrD,IAAA,MAAM,CAACC,kBAAoBC,EAAAA,qBAAAA,CAAsB,GAAGV,cAASW,CAAAA,MAAAA,CAAOC,WAAW,CAACP,cAAAA,CAAAA,CAAAA;AAChF;;;MAIA,MAAMQ,OAAUL,GAAAA,aAAAA,CAAcM,MAAM,CAAC,CAACC,GAAQ,GAAA,CAACV,cAAeW,CAAAA,GAAG,CAACD,GAAAA,CAAAA,CAAAA;IAClE,MAAM,CAACE,SAASC,UAAW,CAAA,GAAGlB,eAAS,IAAM,CAAC,CAACa,OAAAA,CAAQM,MAAM,CAAA;IAC7D,MAAMC,cAAAA,GAAiBC,yBAAa,mBAAqB,EAAA,CAACC,QAAUA,KAAMC,CAAAA,YAAY,CAACP,GAAG,CAAA;IAE1FQ,eAAU,CAAA,IAAA;AACR,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBhB,qBAAsBgB,CAAAA,KAAAA,CAAAA;YACtBR,UAAW,CAAA,KAAA,CAAA;AACb,SAAA;QAEA,MAAMS,kBAAAA,GAAqB,OACzBC,IACAC,EAAAA,UAAAA,GAAAA;AAEA,YAAA,MAAMC,OAAU,GAAA,MAAMC,OAAQC,CAAAA,GAAG,CAACH,UAAAA,CAAAA;YAElCD,IAAKK,CAAAA,OAAO,CAAC,CAAClB,GAAKmB,EAAAA,KAAAA,GAAAA;AACjB7B,gBAAAA,cAAAA,CAAe8B,GAAG,CAACpB,GAAAA,EAAKe,OAAO,CAACI,KAAAA,CAAM,CAACE,OAAO,CAAA;AAChD,aAAA,CAAA;YAEAX,QAASd,CAAAA,MAAAA,CAAOC,WAAW,CAACP,cAAAA,CAAAA,CAAAA;AAC9B,SAAA;QAEA,IAAIQ,OAAAA,CAAQM,MAAM,GAAG,CAAG,EAAA;YACtBD,UAAW,CAAA,IAAA,CAAA;AAEX,YAAA,MAAMmB,iBAAoBxB,GAAAA,OAAAA,CAAQyB,MAAM,CAEtC,CAACC,eAAiBxB,EAAAA,GAAAA,GAAAA;AAClB,gBAAA,MAAMyB,cAAcpB,cAAeL,CAAAA,GAAAA,CAAAA;AAEnC,gBAAA,IAAIyB,WAAa,EAAA;AACfD,oBAAAA,eAAAA,CAAgBE,IAAI,CAACD,WAAYX,CAAAA,UAAU,CAACa,KAAK,EAAA,CAAA;AACnD;gBAEA,OAAOH,eAAAA;AACT,aAAA,EAAG,EAAE,CAAA;YAEL,IAAIF,iBAAAA,CAAkBlB,MAAM,GAAG,CAAG,EAAA;AAChCQ,gBAAAA,kBAAAA,CAAmBd,OAASwB,EAAAA,iBAAAA,CAAAA;AAC9B;AACF;KACC,EAAA;AAACxB,QAAAA,OAAAA;AAASO,QAAAA;AAAe,KAAA,CAAA;AAE5B;;;MAIA,MAAMuB,UAAUC,iBAAY,CAAA,IAAA;AAC1BvC,QAAAA,cAAAA,CAAewC,KAAK,EAAA;AACpBnC,QAAAA,qBAAAA,CAAsB,EAAC,CAAA;AACzB,KAAA,EAAG,EAAE,CAAA;IAEL,OAAO;QAAEoC,aAAe7B,EAAAA,OAAAA;AAASR,QAAAA,kBAAAA;AAAoBkC,QAAAA;AAAQ,KAAA;AAC/D;;AC/EO,MAAMI,aAIP,GAAA;AACJ,IAAA;QACEC,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA,UAAA;QACPC,QAAU,EAAA;AACZ,KAAA;AACA,IAAA;QACEF,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,GAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,SAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,YAAA;QACPC,KAAO,EAAA,YAAA;QACPC,QAAU,EAAA;AACZ,KAAA;AACA,IAAA;QACEF,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,SAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,IAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,SAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,SAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,YAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,UAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,UAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,YAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,WAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,YAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,GAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,QAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,YAAA;QACPC,KAAO,EAAA,YAAA;QACPC,QAAU,EAAA;AACZ,KAAA;AACA,IAAA;QACEF,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,OAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA;AACT,KAAA;AACA,IAAA;QACED,KAAO,EAAA,MAAA;QACPC,KAAO,EAAA,MAAA;QACPC,QAAU,EAAA;AACZ;CACD;;AC3ND;;;IAIA,MAAMC,iBAAoB,GAAA,CACxBC,MACAC,EAAAA,eAAAA,GAAAA;;IAGA,MAAM,CAACC,GAAGC,YAAa,CAAA,GAAGC,aAAOC,IAAI,CAACL,QAAQ,EAAE,CAAA;;IAGhDM,gBAAWC,CAAAA,WAAW,CAACP,MAAQ,EAAA;QAC7BQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;QACzDC,KAAO,EAAA,IAAA;QACPC,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,IAAIX;AAC1B,KAAA,CAAA;;AAGA,IAAA,MAAM,GAAGY,mBAAoB,CAAA,GAAGX,aAAOC,IAAI,CAACL,QAAQ,EAAE,CAAA;AACtD,IAAA,MAAMgB,KAAQZ,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;AACjCQ,QAAAA,KAAAA,EAAO,CAACC,IAAAA,GAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAASA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK,MAAUF,IAAAA,IAAAA,CAAKE,IAAI,KAAK,MAAA;QACjFE,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,IAAIC;AAC1B,KAAA,CAAA;IAEA,IAAI,CAACC,SAASZ,YAAOM,CAAAA,QAAQ,CAACM,KAAK,CAAC,EAAE,CAAG,EAAA;AACvC,QAAA;AACF;IAEA,MAAM,CAACE,OAASC,EAAAA,WAAAA,CAAY,GAAGH,KAAAA;IAE/BV,gBAAWc,CAAAA,QAAQ,CACjBpB,MACA,EAAA;AACE,QAAA,GAAGqB,qBAAqBH,OAAQ,CAAA;AAChC,QAAA,GAAGjB;KAEL,EAAA;QAAEY,EAAIM,EAAAA;AAAY,KAAA,CAAA;IAGpB,OAAOA,WAAAA;AACT,CAAA;AAEA;;IAGA,MAAME,uBAAuB,CAACH,OAAAA,GAAAA;IAC5B,MAAM,EAAE3E,UAAU+E,SAAS,EAAEX,MAAMY,KAAK,EAAE,GAAGC,KAAAA,EAAO,GAAGN,OAAAA;IAEvD,MAAMO,iBAAAA,GAAoBlE,MAAOmE,CAAAA,IAAI,CAACF,KAAAA,CAAAA,CAAOtC,MAAM,CACjD,CAACyC,iBAAmBC,EAAAA,GAAAA,IAAS;AAAE,YAAA,GAAGD,iBAAiB;AAAE,YAAA,CAACC,MAAM;AAAK,SAAA,GACjE,EAAC,CAAA;IAGH,OAAOH,iBAAAA;AACT,CAAA;;ACvDA,MAAMI,WAAS,CAACpB,IAAAA,GAAAA;IACd,OAAOqB,UAAAA,CAAKC,MAAM,CAACtB,IAAS,CAAA,IAAA,CAACL,YAAOM,CAAAA,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;AACtE,CAAA;AAEA;;IAGA,MAAMqB,wBAAwB,CAAChC,MAAAA,GAAAA;AAC7B;;;;AAIC,MACD,MAAMiC,SAAAA,GAAY7B,YAAOa,CAAAA,KAAK,CAACjB,MAAQ,EAAA;AACrCQ,QAAAA,KAAAA,EAAO,CAACC,IAAS,GAAA,CAACL,aAAOM,QAAQ,CAACD,SAAS,CAAC;AAAC,gBAAA,MAAA;AAAQ,gBAAA;aAAO,CAACyB,QAAQ,CAACzB,IAAAA,CAAKE,IAAI;AACjF,KAAA,CAAA;AACA,IAAA,IAAI,CAACsB,SAAAA,IAAa,CAACjC,MAAAA,CAAOc,SAAS,EAAE;AACnC,QAAA;AACF;IACA,MAAM,CAACL,IAAM0B,EAAAA,QAAAA,CAAS,GAAGF,SAAAA;IACzB,MAAMG,SAAAA,GAAYhC,aAAOiC,KAAK,CAACrC,QAAQA,MAAOc,CAAAA,SAAS,CAACwB,MAAM,EAAEH,QAAAA,CAAAA;AAChE,IAAA,MAAMI,eAAe9B,IAAKlE,CAAAA,QAAQ,CAACsE,EAAE,CAAC,CAAC,CAAA,CAAA;AACvC,IAAA,MAAM2B,cAAcX,QAAOU,CAAAA,YAAAA,CAAAA,IAAiBA,aAAaE,IAAI,CAACC,QAAQ,CAAC,IAAA,CAAA;AAEvE,IAAA,IAAIN,aAAaI,WAAa,EAAA;;QAE5BlC,gBAAWqC,CAAAA,MAAM,CAAC3C,MAAQ,EAAA;YAAE4C,QAAU,EAAA,CAAA;YAAGC,IAAM,EAAA,WAAA;YAAaC,OAAS,EAAA;AAAK,SAAA,CAAA;;QAE1ExC,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAQ,EAAA;YAC7BW,IAAM,EAAA,WAAA;YACNpE,QAAU,EAAA;AAAC,gBAAA;oBAAEoE,IAAM,EAAA,MAAA;oBAAQ8B,IAAM,EAAA;AAAG;AAAE;AACxC,SAAA,CAAA;AACA,QAAA;AACF;;IAGAnC,gBAAW0C,CAAAA,UAAU,CAAChD,MAAQ,EAAA,IAAA,CAAA;;AAG9B,IAAA,IAAIoC,SAAW,EAAA;AACb,QAAA;AAAC,YAAA,MAAA;AAAQ,YAAA,QAAA;AAAU,YAAA,WAAA;AAAa,YAAA,eAAA;AAAiB,YAAA;SAAO,CAACvD,OAAO,CAAC,CAACoE,QAAAA,GAAAA;YAChE7C,YAAO8C,CAAAA,UAAU,CAAClD,MAAQiD,EAAAA,QAAAA,CAAAA;AAC5B,SAAA,CAAA;AACF;AACF,CAAA;;ACuBO,MAAME,YAAAA,GAAe,CAAC,CAAC1C,MAAM2C,IAAgB,CAAA,GAAA;AAClD,IAAA,MAAMC,SAA4B,EAAE;;IAGpC,IAAI,CAACC,cAAQC,SAAS,CAAC9C,SAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA,EAAQ,OAAO0C,MAAAA;;IAE7D,MAAMZ,IAAAA,GAAOX,UAAK0B,CAAAA,MAAM,CAAC/C,IAAAA,CAAAA;IACzB,MAAMgD,QAAAA,GAAW9D,aAAc+D,CAAAA,IAAI,CAAC,CAACC,OAASA,IAAK/D,CAAAA,KAAK,KAAKa,IAAAA,CAAKgD,QAAQ,CAAA;IAC1E,MAAMG,WAAAA,GAAcH,QAAU3D,EAAAA,QAAAA,IAAY2D,QAAU7D,EAAAA,KAAAA;AAEpD,IAAA,MAAMiE,gBAAmBC,GAAAA,gBAAAA,CAAMC,SAAS,CAACH,eAAe,WAAY,CAAA;;AAGpE,IAAA,MAAMI,MAASF,GAAAA,gBAAAA,CAAMG,QAAQ,CAACxB,IAAMoB,EAAAA,gBAAAA,CAAAA;AACpC,IAAA,IAAIK,KAAQ,GAAA,CAAA;IACZ,KAAK,MAAMC,SAASH,MAAQ,CAAA;QAC1B,MAAMjG,MAAAA,GAASoG,MAAMpG,MAAM;AAC3B,QAAA,MAAMqG,MAAMF,KAAQnG,GAAAA,MAAAA;QACpB,IAAI,OAAOoG,UAAU,QAAU,EAAA;AAC7Bd,YAAAA,MAAAA,CAAOhE,IAAI,CAAC;gBACViD,MAAQ,EAAA;AAAEc,oBAAAA,IAAAA;oBAAMiB,MAAQH,EAAAA;AAAM,iBAAA;gBAC9BI,KAAO,EAAA;AAAElB,oBAAAA,IAAAA;oBAAMiB,MAAQD,EAAAA;AAAI,iBAAA;AAC3BG,gBAAAA,SAAAA,EAAW,CAAC,MAAM,EAAEJ,KAAMxD,CAAAA,IAAI,CAAC;AACjC,aAAA,CAAA;AACF;QACAuD,KAAQE,GAAAA,GAAAA;AACV;;IAGA,OAAOf,MAAAA;AACT,CAAE;AAEF,MAAMmB,SAAAA,GAAYC,uBAAOC,CAAAA,GAAG;AACX,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;oBACjC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC;;;WAGlD,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAMI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAEJ,KAAMI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;;;;;;WAMzD,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC;;;;AAIpD,CAAC;AAED,MAAMC,aAAa,CAACC,KAAAA,GAAAA;AAClB,IAAA,MAAM,EAAElF,MAAM,EAAE,GAAGmF,sBAAuB,CAAA,aAAA,CAAA;AAC1C,IAAA,MAAMC,eAAkBC,GAAAA,qBAAAA,EAAAA;AACxB,IAAA,MAAMC,eAAkBC,GAAAA,sBAAAA,EAAAA;IACxB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,YAAcC,EAAAA,eAAAA,CAAgB,GAAGhJ,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvD,MAAMgJ,2BAAAA,GAA8B,eAACR,IAAmBE,eAAoBI,IAAAA,YAAAA;AAE5E,IAAA,qBACEG,eAACC,CAAAA,gBAAAA,EAAAA;QAAIC,QAAS,EAAA,UAAA;QAAWC,KAAM,EAAA,MAAA;;0BAC7BjJ,cAACyH,CAAAA,SAAAA,EAAAA;AAAW,gBAAA,GAAGU,MAAMe,UAAU;AAC7B,gBAAA,QAAA,gBAAAlJ,cAACmJ,CAAAA,MAAAA,EAAAA;AAAMhB,oBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;;AAEdqJ,YAAAA,2BAAAA,kBACC7I,cAAC+I,CAAAA,gBAAAA,EAAAA;gBACCC,QAAS,EAAA,UAAA;gBACTI,UAAW,EAAA,UAAA;gBACXC,WAAY,EAAA,YAAA;gBACZC,WAAY,EAAA,OAAA;gBACZC,WAAY,EAAA,OAAA;gBACZC,MAAO,EAAA,aAAA;gBACPC,GAAI,EAAA,MAAA;gBACJC,SAAW,EAAA,CAAA;gBACXC,KAAO,EAAA,CAAA;gBACPC,OAAS,EAAA,CAAA;gBACTC,SAAS,EAAA,IAAA;AAET,gBAAA,QAAA,gBAAA7J,cAAC8J,CAAAA,yBAAAA,EAAAA;AACCC,oBAAAA,QAAAA,EAAU,CAACC,IAAAA,GAAAA;wBACTzG,gBAAWc,CAAAA,QAAQ,CACjBpB,MACA,EAAA;AAAEyD,4BAAAA,QAAAA,EAAUsD,KAAKC,QAAQ;yBACzB,EAAA;4BAAExG,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAAO,yBAAA,CAAA;AAEtE,qBAAA;oBACAf,KAAO,EAACsF,KAAMhE,CAAAA,OAAO,CAACP,IAAI,KAAK,MAAA,IAAUuE,KAAMhE,CAAAA,OAAO,CAACuC,QAAQ,IAAK,WAAA;AACpEwD,oBAAAA,YAAAA,EAAc,CAACF,IAAAA,GAAAA;wBACbpB,eAAgBoB,CAAAA,IAAAA,CAAAA;;AAGhB,wBAAA,IAAI,CAACA,IAAM,EAAA;AACTG,4BAAAA,sBAAAA,CAAY5C,KAAK,CAACtE,MAAAA,CAAAA;AACpB;AACF,qBAAA;oBACAmH,gBAAkB,EAAA,CAACC,CAAMA,GAAAA,CAAAA,CAAEC,cAAc,EAAA;AACzCC,oBAAAA,YAAAA,EAAY9B,aAAc,CAAA;wBACxB+B,EAAI,EAAA,6CAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;8BAEC7H,aAAc8H,CAAAA,GAAG,CAAC,CAAC,EAAE7H,KAAK,EAAEC,KAAK,EAAE,iBAClC9C,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAOA,EAAAA,KAAAA;AACxBC,4BAAAA,QAAAA,EAAAA;AADoCD,yBAAAA,EAAAA,KAAAA,CAAAA;;;;;AASrD,CAAA;AAEA,MAAM+H,UAAwC,GAAA;IAC5CzB,IAAM,EAAA;QACJ0B,aAAe,EAAA,CAAC1C,sBAAUnI,cAACkI,CAAAA,UAAAA,EAAAA;AAAY,gBAAA,GAAGC;;QAC1C2C,IAAMC,EAAAA,eAAAA;QACNjI,KAAO,EAAA;YACL0H,EAAI,EAAA,+BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAO,QAAAA,SAAAA,EAAW,CAACtH,IAAAA,GAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;QACnCqH,kBAAoB,EAAA,IAAA;AACpBC,QAAAA,aAAAA,CAAAA,CAAcjI,MAAM,EAAA;AAClBD,YAAAA,iBAAAA,CAAiCC,MAAQ,EAAA;gBAAEW,IAAM,EAAA,MAAA;gBAAQ8C,QAAU,EAAA;AAAY,aAAA,CAAA;AACjF,SAAA;AACAyE,QAAAA,cAAAA,CAAAA,CAAelI,MAAM,EAAA;YACnBgC,qBAAsBhC,CAAAA,MAAAA,CAAAA;AACxB,SAAA;QACAmI,QAAU,EAAA;AAAC,YAAA;AAAM;AACnB;AACF,CAAA;;ACpLA,MAAMC,EAAK3D,GAAAA,uBAAAA,CAAkC4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,GAAK,EAAA;AAAK,CAAA,CAAE;;eAE9D,EAAE,CAAC,EAAE5D,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;AACrD,CAAC;AAED,MAAMC,EAAKhE,GAAAA,uBAAAA,CAAkC4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,GAAK,EAAA;AAAK,CAAA,CAAE;;eAE9D,EAAE,CAAC,EAAE5D,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;AACrD,CAAC;AAED,MAAME,EAAKjE,GAAAA,uBAAAA,CAAkC4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,GAAK,EAAA;AAAK,CAAA,CAAE;;eAE9D,EAAE,CAAC,EAAE5D,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;AACrD,CAAC;AAED,MAAMG,EAAKlE,GAAAA,uBAAAA,CAAkC4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,GAAK,EAAA;AAAK,CAAA,CAAE;;eAE9D,EAAE,CAAC,EAAE5D,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;AACrD,CAAC;AAED,MAAMI,EAAKnE,GAAAA,uBAAAA,CAAkC4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,GAAK,EAAA;AAAK,CAAA,CAAE;;eAE9D,EAAE,CAAC,EAAE5D,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;AACrD,CAAC;AAED,MAAMK,EAAKpE,GAAAA,uBAAAA,CAAkC4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,GAAK,EAAA;AAAK,CAAA,CAAE;;eAE9D,EAAE,CAAC,EAAE5D,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;AACrD,CAAC;AAED;;IAGA,MAAMM,sBAAyB,GAAA,CAAC9I,MAAgB+I,EAAAA,KAAAA,GAAAA;AAC9ChJ,IAAAA,iBAAAA,CAAoCC,MAAQ,EAAA;QAAEW,IAAM,EAAA,SAAA;AAAWoI,QAAAA;AAAM,KAAA,CAAA;AACvE,CAAA;AAEA,MAAMC,aAGF,GAAA;IACF,aAAe,EAAA;QACbpB,aAAe,EAAA,CAAC1C,sBAAUnI,cAACqL,CAAAA,EAAAA,EAAAA;AAAI,gBAAA,GAAGlD,MAAMe,UAAU;AAAGf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAC3DsL,IAAMoB,EAAAA,gBAAAA;QACNpJ,KAAO,EAAA;YACL0H,EAAI,EAAA,mCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAS,aAAe,EAAA,CAACjI,MAAW8I,GAAAA,sBAAAA,CAAuB9I,MAAQ,EAAA,CAAA,CAAA;QAC1D+H,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,SAAaF,IAAAA,IAAAA,CAAKsI,KAAK,KAAK,CAAA;QAC/Df,kBAAoB,EAAA,IAAA;QACpBG,QAAU,EAAA;AAAC,YAAA;AAAI,SAAA;QACfe,mBAAqB,EAAA;AACvB,KAAA;IACA,aAAe,EAAA;QACbtB,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC0L,CAAAA,EAAAA,EAAAA;AAAI,gBAAA,GAAGvD,MAAMe,UAAU;AAAGf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAC3DsL,IAAMsB,EAAAA,gBAAAA;QACNtJ,KAAO,EAAA;YACL0H,EAAI,EAAA,mCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAS,aAAe,EAAA,CAACjI,MAAW8I,GAAAA,sBAAAA,CAAuB9I,MAAQ,EAAA,CAAA,CAAA;QAC1D+H,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,SAAaF,IAAAA,IAAAA,CAAKsI,KAAK,KAAK,CAAA;QAC/Df,kBAAoB,EAAA,IAAA;QACpBG,QAAU,EAAA;AAAC,YAAA;AAAK,SAAA;QAChBe,mBAAqB,EAAA;AACvB,KAAA;IACA,eAAiB,EAAA;QACftB,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC2L,CAAAA,EAAAA,EAAAA;AAAI,gBAAA,GAAGxD,MAAMe,UAAU;AAAGf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAC3DsL,IAAMuB,EAAAA,kBAAAA;QACNvJ,KAAO,EAAA;YACL0H,EAAI,EAAA,mCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAS,aAAe,EAAA,CAACjI,MAAW8I,GAAAA,sBAAAA,CAAuB9I,MAAQ,EAAA,CAAA,CAAA;QAC1D+H,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,SAAaF,IAAAA,IAAAA,CAAKsI,KAAK,KAAK,CAAA;QAC/Df,kBAAoB,EAAA,IAAA;QACpBG,QAAU,EAAA;AAAC,YAAA;AAAM,SAAA;QACjBe,mBAAqB,EAAA;AACvB,KAAA;IACA,cAAgB,EAAA;QACdtB,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC4L,CAAAA,EAAAA,EAAAA;AAAI,gBAAA,GAAGzD,MAAMe,UAAU;AAAGf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAC3DsL,IAAMwB,EAAAA,iBAAAA;QACNxJ,KAAO,EAAA;YACL0H,EAAI,EAAA,mCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAS,aAAe,EAAA,CAACjI,MAAW8I,GAAAA,sBAAAA,CAAuB9I,MAAQ,EAAA,CAAA,CAAA;QAC1D+H,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,SAAaF,IAAAA,IAAAA,CAAKsI,KAAK,KAAK,CAAA;QAC/Df,kBAAoB,EAAA,IAAA;QACpBG,QAAU,EAAA;AAAC,YAAA;AAAO,SAAA;QAClBe,mBAAqB,EAAA;AACvB,KAAA;IACA,cAAgB,EAAA;QACdtB,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC6L,CAAAA,EAAAA,EAAAA;AAAI,gBAAA,GAAG1D,MAAMe,UAAU;AAAGf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAC3DsL,IAAMyB,EAAAA,iBAAAA;QACNzJ,KAAO,EAAA;YACL0H,EAAI,EAAA,mCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAS,aAAe,EAAA,CAACjI,MAAW8I,GAAAA,sBAAAA,CAAuB9I,MAAQ,EAAA,CAAA,CAAA;QAC1D+H,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,SAAaF,IAAAA,IAAAA,CAAKsI,KAAK,KAAK,CAAA;QAC/Df,kBAAoB,EAAA,IAAA;QACpBG,QAAU,EAAA;AAAC,YAAA;AAAQ;AACrB,KAAA;IACA,aAAe,EAAA;QACbP,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC8L,CAAAA,EAAAA,EAAAA;AAAI,gBAAA,GAAG3D,MAAMe,UAAU;AAAGf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAC3DsL,IAAM0B,EAAAA,gBAAAA;QACN1J,KAAO,EAAA;YACL0H,EAAI,EAAA,mCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAS,aAAe,EAAA,CAACjI,MAAW8I,GAAAA,sBAAAA,CAAuB9I,MAAQ,EAAA,CAAA,CAAA;QAC1D+H,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,SAAaF,IAAAA,IAAAA,CAAKsI,KAAK,KAAK,CAAA;QAC/Df,kBAAoB,EAAA,IAAA;QACpBG,QAAU,EAAA;AAAC,YAAA;AAAS,SAAA;QACpBe,mBAAqB,EAAA;AACvB;AACF,CAAA;;ACzHA,MAAMM,YAAAA,GAAe/E,uBAAsBgF,CAAAA,iBAAAA,CAA+B;;;AAGxE,EAAA,EAAE,CAACvE,KACDA,GAAAA,KAAAA,CAAMwE,UAAU,IAChBC,oBAAG;AACW,kBAAA,EAAEzE,MAAMP,KAAK,CAACE,MAAM,CAAC+E,UAAU,CAAC;AAC9C,IAAA,CAAC;;;;;;;;;AASL,CAAC;AAED,MAAMC,mBAAsB,GAAA;AAC1B,IAAA,MAAA;AACA,IAAA,iBAAA;AACA,IAAA,KAAA;AACA,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,MAAA;AACA,IAAA,YAAA;AACA,IAAA,UAAA;AACA,IAAA,mBAAA;AACA,IAAA,WAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,IAAAA,GAAO,CAAsCC,MAAWrI,EAAAA,IAAAA,GAAAA;AAC5D,IAAA,MAAMsI,OAAUtI,GAAAA,IAAAA,CAAK+F,GAAG,CAAC,CAAC7F,GAAQ,GAAA;AAACA,YAAAA,GAAAA;AAAKmI,YAAAA,MAAM,CAACnI,GAAI;AAAC,SAAA,CAAA;IACpD,OAAOrE,MAAAA,CAAOC,WAAW,CAACwM,OAAAA,CAAAA;AAC5B,CAAA;AAEA;AACA,MAAMC,UAAU,CAAC/I,OAAAA,GAAAA;IACf,OAAOA,OAAAA,CAAQP,IAAI,KAAK,OAAA;AAC1B,CAAA;AAEA;AACA,MAAMuJ,KAAAA,GAAQ,CAAC,EAAEjE,UAAU,EAAE1J,QAAQ,EAAE2E,OAAO,EAAsB,GAAA;AAClE,IAAA,MAAMkE,eAAkBC,GAAAA,qBAAAA,EAAAA;AACxB,IAAA,MAAMC,eAAkBC,GAAAA,sBAAAA,EAAAA;IAExB,IAAI,CAAC0E,QAAQ/I,OAAU,CAAA,EAAA;QACrB,OAAO,IAAA;AACT;IACA,MAAM,EAAEiJ,GAAG,EAAEC,eAAe,EAAEpE,KAAK,EAAEqE,MAAM,EAAE,GAAGnJ,OAAAA,CAAQoJ,KAAK;AAE7D,IAAA,qBACEzE,eAACC,CAAAA,gBAAAA,EAAAA;AAAK,QAAA,GAAGG,UAAU;;AAChB1J,YAAAA,QAAAA;0BACDQ,cAACyM,CAAAA,YAAAA,EAAAA;gBACCrD,UAAW,EAAA,YAAA;gBACXoE,eAAiB,EAAA,KAAA;gBACjBC,cAAe,EAAA,QAAA;AACfd,gBAAAA,UAAAA,EAAYtE,eAAmBE,IAAAA,eAAAA;gBAC/BsB,SAAS,EAAA,IAAA;AAET,gBAAA,QAAA,gBAAA7J,cAAC0N,CAAAA,KAAAA,EAAAA;oBAAIC,GAAKP,EAAAA,GAAAA;oBAAKQ,GAAKP,EAAAA,eAAAA;oBAAiBpE,KAAOA,EAAAA,KAAAA;oBAAOqE,MAAQA,EAAAA;;;;;AAInE,CAAA;AAEA,MAAMO,WAAc,GAAA,IAAA;AAClB,IAAA,MAAM,CAACC,MAAQC,EAAAA,SAAAA,CAAU,GAAGnO,gBAAAA,CAAMC,QAAQ,CAAC,IAAA,CAAA;AAC3C,IAAA,MAAM,EAAEoD,MAAM,EAAE,GAAGmF,sBAAuB,CAAA,aAAA,CAAA;AAC1C,IAAA,MAAM1G,aAAaR,wBAAa,CAAA,aAAA,EAAe,CAACC,KAAAA,GAAUA,MAAMO,UAAU,CAAA;AAE1E,IAAA,IAAI,CAACA,UAAAA,IAAc,CAACoM,MAAAA,EAAQ,OAAO,IAAA;IAEnC,MAAME,kBAAAA,GAAqBtM,UAAU,CAAC,eAAgB,CAAA;AAMtD,IAAA,MAAMuM,eAAe,CAACC,MAAAA,GAAAA;;QAEpB3K,gBAAWC,CAAAA,WAAW,CAACP,MAAQ,EAAA;YAC7BQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;YACzDC,KAAO,EAAA;AACT,SAAA,CAAA;;;AAIA,QAAA,MAAMsK,sBAAyB9K,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;AAClDQ,YAAAA,KAAAA,CAAAA,CAAMC,IAAI,EAAA;AACR,gBAAA,IAAIL,YAAOM,CAAAA,QAAQ,CAACD,IAAAA,CAAAA,EAAO,OAAO,KAAA;AAElC,gBAAA,MAAM0K,YAAe,GAAA;AAAC,oBAAA,MAAA;AAAQ,oBAAA;iBAAO,CAACjJ,QAAQ,CAACzB,IAAAA,CAAKE,IAAI,CAAA;AAExD,gBAAA,OAAO,CAACwK,YAAAA;AACV;AACF,SAAA,CAAA;AAEA,QAAA,IAAI,CAACD,sBAAwB,EAAA;QAC7B,MAAM,GAAGE,aAAa,GAAGF,sBAAAA;;AAGzB5K,QAAAA,gBAAAA,CAAW+K,WAAW,CAACrL,MAAAA,CAAAA;;AAGvB,QAAA,MAAMsL,aAAgBL,GAAAA,MAAAA,CAAOxD,GAAG,CAAC,CAAC6C,KAAAA,GAAAA;AAChC,YAAA,MAAMiB,SAA4B,GAAA;gBAChC5K,IAAM,EAAA,OAAA;AACN2J,gBAAAA,KAAAA;gBACA/N,QAAU,EAAA;AAAC,oBAAA;wBAAEoE,IAAM,EAAA,MAAA;wBAAQ8B,IAAM,EAAA;AAAG;AAAE;AACxC,aAAA;YACA,OAAO8I,SAAAA;AACT,SAAA,CAAA;QACAjL,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAAA,EAAQsL,aAAe,EAAA;YAAEzK,EAAIuK,EAAAA;AAAa,SAAA,CAAA;;QAGjE9K,gBAAWkL,CAAAA,MAAM,CAACxL,MAAQoL,EAAAA,YAAAA,CAAAA;AAC5B,KAAA;AAEA,IAAA,MAAMK,qBAAqB,CAACR,MAAAA,GAAAA;AAC1B,QAAA,MAAMS,eAAkBT,GAAAA,MAAAA,CAAOxD,GAAG,CAAC,CAAC6C,KAAAA,GAAAA;;YAElC,MAAMqB,aAAAA,GAAgB7B,KAAKQ,KAAOT,EAAAA,mBAAAA,CAAAA;AAElC,YAAA,MAAM+B,SAAqC,GAAA;AACzC,gBAAA,GAAGD,aAAa;AAChBvB,gBAAAA,eAAAA,EAAiBuB,aAAcvB,CAAAA,eAAe,IAAIuB,aAAAA,CAAcE,IAAI;gBACpE1B,GAAK2B,EAAAA,mCAAAA,CAA4BxB,MAAMH,GAAG;AAC5C,aAAA;YAEA,OAAOyB,SAAAA;AACT,SAAA,CAAA;QAEAZ,YAAaU,CAAAA,eAAAA,CAAAA;QACbZ,SAAU,CAAA,KAAA,CAAA;AACZ,KAAA;AAEA,IAAA,qBACE/N,cAACgO,CAAAA,kBAAAA,EAAAA;QACCgB,YAAc,EAAA;AAAC,YAAA;AAAS,SAAA;AACxBC,QAAAA,OAAAA,EAAS,IAAMlB,SAAU,CAAA,KAAA,CAAA;QACzBmB,cAAgBR,EAAAA;;AAGtB,CAAA;AAEA,MAAMS,WAA0C,GAAA;IAC9C5B,KAAO,EAAA;QACL1C,aAAe,EAAA,CAAC1C,sBAAUnI,cAACmN,CAAAA,KAAAA,EAAAA;AAAO,gBAAA,GAAGhF;;QACrC2C,IAAMsE,EAAAA,WAAAA;QACNtM,KAAO,EAAA;YACL0H,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAO,QAAAA,SAAAA,EAAW,CAACtH,IAAAA,GAASA,IAAKE,CAAAA,IAAI,KAAK,OAAA;QACnCqH,kBAAoB,EAAA,IAAA;AACpBoE,QAAAA,kBAAAA,CAAAA,CAAmBpM,MAAM,EAAA;;AAEvB,YAAA,IAAIA,MAAOzD,CAAAA,QAAQ,CAACwB,MAAM,KAAK,CAAG,EAAA;gBAChCuC,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;oBAC1BW,IAAM,EAAA,WAAA;;oBAEN2J,KAAO,EAAA,IAAA;oBACP/N,QAAU,EAAA;AAAC,wBAAA;4BAAEoE,IAAM,EAAA,MAAA;4BAAQ8B,IAAM,EAAA;AAAG;AAAE;AACxC,iBAAA,CAAA;aACK,MAAA;AACLnC,gBAAAA,gBAAAA,CAAW+K,WAAW,CAACrL,MAAAA,CAAAA;AACzB;AACF,SAAA;AACAkI,QAAAA,cAAAA,CAAAA,CAAelI,MAAM,EAAA;YACnBM,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAQ,EAAA;gBAC7BW,IAAM,EAAA,WAAA;gBACNpE,QAAU,EAAA;AAAC,oBAAA;wBAAEoE,IAAM,EAAA,MAAA;wBAAQ8B,IAAM,EAAA;AAAG;AAAE;AACxC,aAAA,CAAA;AACF,SAAA;QACAwF,aAAe,EAAA,IAAA;AACb;;;;UAKA,OAAO,kBAAMlL,cAAC6N,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;AAChB,SAAA;QACAzC,QAAU,EAAA;AAAC,YAAA;AAAK;AAClB;AACF,CAAA;;AC3MA,MAAMkE,aAAa,CAACrM,MAAAA,GAAAA;IAClBM,gBAAWC,CAAAA,WAAW,CAACP,MAAQ,EAAA;AAC7BQ,QAAAA,KAAAA,EAAO,CAACC,IAAAA,GAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAS6L,CAAAA,IAAAA,aAAAA,CAAa/I,SAAS,CAAC9C,IAASA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK;AAC3F,KAAA,CAAA;AACF,CAAA;AAEA,MAAM4L,UAAa,GAAA,CAACvM,MAAgB,EAAA,EAAEmK,GAAG,EAAmB,GAAA;IAC1D,IAAInK,MAAAA,CAAOc,SAAS,EAAE;;AAEpB,QAAA,MAAM0L,YAAYC,KAAMC,CAAAA,IAAI,CAC1BtM,YAAOuM,CAAAA,KAAK,CAAC3M,MAAQ,EAAA;AACnBa,YAAAA,EAAAA,EAAIb,OAAOc,SAAS;YACpBN,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA,CAAA;AAGF6L,QAAAA,SAAAA,CAAU3N,OAAO,CAAC,CAAC,GAAGuE,IAAK,CAAA,GAAA;YACzB9C,gBAAWC,CAAAA,WAAW,CAACP,MAAQ,EAAA;gBAAEa,EAAIuC,EAAAA;AAAK,aAAA,CAAA;AAC5C,SAAA,CAAA;AAEA,QAAA,IAAIwJ,WAAMC,CAAAA,WAAW,CAAC7M,MAAAA,CAAOc,SAAS,CAAG,EAAA;AACvC,YAAA,MAAMgM,IAAsB,GAAA;gBAC1BnM,IAAM,EAAA,MAAA;AACNwJ,gBAAAA,GAAAA,EAAKA,GAAO,IAAA,EAAA;gBACZ5N,QAAU,EAAA;AAAC,oBAAA;wBAAEoE,IAAM,EAAA,MAAA;wBAAQ8B,IAAM0H,EAAAA;AAAI;AAAE;AACzC,aAAA;YAEA7J,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAQ8M,EAAAA,IAAAA,CAAAA;SAC1B,MAAA;YACLxM,gBAAWyM,CAAAA,SAAS,CAAC/M,MAAQ,EAAA;gBAAEW,IAAM,EAAA,MAAA;AAAQwJ,gBAAAA,GAAAA,EAAKA,GAAO,IAAA;aAAuB,EAAA;gBAC9EvJ,KAAO,EAAA;AACT,aAAA,CAAA;AACF;AACF;AACF,CAAA;AAEA,MAAMoM,QAAAA,GAAW,CAAChN,MAAgB8M,EAAAA,IAAAA,GAAAA;AAChC,IAAA,MAAM,EAAE3C,GAAG,EAAE1H,IAAI,EAAE,GAAGqK,IAAAA;IAEtB,IAAI,CAAC9M,MAAOc,CAAAA,SAAS,EAAE;AACrB,QAAA;AACF;AAEA,IAAA,MAAMmM,SAAY7M,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;QACrCQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,KAAA,CAAA;AAEA,IAAA,IAAIsM,SAAW,EAAA;QACb,MAAM,GAAGC,SAAS,GAAGD,SAAAA;QACrB3M,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;AAAEmK,YAAAA;SAAO,EAAA;YAAEtJ,EAAIqM,EAAAA;AAAS,SAAA,CAAA;;AAGpD,QAAA,IAAIzK,SAAS,EAAMA,IAAAA,IAAAA,KAASrC,aAAOoD,MAAM,CAACxD,QAAQkN,QAAW,CAAA,EAAA;YAC3D,MAAMC,iBAAAA,GAAoBV,MAAMC,IAAI,CAAC5K,WAAKvF,QAAQ,CAACyD,QAAQkN,QAAU,EAAA;gBAAEpK,OAAS,EAAA;AAAK,aAAA,CAAA,CAAA;AAErFqK,YAAAA,iBAAAA,CAAkBtO,OAAO,CAAC,CAAC,GAAGuO,SAAU,CAAA,GAAA;gBACtC9M,gBAAW+K,CAAAA,WAAW,CAACrL,MAAQ,EAAA;oBAAEa,EAAIuM,EAAAA;AAAU,iBAAA,CAAA;AACjD,aAAA,CAAA;YAEA9M,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAQ,EAAA;AAAC,gBAAA;oBAAEW,IAAM,EAAA,MAAA;AAAQ8B,oBAAAA;AAAK;aAAE,EAAE;gBAAE5B,EAAIqM,EAAAA,QAAAA,CAASG,MAAM,CAAC,CAAA;AAAG,aAAA,CAAA;AACpF;AACF;AACF,CAAA;;AC7DA;AACA,MAAMC,UAAa,GAAA,CAAmBvD,MACpCxM,GAAAA,MAAAA,CAAOyM,OAAO,CAACD,MAAAA,CAAAA;AAEjB;AACA,MAAMwD,OAAU,GAAA,CAAmBxD,MAAcxM,GAAAA,MAAAA,CAAOmE,IAAI,CAACqI,MAAAA,CAAAA;AAE7D,MAAMyD,aAAa,CAACtM,OAAAA,GAAAA;IAClB,OAAOA,OAAAA,CAAQP,IAAI,KAAK,MAAA;AAC1B,CAAA;AAEA,MAAM8M,eAAa,CAACvM,OAAAA,GAAAA;IAClB,OAAOA,OAAAA,CAAQP,IAAI,KAAK,MAAA;AAC1B,CAAA;;ACNA,MAAM+M,UAAAA,GAAajJ,uBAAOqB,CAAAA,gBAAAA,CAAI;;AAE9B,CAAC;AAED,MAAM6H,YAAAA,GAAelJ,uBAAOmJ,CAAAA,mBAAAA,CAA8B;AAC5C,cAAA,EAAE,CAAC1I,KAAWA,GAAAA,KAAAA,CAAM2I,QAAQ,GAAG,YAAY,QAAU,CAAA;AACnE,CAAC;AAMD,MAAMC,WAAcnR,iBAAAA,gBAAAA,CAAMoR,UAAU,CAClC,CAAC,EAAEjB,IAAI,EAAEvQ,QAAQ,EAAE0J,UAAU,EAAE,EAAE+H,YAAAA,GAAAA;IAC/B,MAAM,EAAExI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEzF,MAAM,EAAE,GAAGmF,sBAAuB,CAAA,MAAA,CAAA;AAC1C,IAAA,MAAM/B,IAAO8D,GAAAA,sBAAAA,CAAY+G,QAAQ,CAACjO,MAAQ8M,EAAAA,IAAAA,CAAAA;AAC1C,IAAA,MAAM,CAACoB,WAAaC,EAAAA,cAAAA,CAAe,GAAGxR,gBAAAA,CAAMC,QAAQ,CAClDoD,MAAAA,CAAOoO,oBAAoB,GAAGC,WAAKC,MAAM,CAAClL,IAAMpD,EAAAA,MAAAA,CAAOoO,oBAAoB,CAAI,GAAA,KAAA,CAAA;AAEjF,IAAA,MAAMG,WAAczB,GAAAA,IAAAA,CAAKvQ,QAAQ,CAACkL,GAAG,CAAC,CAAC+G,KAAAA,GAAUA,KAAM/L,CAAAA,IAAI,CAAEgM,CAAAA,IAAI,CAAC,EAAA,CAAA;AAClE,IAAA,MAAM,CAACC,QAAUC,EAAAA,WAAAA,CAAY,GAAGhS,gBAAAA,CAAMC,QAAQ,CAAC2R,WAAAA,CAAAA;IAC/C,MAAM,CAACK,SAASC,UAAW,CAAA,GAAGlS,iBAAMC,QAAQ,CAACkQ,KAAK3C,GAAG,CAAA;IACrD,MAAM2E,YAAAA,GAAenS,gBAAMoS,CAAAA,MAAM,CAAmB,IAAA,CAAA;IACpD,MAAMC,kBAAAA,GAAqBhP,MAAOoO,CAAAA,oBAAoB,GAClD,CAACC,UAAKC,CAAAA,MAAM,CAAClL,IAAAA,EAAMpD,MAAOoO,CAAAA,oBAAoB,CAC9C,GAAA,IAAA;AACJ,IAAA,MAAM,CAACa,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAGvS,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAE3D,IAAA,MAAMuS,eAAe,CAAC/H,CAAAA,GAAAA;QACpB8H,iBAAkB,CAAA,KAAA,CAAA;QAClBL,UAAWzH,CAAAA,CAAAA,CAAEgI,MAAM,CAACxP,KAAK,CAAA;QAEzB,IAAI;;YAEF,IAAIyP,GAAAA,CACFjI,EAAEgI,MAAM,CAACxP,KAAK,EAAE0P,UAAAA,CAAW,OAAO,CAAC,iBAAiB,EAAElI,CAAEgI,CAAAA,MAAM,CAACxP,KAAK,CAAC,CAAC,GAAGwH,CAAAA,CAAEgI,MAAM,CAACxP,KAAK,CAAA;AAE3F,SAAA,CAAE,OAAO2P,KAAO,EAAA;YACdL,iBAAkB,CAAA,IAAA,CAAA;AACpB;AACF,KAAA;AAEA,IAAA,MAAMM,aAAqC,CAACpI,CAAAA,GAAAA;AAC1CA,QAAAA,CAAAA,CAAEqI,eAAe,EAAA;;QAGjB,IAAIzP,MAAAA,CAAOc,SAAS,IAAI8L,WAAAA,CAAMC,WAAW,CAAC7M,MAAAA,CAAOc,SAAS,CAAG,EAAA;YAC3D,MAAM,GAAG4O,UAAW,CAAA,GAAGtP,YAAOuP,CAAAA,MAAM,CAAC3P,MAAAA,EAAQA,MAAOc,CAAAA,SAAS,CAACwD,KAAK,EAAElB,IAAAA,CAAAA;YACrE9C,gBAAWkL,CAAAA,MAAM,CAACxL,MAAQ0P,EAAAA,UAAAA,CAAAA;AAC5B;AAEA1C,QAAAA,QAAAA,CAAShN,MAAQ,EAAA;YAAEmK,GAAKyE,EAAAA,OAAAA;YAASnM,IAAMiM,EAAAA;AAAS,SAAA,CAAA;QAChDP,cAAe,CAAA,KAAA,CAAA;AACfnO,QAAAA,MAAAA,CAAOoO,oBAAoB,GAAG,IAAA;AAC9BlH,QAAAA,sBAAAA,CAAY5C,KAAK,CAACtE,MAAAA,CAAAA;AACpB,KAAA;AAEA,IAAA,MAAM4P,WAAc,GAAA,IAAA;QAClB,IAAI9C,IAAAA,CAAK3C,GAAG,KAAK,EAAI,EAAA;YACnBkC,UAAWrM,CAAAA,MAAAA,CAAAA;AACb;QAEAmO,cAAe,CAAA,KAAA,CAAA;AACfjH,QAAAA,sBAAAA,CAAY5C,KAAK,CAACtE,MAAAA,CAAAA;AACpB,KAAA;AAEArD,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;;QAEd,IAAI8P,WAAAA,EAAaY,YAAae,CAAAA,OAAO,EAAEvL,KAAAA,EAAAA;KACtC,EAAA;AAAC4J,QAAAA;AAAY,KAAA,CAAA;AAEhB,IAAA,MAAM4B,aACJ,GAAA,CAACpB,QACD,IAAA,CAACE,OACA9B,IAAAA,IAAAA,CAAK3C,GAAG,IAAI2C,IAAK3C,CAAAA,GAAG,KAAKyE,OAAAA,IAAWL,eAAeA,WAAgBG,KAAAA,QAAAA;IAEtE,qBACE7I,eAAA,CAACkK,qBAAQC,IAAI,EAAA;QAACjJ,IAAMmH,EAAAA,WAAAA;;AAClB,0BAAAnR,cAAA,CAACgT,qBAAQE,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAlT,cAAC2Q,CAAAA,UAAAA,EAAAA;AACE,oBAAA,GAAGzH,UAAU;oBACdiK,GAAKlC,EAAAA,YAAAA;oBACLzF,GAAI,EAAA,GAAA;AACJ4H,oBAAAA,IAAAA,EAAMrD,KAAK3C,GAAG;AACdiG,oBAAAA,OAAAA,EAAS,IAAMjC,cAAe,CAAA,IAAA,CAAA;oBAC9BkC,KAAM,EAAA,YAAA;AAEL9T,oBAAAA,QAAAA,EAAAA;;;AAGL,0BAAAQ,cAAA,CAACgT,qBAAQO,OAAO,EAAA;gBAACC,oBAAsBX,EAAAA,WAAAA;AACrC,gBAAA,QAAA,gBAAA/J,eAAC4D,CAAAA,iBAAAA,EAAAA;oBAAK9C,OAAS,EAAA,CAAA;oBAAG6J,SAAU,EAAA,QAAA;oBAASC,GAAK,EAAA,CAAA;;AACxC,sCAAA1T,cAAA,CAAC2T,mBAAMV,IAAI,EAAA;4BAAChK,KAAM,EAAA,OAAA;AAChB,4BAAA,QAAA,gBAAAH,eAAC4D,CAAAA,iBAAAA,EAAAA;gCAAK+G,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGE,UAAW,EAAA,SAAA;;AAC1C,kDAAA5T,cAAA,CAAC2T,mBAAME,KAAK,EAAA;kDACTpL,aAAc,CAAA;4CACb+B,EAAI,EAAA,gCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAAzK,cAAA,CAAC2T,mBAAMpR,KAAK,EAAA;wCACVuM,IAAK,EAAA,MAAA;AACLgF,wCAAAA,WAAAA,EAAarL,aAAc,CAAA;4CACzB+B,EAAI,EAAA,4CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACA5H,KAAO8O,EAAAA,QAAAA;AACP5H,wCAAAA,QAAAA,EAAU,CAACM,CAAAA,GAAAA;4CACTuH,WAAYvH,CAAAA,CAAAA,CAAEgI,MAAM,CAACxP,KAAK,CAAA;AAC5B;;;;;AAIN,sCAAA7C,cAAA,CAAC2T,mBAAMV,IAAI,EAAA;4BAAChK,KAAM,EAAA,OAAA;AAChB,4BAAA,QAAA,gBAAAH,eAAC4D,CAAAA,iBAAAA,EAAAA;gCAAK+G,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGE,UAAW,EAAA,SAAA;;AAC1C,kDAAA5T,cAAA,CAAC2T,mBAAME,KAAK,EAAA;kDACTpL,aAAc,CAAA;4CACb+B,EAAI,EAAA,gCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAAzK,cAAA,CAAC2T,mBAAMpR,KAAK,EAAA;wCACV4Q,GAAKpB,EAAAA,YAAAA;wCACLjD,IAAK,EAAA,KAAA;AACLgF,wCAAAA,WAAAA,EAAarL,aAAc,CAAA;4CACzB+B,EAAI,EAAA,4CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACA5H,KAAOgP,EAAAA,OAAAA;wCACP9H,QAAUqI,EAAAA;;;;;sCAIhBtJ,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKe,cAAe,EAAA,eAAA;4BAAgBxE,KAAM,EAAA,MAAA;;8CACzCjJ,cAAC4Q,CAAAA,YAAAA,EAAAA;oCACCmD,OAAQ,EAAA,cAAA;AACRV,oCAAAA,OAAAA,EAAS,IAAM/D,UAAWrM,CAAAA,MAAAA,CAAAA;oCAC1B6N,QAAUmB,EAAAA,kBAAAA;8CAETxJ,aAAc,CAAA;wCACb+B,EAAI,EAAA,kCAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;8CAEF3B,eAAC4D,CAAAA,iBAAAA,EAAAA;oCAAKgH,GAAK,EAAA,CAAA;;sDACT1T,cAAC6Q,CAAAA,mBAAAA,EAAAA;4CAAOkD,OAAQ,EAAA,UAAA;4CAAWV,OAASR,EAAAA,WAAAA;sDACjCpK,aAAc,CAAA;gDACb+B,EAAI,EAAA,eAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFzK,cAAC6Q,CAAAA,mBAAAA,EAAAA;AAAOmD,4CAAAA,QAAAA,EAAUC,QAAQlB,aAAkBb,CAAAA,IAAAA,cAAAA;4CAAgBmB,OAASZ,EAAAA,UAAAA;sDAClEhK,aAAc,CAAA;gDACb+B,EAAI,EAAA,aAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;;;;;;;;;;AAQhB,CAAA,CAAA;AAGF,MAAMyJ,IAAOtU,iBAAAA,gBAAAA,CAAMoR,UAAU,CAAwC,CAAC7I,KAAO8I,EAAAA,YAAAA,GAAAA;AAC3E,IAAA,IAAI,CAACR,UAAAA,CAAWtI,KAAMhE,CAAAA,OAAO,CAAG,EAAA;QAC9B,OAAO,IAAA;AACT;;;;AAKA,IAAA,qBAAOnE,cAAC+Q,CAAAA,WAAAA,EAAAA;AAAa,QAAA,GAAG5I,KAAK;AAAE4H,QAAAA,IAAAA,EAAM5H,MAAMhE,OAAO;QAAEgP,GAAKlC,EAAAA;;AAC3D,CAAA,CAAA;AAEA,MAAMkD,UAAwC,GAAA;IAC5CpE,IAAM,EAAA;QACJlF,aAAe,EAAA,CAAC1C,sBACdnI,cAACkU,CAAAA,IAAAA,EAAAA;AAAK/P,gBAAAA,OAAAA,EAASgE,MAAMhE,OAAO;AAAE+E,gBAAAA,UAAAA,EAAYf,MAAMe,UAAU;AACvDf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;;AAIXwL,QAAAA,SAAAA,EAAW,CAACtH,IAAAA,GAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;QACnCqH,kBAAoB,EAAA;AACtB;AACF,CAAA;;AC7LA,MAAMmJ,SAAAA,GAAYxH,oBAAG;;;OAGd,EAAE,CAAC,EAAEhF,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;uBACjB,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;qBACnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;wBAC9B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;wBAIjC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;sBACnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;yBAI9B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;AAE1D,CAAC;AAED,MAAMqM,WAAc3M,GAAAA,uBAAAA,CAAO4M,EAAsD;AAC9D,mBAAA,EAAE,CAACnM,KAAAA,GAAUA,KAAMoM,CAAAA,cAAc,CAAC;AACnD,EAAA,EAAEH,SAAU;AACd,CAAC;AAED,MAAMI,aAAgB9M,GAAAA,uBAAAA,CAAO+M,EAAsD;AAChE,mBAAA,EAAE,CAACtM,KAAAA,GAAUA,KAAMoM,CAAAA,cAAc,CAAC;AACnD,EAAA,EAAEH,SAAU;AACd,CAAC;AAED,MAAMM,aAAgB,GAAA;AAAC,IAAA,SAAA;AAAW,IAAA,aAAA;AAAe,IAAA;AAAc,CAAA;AAC/D,MAAMC,eAAkB,GAAA;AAAC,IAAA,MAAA;AAAQ,IAAA,QAAA;AAAU,IAAA;AAAS,CAAA;AAEpD,MAAMC,IAAAA,GAAO,CAAC,EAAE1L,UAAU,EAAE1J,QAAQ,EAAE2E,OAAO,EAAsB,GAAA;IACjE,IAAI,CAACuM,aAAWvM,OAAU,CAAA,EAAA;QACxB,OAAO,IAAA;AACT;;;AAIA,IAAA,MAAM0Q,UAAa1Q,GAAAA,OAAAA,CAAQ2Q,MAAM,KAAK,YAAYJ,aAAgBC,GAAAA,eAAAA;IAClE,MAAMI,SAAAA,GAAY,CAAC5Q,OAAAA,CAAQ6Q,WAAW,IAAI,CAAA,IAAKH,UAAAA,CAAY7T,MAAM;IACjE,MAAMiU,aAAAA,GAAgBJ,UAAW,CAACE,SAAU,CAAA;IAE5C,IAAI5Q,OAAAA,CAAQ2Q,MAAM,KAAK,SAAW,EAAA;AAChC,QAAA,qBACE9U,cAACqU,CAAAA,WAAAA,EAAAA;YAAYE,cAAgBU,EAAAA,aAAAA;AAAgB,YAAA,GAAG/L,UAAU;AACvD1J,YAAAA,QAAAA,EAAAA;;AAGP;AAEA,IAAA,qBACEQ,cAACwU,CAAAA,aAAAA,EAAAA;QAAcD,cAAgBU,EAAAA,aAAAA;AAAgB,QAAA,GAAG/L,UAAU;AACzD1J,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAM0V,yBAAAA,GAA4B,CAACjS,MAAgBkS,EAAAA,eAAAA,GAAAA;;IAEjD5R,gBAAW+K,CAAAA,WAAW,CAACrL,MAAQ,EAAA;QAAEa,EAAIqR,EAAAA;AAAgB,KAAA,CAAA;AAErD,IAAA,IAAIA,eAAe,CAAC,CAAE,CAAA,KAAK,CAAG,EAAA;;QAE5B5R,gBAAWyC,CAAAA,WAAW,CACpB/C,MACA,EAAA;YACEW,IAAM,EAAA,WAAA;YACNpE,QAAU,EAAA;AAAC,gBAAA;oBAAEoE,IAAM,EAAA,MAAA;oBAAQ8B,IAAM,EAAA;AAAG;AAAE;SAExC,EAAA;YAAE5B,EAAIqR,EAAAA;AAAgB,SAAA,CAAA;QAExB5R,gBAAWkL,CAAAA,MAAM,CAACxL,MAAQkS,EAAAA,eAAAA,CAAAA;AAC5B;AACF,CAAA;AAEA,MAAMrQ,WAAS,CAACpB,IAAAA,GAAAA;IACd,OAAOqB,UAAAA,CAAKC,MAAM,CAACtB,IAAS,CAAA,IAAA,CAACL,YAAOM,CAAAA,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;AACtE,CAAA;AAEA;;IAGA,MAAMwR,wBAA2B,GAAA,CAACnS,MAAgBoS,EAAAA,KAAAA,GAAAA;IAChD,IAAI,CAACpS,MAAOc,CAAAA,SAAS,EAAE;IAEvB,MAAM,CAACuR,eAAiBC,EAAAA,mBAAAA,CAAoB,GAAGlS,YAAAA,CAAOuP,MAAM,CAAC3P,MAAQA,EAAAA,MAAAA,CAAOc,SAAS,CAACwB,MAAM,CAAA;AAC5F,IAAA,MAAM,CAACiQ,WAAaL,EAAAA,eAAAA,CAAgB,GAAG9R,YAAOuP,CAAAA,MAAM,CAAC3P,MAAQsS,EAAAA,mBAAAA,CAAAA;AAC7D,IAAA,MAAME,cACJD,WAAYhW,CAAAA,QAAQ,CAACwB,MAAM,KAAK,KAChC8D,QAAOwQ,CAAAA,eAAAA,CAAgB9V,QAAQ,CAAC,CAAA,CAAE,KAClC8V,eAAgB9V,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAACkG,IAAI,KAAK,EAAA;AACvC,IAAA,MAAMgQ,kBACJJ,eAAgB9V,CAAAA,QAAQ,CAACwB,MAAM,KAAK,KACpC8D,QAAOwQ,CAAAA,eAAAA,CAAgB9V,QAAQ,CAAC,CAAA,CAAE,KAClC8V,eAAgB9V,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAACkG,IAAI,KAAK,EAAA;AACvC,IAAA,MAAMiQ,gCACJ1S,MAAOc,CAAAA,SAAS,CAACwD,KAAK,CAACD,MAAM,KAAK,CAAA,IAAKrE,OAAOc,SAAS,CAACwD,KAAK,CAAClB,IAAI,CAACvC,EAAE,CAAC,CAAC,CAAO,CAAA,KAAA,CAAA;AAEhF,IAAA,IAAI2R,WAAa,EAAA;AACf,QAAA,MAAMG,eAAkBvS,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC3Ca,EAAIqR,EAAAA,eAAAA;YACJ1R,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;AACA,QAAA,IAAI,CAACgS,eAAiB,EAAA;AACpBP,YAAAA,KAAAA,CAAM/K,cAAc,EAAA;AACpB4K,YAAAA,yBAAAA,CAA0BjS,MAAQkS,EAAAA,eAAAA,CAAAA;AACpC;AACF,KAAA,MAAO,IAAIQ,6BAA+B,EAAA;;QAExCpS,gBAAWsS,CAAAA,SAAS,CAAC5S,MAAQ,EAAA;YAC3BQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;QACAL,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;YAAEW,IAAM,EAAA;AAAY,SAAA,CAAA;AAClD,KAAA,MAAO,IAAI8R,eAAiB,EAAA;AAC1B,QAAA,MAAMI,aAAgBzS,GAAAA,YAAAA,CAAO0S,QAAQ,CAAC9S,MAAQ,EAAA;YAC5Ca,EAAIyR,EAAAA;AACN,SAAA,CAAA;AACA,QAAA,MAAMS,SAAY3S,GAAAA,YAAAA,CAAO4S,IAAI,CAAChT,MAAQ,EAAA;YACpCa,EAAIyR,EAAAA;AACN,SAAA,CAAA;AAEA,QAAA,IAAIO,iBAAiBE,SAAW,EAAA;;AAE9BX,YAAAA,KAAAA,CAAM/K,cAAc,EAAA;YACpB/G,gBAAW+K,CAAAA,WAAW,CAACrL,MAAQ,EAAA;gBAC7Ba,EAAIyR,EAAAA;AACN,aAAA,CAAA;;YAGA,MAAM,CAACW,aAAa,GAAGJ,aAAAA;YACvB,MAAM,CAACK,SAAS,GAAGH,SAAAA;AACnB,YAAA,IACE,CAAC3S,YAAOM,CAAAA,QAAQ,CAACuS,YACjB,CAAA,IAAA,CAACpR,SAAOoR,YACRxF,CAAAA,IAAAA,YAAAA,CAAWwF,iBACX,CAAC7S,YAAAA,CAAOM,QAAQ,CAACwS,QAAAA,CAAAA,IACjB,CAACrR,QAAOqR,CAAAA,QAAAA,CAAAA,IACRzF,aAAWyF,QACX,CAAA,EAAA;AACA,gBAAA,IACED,aAAatS,IAAI,KAAK,UACtBuS,QAASvS,CAAAA,IAAI,KAAK,MAClBsS,IAAAA,YAAAA,CAAapB,MAAM,KAAKqB,QAAAA,CAASrB,MAAM,IACvCoB,YAAAA,CAAalB,WAAW,KAAKmB,QAAAA,CAASnB,WAAW,EACjD;oBACAzR,gBAAW6S,CAAAA,UAAU,CAACnT,MAAQ,EAAA;wBAC5Ba,EAAIyR,EAAAA;AACN,qBAAA,CAAA;AACF;AACF;AACF;AACF;AACF,CAAA;AAEA;;IAGA,MAAMc,uBAAuB,CAACpT,MAAAA,GAAAA;AAC5B,IAAA,MAAMqT,oBAAuBjT,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;QAChDQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,KAAA,CAAA;AAEA,IAAA,IAAI,CAAC0S,oBAAAA,IAAwB,CAACrT,MAAAA,CAAOc,SAAS,EAAE;AAC9C,QAAA;AACF;IAEA,MAAM,CAACuR,eAAiBC,EAAAA,mBAAAA,CAAoB,GAAGe,oBAAAA;AAC/C,IAAA,MAAM,CAACd,WAAaL,EAAAA,eAAAA,CAAgB,GAAG9R,YAAOuP,CAAAA,MAAM,CAAC3P,MAAQsS,EAAAA,mBAAAA,CAAAA;AAC7D,IAAA,MAAME,cACJD,WAAYhW,CAAAA,QAAQ,CAACwB,MAAM,KAAK,KAChC8D,QAAOwQ,CAAAA,eAAAA,CAAgB9V,QAAQ,CAAC,CAAA,CAAE,KAClC8V,eAAgB9V,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAACkG,IAAI,KAAK,EAAA;AACvC,IAAA,MAAMgQ,kBACJJ,eAAgB9V,CAAAA,QAAQ,CAACwB,MAAM,KAAK,KACpC8D,QAAOwQ,CAAAA,eAAAA,CAAgB9V,QAAQ,CAAC,CAAA,CAAE,KAClC8V,eAAgB9V,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAACkG,IAAI,KAAK,EAAA;AACvC,IAAA,MAAMiQ,gCACJ1S,MAAOc,CAAAA,SAAS,CAACwD,KAAK,CAACD,MAAM,KAAK,CAAA,IAAKrE,OAAOc,SAAS,CAACwD,KAAK,CAAClB,IAAI,CAACvC,EAAE,CAAC,CAAC,CAAO,CAAA,KAAA,CAAA;AAEhF,IAAA,IAAI2R,WAAa,EAAA;AACfP,QAAAA,yBAAAA,CAA0BjS,MAAQkS,EAAAA,eAAAA,CAAAA;KAC7B,MAAA,IAAIQ,6BAAiC,IAAA,CAACD,eAAiB,EAAA;;AAE5D,QAAA,MAAMa,WAAclT,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAAEa,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwB;AAAO,SAAA,CAAA;QACvEhC,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAQ,EAAA;YAAEW,IAAM,EAAA,WAAA;YAAapE,QAAU,EAAA;AAAC,gBAAA;oBAAEoE,IAAM,EAAA,MAAA;oBAAQ8B,IAAM,EAAA;AAAG;AAAE;AAAC,SAAA,CAAA;AAC3F,QAAA,IAAI6Q,WAAa,EAAA;YACf,MAAMlQ,IAAAA,GAAOkQ,WAAW,CAAC,CAAE,CAAA;AAC3B,YAAA,MAAMC,WAAc,GAAA;mBAAInQ,IAAKoQ,CAAAA,KAAK,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA;AAAIpQ,gBAAAA,IAAI,CAACA,IAAAA,CAAKrF,MAAM,GAAG,EAAE,GAAG;AAAE,aAAA;YACrEuC,gBAAWkL,CAAAA,MAAM,CAACxL,MAAQ,EAAA;gBACxBsC,MAAQ,EAAA;oBAAEc,IAAMmQ,EAAAA,WAAAA,CAAYlG,MAAM,CAAC,CAAA,CAAA;oBAAIhJ,MAAQ,EAAA;AAAE,iBAAA;gBACjDC,KAAO,EAAA;oBAAElB,IAAMmQ,EAAAA,WAAAA,CAAYlG,MAAM,CAAC,CAAA,CAAA;oBAAIhJ,MAAQ,EAAA;AAAE;AAClD,aAAA,CAAA;AACF;AACF,KAAA,MAAO,IAAIoO,eAAiB,EAAA;;AAE1B,QAAA,IACE,CAACrS,YAAAA,CAAOM,QAAQ,CAAC6R,WACjB9E,CAAAA,IAAAA,YAAAA,CAAW8E,WACXA,CAAAA,IAAAA,WAAAA,EAAaR,WACbQ,IAAAA,WAAAA,CAAYR,WAAW,GAAG,CAC1B,EAAA;YACA,MAAM0B,mBAAAA,GAAsBlB,WAAYR,CAAAA,WAAW,GAAG,CAAA;AAEtD,YAAA,MAAM2B,mBAAsBtT,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;AAC/CQ,gBAAAA,KAAAA,EAAO,CAACC,IACN,GAAA,CAACL,YAAOM,CAAAA,QAAQ,CAACD,IACjBA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK,UACd,CAACF,KAAKsR,WAAW,IAAI,CAAA,MAAO0B;AAChC,aAAA,CAAA;AAEA,YAAA,IAAIC,mBAAqB,EAAA;;AAEvB,gBAAA,MAAMC,YAAerB,GAAAA,mBAAAA,CAAoBkB,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA;gBACnD,IAAIG,YAAAA,CAAa5V,MAAM,GAAG,CAAG,EAAA;AAC3B4V,oBAAAA,YAAY,CAACA,YAAAA,CAAa5V,MAAM,GAAG,EAAE,IAAI,CAAA;AAC3C;;gBAGAuC,gBAAWsT,CAAAA,SAAS,CAAC5T,MAAQ,EAAA;oBAC3Ba,EAAIyR,EAAAA,mBAAAA;oBACJuB,EAAIF,EAAAA;AACN,iBAAA,CAAA;AACA,gBAAA;AACF;AACF;;QAGArT,gBAAW+K,CAAAA,WAAW,CAACrL,MAAQ,EAAA;YAAEa,EAAIyR,EAAAA;AAAoB,SAAA,CAAA;QAEzD,MAAMwB,oBAAAA,GAAuBzF,UAAK2E,CAAAA,IAAI,CAACd,eAAAA,CAAAA;QACvC5R,gBAAWyC,CAAAA,WAAW,CACpB/C,MACA,EAAA;YACEW,IAAM,EAAA,WAAA;YACNpE,QAAU,EAAA;AAAC,gBAAA;oBAAEoE,IAAM,EAAA,MAAA;oBAAQ8B,IAAM,EAAA;AAAG;AAAE;SAExC,EAAA;YAAE5B,EAAIiT,EAAAA;AAAqB,SAAA,CAAA;;QAI7BxT,gBAAWkL,CAAAA,MAAM,CAACxL,MAAQ8T,EAAAA,oBAAAA,CAAAA;KACrB,MAAA;;QAEL,MAAM1R,SAAAA,GAAYhC,aAAOiC,KAAK,CAACrC,QAAQA,MAAOc,CAAAA,SAAS,CAACwB,MAAM,EAAEgQ,mBAAAA,CAAAA;AAEhE,QAAA,IAAIlQ,SAAW,EAAA;;;YAGb9B,gBAAWyC,CAAAA,WAAW,CAAC/C,MAAQ,EAAA;gBAAEW,IAAM,EAAA,WAAA;gBAAapE,QAAU,EAAA;AAAC,oBAAA;wBAAEoE,IAAM,EAAA,MAAA;wBAAQ8B,IAAM,EAAA;AAAG;AAAE;AAAC,aAAA,CAAA;SACtF,MAAA;;;AAGLnC,YAAAA,gBAAAA,CAAWyT,UAAU,CAAC/T,MAAAA,CAAAA;AACxB;AACF;AACF,CAAA;AAEA;;IAGA,MAAMgU,mBAAsB,GAAA,CAAChU,MAAgB6R,EAAAA,MAAAA,GAAAA;IAC3C,MAAMoC,aAAAA,GAAgBlU,kBAAsCC,MAAQ,EAAA;QAAEW,IAAM,EAAA;AAAY,KAAA,CAAA;AAExF,IAAA,IAAI,CAACsT,aAAe,EAAA;IAEpB3T,gBAAWyM,CAAAA,SAAS,CAAC/M,MAAQ,EAAA;QAAEW,IAAM,EAAA,MAAA;AAAQkR,QAAAA,MAAAA;AAAQtV,QAAAA,QAAAA,EAAU;KAAM,EAAA;QAAEsE,EAAIoT,EAAAA;AAAc,KAAA,CAAA;AAC3F,CAAA;AAEA;;IAGA,MAAMC,kBAAkB,CAAClU,MAAAA,GAAAA;AACvB,IAAA,MAAMqT,oBAAuBjT,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;QAChDQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,KAAA,CAAA;AAEA,IAAA,IAAI,CAAC0S,oBAAAA,IAAwB,CAACrT,MAAAA,CAAOc,SAAS,EAAE;AAC9C,QAAA;AACF;IAEA,MAAM,CAACuR,eAAiBC,EAAAA,mBAAAA,CAAoB,GAAGe,oBAAAA;AAC/C,IAAA,MAAM,CAACd,WAAY,CAAA,GAAGnS,YAAOuP,CAAAA,MAAM,CAAC3P,MAAQsS,EAAAA,mBAAAA,CAAAA;;AAG5C,IAAA,IAAID,eAAoBE,KAAAA,WAAAA,CAAYhW,QAAQ,CAAC,EAAE,EAAE;IAEjD,MAAM4X,oBAAAA,GAAuB5B,YAAYhW,QAAQ,CAAC6X,SAAS,CAAC,CAACC,OAASA,IAAShC,KAAAA,eAAAA,CAAAA;AAC/E,IAAA,MAAMiC,YAAe/B,GAAAA,WAAAA,CAAYhW,QAAQ,CAAC4X,uBAAuB,CAAE,CAAA;;IAGnE,IAAIG,YAAAA,CAAa3T,IAAI,KAAK,MAAQ,EAAA;AAChC,QAAA,MAAMwB,QAAW+E,GAAAA,sBAAAA,CAAY+G,QAAQ,CAACjO,MAAQsU,EAAAA,YAAAA,CAAAA;AAC9C,QAAA,MAAMC,YAAeD,GAAAA,YAAAA,CAAa/X,QAAQ,CAACwB,MAAM;QAEjDuC,gBAAWsT,CAAAA,SAAS,CAAC5T,MAAQ,EAAA;YAC3Ba,EAAIyR,EAAAA,mBAAAA;YACJuB,EAAI1R,EAAAA,QAAAA,CAASkL,MAAM,CAACkH,YAAAA;AACtB,SAAA,CAAA;AACA,QAAA;AACF;AAEA,IAAA,IAAI,CAACnU,YAAOM,CAAAA,QAAQ,CAAC6R,WAAAA,CAAAA,IAAgB9E,aAAW8E,WAAc,CAAA,EAAA;;QAE5DjS,gBAAWyM,CAAAA,SAAS,CAAC/M,MAAQ,EAAA;YAC3BW,IAAM,EAAA,MAAA;AACNkR,YAAAA,MAAAA,EAAQU,YAAYV,MAAM;AAC1BE,YAAAA,WAAAA,EAAa,CAACQ,WAAAA,CAAYR,WAAW,IAAI,CAAA,IAAK,CAAA;AAC9CxV,YAAAA,QAAAA,EAAU;AACZ,SAAA,CAAA;AACF;AACF,CAAA;AAEA,MAAMiY,UAAiF,GAAA;IACrF,cAAgB,EAAA;QACd5M,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC4U,CAAAA,IAAAA,EAAAA;AAAM,gBAAA,GAAGzM;;QACpCrF,KAAO,EAAA;YACL0H,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAK,IAAM4M,EAAAA,gBAAAA;QACN1M,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,MAAUF,IAAAA,IAAAA,CAAKoR,MAAM,KAAK,SAAA;QAC7D7J,kBAAoB,EAAA,IAAA;QACpBC,aAAe,EAAA,CAACjI,MAAWgU,GAAAA,mBAAAA,CAAoBhU,MAAQ,EAAA,SAAA,CAAA;QACvDkI,cAAgBkL,EAAAA,oBAAAA;QAChBhH,kBAAoB+F,EAAAA,wBAAAA;QACpBuC,SAAWR,EAAAA,eAAAA;QACX/L,QAAU,EAAA;AAAC,YAAA;AAAK;AAClB,KAAA;IACA,gBAAkB,EAAA;QAChBP,aAAe,EAAA,CAAC1C,sBAAUnI,cAAC4U,CAAAA,IAAAA,EAAAA;AAAM,gBAAA,GAAGzM;;QACpCrF,KAAO,EAAA;YACL0H,EAAI,EAAA,wCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAK,IAAM8M,EAAAA,gBAAAA;QACN5M,SAAW,EAAA,CAACtH,OAASA,IAAKE,CAAAA,IAAI,KAAK,MAAUF,IAAAA,IAAAA,CAAKoR,MAAM,KAAK,WAAA;QAC7D7J,kBAAoB,EAAA,IAAA;QACpBC,aAAe,EAAA,CAACjI,MAAWgU,GAAAA,mBAAAA,CAAoBhU,MAAQ,EAAA,WAAA,CAAA;QACvDkI,cAAgBkL,EAAAA,oBAAAA;QAChBhH,kBAAoB+F,EAAAA,wBAAAA;QACpBuC,SAAWR,EAAAA,eAAAA;QACX/L,QAAU,EAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA;AAAI;AAC3B,KAAA;IACA,WAAa,EAAA;QACXP,aAAe,EAAA,CAAC1C,sBACdnI,cAACsL,CAAAA,uBAAAA,EAAAA;gBAAWE,GAAI,EAAA,IAAA;AAAM,gBAAA,GAAGrD,MAAMe,UAAU;AACtCf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;;AAIXwL,QAAAA,SAAAA,EAAW,CAACtH,IAAAA,GAASA,IAAKE,CAAAA,IAAI,KAAK,WAAA;QACnCqH,kBAAoB,EAAA,KAAA;QACpBkB,mBAAqB,EAAA;AACvB;AACF,CAAA;;ACrWA,MAAM0L,eAAkD,GAAA;IACtDC,SAAW,EAAA;QACTjN,aAAe,EAAA,CAAC1C,sBACdnI,cAACsL,CAAAA,uBAAAA,EAAAA;gBAAWE,GAAI,EAAA,GAAA;gBAAIuI,OAAQ,EAAA,OAAA;AAAS,gBAAA,GAAG5L,MAAMe,UAAU;AACrDf,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;QAGXsL,IAAMiN,EAAAA,eAAAA;QACNjV,KAAO,EAAA;YACL0H,EAAI,EAAA,+BAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAO,QAAAA,SAAAA,EAAW,CAACtH,IAAAA,GAASA,IAAKE,CAAAA,IAAI,KAAK,WAAA;QACnCqH,kBAAoB,EAAA,IAAA;QACpBkB,mBAAqB,EAAA,MAAA;AACrBjB,QAAAA,aAAAA,CAAAA,CAAcjI,MAAM,EAAA;AAClBD,YAAAA,iBAAAA,CAAsCC,MAAQ,EAAA;gBAAEW,IAAM,EAAA;AAAY,aAAA,CAAA;AACpE,SAAA;AACAuH,QAAAA,cAAAA,CAAAA,CAAelI,MAAM,EAAA;YACnB,IAAI,CAACA,MAAOc,CAAAA,SAAS,EAAE;AACrB,gBAAA;AACF;;AAGA,YAAA,MAAMiU,4BAA4B/U,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI;AAC9D;;;UAIA9C,gBAAAA,CAAWyT,UAAU,CAAC/T,MAAQ,EAAA;;;gBAG5BgV,MAAQ,EAAA;AACV,aAAA,CAAA;;;AAIA,YAAA,MAAMC,gBAAmB7U,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;gBAC5CQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,aAAA,CAAA;AACA,YAAA,IAAI,CAACsU,gBAAkB,EAAA;AACrB,gBAAA;AACF;YACA,MAAM,GAAGC,gBAAgB,GAAGD,gBAAAA;YAC5B,MAAM7S,SAAAA,GAAYhC,aAAOiC,KAAK,CAACrC,QAAQA,MAAOc,CAAAA,SAAS,CAACwB,MAAM,EAAE4S,eAAAA,CAAAA;AAEhE;;;;;;AAMC,UACD,MAAM,CAACC,cAAe,CAAA,GAAG/U,YAAOuP,CAAAA,MAAM,CAAC3P,MAAAA,EAAQA,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI,CAAA;AAC3E9C,YAAAA,gBAAAA,CAAW+K,WAAW,CAACrL,MAAAA,CAAAA;;YAGvB,MAAMoV,WAAAA,GAAcpV,OAAOzD,QAAQ,CAACwB,MAAM,GAAGgX,yBAAyB,CAAC,CAAA,CAAE,GAAG,CAAA;;;YAI5EzU,gBAAWyC,CAAAA,WAAW,CACpB/C,MACA,EAAA;gBACEW,IAAM,EAAA,WAAA;;AAENpE,gBAAAA,QAAAA,EAAW6F,SAAY,GAAA;AAAC,oBAAA;wBAAEzB,IAAM,EAAA,MAAA;wBAAQ8B,IAAM,EAAA;AAAG;AAAE,iBAAA,GAAG0S,eAAe5Y;aAEvE,EAAA;AACEsE,gBAAAA,EAAAA,EAAIuU,WAAc,GAAA;oBAACL,yBAAyB,CAAC,EAAE,GAAG;iBAAE,GAAG;oBAAC/U,MAAOzD,CAAAA,QAAQ,CAACwB;AAAO;AACjF,aAAA,CAAA;AAGF;;;;AAIC,UACDuC,iBAAWkL,MAAM,CAACxL,MAAQA,EAAAA,MAAAA,CAAOkE,KAAK,CAAC;gBAAC6Q,yBAAyB,CAAC,EAAE,GAAG;AAAE,aAAA,CAAA,CAAA;AAC3E;AACF;AACF,CAAA;;ACnFA,MAAMM,UAAa5Q,GAAAA,uBAAAA,CAAO6Q,UAAU,CAAChN,KAAK,CAAC;IAAEiN,IAAM,EAAA;AAAa,CAAA,CAAE;eACnD,EAAE,CAAC,EAAE5Q,KAAK,EAAE,GAAKA,KAAM6Q,CAAAA,WAAW,CAACC,OAAO,CAAC;eAC3C,EAAE,CAAC,EAAE9Q,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAMI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAEJ,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC,CAAC,CAAC;WAC3E,EAAE,CAAC,EAAE/Q,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;SACrE,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8Q,UAAU,CAAC;AAClD,CAAC;AAED,MAAMC,WAA0C,GAAA;IAC9CC,KAAO,EAAA;QACLjO,aAAe,EAAA,CAAC1C;;0BAGdnI,cAAC+Y,CAAAA,KAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAA/Y,cAACsY,CAAAA,UAAAA,EAAAA;AAAY,oBAAA,GAAGnQ,MAAMe,UAAU;AAAGf,oBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;;QAG7CsL,IAAMkO,EAAAA,YAAAA;QACNlW,KAAO,EAAA;YACL0H,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;AACAO,QAAAA,SAAAA,EAAW,CAACtH,IAAAA,GAASA,IAAKE,CAAAA,IAAI,KAAK,OAAA;QACnCqH,kBAAoB,EAAA,IAAA;AACpBC,QAAAA,aAAAA,CAAAA,CAAcjI,MAAM,EAAA;AAClBD,YAAAA,iBAAAA,CAAkCC,MAAQ,EAAA;gBAAEW,IAAM,EAAA;AAAQ,aAAA,CAAA;AAC5D,SAAA;AACAuH,QAAAA,cAAAA,CAAAA,CAAelI,MAAM,EAAA;YACnBgC,qBAAsBhC,CAAAA,MAAAA,CAAAA;AACxB,SAAA;QACAmI,QAAU,EAAA;AAAC,YAAA;AAAI;AACjB;AACF,CAAA;;ACpBA,MAAM6N,wBAA2B,GAAA,CAAC,EAChClX,KAAK,EACLmX,gBAAgB,EAChBC,mBAAmB,EACnBC,OAAO,EACP5Z,QAAQ,EACsB,GAAA;AAC9B,IAAA,MAAM6Z,YAAYtX,KAASmX,IAAAA,gBAAAA;IAE3B,MAAMI,YAAAA,GAAeC,+BACnB,CAACF,SAAAA,GAAAA;AACC;;;AAGC,UACD,IAAIA,SAAW,EAAA;AACbF,YAAAA,mBAAAA,CAAoB,CAACK,IAAAA,GAASC,IAAKC,CAAAA,GAAG,CAACF,IAAMzX,EAAAA,KAAAA,CAAAA,CAAAA;AAC/C;KAEF,EAAA;QAAE4X,SAAW,EAAA,CAAA;AAAGC,QAAAA,IAAAA,EAAMR,QAAQtG;AAAQ,KAAA,CAAA;AAGxC,IAAA,qBACE9S,cAAC+Y,CAAAA,KAAAA,EAAAA;QACC5F,GAAKmG,EAAAA,YAAAA;QACLO,KAAO,EAAA;AACL;;;;;YAMAC,UAAAA,EAAYT,YAAY,SAAY,GAAA;AACtC,SAAA;AAEC7Z,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAYO,MAAMua,wBAAwB,CAAC,EACpCC,kBAAkB,EAClBC,kBAAAA,GAAqB,OAAO,EAI7B,GAAA;IACC,MAAM,EAAExR,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMwR,UAAAA,GAAata,gBAAMoS,CAAAA,MAAM,CAAc,IAAA,CAAA;IAE7C,MAAM,CAACkH,kBAAkBC,mBAAoB,CAAA,GAAGvZ,iBAAMC,QAAQ,CAC5Dma,kBAAmBhZ,CAAAA,MAAM,GAAG,CAAA,CAAA;AAE9B,IAAA,MAAMmZ,cAAiBjB,GAAAA,gBAAAA,GAAmBc,kBAAmBhZ,CAAAA,MAAM,GAAG,CAAA;AACtE,IAAA,MAAMoZ,YAAYlB,gBAAmB,GAAA,CAAA;AAErC,IAAA,MAAM,CAAClP,IAAMqQ,EAAAA,OAAAA,CAAQ,GAAGza,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACvC,IAAA,MAAMya,wBAAwBtQ,IAAQmQ,IAAAA,cAAAA;IACtC,MAAMI,cAAAA,GAAiBhB,+BACrB,CAACF,SAAAA,GAAAA;;AAEC,QAAA,IAAI,CAACA,SAAW,EAAA;AACd;;;aAIAF,mBAAAA,CAAoB,CAACK,IAAAA,GAASA,IAAO,GAAA,CAAA,CAAA;;YAErCa,OAAQC,CAAAA,qBAAAA,CAAAA;AACV;KAEF,EAAA;QAAEX,SAAW,EAAA,CAAA;AAAGC,QAAAA,IAAAA,EAAMM,WAAWpH;AAAQ,KAAA,CAAA;AAG3C,IAAA,OAAOkH,kBACJtP,CAAAA,GAAG,CAAC,CAAC8P,SAAWzY,EAAAA,KAAAA,GAAAA;AACf,QAAA,qBACE/B,cAACiZ,CAAAA,wBAAAA,EAAAA;YAEClX,KAAOA,EAAAA,KAAAA;YACPmX,gBAAkBA,EAAAA,gBAAAA;YAClBC,mBAAqBA,EAAAA,mBAAAA;YACrBC,OAASc,EAAAA,UAAAA;AAERM,YAAAA,QAAAA,EAAAA,SAAAA,CAAUC;AANND,SAAAA,EAAAA,SAAAA,CAAU3V,GAAG,CAAA;AASxB,KAAA,CAAA,CACC6V,SAAS,CACRN,SAAAA,EACA,CACA,gBAAAtR,eAAA,CAAC6R,kBAAK1H,IAAI,EAAA;QAER2H,WAAa,EAAA,KAAA;QACb5Q,IAAMsQ,EAAAA,qBAAAA;QACNpQ,YAAcmQ,EAAAA,OAAAA;;AAEd,0BAAAra,cAAA,CAAC2a,kBAAKzH,OAAO,EAAA;gBACX2H,WAAa,EAAA,CAAA;gBACbC,YAAc,EAAA,CAAA;gBACd3H,GAAKoH,EAAAA,cAAAA;gBACLxG,OAASkG,EAAAA,kBAAAA;gBACTJ,KAAO,EAAA;AAAEC,oBAAAA,UAAAA,EAAYK,iBAAiB,SAAY,GAAA;AAAS,iBAAA;AAC3DrX,gBAAAA,KAAAA,EAAO2F,aAAc,CAAA;oBAAE+B,EAAI,EAAA,aAAA;oBAAeC,cAAgB,EAAA;AAAO,iBAAA,CAAA;gBACjEe,GAAKuP,EAAAA,uBAAAA;AACLjQ,gBAAAA,IAAAA,gBAAM9K,cAACgb,CAAAA,UAAAA,EAAAA,EAAAA;;AAET,0BAAAhb,cAAA,CAAC2a,kBAAKpH,OAAO,EAAA;gBACXnJ,gBAAkB,EAAA,CAACC,CAAMA,GAAAA,CAAAA,CAAEC,cAAc,EAAA;gBACzC2Q,SAAU,EAAA,MAAA;gBACVC,QAAS,EAAA,OAAA;gBACTC,gBAAiB,EAAA,YAAA;0BAEhBnB,kBAAmBvD,CAAAA,KAAK,CAAC2D,SAAW1P,CAAAA,CAAAA,GAAG,CAAC,CAAC8P,SAAAA,iBACxCxa,cAACJ,CAAAA,gBAAAA,CAAMwb,QAAQ,EAAA;AAAsBZ,wBAAAA,QAAAA,EAAAA,SAAAA,CAAUa;AAA1Bb,qBAAAA,EAAAA,SAAAA,CAAU3V,GAAG,CAAA;;;AAtBlC,KAAA,EAAA,WAAA,CAAA,CAAA;AA2BZ,CAAE;;ACpHF,MAAMyW,cAAAA,GAAiB5T,uBAAsBgF,CAAAA,iBAAAA,CAAK;;;gBAGlC,EAAE,CAAC,EAAE9E,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;;AAEzD,CAAC;AAED,MAAMC,gBAAmB9T,GAAAA,uBAAAA,CAAO+T,kBAAQC,CAAAA,SAAS,CAAC;cACpC,EAAE,CAAC,EAAE9T,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;;;AAGvD,CAAC;AAED,MAAMI,UAAAA,GAAajU,uBAAgCgF,CAAAA,iBAAAA,CAAK;;;;;;;;;;;kBAWtC,EAAE,CAAC,EAAE9E,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8T,UAAU,CAAC;;;AAG3D,CAAC;AAED,MAAMC,aAAAA,GAAgBnU,uBAAqBqB,CAAAA,gBAAAA,CAAI;;;;;;;;;;;kBAW7B,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8T,UAAU,CAAC;;;;;;;;;eAS5C,EAAE,CAAC,EAAEhU,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8Q,UAAU,CAAC;;;;AAIxD,CAAC;AAED;;AAEC,IACD,SAASkD,kBAAAA,GAAAA;AACP,IAAA,MAAM,CAACC,YAAcC,EAAAA,iBAAAA,CAAkB,GAAGpc,gBAAAA,CAAMC,QAAQ,CAA2B,IAAA,CAAA;AAEnF,IAAA,MAAMoc,yBAAyB,CAACC,WAAAA,GAAAA;;AAE9B,QAAA,IAAIA,WAAa,EAAA;;;YAGfF,iBAAkBpc,eAAAA,gBAAAA,CAAMuc,YAAY,CAACD,WAAe,EAAA,EAAA;AAAErX,gBAAAA,GAAAA,EAAKuX,KAAKC,GAAG;AAAG,aAAA,CAAA,CAAA;AACxE;AACF,KAAA;IAEA,OAAO;AAAEN,QAAAA,YAAAA;AAAcE,QAAAA;AAAuB,KAAA;AAChD;AAWA,MAAMK,aAAgB,GAAA,CAAC,EACrBxR,IAAAA,EAAMyR,IAAI,EACVzN,IAAI,EACJhM,KAAK,EACL0Z,QAAQ,EACRxI,QAAQ,EACRyI,WAAW,EACQ,GAAA;AACnB,IAAA,MAAM,EAAExZ,MAAM,EAAE,GAAGmF,sBAAuB,CAAA,eAAA,CAAA;IAC1C,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMgU,eAAejU,aAAc3F,CAAAA,KAAAA,CAAAA;IAEnC,MAAM6Z,YAAAA,GAAeH,WAAW,YAAe,GAAA,YAAA;AAE/C,IAAA,qBACExc,cAAC4c,CAAAA,oBAAAA,EAAAA;QAAQ9Z,KAAO4Z,EAAAA,YAAAA;gCACd1c,cAAA,CAACyb,mBAAQoB,UAAU,EAAA;YACjBha,KAAOiM,EAAAA,IAAAA;AACPgO,YAAAA,YAAAA,EAAYN,WAAW,IAAO,GAAA,KAAA;AAC9BO,YAAAA,WAAAA,EAAa,CAAC1S,CAAAA,GAAAA;AACZA,gBAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBmS,gBAAAA,WAAAA,EAAAA;AACAtS,gBAAAA,sBAAAA,CAAY5C,KAAK,CAACtE,MAAAA,CAAAA;AACpB,aAAA;YACA+Z,eAAehJ,EAAAA,QAAAA;YACfA,QAAUA,EAAAA,QAAAA;YACVzJ,YAAYmS,EAAAA,YAAAA;YACZO,OAAO,EAAA,IAAA;AAEP,YAAA,QAAA,gBAAAjd,cAAC2b,CAAAA,UAAAA,EAAAA;gBACCnQ,GAAI,EAAA,QAAA;AACJpC,gBAAAA,UAAAA,EAAYoT,WAAW,YAAe,GAAA,EAAA;gBACtC5I,UAAW,EAAA,QAAA;gBACXnG,cAAe,EAAA,QAAA;gBACfxE,KAAO,EAAA,CAAA;gBACPqE,MAAQ,EAAA,CAAA;gBACRzD,SAAS,EAAA,IAAA;AAET,gBAAA,QAAA,gBAAA7J,cAACuc,CAAAA,IAAAA,EAAAA;AAAKW,oBAAAA,IAAAA,EAAMlJ,WAAW,YAAe2I,GAAAA;;;;;AAKhD,CAAA;AAEA,MAAMQ,cAAiB,GAAA,IAAA;IACrB,MAAM,EAAEla,MAAM,EAAEma,MAAM,EAAEpJ,QAAQ,EAAE,GAAG5L,sBAAuB,CAAA,gBAAA,CAAA;IAC5D,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEqT,YAAY,EAAEE,sBAAsB,EAAE,GAAGH,kBAAAA,EAAAA;AAEjD,IAAA,MAAMuB,qBAAyC9M,UAAW6M,CAAAA,MAAAA,CAAAA,CAAQjb,MAAM,CAEtE,CAACmb,WAAarZ,EAAAA,KAAAA,GAAAA;QACd,MAAM,CAACY,GAAK0Y,EAAAA,KAAAA,CAAM,GAAGtZ,KAAAA;QAErB,OAAOsZ,KAAAA,CAAMtS,kBAAkB,GAAG;AAAIqS,YAAAA,GAAAA,WAAAA;AAAazY,YAAAA;SAAI,GAAGyY,WAAAA;AAC5D,KAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,CAACE,aAAeC,EAAAA,gBAAAA,CAAiB,GAAG7d,gBAAAA,CAAMC,QAAQ,CAAmB,WAAA,CAAA;AAE3E,IAAA,MAAM6d,eAAe,CAACC,SAAAA,GAAAA;QACpB,IAAI,CAACC,mBAAmBD,SAAY,CAAA,EAAA;AAClC,YAAA;AACF;AAEA,QAAA,MAAME,aACJ5a,GAAAA,MAAAA,CAAOzD,QAAQ,CAACwB,MAAM,KAAK,CAAA,IAAKqC,YAAOya,CAAAA,OAAO,CAAC7a,MAAAA,EAAQA,MAAOzD,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE3E,QAAA,IAAI,CAACyD,MAAAA,CAAOc,SAAS,IAAI,CAAC8Z,aAAe,EAAA;;;YAGvCta,gBAAWyC,CAAAA,WAAW,CACpB/C,MACA,EAAA;gBACEW,IAAM,EAAA,OAAA;gBACNpE,QAAU,EAAA;AAAC,oBAAA;wBAAEoE,IAAM,EAAA,MAAA;wBAAQ8B,IAAM,EAAA;AAAG;AAAE;aAExC,EAAA;gBACE+I,MAAQ,EAAA;AAEV,aAAA,CAAA;AAEJ,SAAA,MAAO,IAAI,CAACxL,MAAOc,CAAAA,SAAS,IAAI8Z,aAAe,EAAA;;;AAG7Cta,YAAAA,gBAAAA,CAAWkL,MAAM,CAACxL,MAAAA,EAAQI,YAAO8D,CAAAA,KAAK,CAAClE,MAAQ,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA;AAAE,aAAA,CAAA,CAAA;AACvD;;AAGA,QAAA,MAAM8a,gBAAmB1a,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC5CQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;AAEA,QAAA,IAAIma,gBAAoB,IAAA;AAAC,YAAA,cAAA;AAAgB,YAAA;SAAiB,CAAC5Y,QAAQ,CAACwY,SAAY,CAAA,EAAA;YAC9E,MAAM,CAACnI,WAAaL,EAAAA,eAAAA,CAAgB,GAAG4I,gBAAAA;YACvC,MAAMjJ,MAAAA,GAAS6I,SAAc,KAAA,cAAA,GAAiB,SAAY,GAAA,WAAA;AAE1D,YAAA,IAAI,CAACta,YAAOM,CAAAA,QAAQ,CAAC6R,WAAAA,CAAAA,IAAgB9E,WAAW8E,WAAc,CAAA,EAAA;;gBAE5D,IAAIA,WAAAA,CAAYV,MAAM,KAAKA,MAAQ,EAAA;oBACjCvR,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;AAAE6R,wBAAAA;qBAAU,EAAA;wBAAEhR,EAAIqR,EAAAA;AAAgB,qBAAA,CAAA;AAChE;AACF;AACA,YAAA;AACF;;AAGA,QAAA,MAAM6I,mBAAmBZ,MAAM,CAACO,SAAU,CAAA,CAACzS,aAAa,GAAGjI,MAAAA,CAAAA;QAC3DgZ,sBAAuB+B,CAAAA,gBAAAA,CAAAA;QAEvBP,gBAAiBE,CAAAA,SAAAA,CAAAA;AAEjBxT,QAAAA,sBAAAA,CAAY5C,KAAK,CAACtE,MAAAA,CAAAA;AACpB,KAAA;AAEA;;;;;;;AAOC,MACD,MAAMgb,kBAAAA,GAAqB,CAAC5T,CAAAA,GAAaA,EAAEC,cAAc,EAAA;;AAGzD1K,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACd,IAAI4B,MAAAA,CAAOc,SAAS,EAAE;YACpB,IAAIma,YAAAA;;AAGJ,YAAA,MAAMH,gBAAmB1a,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;gBAC5CQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;gBACzDE,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwB;AACvB,aAAA,CAAA;AAEA,YAAA,IAAIwY,gBAAkB,EAAA;gBACpB,MAAM,CAACvI,YAAY,GAAGuI,gBAAAA;gBACtBG,YAAe1I,GAAAA,WAAAA;aACV,MAAA;;gBAEL,MAAM,CAAC2I,UAAW,CAAA,GAAG9a,YAAOuP,CAAAA,MAAM,CAAC3P,MAAAA,EAAQA,MAAOc,CAAAA,SAAS,CAACwB,MAAM,EAAE;oBAClE6Y,IAAM,EAAA,OAAA;oBACNC,KAAO,EAAA;AACT,iBAAA,CAAA;;gBAGA,IAAIF,UAAAA,CAAWva,IAAI,KAAK,WAAa,EAAA;;;;oBAKnCL,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;wBAAEW,IAAM,EAAA;AAAY,qBAAA,CAAA;;oBAEhDsa,YAAe,GAAA;AAAE,wBAAA,GAAGC,UAAU;wBAAEva,IAAM,EAAA;AAAY,qBAAA;iBAC7C,MAAA;oBACLsa,YAAeC,GAAAA,UAAAA;AACjB;AACF;;AAGA,YAAA,MAAMG,iBAAiB9N,OAAQ4M,CAAAA,MAAAA,CAAAA,CAAQzW,IAAI,CACzC,CAAC4X,QAAa,GAAA,CAAClb,YAAOM,CAAAA,QAAQ,CAACua,YAAiBd,CAAAA,IAAAA,MAAM,CAACmB,QAAS,CAAA,CAACvT,SAAS,CAACkT,YAAAA,CAAAA,CAAAA;;YAI7E,IAAII,cAAAA,IAAkBA,mBAAmBd,aAAe,EAAA;gBACtDC,gBAAiBa,CAAAA,cAAAA,CAAAA;AACnB;AACF;KACC,EAAA;AAACrb,QAAAA,MAAAA,CAAOc,SAAS;AAAEd,QAAAA,MAAAA;AAAQma,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;AAEpD,IAAA,MAAMjB,IAAOa,GAAAA,MAAM,CAACI,aAAAA,CAAc,CAAC1S,IAAI;IAEvC,qBACEhC,eAAA,CAAA0V,mBAAA,EAAA;;0BACExe,cAAC6b,CAAAA,aAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAA7b,cAAC8J,CAAAA,yBAAAA,EAAAA;AACC2U,oBAAAA,SAAAA,gBAAWze,cAACuc,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;oBACZxS,QAAU2T,EAAAA,YAAAA;AACV5J,oBAAAA,WAAAA,EAAarL,aAAc2U,CAAAA,MAAM,CAACI,aAAAA,CAAc,CAAC1a,KAAK,CAAA;oBACtDD,KAAO2a,EAAAA,aAAAA;oBACPpT,gBAAkB6T,EAAAA,kBAAAA;AAClB1T,oBAAAA,YAAAA,EAAY9B,aAAc,CAAA;wBACxB+B,EAAI,EAAA,sCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAuJ,QAAUA,EAAAA,QAAAA;AAETqJ,oBAAAA,QAAAA,EAAAA,kBAAAA,CAAmB3S,GAAG,CAAC,CAAC7F,GAAAA,iBACvB7E,cAAC0e,CAAAA,WAAAA,EAAAA;4BAEC7b,KAAOgC,EAAAA,GAAAA;AACP/B,4BAAAA,KAAAA,EAAOsa,MAAM,CAACvY,GAAI,CAAA,CAAC/B,KAAK;AACxBgI,4BAAAA,IAAAA,EAAMsS,MAAM,CAACvY,GAAI,CAAA,CAACiG,IAAI;4BACtB0S,aAAeA,EAAAA;AAJV3Y,yBAAAA,EAAAA,GAAAA,CAAAA;;;AASZkX,YAAAA;;;AAGP,CAAA;AASA,MAAM2C,WAAAA,GAAc,CAAC,EAAE7b,KAAK,EAAEiI,IAAMyR,EAAAA,IAAI,EAAEzZ,KAAK,EAAE0a,aAAa,EAAoB,GAAA;IAChF,MAAM,EAAE/U,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMiW,aAAa9b,KAAU2a,KAAAA,aAAAA;AAE7B,IAAA,qBACExd,cAAC2K,CAAAA,+BAAAA,EAAAA;AACC8T,QAAAA,SAAAA,gBAAWze,cAACuc,CAAAA,IAAAA,EAAAA;AAAKW,YAAAA,IAAAA,EAAMyB,aAAa,YAAe,GAAA;;QACnD9b,KAAOA,EAAAA,KAAAA;kBAEN4F,aAAc3F,CAAAA,KAAAA;;AAGrB,CAAA;AAEA,MAAM4N,aAAa,CAAChN,IAAAA,GAAAA;IAClB,OAAOqB,UAAAA,CAAKC,MAAM,CAACtB,IAAS,CAAA,IAAA,CAACL,YAAOM,CAAAA,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;AACtE,CAAA;AAQA,MAAMgb,UAAAA,GAAa,CAAC,EAAErB,KAAK,EAAEzI,MAAM,EAAE+J,QAAW,GAAA,SAAS,EAAmB,GAAA;IAC1E,MAAM,EAAE5b,MAAM,EAAE+Q,QAAQ,EAAEoJ,MAAM,EAAE,GAAGhV,sBAAuB,CAAA,YAAA,CAAA;IAC5D,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMoW,YAAe,GAAA,IAAA;AACnB,QAAA,IAAI,CAAC7b,MAAAA,CAAOc,SAAS,EAAE,OAAO,KAAA;;AAG9B,QAAA,MAAMga,gBAAmB1a,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC5CQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;YACzDE,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwB;AACvB,SAAA,CAAA;AAEA,QAAA,IAAIwY,gBAAkB,EAAA;YACpB,MAAM,CAACvI,YAAY,GAAGuI,gBAAAA;YACtB,IAAI,CAAC1a,YAAOM,CAAAA,QAAQ,CAAC6R,WAAAA,CAAAA,IAAgB9E,UAAW8E,CAAAA,WAAAA,CAAAA,IAAgBA,WAAYV,CAAAA,MAAM,KAAKA,MAAAA,EACrF,OAAO,IAAA;AACX;QACA,OAAO,KAAA;AACT,KAAA;AAEA;;;AAGC,MACD,MAAMiK,cAAiB,GAAA,IAAA;;AAErB,QAAA,IAAI/K,QAAU,EAAA;YACZ,OAAO,IAAA;AACT;;QAGA,IAAI,CAAC/Q,MAAOc,CAAAA,SAAS,EAAE;YACrB,OAAO,KAAA;AACT;;AAGA,QAAA,MAAMib,eAAkB3b,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC3Ca,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwB,MAAM;YAC3B9B,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;AACA,QAAA,MAAMqb,cAAiB5b,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC1Ca,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwD,KAAK;YAC1B9D,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;QAEA,IAAI,CAACob,eAAmB,IAAA,CAACC,cAAgB,EAAA;YACvC,OAAO,KAAA;AACT;;AAGA,QAAA,OAAOD,eAAe,CAAC,CAAA,CAAE,KAAKC,cAAc,CAAC,CAAE,CAAA;AACjD,KAAA;AAEA,IAAA,MAAMC,aAAa,CAACpK,MAAAA,GAAAA;QAClB,IAAIiJ,gBAAAA;QACJ,IAAI9a,MAAAA,CAAOc,SAAS,EAAE;YACpBga,gBAAmB1a,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;gBACtCQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,aAAA,CAAA;SACK,MAAA;;YAEL,MAAM,CAACT,GAAGC,YAAa,CAAA,GAAGC,aAAOC,IAAI,CAACL,QAAQ,EAAE,CAAA;YAChD8a,gBAAmB1a,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;gBACtCQ,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;gBACzDE,EAAIV,EAAAA;AACN,aAAA,CAAA;AACF;AAEA,QAAA,IAAI,CAAC2a,gBAAkB,EAAA;;YAErBX,MAAM,CAAC,CAAC,KAAK,EAAEtI,OAAO,CAAC,CAAC,CAAC5J,aAAa,CAAEjI,MAAAA,CAAAA;AACxC,YAAA;AACF;;QAGA,MAAM,CAACuS,WAAaL,EAAAA,eAAAA,CAAgB,GAAG4I,gBAAAA;AAEvC,QAAA,IAAI,CAAC1a,YAAOM,CAAAA,QAAQ,CAAC6R,WAAAA,CAAAA,IAAgB9E,WAAW8E,WAAc,CAAA,EAAA;YAC5D,IAAIA,WAAAA,CAAYV,MAAM,KAAKA,MAAQ,EAAA;;gBAEjCvR,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;AAAE6R,oBAAAA;iBAAU,EAAA;oBAAEhR,EAAIqR,EAAAA;AAAgB,iBAAA,CAAA;aACzD,MAAA;;AAELiI,gBAAAA,MAAM,CAAC,WAAA,CAAY,CAAClS,aAAa,CAAEjI,MAAAA,CAAAA;AACrC;AACF;AACF,KAAA;AAEA,IAAA,IAAI4b,aAAa,MAAQ,EAAA;QACvB,MAAMtC,IAAAA,GAAOgB,MAAMzS,IAAI;AAEvB,QAAA,qBACEhC,eAACqW,CAAAA,cAAAA,EAAAA;AACCC,YAAAA,QAAAA,EAAU,IAAMF,UAAWpK,CAAAA,MAAAA,CAAAA;YAC3B0H,QAAUsC,EAAAA,YAAAA,EAAAA;YACV9K,QAAU+K,EAAAA,cAAAA,EAAAA;;8BAEV/e,cAACuc,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;AACA9T,gBAAAA,aAAAA,CAAc8U,MAAMza,KAAK;;;AAGhC;AAEA,IAAA,qBACE9C,cAACsc,CAAAA,aAAAA,EAAAA;AACCxR,QAAAA,IAAAA,EAAMyS,MAAMzS,IAAI;QAChBgE,IAAMgG,EAAAA,MAAAA;AACNhS,QAAAA,KAAAA,EAAOya,MAAMza,KAAK;QAClB0Z,QAAUsC,EAAAA,YAAAA,EAAAA;QACV9K,QAAU+K,EAAAA,cAAAA,EAAAA;AACVtC,QAAAA,WAAAA,EAAa,IAAMyC,UAAWpK,CAAAA,MAAAA;;AAGpC,CAAA;AAEA,MAAMuK,aAAa,CAAC,EAClBrL,QAAQ,EACR6K,QAAAA,GAAW,SAAS,EAIrB,GAAA;AACC,IAAA,MAAM,EAAE5b,MAAM,EAAE,GAAGmF,sBAAuB,CAAA,YAAA,CAAA;IAC1C,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM4W,YAAe,GAAA,IAAA;QACnB,MAAM,EAAEvb,SAAS,EAAE,GAAGd,MAAAA;QAEtB,IAAI,CAACc,WAAW,OAAO,KAAA;QAEvB,MAAM,CAACN,MAAM,GAAGiM,KAAAA,CAAMC,IAAI,CACxBtM,YAAAA,CAAOuM,KAAK,CAAC3M,MAAQ,EAAA;YACnBa,EAAIT,EAAAA,YAAAA,CAAOkc,WAAW,CAACtc,MAAQc,EAAAA,SAAAA,CAAAA;YAC/BN,KAAO,EAAA,CAACC,OAAS6L,aAAa/I,CAAAA,SAAS,CAAC9C,IAASA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK;AACjE,SAAA,CAAA,CAAA;AAGF,QAAA,OAAOqQ,OAAQxQ,CAAAA,KAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,MAAM+b,cAAiB,GAAA,IAAA;;AAErB,QAAA,IAAIxL,QAAU,EAAA;YACZ,OAAO,IAAA;AACT;;QAGA,IAAI,CAAC/Q,MAAOc,CAAAA,SAAS,EAAE;YACrB,OAAO,KAAA;AACT;;AAGA,QAAA,MAAMib,eAAkB3b,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC3Ca,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwB,MAAM;YAC3B9B,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;AACA,QAAA,MAAMqb,cAAiB5b,GAAAA,YAAAA,CAAOa,KAAK,CAACjB,MAAQ,EAAA;YAC1Ca,EAAIb,EAAAA,MAAAA,CAAOc,SAAS,CAACwD,KAAK;YAC1B9D,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA;QAEA,IAAI,CAACob,eAAmB,IAAA,CAACC,cAAgB,EAAA;YACvC,OAAO,KAAA;AACT;;AAGA,QAAA,OAAOD,eAAe,CAAC,CAAA,CAAE,KAAKC,cAAc,CAAC,CAAE,CAAA;AACjD,KAAA;AAEA,IAAA,MAAMQ,OAAU,GAAA,IAAA;AACdxc,QAAAA,MAAAA,CAAOyc,kBAAkB,GAAG,IAAA;;AAE5BlQ,QAAAA,UAAAA,CAAWvM,MAAQ,EAAA;YAAEmK,GAAK,EAAA;AAAG,SAAA,CAAA;AAC/B,KAAA;AAEA,IAAA,MAAMtK,KAAQ,GAAA;QACZ0H,EAAI,EAAA,wBAAA;QACJC,cAAgB,EAAA;AAClB,KAAA;AAEA,IAAA,IAAIoU,aAAa,MAAQ,EAAA;AACvB,QAAA,qBACE/V,eAACqW,CAAAA,cAAAA,EAAAA;YAAeC,QAAUK,EAAAA,OAAAA;YAASjD,QAAU8C,EAAAA,YAAAA,EAAAA;YAAgBtL,QAAUwL,EAAAA,cAAAA,EAAAA;;8BACrExf,cAACkU,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;gBACAzL,aAAc3F,CAAAA,KAAAA;;;AAGrB;AAEA,IAAA,qBACE9C,cAACsc,CAAAA,aAAAA,EAAAA;QACCxR,IAAMoJ,EAAAA,UAAAA;QACNpF,IAAK,EAAA,MAAA;QACLhM,KAAOA,EAAAA,KAAAA;QACP0Z,QAAU8C,EAAAA,YAAAA,EAAAA;QACV7C,WAAagD,EAAAA,OAAAA;QACbzL,QAAUwL,EAAAA,cAAAA;;AAGhB,CAAA;AAqGA,MAAML,cAAiBzX,GAAAA,uBAAAA,CAAOiT,iBAAKgF,CAAAA,IAAI,CAAwB;;sBAEzC,EAAE,CAAC,EAAE/X,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8T,UAAU,CAAC;;;AAG7D,EAAA,EAAE,CAACzT,KACDA,GAAAA,KAAAA,CAAMqU,QAAQ,IACd5P,oBAAG;;wBAEiB,EAAE,CAAC,EAAEhF,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8T,UAAU,CAAC;aACpD,EAAE,CAAC,EAAEhU,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC+E,UAAU,CAAC;;AAElD,IAAA,CAAC;;;;SAII,EAAE,CAAC,EAAEjF,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;AAKhC,UAAA,EAAE,CAAC,EAAEJ,KAAK,EAAE4U,QAAQ,EAAE,GAC1BA,QAAAA,GAAW5U,KAAME,CAAAA,MAAM,CAAC+E,UAAU,GAAGjF,MAAME,MAAM,CAAC8Q,UAAU,CAAC;;AAEnE,CAAC;AAED,MAAMgH,aAAgB,GAAA,IAAA;IACpB,MAAM,EAAE3c,MAAM,EAAEma,MAAM,EAAEyC,SAAS,EAAE7L,QAAQ,EAAE,GAAG5L,sBAAuB,CAAA,eAAA,CAAA;IACvE,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B;;AAEC,MACD,MAAMoX,mBAAsB,GAAA,IAAA;;AAE1B,QAAA,IAAI9L,QAAU,EAAA;YACZ,OAAO,IAAA;AACT;QAEA,IAAI,CAAC/Q,MAAOc,CAAAA,SAAS,EAAE;YACrB,OAAO,KAAA;AACT;AAEA,QAAA,MAAMma,YAAejb,GAAAA,MAAAA,CAAOzD,QAAQ,CAACyD,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI,CAAC,CAAA,CAAE,CAAC;QAErE,IAAI;AAAC,YAAA,OAAA;AAAS,YAAA;AAAO,SAAA,CAAClB,QAAQ,CAAC+Y,YAAata,CAAAA,IAAI,CAAG,EAAA;YACjD,OAAO,IAAA;AACT;QAEA,OAAO,KAAA;AACT,KAAA;AAEA,IAAA,MAAMmc,gBAAmBD,GAAAA,mBAAAA,EAAAA;AAEzB;;;;;;AAMC,MACD,MAAM9F,kBAA0C,GAAA;WAC3CxZ,MAAOyM,CAAAA,OAAO,CAAC4S,SAAWnV,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACoE,MAAM5I,QAAS,CAAA,GAAA;YAChD,MAAMqW,IAAAA,GAAOrW,SAAS4E,IAAI;YAC1B,MAAM0R,QAAAA,GAAWtW,QAAS8Z,CAAAA,aAAa,CAAC/c,MAAAA,CAAAA;AACxC,YAAA,MAAMya,YAAe,GAAA,IAAMxX,QAAS+Z,CAAAA,YAAY,CAAChd,MAAAA,CAAAA;YAEjD,OAAO;AACLwX,gBAAAA,OAAAA,gBACEza,cAACsc,CAAAA,aAAAA,EAAAA;oBAECxN,IAAMA,EAAAA,IAAAA;AACNhE,oBAAAA,IAAAA,EAAM5E,SAAS4E,IAAI;AACnBhI,oBAAAA,KAAAA,EAAOoD,SAASpD,KAAK;oBACrB0Z,QAAUtW,EAAAA,QAAAA,CAAS8Z,aAAa,CAAC/c,MAAAA,CAAAA;oBACjCwZ,WAAaiB,EAAAA,YAAAA;oBACb1J,QAAU+L,EAAAA;AANLjR,iBAAAA,EAAAA,IAAAA,CAAAA;AASTuM,gBAAAA,IAAAA,gBACEvS,eAACqW,CAAAA,cAAAA,EAAAA;oBAAeC,QAAU1B,EAAAA,YAAAA;oBAAclB,QAAUA,EAAAA,QAAAA;;sCAChDxc,cAACuc,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA;AACA9T,wBAAAA,aAAAA,CAAcvC,SAASpD,KAAK;;;AAGjC+B,gBAAAA,GAAAA,EAAK,CAAC,SAAS,EAAEiK,IAAAA,CAAK;AACxB,aAAA;AACF,SAAA,CAAA;AACA,QAAA;AACE2L,YAAAA,OAAAA,gBAASza,cAACqf,CAAAA,UAAAA,EAAAA;gBAAWrL,QAAU+L,EAAAA,gBAAAA;gBAAkBlB,QAAS,EAAA;;AAC1DxD,YAAAA,IAAAA,gBAAMrb,cAACqf,CAAAA,UAAAA,EAAAA;gBAAWrL,QAAU+L,EAAAA,gBAAAA;gBAAkBlB,QAAS,EAAA;;YACvDha,GAAK,EAAA;AACP,SAAA;AACA,QAAA;;AAEE4V,YAAAA,OAAAA,gBACE3R,eAAC4D,CAAAA,iBAAAA,EAAAA;gBAAK+G,SAAU,EAAA,KAAA;gBAAMC,GAAK,EAAA,CAAA;;kCACzB1T,cAACwb,CAAAA,gBAAAA,EAAAA,EAAAA,CAAAA;AACD,kCAAAxb,cAAA,CAACyb,mBAAQyE,WAAW,EAAA;wBAACtc,IAAK,EAAA,QAAA;wBAASqZ,OAAO,EAAA,IAAA;AACxC,wBAAA,QAAA,gBAAAnU,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKgH,GAAK,EAAA,CAAA;;8CACT1T,cAAC4e,CAAAA,UAAAA,EAAAA;oCAAWrB,KAAOH,EAAAA,MAAM,CAAC,gBAAiB,CAAA;oCAAEtI,MAAO,EAAA,WAAA;oCAAY+J,QAAS,EAAA;;8CACzE7e,cAAC4e,CAAAA,UAAAA,EAAAA;oCAAWrB,KAAOH,EAAAA,MAAM,CAAC,cAAe,CAAA;oCAAEtI,MAAO,EAAA,SAAA;oCAAU+J,QAAS,EAAA;;;;;;;YAK7ExD,IACE,gBAAAvS,eAAA,CAAA0V,mBAAA,EAAA;;AACE,kCAAAxe,cAAA,CAAC2a,kBAAKe,SAAS,EAAA,EAAA,CAAA;kCACf1b,cAAC4e,CAAAA,UAAAA,EAAAA;wBAAWrB,KAAOH,EAAAA,MAAM,CAAC,gBAAiB,CAAA;wBAAEtI,MAAO,EAAA,WAAA;wBAAY+J,QAAS,EAAA;;kCACzE7e,cAAC4e,CAAAA,UAAAA,EAAAA;wBAAWrB,KAAOH,EAAAA,MAAM,CAAC,cAAe,CAAA;wBAAEtI,MAAO,EAAA,SAAA;wBAAU+J,QAAS,EAAA;;;;YAGzEha,GAAK,EAAA;AACP;AACD,KAAA;IAED,qBACE7E,cAAA,CAACyb,mBAAQxI,IAAI,EAAA;QAAC+J,eAAehJ,EAAAA,QAAAA;QAAUiJ,OAAO,EAAA,IAAA;AAC5C,QAAA,QAAA,gBAAAnU,eAACwS,CAAAA,cAAAA,EAAAA;YAAe5H,GAAK,EAAA,CAAA;YAAG9J,OAAS,EAAA,CAAA;YAAGX,KAAM,EAAA,MAAA;;8BACxCjJ,cAACmd,CAAAA,cAAAA,EAAAA,EAAAA,CAAAA;8BACDnd,cAACwb,CAAAA,gBAAAA,EAAAA,EAAAA,CAAAA;AACD,8BAAAxb,cAAA,CAACyb,mBAAQyE,WAAW,EAAA;oBAACtc,IAAK,EAAA,UAAA;oBAAWqZ,OAAO,EAAA,IAAA;AAC1C,oBAAA,QAAA,gBAAAjd,cAAC0M,CAAAA,iBAAAA,EAAAA;wBAAK+G,SAAU,EAAA,KAAA;wBAAMC,GAAK,EAAA,CAAA;wBAAGyM,IAAM,EAAA,CAAA;wBAAGC,QAAS,EAAA,QAAA;AAC9C,wBAAA,QAAA,gBAAApgB,cAAC+Z,CAAAA,qBAAAA,EAAAA;4BAAsBC,kBAAoBA,EAAAA;;;;;;;AAMvD,CAAA;;ACnvBA,MAAMqG,cAAAA,GAAiB3Y,uBAAO4Y,CAAAA,mBAAAA,CAAsC;;;;;OAK7D,EAAE,CAAC,EAAE1Y,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;AAG/B,SAAA,EAAE,CAACG,KAAWA,GAAAA,KAAAA,CAAMoY,cAAc,GAAG,UAAU,MAAQ,CAAA;;;;oBAI5C,EAAE,CAAC,EAAE3Y,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;AAErD,CAAC;AAED,MAAMwY,SAAAA,GAAU9Y,uBAAqBqB,CAAAA,gBAAAA,CAAmC;AAC5D,YAAA,EAAE,CAAC,EAAE0X,gBAAgB,EAAE,GAAKA,oBAAoB,UAAW,CAAA;AACvE,CAAC;AAID,MAAMC,eAAAA,GAAkBhZ,uBAAqBqB,CAAAA,gBAAAA,CAG3C;;;;;EAKA,EAAE,CAAC,EAAE4X,aAAa,EAAE/Y,KAAK,EAAEgZ,iBAAiB,EAAE,GAAKhU,oBAAG;AAC/C,SAAA,EAAE+T,aAAkBE,KAAAA,kBAAAA,CAAWC,MAAM,IAAI,CAAC,CAAC,EAAElZ,KAAAA,CAAMI,MAAM,CAAC4Y,iBAAkB,CAAA,CAAC,CAAC,CAAC;AAC5E,YAAA,EAAED,aAAkBE,KAAAA,kBAAAA,CAAWE,QAAQ,IAAI,CAAC,CAAC,EAAEnZ,KAAAA,CAAMI,MAAM,CAAC4Y,iBAAkB,CAAA,CAAC,CAAC,CAAC;AAC3F,EAAA,CAAC;AACH,CAAC;AAED,MAAMI,QAAAA,GAAWtZ,uBAAsBgF,CAAAA,iBAAAA,CAAuD;;;;;;;;;AAS9E,gBAAA,EAAE,CAACvE,KAAAA,GAAUA,KAAM8Y,CAAAA,eAAe,CAAC;;;;;;AAMnD,CAAC;AAED,MAAMC,cAAAA,GAAiBxZ,uBAAmCqT,CAAAA,uBAAAA,CAExD;;;;;;AAMe,iBAAA,EAAE,CAAC,EAAEnT,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;gBACrC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;iBAChC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;eACnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;kBAC9B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;AAIrC,cAAA,EAAE,CAACG,KAAAA,GAAUA,KAAMgZ,CAAAA,oBAAoB,IAAI,CAAE,CAAA;;;gBAG3C,EAAE,CAAC,EAAEvZ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;gBAIzC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;;;;;;eAM1C,EAAE,CAAC,EAAE3T,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;YAGpC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACsZ,UAAU,CAAC;;;AAGrD,CAAC;AAaD,MAAMC,kBAAqB,GAAA,CAAC,EAC1B7hB,QAAQ,SACRuC,OAAK,EACLuf,gBAAgB,EAChBX,aAAa,EACbxU,mBAAmB,EACK,GAAA;IACxB,MAAM,EAAElJ,MAAM,EAAE+Q,QAAQ,EAAElF,IAAAA,EAAAA,KAAI,EAAEyS,WAAW,EAAE,GAAGnZ,sBAAuB,CAAA,eAAA,CAAA;IACvE,MAAM,EAAEK,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAAC8Y,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAG7hB,gBAAAA,CAAMC,QAAQ,CAA8B,QAAA,CAAA;AAExF,IAAA,MAAM6hB,eAAkB9hB,GAAAA,gBAAAA,CAAM6C,WAAW,CACvC,CAACkf,QAAyBC,EAAAA,YAAAA,GAAAA;QACxBre,gBAAWsT,CAAAA,SAAS,CAAC5T,MAAQ,EAAA;YAC3Ba,EAAI8d,EAAAA,YAAAA;YACJ9K,EAAI6K,EAAAA;AACN,SAAA,CAAA;;AAGA,QAAA,MAAME,oBAAuB,GAAA;YAACD,YAAY,CAAC,EAAE,GAAG,CAAA;AAAMA,YAAAA,GAAAA,YAAAA,CAAanL,KAAK,CAAC,CAAA;AAAG,SAAA;AAC5E,QAAA,MAAMqL,gBAAmB,GAAA;YAACH,QAAQ,CAAC,EAAE,GAAG,CAAA;AAAMA,YAAAA,GAAAA,QAAAA,CAASlL,KAAK,CAAC,CAAA;AAAG,SAAA;AAEhE8K,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,+BAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;YACE6M,IAAM,EAAA,CAAC,EAAExI,KAAK,CAAA,CAAC,EAAE+S,oBAAqBnQ,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAK,CAAC;AACjD1I,YAAAA,QAAAA,EAAU,CAAC,EAAE8Y,gBAAiBpQ,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAK,IAAI,EAAEzO,MAAOzD,CAAAA,QAAQ,CAACwB,MAAM,CAAC;AACvE,SAAA,CAAA,CAAA;KAIN,EAAA;AAACiC,QAAAA,MAAAA;AAAQwF,QAAAA,aAAAA;AAAeqG,QAAAA,KAAAA;AAAMyS,QAAAA;AAAY,KAAA,CAAA;AAG5C,IAAA,MAAM,CAAC,EAAES,SAAS,EAAEC,UAAU,EAAExB,gBAAgB,EAAEhN,SAAS,EAAE,EAAEyO,QAAUC,EAAAA,OAAAA,EAASC,QAAQ,GACxFC,sBAAAA,CAAe,CAACrO,QAAU,EAAA;QACxBpQ,IAAM,EAAA,CAAC,EAAE0e,iBAAUC,CAAAA,MAAM,CAAC,CAAC,EAAEzT,MAAK,CAAC;AACnC/M,eAAAA,OAAAA;QACAuV,IAAM,EAAA;AACJvV,mBAAAA,OAAAA;YACAygB,cAAgBhjB,EAAAA;AAClB,SAAA;QACAijB,UAAWb,CAAAA,CAAAA,YAAY,EAAED,QAAQ,EAAA;YAC/B,IAAIA,QAAAA,EAAUD,gBAAgBC,QAAUC,EAAAA,YAAAA,CAAAA;AAC1C;AACF,KAAA,CAAA;IAEF,MAAMc,eAAAA,GAAkBC,6BAAgBT,QAAUC,EAAAA,OAAAA,CAAAA;;AAGlDviB,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIoS,SAAW,EAAA;YACb6N,gBAAiB7N,CAAAA,SAAAA,CAAAA;AACnB;KACC,EAAA;AAACA,QAAAA,SAAAA;AAAW6N,QAAAA;AAAiB,KAAA,CAAA;;AAGhC1hB,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACdogB,iBAAkB,CAAA,QAAA,CAAA;KACjB,EAAA;AAACxe,QAAAA,MAAAA,CAAOc;AAAU,KAAA,CAAA;AAErB,IAAA,qBACE+E,eAAC0X,CAAAA,SAAAA,EAAAA;QAAQrN,GAAKuP,EAAAA,eAAAA;QAAiBjC,gBAAkBA,EAAAA,gBAAAA;;AAC9CA,YAAAA,gBAAAA,kBACCzgB,cAAC0gB,CAAAA,eAAAA,EAAAA;gBACCpX,WAAY,EAAA,OAAA;gBACZD,WAAY,EAAA,cAAA;gBACZE,WAAY,EAAA,KAAA;gBACZN,KAAM,EAAA,mBAAA;gBACN2Z,UAAW,EAAA,MAAA;gBACXjC,aAAeA,EAAAA,aAAAA;;gBAEfC,iBAAmBphB,EAAAA,QAAAA,CAAS2I,KAAK,CAAC0a,EAAE,IAAIrjB,QAAS2I,CAAAA,KAAK,CAAC0a,EAAE,KAAK,IAAA,GAAO,CAAI,GAAA;;AAG5EZ,YAAAA,UAAAA,iBACCjiB,cAAC8iB,CAAAA,aAAAA,EAAAA;gBAAc3W,mBAAqBA,EAAAA,mBAAAA;AAAsB3M,gBAAAA,QAAAA,EAAAA;+BAE1DsJ,eAACkY,CAAAA,QAAAA,EAAAA;gBACC7N,GAAKiP,EAAAA,OAAAA;gBACLW,iBAAiBf,EAAAA,SAAAA;gBACjBtO,GAAK,EAAA,CAAA;gBACLmH,WAAa,EAAA,CAAA;gBACbjH,UAAW,EAAA,OAAA;AACXoP,gBAAAA,WAAAA,EAAa,CAAC3N,KAAAA,GAAAA;oBACZ,MAAMhD,MAAAA,GAASgD,MAAMhD,MAAM;oBAC3B,MAAM4Q,aAAAA,GAAgB5N,MAAM4N,aAAa;;AAGzC,oBAAA,IAAI5Q,MAAO6Q,CAAAA,YAAY,CAAC,MAAA,CAAA,KAAY,QAAU,EAAA;AAC5C7N,wBAAAA,KAAAA,CAAM/K,cAAc,EAAA;qBACf,MAAA;;wBAEL2Y,aAAcpJ,CAAAA,KAAK,CAACsJ,OAAO,GAAG,KAAA;AAChC;AACF,iBAAA;AACAC,gBAAAA,SAAAA,EAAW,CAAC/N,KAAAA,GAAAA;oBACV,MAAM4N,aAAAA,GAAgB5N,MAAM4N,aAAa;oBACzCA,aAAcpJ,CAAAA,KAAK,CAACsJ,OAAO,GAAG,GAAA;AAChC,iBAAA;AACAE,gBAAAA,WAAAA,EAAa,IAAM5B,iBAAkB,CAAA,SAAA,CAAA;AACrCrC,gBAAAA,QAAAA,EAAU,IAAMqC,iBAAkB,CAAA,SAAA,CAAA;AAClC6B,gBAAAA,YAAAA,EAAc,IAAM7B,iBAAkB,CAAA,QAAA,CAAA;gBACtCzE,eAAehJ,EAAAA,QAAAA;gBACfiN,eAAiBO,EAAAA,cAAAA;;kCAEjBxhB,cAACkhB,CAAAA,cAAAA,EAAAA;wBACC1V,GAAI,EAAA,KAAA;wBACJgC,eAAiB,EAAA,KAAA;wBACjBgL,IAAK,EAAA,QAAA;wBACL+K,QAAU,EAAA,CAAA;wBACVC,WAAa,EAAA,KAAA;AACb1gB,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,6BAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACA4I,OAAS,EAAA,CAAChJ,CAAMA,GAAAA,CAAAA,CAAEqI,eAAe,EAAA;wBACjCsK,eAAehJ,EAAAA,QAAAA;wBACfA,QAAUA,EAAAA,QAAAA;wBACVyP,SAAS,EAAA,IAAA;;wBAETtC,oBAAsBhV,EAAAA,mBAAAA;AAEtB,wBAAA,QAAA,gBAAAnM,cAAC0jB,CAAAA,UAAAA,EAAAA;4BAAKpQ,KAAM,EAAA;;;AAEb9T,oBAAAA;;;;;AAKX,CAAA;AAOA;AACA,MAAMsjB,gBAAgB,CAAC,EAAEtjB,QAAQ,EAAE2M,mBAAmB,EAAsB,GAAA;IAC1E,MAAM,EAAE1D,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEI,eAACkY,CAAAA,QAAAA,EAAAA;QAAStN,GAAK,EAAA,CAAA;QAAGmH,WAAa,EAAA,CAAA;QAAGjH,UAAW,EAAA,OAAA;QAAQqN,eAAgB,EAAA,SAAA;;0BACnEjhB,cAACkhB,CAAAA,cAAAA,EAAAA;gBACC1V,GAAI,EAAA,KAAA;gBACJgN,IAAK,EAAA,QAAA;gBACLgL,WAAa,EAAA,KAAA;AACb1gB,gBAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,6BAAA,CAAA;oBACnBtX,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACA0W,oBAAsBhV,EAAAA,mBAAAA;AAEtB,gBAAA,QAAA,gBAAAnM,cAAC0jB,CAAAA,UAAAA,EAAAA;oBAAKpQ,KAAM,EAAA;;;AAEb9T,YAAAA;;;AAGP,CAAA;AAMA,MAAMmkB,cAAAA,GAAiB,CAACxb,KAAgC0X,EAAAA,SAAAA,GAAAA;;AAEtD,IAAA,MAAM+D,kBAAkBrT,UAAWsP,CAAAA,SAAAA,CAAAA,CAAW1d,MAAM,CAAC,CAAC0hB,eAAiBC,EAAAA,aAAAA,GAAAA;QACrE,MAAM,CAAChV,KAAM5I,EAAAA,QAAAA,CAAS,GAAG4d,aAAAA;AAEzB,QAAA,IAAI3b,KAAM4b,CAAAA,IAAI,CAACjV,KAAAA,CAAK,EAAE;YACpB,OAAO5I,QAAAA,CAAS8d,UAAU,CAACH,eAAAA,CAAAA;AAC7B;QAEA,OAAOA,eAAAA;AACT,KAAA,EAAG1b,MAAM3I,QAAQ,CAAA;AAEjB,IAAA,qBACEQ,cAACikB,CAAAA,MAAAA,EAAAA;AAAM,QAAA,GAAG9b,MAAMe,UAAU;QAAE1B,SAAWW,EAAAA,KAAAA,CAAM4b,IAAI,CAACvc,SAAS;AACxDoc,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAQA,MAAMM,iBAAoB,GAAA,CAAC,EACzB/b,KAAK,EACLiV,MAAM,EACNna,MAAM,EACNqe,gBAAgB,EAChBX,aAAa,EACU,GAAA;IACvB,MAAM,EAAExc,OAAO,EAAE,GAAGgE,KAAAA;IAEpB,MAAMgc,UAAAA,GAAa3jB,MAAO4jB,CAAAA,MAAM,CAAChH,MAAAA,CAAAA,CAAQzW,IAAI,CAAC,CAAC4W,KAAAA,GAAUA,KAAMvS,CAAAA,SAAS,CAAC7G,OAAAA,CAAAA,CAAAA;IACzE,MAAMoZ,KAAAA,GAAQ4G,UAAc/G,IAAAA,MAAAA,CAAOtF,SAAS;AAC5C,IAAA,MAAM1S,QAAW+E,GAAAA,sBAAAA,CAAY+G,QAAQ,CAACjO,MAAQkB,EAAAA,OAAAA,CAAAA;;;AAI9C,IAAA,IACEsM,UAAWtM,CAAAA,OAAAA,CAAAA,IACVuM,YAAWvM,CAAAA,OAAAA,CAAAA,IAAYA,QAAQ6Q,WAAW,IAAI7Q,OAAQ6Q,CAAAA,WAAW,GAAG,CAAA,IACrE7Q,OAAQP,CAAAA,IAAI,KAAK,WACjB,EAAA;QACA,OAAO2Z,KAAAA,CAAM1S,aAAa,CAAC1C,KAAAA,CAAAA;AAC7B;AAEA,IAAA,qBACEnI,cAACqhB,CAAAA,kBAAAA,EAAAA;QACCtf,KAAOqD,EAAAA,QAAAA;QACPkc,gBAAkBA,EAAAA,gBAAAA;QAClBX,aAAeA,EAAAA,aAAAA;AACfxU,QAAAA,mBAAAA,EAAqBoR,MAAMpR,mBAAmB;AAE7CoR,QAAAA,QAAAA,EAAAA,KAAAA,CAAM1S,aAAa,CAAC1C,KAAAA;;AAG3B,CAAA;AAOA,MAAMkc,gBAAgB,CAAC,EAAEvQ,WAAW,EAAEwQ,WAAW,EAAsB,GAAA;AACrE,IAAA,MAAM,EAAErhB,MAAM,EAAE+Q,QAAQ,EAAEoJ,MAAM,EAAEyC,SAAS,EAAE0B,WAAW,EAAEhB,cAAc,EAAE,GACxEnY,sBAAuB,CAAA,eAAA,CAAA;IACzB,MAAMmc,SAAAA,GAAY3kB,gBAAMoS,CAAAA,MAAM,CAAiB,IAAA,CAAA;IAC/C,MAAM,EAAEvJ,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACiY,aAAeW,EAAAA,gBAAAA,CAAiB,GAAG1hB,gBAAAA,CAAMC,QAAQ,CAAuB,IAAA,CAAA;AAC/E,IAAA,MAAM,EAAEkc,YAAY,EAAEE,sBAAsB,EAAE,GAAGH,kBAAAA,EAAAA;;IAGjD,MAAMkI,UAAAA,GAAapkB,iBAAM6C,WAAW,CAClC,CAAC0F,KAAmCwb,GAAAA,cAAAA,CAAexb,OAAO0X,SAC1D,CAAA,EAAA;AAACA,QAAAA;AAAU,KAAA,CAAA;IAGb,MAAM2E,gBAAAA,GAAmB,CAACvhB,MAAgBoS,EAAAA,KAAAA,GAAAA;QACxC,IAAI,CAACpS,MAAOc,CAAAA,SAAS,EAAE;AAEvB,QAAA,MAAMoD,KAAQ0I,GAAAA,WAAAA,CAAM1I,KAAK,CAAClE,OAAOc,SAAS,CAAA;AAC1C,QAAA,MAAM6d,YAAe,GAAA;YAACza,KAAMd,CAAAA,IAAI,CAAC,CAAE;AAAC,SAAA;AACpC,QAAA,IAAIyb,gBAAmB,GAAA,CAAA;QAEvB,IAAIzM,KAAAA,CAAMxQ,GAAG,KAAK,SAAW,EAAA;AAC3Bid,YAAAA,gBAAAA,GAAmBF,YAAY,CAAC,CAAE,CAAA,GAAG,CAAIA,GAAAA,YAAY,CAAC,CAAA,CAAE,GAAG,CAAA,GAAIA,YAAY,CAAC,CAAE,CAAA;SACzE,MAAA;AACLE,YAAAA,gBAAAA,GACEF,YAAY,CAAC,CAAA,CAAE,GAAG3e,MAAAA,CAAOzD,QAAQ,CAACwB,MAAM,GAAG,CAAA,GAAI4gB,YAAY,CAAC,CAAA,CAAE,GAAG,CAAIA,GAAAA,YAAY,CAAC,CAAE,CAAA;AACxF;AAEA,QAAA,MAAMD,QAAW,GAAA;AAACG,YAAAA;AAAiB,SAAA;AAEnC,QAAA,IAAIA,gBAAqBF,KAAAA,YAAY,CAAC,CAAA,CAAE,EAAE;YACxCre,gBAAWsT,CAAAA,SAAS,CAAC5T,MAAQ,EAAA;gBAC3Ba,EAAI8d,EAAAA,YAAAA;gBACJ9K,EAAI6K,EAAAA;AACN,aAAA,CAAA;AAEAJ,YAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,gBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,+BAAA,CAAA;gBACnBtX,cAAgB,EAAA;aAElB,EAAA;gBACE6M,IAAM,EAAA,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE8S,YAAY,CAAC,CAAA,CAAE,GAAG,CAAA,CAAE,CAAC;AACtC5Y,gBAAAA,QAAAA,EAAU,CAAC,EAAE2Y,QAAQ,CAAC,EAAE,GAAG,CAAA,CAAE,IAAI,EAAE1e,MAAOzD,CAAAA,QAAQ,CAACwB,MAAM,CAAC;AAC5D,aAAA,CAAA,CAAA;AAIJqU,YAAAA,KAAAA,CAAM/K,cAAc,EAAA;AACtB;AACF,KAAA;;AAGA,IAAA,MAAMO,gBAAgBjL,gBAAM6C,CAAAA,WAAW,CACrC,CAAC0F,QACC+b,iBAAkB,CAAA;AAAE/b,YAAAA,KAAAA;AAAOiV,YAAAA,MAAAA;AAAQna,YAAAA,MAAAA;AAAQ0d,YAAAA,aAAAA;AAAeW,YAAAA;SAC5D,CAAA,EAAA;AAAClE,QAAAA,MAAAA;AAAQna,QAAAA,MAAAA;AAAQ0d,QAAAA,aAAAA;AAAeW,QAAAA;AAAiB,KAAA,CAAA;AAGnD,IAAA,MAAMmD,eAAe,CAACpP,KAAAA,GAAAA;;QAEpB,IAAI,CAACpS,MAAOc,CAAAA,SAAS,EAAE;AACrB,YAAA;AACF;AAEA,QAAA,MAAM,CAAC2gB,QAAAA,EAAUC,YAAa,CAAA,GAAGthB,YAAOK,CAAAA,IAAI,CAACT,MAAAA,EAAQA,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI,CAAA;;AAGjF,QAAA,IAAIhD,aAAOM,QAAQ,CAAC+gB,aAAaA,QAAS9gB,CAAAA,IAAI,KAAK,MAAQ,EAAA;AACzD,YAAA;AACF;;AAGA,QAAA,IAAI+gB,YAAa7gB,CAAAA,EAAE,CAAC,CAAC,OAAO,CAAG,EAAA;AAC7B,YAAA;AACF;;AAGA,QAAA,MAAM8gB,uBAAuBpkB,MAAO4jB,CAAAA,MAAM,CAAChH,MAAQzW,CAAAA,CAAAA,IAAI,CAAC,CAAC4W,KAAAA,GAAAA;AACvD,YAAA,OAAOA,KAAMnS,CAAAA,QAAQ,EAAEjG,QAAAA,CAASuf,SAAShf,IAAI,CAAA;AAC/C,SAAA,CAAA;AAEA,QAAA,IAAIkf,sBAAsB1Z,aAAe,EAAA;;AAEvCmK,YAAAA,KAAAA,CAAM/K,cAAc,EAAA;YACpB/G,gBAAWqC,CAAAA,MAAM,CAAC3C,MAAQ,EAAA;gBACxB4C,QAAU6e,EAAAA,QAAAA,CAAShf,IAAI,CAAC1E,MAAM;gBAC9B8E,IAAM,EAAA,WAAA;gBACNC,OAAS,EAAA;AACX,aAAA,CAAA;;YAGA,MAAMiY,gBAAAA,GAAmB4G,oBAAqB1Z,CAAAA,aAAa,CAACjI,MAAAA,CAAAA;YAC5DgZ,sBAAuB+B,CAAAA,gBAAAA,CAAAA;AACzB;AACF,KAAA;AAEA,IAAA,MAAM6G,cAAc,CAACxP,KAAAA,GAAAA;QACnB,IAAI,CAACpS,MAAOc,CAAAA,SAAS,EAAE;AACrB,YAAA;AACF;AAEA,QAAA,MAAMma,YAAejb,GAAAA,MAAAA,CAAOzD,QAAQ,CAACyD,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI,CAAC,CAAA,CAAE,CAAC;QACrE,MAAMye,aAAAA,GAAgBtkB,MAAO4jB,CAAAA,MAAM,CAAChH,MAAAA,CAAAA,CAAQzW,IAAI,CAAC,CAAC4W,KAAAA,GAAUA,KAAMvS,CAAAA,SAAS,CAACkT,YAAAA,CAAAA,CAAAA;AAC5E,QAAA,IAAI,CAAC4G,aAAe,EAAA;AAClB,YAAA;AACF;;AAGA,QAAA,IAAIzP,MAAM0P,QAAQ,IAAI7G,YAAata,CAAAA,IAAI,KAAK,OAAS,EAAA;YACnDL,gBAAW0C,CAAAA,UAAU,CAAChD,MAAQ,EAAA,IAAA,CAAA;AAC9B,YAAA;AACF;;QAGA,IAAI6hB,aAAAA,CAAc3Z,cAAc,EAAE;AAChC2Z,YAAAA,aAAAA,CAAc3Z,cAAc,CAAClI,MAAAA,CAAAA;SACxB,MAAA;YACLma,MAAOtF,CAAAA,SAAS,CAAC3M,cAAc,CAAElI,MAAAA,CAAAA;AACnC;AACF,KAAA;AAEA,IAAA,MAAM+hB,uBAAuB,CAAC3P,KAAAA,GAAAA;QAC5B,IAAI,CAACpS,MAAOc,CAAAA,SAAS,EAAE;AACrB,YAAA;AACF;AAEA,QAAA,MAAMma,YAAejb,GAAAA,MAAAA,CAAOzD,QAAQ,CAACyD,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI,CAAC,CAAA,CAAE,CAAC;QACrE,MAAMye,aAAAA,GAAgBtkB,MAAO4jB,CAAAA,MAAM,CAAChH,MAAAA,CAAAA,CAAQzW,IAAI,CAAC,CAAC4W,KAAAA,GAAUA,KAAMvS,CAAAA,SAAS,CAACkT,YAAAA,CAAAA,CAAAA;AAE5E,QAAA,IAAI,CAAC4G,aAAe,EAAA;AAClB,YAAA;AACF;QAEA,IAAIA,aAAAA,CAAczV,kBAAkB,EAAE;YACpCyV,aAAczV,CAAAA,kBAAkB,CAACpM,MAAQoS,EAAAA,KAAAA,CAAAA;AAC3C;AACF,KAAA;AAEA,IAAA,MAAMsC,YAAY,CAACtC,KAAAA,GAAAA;QACjB,IAAI,CAACpS,MAAOc,CAAAA,SAAS,EAAE;AACrB,YAAA;AACF;AAEA,QAAA,MAAMma,YAAejb,GAAAA,MAAAA,CAAOzD,QAAQ,CAACyD,MAAOc,CAAAA,SAAS,CAACwB,MAAM,CAACc,IAAI,CAAC,CAAA,CAAE,CAAC;QACrE,MAAMye,aAAAA,GAAgBtkB,MAAO4jB,CAAAA,MAAM,CAAChH,MAAAA,CAAAA,CAAQzW,IAAI,CAAC,CAAC4W,KAAAA,GAAUA,KAAMvS,CAAAA,SAAS,CAACkT,YAAAA,CAAAA,CAAAA;AAC5E,QAAA,IAAI,CAAC4G,aAAe,EAAA;AAClB,YAAA;AACF;QAEA,IAAIA,aAAAA,CAAcnN,SAAS,EAAE;AAC3BtC,YAAAA,KAAAA,CAAM/K,cAAc,EAAA;AACpBwa,YAAAA,aAAAA,CAAcnN,SAAS,CAAC1U,MAAAA,CAAAA;AAC1B;AACF,KAAA;AAEA,IAAA,MAAMgiB,0BAA0B,CAAC5P,KAAAA,GAAAA;AAC/B,QAAA,MAAM6P,WAAc7P,GAAAA,KAAAA,CAAM8P,OAAO,IAAI9P,MAAM+P,OAAO;AAElD,QAAA,IAAIF,WAAa,EAAA;;AAEf1kB,YAAAA,MAAAA,CAAO4jB,MAAM,CAACvE,SAAW/d,CAAAA,CAAAA,OAAO,CAAC,CAACe,KAAAA,GAAAA;gBAChC,IAAIA,KAAAA,CAAMwiB,eAAe,CAAChQ,KAAQ,CAAA,EAAA;AAChCxS,oBAAAA,KAAAA,CAAMod,YAAY,CAAChd,MAAAA,CAAAA;AACnB,oBAAA;AACF;AACF,aAAA,CAAA;YACA,IAAIoS,KAAAA,CAAM0P,QAAQ,IAAI;AAAC,gBAAA,SAAA;AAAW,gBAAA;AAAY,aAAA,CAAC5f,QAAQ,CAACkQ,KAAMxQ,CAAAA,GAAG,CAAG,EAAA;AAClE2f,gBAAAA,gBAAAA,CAAiBvhB,MAAQoS,EAAAA,KAAAA,CAAAA;AAC3B;AACF;AACF,KAAA;AAEA,IAAA,MAAMiQ,gBAAyD,CAACjQ,KAAAA,GAAAA;;AAE9D,QAAA,OAAQA,MAAMxQ,GAAG;YACf,KAAK,OAAA;AACHwQ,gBAAAA,KAAAA,CAAM/K,cAAc,EAAA;AACpB,gBAAA,OAAOua,WAAYxP,CAAAA,KAAAA,CAAAA;YACrB,KAAK,WAAA;AACH,gBAAA,OAAO2P,oBAAqB3P,CAAAA,KAAAA,CAAAA;YAC9B,KAAK,KAAA;AACH,gBAAA,OAAOsC,SAAUtC,CAAAA,KAAAA,CAAAA;YACnB,KAAK,QAAA;gBACH,OAAOlL,sBAAAA,CAAYob,IAAI,CAACtiB,MAAAA,CAAAA;AAC5B;QAEAgiB,uBAAwB5P,CAAAA,KAAAA,CAAAA;;QAGxB,IAAIA,KAAAA,CAAMxQ,GAAG,KAAK,GAAK,EAAA;YACrB4f,YAAapP,CAAAA,KAAAA,CAAAA;AACf;AACF,KAAA;AAEA;;;;;AAKC,MACD,MAAMmQ,6BAAgC,GAAA,IAAA;QACpC,IAAI,CAACviB,MAAOc,CAAAA,SAAS,EAAE;AACvB,QAAA,MAAM0hB,WAAWtb,sBAAYub,CAAAA,UAAU,CAACziB,MAAAA,EAAQA,OAAOc,SAAS,CAAA;QAChE,MAAM4hB,OAAAA,GAAUF,SAASG,qBAAqB,EAAA;QAC9C,MAAMC,WAAAA,GAActB,UAAUzR,OAAO;AAErC,QAAA,IAAI,CAAC+S,WAAa,EAAA;AAChB,YAAA;AACF;QAEA,MAAMC,UAAAA,GAAaD,YAAYD,qBAAqB,EAAA;;QAGpD,IAAID,OAAAA,CAAQlc,GAAG,GAAGqc,UAAWrc,CAAAA,GAAG,IAAIkc,OAAAA,CAAQI,MAAM,GAAGD,UAAWC,CAAAA,MAAM,EAAE;;AAEtEF,YAAAA,WAAAA,CAAYG,QAAQ,CAAC;gBACnBvc,GAAK,EAAA,EAAA;gBACLwc,QAAU,EAAA;AACZ,aAAA,CAAA;AACF;AACF,KAAA;AAEA,IAAA,qBACEnd,eAACC,CAAAA,gBAAAA,EAAAA;QACCoK,GAAKoR,EAAAA,SAAAA;QACLpE,IAAM,EAAA,CAAA;QACNlX,KAAM,EAAA,MAAA;QACNmX,QAAS,EAAA,MAAA;QACT8F,QAAU,EAAA,CAAA;QACV9c,UAAW,EAAA,UAAA;QACXkK,KAAM,EAAA,YAAA;QACN6S,UAAY,EAAA,CAAA;QACZrL,YAAc,EAAA,CAAA;QACdsL,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;;0BAEfrmB,cAACqgB,CAAAA,cAAAA,EAAAA;gBACCiG,iBAAiBhC,EAAAA,WAAAA;gBACjBiC,QAAUvS,EAAAA,QAAAA;gBACVF,WAAaA,EAAAA,WAAAA;gBACbyM,cAAgBA,EAAAA,cAAAA;gBAChBxd,QAAUqD,EAAAA,YAAAA;gBACVyE,aAAeA,EAAAA,aAAAA;gBACfmZ,UAAYA,EAAAA,UAAAA;gBACZwC,SAAWlB,EAAAA,aAAAA;gBACXmB,uBAAyBjB,EAAAA,6BAAAA;;gBAEzBkB,MAAQ,EAAA,IAAA;oBACN,OAAO,IAAA;AACT,iBAAA;gBACA1D,WAAa,EAAA,IAAA;oBACX,OAAO,IAAA;AACT;;AAEDjH,YAAAA;;;AAGP,CAAA;;ACjmBA,MAAM4K,kBAAAA,GAAqBjf,uBAAOqT,CAAAA,uBAAAA,CAAW;;;;AAI7C,CAAC;AAED,MAAM6L,eAAAA,GAAgBlf,uBAAsBgF,CAAAA,iBAAAA,CAAK;;AAEnC,cAAA,EAAE,CAAC,EAAE9E,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAUD,MAAM4e,cAAe,GAAA,CAAC,EACpBrnB,QAAQ,EACRgT,KAAK,EACLwB,QAAQ,EACR8S,UAAU,EACVC,iBAAiB,EACC,GAAA;IAClB,MAAM,EAAEte,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAE6X,cAAc,EAAE,GAAGnY,sBAAuB,CAAA,cAAA,CAAA;AAElDxI,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIkf,cAAgB,EAAA;AAClBzgB,YAAAA,QAAAA,CAASknB,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,kBAAA,CAAA;AAC9B;QAEA,OAAO,IAAA;AACLpnB,YAAAA,QAAAA,CAASknB,IAAI,CAACC,SAAS,CAACE,MAAM,CAAC,kBAAA,CAAA;AACjC,SAAA;KACC,EAAA;AAAC5G,QAAAA;AAAe,KAAA,CAAA;AAEnB,IAAA,IAAIA,cAAgB,EAAA;AAClB,QAAA,qBACEvgB,cAAConB,CAAAA,mBAAAA,EAAAA;YAAO5O,IAAK,EAAA,QAAA;YAAS6O,YAAY,EAAA,KAAA;AAChC,YAAA,QAAA,gBAAArnB,cAACsnB,CAAAA,sBAAAA,EAAAA;gBAAUC,QAAUT,EAAAA,UAAAA;AACnB,gBAAA,QAAA,gBAAA9mB,cAAC4mB,CAAAA,eAAAA,EAAAA;oBACC5d,QAAS,EAAA,OAAA;oBACTS,GAAK,EAAA,CAAA;oBACL+d,IAAM,EAAA,CAAA;oBACN7d,KAAO,EAAA,CAAA;oBACPoc,MAAQ,EAAA,CAAA;oBACR0B,MAAQ,EAAA,CAAA;oBACRha,cAAe,EAAA,QAAA;oBACf4F,OAASyT,EAAAA,UAAAA;AAET,oBAAA,QAAA,gBAAA9mB,cAAC+I,CAAAA,gBAAAA,EAAAA;wBACCK,UAAW,EAAA,UAAA;wBACXS,SAAS,EAAA,IAAA;wBACTL,MAAO,EAAA,aAAA;wBACP4W,QAAS,EAAA,QAAA;wBACTnX,KAAM,EAAA,KAAA;wBACNqE,MAAO,EAAA,KAAA;wBACP+F,OAAS,EAAA,CAAChJ,CAAMA,GAAAA,CAAAA,CAAEqI,eAAe,EAAA;wBACjCgV,kBAAkBX,EAAAA,iBAAAA;wBAClB/d,QAAS,EAAA,UAAA;AAET,wBAAA,QAAA,gBAAAF,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKY,MAAO,EAAA,MAAA;4BAAOsG,UAAW,EAAA,YAAA;4BAAaH,SAAU,EAAA,QAAA;;AACnDjU,gCAAAA,QAAAA;8CACDQ,cAAC2mB,CAAAA,kBAAAA,EAAAA;AACC7jB,oCAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,wCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,4BAAA,CAAA;wCACnBtX,cAAgB,EAAA;AAClB,qCAAA,CAAA;oCACA4I,OAASyT,EAAAA,UAAAA;AAET,oCAAA,QAAA,gBAAA9mB,cAAC2nB,CAAAA,cAAAA,EAAAA,EAAAA;;;;;;;;AAQjB;AAEA,IAAA,qBACE3nB,cAAC4nB,CAAAA,YAAAA,EAAAA;QACCnU,SAAU,EAAA,QAAA;QACVG,UAAW,EAAA,YAAA;QACXtG,MAAO,EAAA,OAAA;QACPua,SAAW7T,EAAAA,QAAAA;AACX8T,QAAAA,SAAAA,EAAW7T,OAAQzB,CAAAA,KAAAA,CAAAA;QACnBqH,KAAO,EAAA;YAAEuG,QAAU,EAAA;AAAS,SAAA;QAC5BsH,kBAAkBX,EAAAA,iBAAAA;QAClB/d,QAAS,EAAA,UAAA;AAERxJ,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAMooB,YAAAA,GAAelgB,uBAAsBgF,CAAAA,iBAAAA,CAAmD;;AAE1F,IAAA,EAAE,CAAC,EAAE9E,KAAK,EAAEkgB,SAAS,EAAE,GAAMA,SAAAA,GAAYlgB,KAAME,CAAAA,MAAM,CAACigB,SAAS,GAAGngB,MAAME,MAAM,CAAC6Q,UAAU,CAAE;AAC9E,iBAAA,EAAE,CAAC,EAAE/Q,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;cACvC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACkgB,QAAQ,CAAC;;EAEnD,EAAE,CAAC,EAAEpgB,KAAK,EAAEkgB,YAAY,KAAK,EAAE,GAAKlb,oBAAG;;;;;;;wBAOjB,EAAEkb,SAAAA,GAAYlgB,KAAME,CAAAA,MAAM,CAACigB,SAAS,GAAGngB,KAAME,CAAAA,MAAM,CAAC+E,UAAU,CAAC;kBACrE,EAAEib,SAAAA,GAAYlgB,KAAME,CAAAA,MAAM,CAACigB,SAAS,GAAGngB,KAAME,CAAAA,MAAM,CAAC+E,UAAU,CAAC;;AAE/E,EAAA,CAAC;;EAED,EAAE,CAAC,EAAEjF,KAAK,EAAEigB,SAAS,EAAE,GACrBA,SACIjb,GAAAA,oBAAG;AACM,iBAAA,EAAEhF,KAAME,CAAAA,MAAM,CAAC8Q,UAAU,CAAC;AACrB,sBAAA,EAAEhR,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;AACxC,QAAA,CAAC,GACD0M,SAAU;AAClB,CAAC;;AC/HD,MAAMC,eAAAA,GAAkBtb,oBAAG;;;;AAI3B,CAAC;AAED,MAAMub,QAAWzgB,GAAAA,uBAAAA,CAA4B4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAAE6c,UAAY,EAAA;AAAO,CAAA,CAAE;AACpF,EAAA,EAAEF,eAAgB;AACpB,CAAC;AAED,MAAMG,UAAAA,GAAa3gB,uBAA4B4D,CAAAA,uBAAAA,CAAW;;AAExD,EAAA,EAAE4c,eAAgB;AACpB,CAAC;AAED,MAAMI,aAAgB5gB,GAAAA,uBAAAA,CAA4B4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IAClEgd,cAAgB,EAAA;AAClB,CAAA,CAAE;AACA,EAAA,EAAEL,eAAgB;AACpB,CAAC;AAED,MAAMM,iBAAoB9gB,GAAAA,uBAAAA,CAA4B4D,uBAAYC,CAAAA,CAAAA,KAAK,CAAC;IACtEgd,cAAgB,EAAA;AAClB,CAAA,CAAE;AACA,EAAA,EAAEL,eAAgB;AACpB,CAAC;AAED,MAAMO,UAAAA,GAAa/gB,uBAAOyB,CAAAA,IAAI;oBACV,EAAE,CAAC,EAAEvB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;AAC5C,iBAAA,EAAE,CAAC,EAAE3T,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;AAC1C,WAAA,EAAE,CAAC,EAAED,KAAK,EAAE,GAAK,CAAC,EAAE,EAAEA,KAAAA,CAAMI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;;;;AAInD,CAAC;AAeD;;IAGA,MAAM0gB,iBAAoB,GAAA,CAACzlB,MAAgB6L,EAAAA,IAAAA,GAAAA;IACzC,MAAM6Z,KAAAA,GAAQtlB,YAAOslB,CAAAA,KAAK,CAAC1lB,MAAAA,CAAAA;IAC3B,IAAI,CAAC0lB,OAAO,OAAO,KAAA;IAEnB,OAAO1U,OAAAA,CAAQ0U,KAAK,CAAC7Z,IAAK,CAAA,CAAA;AAC5B,CAAA;AAEA;;IAGA,MAAM8Z,gBAAmB,GAAA,CAAC3lB,MAAgB6L,EAAAA,IAAAA,GAAAA;IACxC,MAAM6Z,KAAAA,GAAQtlB,YAAOslB,CAAAA,KAAK,CAAC1lB,MAAAA,CAAAA;;IAG3B,IAAI,CAACA,MAAOc,CAAAA,SAAS,EAAE;AACrB,QAAA,MAAM8kB,WAAcxlB,GAAAA,YAAAA,CAAOgE,GAAG,CAACpE,QAAQ,EAAE,CAAA;QACzCM,gBAAWkL,CAAAA,MAAM,CAACxL,MAAQ4lB,EAAAA,WAAAA,CAAAA;AAC5B;;IAGA,IAAIF,KAAAA,GAAQ7Z,IAAAA,CAAK,EAAE;QACjBzL,YAAO8C,CAAAA,UAAU,CAAClD,MAAQ6L,EAAAA,IAAAA,CAAAA;KACrB,MAAA;QACLzL,YAAOylB,CAAAA,OAAO,CAAC7lB,MAAAA,EAAQ6L,IAAM,EAAA,IAAA,CAAA;AAC/B;AACF,CAAA;AAEA,MAAM+Q,SAA4B,GAAA;IAChCkJ,IAAM,EAAA;QACJje,IAAMke,EAAAA,UAAAA;AACN3D,QAAAA,eAAAA,EAAiB,CAAChQ,KAAAA,GAAUA,KAAMxQ,CAAAA,GAAG,KAAK,GAAA;QAC1C/B,KAAO,EAAA;YAAE0H,EAAI,EAAA,kCAAA;YAAoCC,cAAgB,EAAA;AAAO,SAAA;QACxEuV,aAAe,EAAA,CAAC/c,MAAWylB,GAAAA,iBAAAA,CAAkBzlB,MAAQ,EAAA,MAAA,CAAA;QACrDgd,YAAc,EAAA,CAAChd,MAAW2lB,GAAAA,gBAAAA,CAAiB3lB,MAAQ,EAAA,MAAA,CAAA;QACnD+gB,UAAY,EAAA,CAACxkB,yBAAaQ,cAACmoB,CAAAA,QAAAA,EAAAA;AAAU3oB,gBAAAA,QAAAA,EAAAA;;AACvC,KAAA;IACAypB,MAAQ,EAAA;QACNne,IAAMoe,EAAAA,YAAAA;AACN7D,QAAAA,eAAAA,EAAiB,CAAChQ,KAAAA,GAAUA,KAAMxQ,CAAAA,GAAG,KAAK,GAAA;QAC1C/B,KAAO,EAAA;YAAE0H,EAAI,EAAA,oCAAA;YAAsCC,cAAgB,EAAA;AAAS,SAAA;QAC5EuV,aAAe,EAAA,CAAC/c,MAAWylB,GAAAA,iBAAAA,CAAkBzlB,MAAQ,EAAA,QAAA,CAAA;QACrDgd,YAAc,EAAA,CAAChd,MAAW2lB,GAAAA,gBAAAA,CAAiB3lB,MAAQ,EAAA,QAAA,CAAA;QACnD+gB,UAAY,EAAA,CAACxkB,yBAAaQ,cAACqoB,CAAAA,UAAAA,EAAAA;AAAY7oB,gBAAAA,QAAAA,EAAAA;;AACzC,KAAA;IACA2pB,SAAW,EAAA;QACTre,IAAMse,EAAAA,eAAAA;AACN/D,QAAAA,eAAAA,EAAiB,CAAChQ,KAAAA,GAAUA,KAAMxQ,CAAAA,GAAG,KAAK,GAAA;QAC1C/B,KAAO,EAAA;YAAE0H,EAAI,EAAA,uCAAA;YAAyCC,cAAgB,EAAA;AAAY,SAAA;QAClFuV,aAAe,EAAA,CAAC/c,MAAWylB,GAAAA,iBAAAA,CAAkBzlB,MAAQ,EAAA,WAAA,CAAA;QACrDgd,YAAc,EAAA,CAAChd,MAAW2lB,GAAAA,gBAAAA,CAAiB3lB,MAAQ,EAAA,WAAA,CAAA;QACnD+gB,UAAY,EAAA,CAACxkB,yBAAaQ,cAACsoB,CAAAA,aAAAA,EAAAA;AAAe9oB,gBAAAA,QAAAA,EAAAA;;AAC5C,KAAA;IACA6pB,aAAe,EAAA;QACbve,IAAMwe,EAAAA,mBAAAA;AACNjE,QAAAA,eAAAA,EAAiB,CAAChQ,KAAUA,GAAAA,KAAAA,CAAMxQ,GAAG,KAAK,GAAA,IAAOwQ,MAAM0P,QAAQ;QAC/DjiB,KAAO,EAAA;YAAE0H,EAAI,EAAA,2CAAA;YAA6CC,cAAgB,EAAA;AAAgB,SAAA;QAC1FuV,aAAe,EAAA,CAAC/c,MAAWylB,GAAAA,iBAAAA,CAAkBzlB,MAAQ,EAAA,eAAA,CAAA;QACrDgd,YAAc,EAAA,CAAChd,MAAW2lB,GAAAA,gBAAAA,CAAiB3lB,MAAQ,EAAA,eAAA,CAAA;QACnD+gB,UAAY,EAAA,CAACxkB,yBAAaQ,cAACwoB,CAAAA,iBAAAA,EAAAA;AAAmBhpB,gBAAAA,QAAAA,EAAAA;;AAChD,KAAA;IACA2J,IAAM,EAAA;QACJ2B,IAAMye,EAAAA,UAAAA;AACNlE,QAAAA,eAAAA,EAAiB,CAAChQ,KAAAA,GAAUA,KAAMxQ,CAAAA,GAAG,KAAK,GAAA;QAC1C/B,KAAO,EAAA;YAAE0H,EAAI,EAAA,kCAAA;YAAoCC,cAAgB,EAAA;AAAc,SAAA;QAC/EuV,aAAe,EAAA,CAAC/c,MAAWylB,GAAAA,iBAAAA,CAAkBzlB,MAAQ,EAAA,MAAA,CAAA;QACrDgd,YAAc,EAAA,CAAChd,MAAW2lB,GAAAA,gBAAAA,CAAiB3lB,MAAQ,EAAA,MAAA,CAAA;QACnD+gB,UAAY,EAAA,CAACxkB,yBAAaQ,cAACyoB,CAAAA,UAAAA,EAAAA;AAAYjpB,gBAAAA,QAAAA,EAAAA;;AACzC;AACF,CAAA;;AC9HA;;;;;IAMA,MAAMgqB,aAAa,CAACvmB,MAAAA,GAAAA;IAClB,MAAM,EAAEwmB,MAAM,EAAE,GAAGxmB,MAAAA;IAEnBA,MAAOwmB,CAAAA,MAAM,GAAG,CAACtlB,OAAAA,GAAAA;AACf,QAAA,OAAOA,OAAQP,CAAAA,IAAI,KAAK,OAAA,GAAU,OAAO6lB,MAAOtlB,CAAAA,OAAAA,CAAAA;AAClD,KAAA;IAEA,OAAOlB,MAAAA;AACT,CAAA;;ACPA,MAAMymB,YAAY,CAACzmB,MAAAA,GAAAA;IACjB,MAAM,EAAE0mB,QAAQ,EAAEC,KAAK,EAAE3jB,UAAU,EAAE4jB,UAAU,EAAE,GAAG5mB,MAAAA;;IAGpDA,MAAO0mB,CAAAA,QAAQ,GAAG,CAACxlB,OAAAA,GAAAA;AACjB,QAAA,OAAOA,OAAQP,CAAAA,IAAI,KAAK,MAAA,GAAS,OAAO+lB,QAASxlB,CAAAA,OAAAA,CAAAA;AACnD,KAAA;;;AAIAlB,IAAAA,MAAAA,CAAOoO,oBAAoB,GAAG,IAAA;;IAG9BpO,MAAO2mB,CAAAA,KAAK,GAAG,CAACE,SAAAA,GAAAA;QACd,IAAIA,SAAAA,CAAUlmB,IAAI,KAAK,aAAe,EAAA;AACpC,YAAA,IACE,CAACP,YAAAA,CAAOM,QAAQ,CAACmmB,UAAUpmB,IAAI,CAAA,IAC/BomB,SAAUpmB,CAAAA,IAAI,CAACE,IAAI,KAAK,MACxBX,IAAAA,MAAAA,CAAOyc,kBAAkB,EACzB;gBACAzc,MAAOoO,CAAAA,oBAAoB,GAAGyY,SAAAA,CAAUzjB,IAAI;AAC9C;AACF,SAAA,MAAO,IAAIyjB,SAAAA,CAAUlmB,IAAI,KAAK,WAAa,EAAA;;;YAGzC,IACE0N,UAAAA,CAAKyY,WAAW,CAACD,SAAUzjB,CAAAA,IAAI,CAC/BpD,IAAAA,MAAAA,CAAOoO,oBAAoB,IAC3BpO,MAAOyc,CAAAA,kBAAkB,EACzB;AACAzc,gBAAAA,MAAAA,CAAOoO,oBAAoB,GAAGC,UAAAA,CAAK0Y,SAAS,CAAC/mB,MAAAA,CAAOoO,oBAAoB,EAAEyY,SAAAA,CAAAA;AAC5E;AACF;QAEAF,KAAME,CAAAA,SAAAA,CAAAA;AACR,KAAA;IAEA7mB,MAAOgD,CAAAA,UAAU,GAAG,CAACP,IAAAA,GAAAA;;QAEnB,IAAIzC,MAAAA,CAAOc,SAAS,IAAI8L,WAAMC,CAAAA,WAAW,CAAC7M,MAAOc,CAAAA,SAAS,CAAK2B,IAAAA,IAAAA,KAAS,GAAK,EAAA;AAC3E,YAAA,MAAMukB,mBAAmBva,KAAMC,CAAAA,IAAI,CACjCtM,YAAOuM,CAAAA,KAAK,CAAC3M,MAAQ,EAAA;AACnBa,gBAAAA,EAAAA,EAAIb,OAAOc,SAAS;gBACpBN,KAAO,EAAA,CAACC,OAAS,CAACL,YAAAA,CAAOM,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK;AAC3D,aAAA,CAAA,CAAA;AAGF,YAAA,MAAMsmB,oBAAoBjnB,MAAOc,CAAAA,SAAS,IAAIkmB,gBAAAA,CAAiBjpB,MAAM,GAAG,CAAA;AACxE,YAAA,MAAMmpB,yBACJD,iBACAE,IAAAA,WAAAA,CAAM7Y,MAAM,CAACtO,MAAAA,CAAOc,SAAS,CAACwB,MAAM,EAAElC,YAAAA,CAAOgE,GAAG,CAACpE,MAAAA,EAAQgnB,gBAAgB,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAEjF,YAAA,IAAIE,sBAAwB,EAAA;gBAC1B5mB,gBAAWyC,CAAAA,WAAW,CACpB/C,MACA,EAAA;oBAAEyC,IAAM,EAAA,GAAA;oBAAK9B,IAAM,EAAA;iBACnB,EAAA;AAAEE,oBAAAA,EAAAA,EAAIwN,WAAK2E,IAAI,CAACgU,gBAAgB,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA;oBAAGxb,MAAQ,EAAA;AAAK,iBAAA,CAAA;AAGxD,gBAAA;AACF;AACF;QAEAxI,UAAWP,CAAAA,IAAAA,CAAAA;AACb,KAAA;;IAGAzC,MAAO4mB,CAAAA,UAAU,GAAG,CAACQ,IAAAA,GAAAA;QACnB,MAAMC,UAAAA,GAAaD,IAAKE,CAAAA,OAAO,CAAC,YAAA,CAAA;AAEhC,QAAA,IAAID,UAAY,EAAA;YACd,IAAI;;AAEF,gBAAA,IAAIhY,GAAIgY,CAAAA,UAAAA,CAAAA;;AAERrnB,gBAAAA,MAAAA,CAAOyc,kBAAkB,GAAG,KAAA;AAC5BlQ,gBAAAA,UAAAA,CAAWvM,MAAQ,EAAA;oBAAEmK,GAAKkd,EAAAA;AAAW,iBAAA,CAAA;AACrC,gBAAA;AACF,aAAA,CAAE,OAAO9X,KAAO,EAAA;;AAEhB;AACF;QAEAqX,UAAWQ,CAAAA,IAAAA,CAAAA;AACb,KAAA;IAEA,OAAOpnB,MAAAA;AACT,CAAA;;AC9FA,MAAM6B,SAAS,CAACpB,IAAAA,GAAAA;IACd,OAAOqB,UAAAA,CAAKC,MAAM,CAACtB,IAAS,CAAA,IAAA,CAACL,YAAOM,CAAAA,QAAQ,CAACD,IAAAA,CAAAA,IAASA,IAAKE,CAAAA,IAAI,KAAK,MAAA;AACtE,CAAA;AAEA;;IAGA,MAAM4mB,mBAAmB,CAACvnB,MAAAA,GAAAA;IACxB,MAAM,EAAEwnB,aAAa,EAAE,GAAGxnB,MAAAA;AAE1B;;;;MAKAA,MAAAA,CAAOwnB,aAAa,GAAG,CAACxmB,KAAAA,GAAAA;QACtB,MAAM,CAACP,IAAM2C,EAAAA,IAAAA,CAAK,GAAGpC,KAAAA;AAErB,QAAA,IAAI,CAACsC,aAAQC,CAAAA,SAAS,CAAC9C,IAAS,CAAA,IAAA,CAACoB,OAAOpB,IAAO,CAAA,EAAA;YAC7CH,gBAAWc,CAAAA,QAAQ,CAACpB,MAAQ,EAAA;gBAAEW,IAAM,EAAA;aAAU,EAAA;gBAAEE,EAAIuC,EAAAA;AAAK,aAAA,CAAA;AAEzD,YAAA;AACF;QAEAokB,aAAcxmB,CAAAA,KAAAA,CAAAA;AAChB,KAAA;IAEA,OAAOhB,MAAAA;AACT,CAAA;;AC2BA,MAAMynB,iBAAoB,GAAA;AACxB,IAAA,WAAA;AACA,IAAA,aAAA;AACA,IAAA,aAAA;AACA,IAAA,eAAA;AACA,IAAA,cAAA;AACA,IAAA,cAAA;AACA,IAAA,aAAA;AACA,IAAA,cAAA;AACA,IAAA,gBAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA;AACD,CAAA;AAID,MAAM9M,qBAAqB,CAAC/Y,GAAAA,GAAAA;AAC1B,IAAA,OAAO,OAAOA,GAAAA,KAAQ,QAAY6lB,IAAAA,iBAAAA,CAAkBvlB,QAAQ,CAACN,GAAAA,CAAAA;AAC/D,CAAA;AAiBA,MAAM,CAAC8lB,oBAAAA,EAAsBC,6BAA8B,CAAA,GACzDtrB,yBAAwC,CAAA,cAAA,CAAA;AAE1C,SAAS8I,uBACPyiB,YAAoB,EAAA;AAEpB,IAAA,MAAMC,OAAUF,GAAAA,6BAAAA,CAA8BC,YAAc,EAAA,CAAC1pB,KAAUA,GAAAA,KAAAA,CAAAA;AACvE,IAAA,MAAM8B,MAAS8nB,GAAAA,mBAAAA,EAAAA;IAEf,OAAO;AACL,QAAA,GAAGD,OAAO;AACV7nB,QAAAA;AACF,KAAA;AACF;AAEA;;AAEkG,qGAElG,MAAM+nB,aAAAA,GAAgBtjB,uBAAOujB,CAAAA,oBAAAA,CAAQ;cACvB,EAAE,CAAC,EAAErjB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC;AACvD,CAAC;AAED,MAAMuS,gBAAAA,GAAmBxjB,uBAAOqT,CAAAA,uBAAAA,CAAW;;;;cAI7B,EAAE,CAAC,EAAEnT,KAAK,EAAE,GAAKA,KAAMujB,CAAAA,OAAO,CAACC,YAAY,CAAC;AAC1D,CAAC;AAED;;;;;;;IAQA,SAASC,YAAYxoB,KAAoC,EAAA;;IAKvD,MAAMyoB,iBAAAA,GAAoB1rB,gBAAMoS,CAAAA,MAAM,CAAC,CAAA,CAAA;;IAEvC,MAAMuZ,iBAAAA,GAAoB3rB,gBAAMoS,CAAAA,MAAM,CAAC,CAAA,CAAA;;AAEvC,IAAA,MAAM,CAACnN,GAAK2mB,EAAAA,MAAAA,CAAO,GAAG5rB,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AAErCD,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACdkqB,QAAAA,iBAAAA,CAAkBzY,OAAO,IAAI,CAAA;;AAG7B,QAAA,IAAIyY,iBAAkBzY,CAAAA,OAAO,KAAKwY,iBAAAA,CAAkBxY,OAAO,EAAE;;;YAG3D0Y,MAAO,CAAA,CAACC,cAAgBA,WAAc,GAAA,CAAA,CAAA;;YAGtCH,iBAAkBxY,CAAAA,OAAO,GAAGyY,iBAAAA,CAAkBzY,OAAO;AACvD;KACC,EAAA;AAACjQ,QAAAA;AAAM,KAAA,CAAA;IAEV,OAAO;AAAEgC,QAAAA,GAAAA;QAAK6mB,0BAA4B,EAAA,IAAOJ,iBAAkBxY,CAAAA,OAAO,IAAI;AAAG,KAAA;AACnF;AAEA,MAAM6Y,IACJ,GAAA,CAAC,GAAGC,GAAAA,GACJ,CAAC/oB,KAAAA,GACC+oB,GAAIzpB,CAAAA,MAAM,CAAS,CAACqX,IAAMqS,EAAAA,EAAAA,GAAOA,GAAGrS,IAAO3W,CAAAA,EAAAA,KAAAA,CAAAA;AAS/C,MAAMipB,6BAAelsB,gBAAMoR,CAAAA,UAAU,CACnC,CAAC,EAAEgD,WAAW,KAAK,EAAElF,IAAI,EAAE/E,QAAQ,EAAElH,KAAK,EAAE2P,KAAK,EAAE,GAAGuZ,cAAc,EAAE9a,YAAAA,GAAAA;IACpE,MAAM,EAAExI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACzF,MAAAA,CAAO,GAAGrD,gBAAAA,CAAMC,QAAQ,CAAC,IAC9B8rB,IAAAA,CAAKK,wBAAaxC,EAAAA,UAAAA,EAAYgB,gBAAkByB,EAAAA,oBAAAA,EAAWvC,SAAWwC,CAAAA,CAAAA,kBAAAA,EAAAA,CAAAA,CAAAA;AAExE,IAAA,MAAM,CAACC,QAAU5K,EAAAA,WAAAA,CAAY,GAAG3hB,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;IAC/C,MAAMknB,iBAAAA,GAAoBnnB,iBAAMwsB,KAAK,EAAA;AACrC,IAAA,MAAM,CAAC7L,cAAgB8L,EAAAA,iBAAAA,CAAkB,GAAGzsB,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAE3D,IAAA,MAAMysB,kBAAqB,GAAA,IAAA;QACzBD,iBAAkB,CAAA,CAAC7S,OAAS,CAACA,IAAAA,CAAAA;AAC/B,KAAA;AAEA;;;;AAIC,QACD5Z,gBAAM2sB,CAAAA,mBAAmB,CACvBtb,YAAAA,EACA,KAAO;AACL1J,YAAAA,KAAAA,CAAAA,GAAAA;AACE4C,gBAAAA,sBAAAA,CAAY5C,KAAK,CAACtE,MAAAA,CAAAA;AACpB;AACF,SAAA,CACA,EAAA;AAACA,QAAAA;AAAO,KAAA,CAAA;AAGV,IAAA,MAAM,EAAE4B,GAAG,EAAE6mB,0BAA0B,EAAE,GAAGL,WAAYxoB,CAAAA,KAAAA,CAAAA;AAExD,IAAA,MAAM2pB,oBAAoB,CAACrrB,KAAAA,GAAAA;QACzB,MAAMsrB,WAAAA,GAAcxpB,MAAOypB,CAAAA,UAAU,CAACC,IAAI,CAAC,CAACC,EAAAA,GAAOA,EAAGhpB,CAAAA,IAAI,KAAK,eAAA,CAAA;AAE/D,QAAA,IAAI6oB,WAAa,EAAA;AACff,YAAAA,0BAAAA,EAAAA;AAEA3hB,YAAAA,QAAAA,CAAS+E,IAAM3N,EAAAA,KAAAA,CAAAA;AACjB;AACF,KAAA;AAEA,IAAA,MAAMic,MAAsB,GAAA;AAC1B,QAAA,GAAGvF,eAAe;AAClB,QAAA,GAAG5L,aAAa;AAChB,QAAA,GAAGwL,UAAU;AACb,QAAA,GAAGtD,UAAU;AACb,QAAA,GAAGhF,WAAW;AACd,QAAA,GAAG0J,WAAW;AACd,QAAA,GAAGjO;AACL,KAAA;IAEA,qBACE9B,eAAA,CAAA0V,mBAAA,EAAA;;0BACExe,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeriB,EAAIuc,EAAAA,iBAAAA;0BACjBte,aAAc,CAAA;AACb+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,mCAAA,CAAA;oBACnBtX,cAAgB,EAAA,CAAC,0FAA0F;AAC7G,iBAAA;;0BAEFzK,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeC,WAAU,EAAA,WAAA;AAAaX,gBAAAA,QAAAA,EAAAA;;0BACvCnsB,cAAC+sB,CAAAA,gBAAAA,EAAAA;gBACC9pB,MAAQA,EAAAA,MAAAA;AACR+pB,gBAAAA,YAAAA,EAAcnqB,KAAS,IAAA;AAAC,oBAAA;wBAAEe,IAAM,EAAA,WAAA;wBAAapE,QAAU,EAAA;AAAC,4BAAA;gCAAEoE,IAAM,EAAA,MAAA;gCAAQ8B,IAAM,EAAA;AAAG;AAAE;AAAC;AAAE,iBAAA;gBACtFqE,QAAUyiB,EAAAA,iBAAAA;AAGV,gBAAA,QAAA,gBAAAxsB,cAAC2qB,CAAAA,oBAAAA,EAAAA;oBACCvN,MAAQA,EAAAA,MAAAA;oBACRyC,SAAWA,EAAAA,SAAAA;oBACX7L,QAAUA,EAAAA,QAAAA;oBACVlF,IAAMA,EAAAA,IAAAA;oBACNyS,WAAaA,EAAAA,WAAAA;oBACbhB,cAAgBA,EAAAA,cAAAA;AAEhB,oBAAA,QAAA,gBAAAzX,eAAC+d,CAAAA,cAAAA,EAAAA;wBACCrU,KAAOA,EAAAA,KAAAA;wBACPwB,QAAUA,EAAAA,QAAAA;wBACV8S,UAAYwF,EAAAA,kBAAAA;wBACZvF,iBAAmBA,EAAAA,iBAAAA;;0CAEnB/mB,cAAC4f,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;0CACD5f,cAACgrB,CAAAA,aAAAA,EAAAA;gCAAc/hB,KAAM,EAAA;;0CACrBjJ,cAACqkB,CAAAA,aAAAA,EAAAA;AAAe,gCAAA,GAAG0H;;AAClB,4BAAA,CAACxL,gCACAvgB,cAACkrB,CAAAA,gBAAAA,EAAAA;AACCpoB,gCAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,oCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,0BAAA,CAAA;oCACnBtX,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACA4I,OAASiZ,EAAAA,kBAAAA;AAET,gCAAA,QAAA,gBAAAtsB,cAACitB,CAAAA,YAAAA,EAAAA,EAAAA;;;;;AA3BJpoB,aAAAA,EAAAA,GAAAA;;;AAmCb,CAAA,CAAA;;AChQF,MAAMqoB,4BAActtB,gBAAMoR,CAAAA,UAAU,CAClC,CAAC,EAAElO,KAAK,EAAEgM,IAAI,EAAEqe,QAAW,GAAA,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,aAAa,EAAErc,YAAAA,GAAAA;IACrE,MAAMzG,EAAAA,GAAK5K,iBAAMwsB,KAAK,EAAA;AACtB,IAAA,MAAMmB,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;IAEvB,qBACE9O,cAAA,CAAC2T,mBAAMV,IAAI,EAAA;QAACzI,EAAIA,EAAAA,EAAAA;QAAIsE,IAAMA,EAAAA,IAAAA;QAAMse,IAAMA,EAAAA,IAAAA;AAAM5a,QAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;QAAE2a,QAAUA,EAAAA,QAAAA;AACxE,QAAA,QAAA,gBAAArkB,eAAC4D,CAAAA,iBAAAA,EAAAA;YAAK+G,SAAU,EAAA,QAAA;YAASG,UAAW,EAAA,SAAA;YAAUF,GAAK,EAAA,CAAA;;AACjD,8BAAA1T,cAAA,CAAC2T,mBAAME,KAAK,EAAA;oBAAC4Z,MAAQJ,EAAAA,WAAAA;AAAcvqB,oBAAAA,QAAAA,EAAAA;;8BACnC9C,cAAC8rB,CAAAA,YAAAA,EAAAA;oBACChd,IAAMA,EAAAA,IAAAA;AACN0D,oBAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;oBAClBW,GAAKlC,EAAAA,YAAAA;AACLpO,oBAAAA,KAAAA,EAAO0qB,MAAM1qB,KAAK;AAClBkH,oBAAAA,QAAAA,EAAUwjB,MAAMxjB,QAAQ;oBACxBua,WAAa9Z,EAAAA,EAAAA;AACZ,oBAAA,GAAG8iB;;AAEN,8BAAAttB,cAAA,CAAC2T,mBAAM+Z,IAAI,EAAA,EAAA,CAAA;AACX,8BAAA1tB,cAAA,CAAC2T,mBAAMga,KAAK,EAAA,EAAA;;;;AAIpB,CAAA,CAAA;AAGIC,MAAAA,mBAAAA,iBAAsBhuB,gBAAMiuB,CAAAA,IAAI,CAACX,WAAAA;;ACxBvC,MAAMY,WAAAA,GAAc,CAAC,EAAE9Z,QAAQ,EAAElF,IAAI,EAAEuE,OAAO,EAAoB,GAAA;IAChE,MAAM,EAAE5K,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM6kB,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;IAEvB,qBACE9O,cAAA,CAAAwe,mBAAA,EAAA;AACE,QAAA,QAAA,gBAAAxe,cAAC+I,CAAAA,gBAAAA,EAAAA;YACCyC,GAAI,EAAA,QAAA;AACJpC,YAAAA,UAAAA,EAAY4K,WAAW,YAAe,GAAA,YAAA;YACtC3K,WAAakkB,EAAAA,KAAAA,CAAM/a,KAAK,GAAG,WAAc,GAAA,YAAA;YACzC3I,SAAS,EAAA,IAAA;YACTmK,QAAUA,EAAAA,QAAAA;YACVX,OAASA,EAAAA,OAAAA;YACT+S,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfziB,IAAK,EAAA,QAAA;YACLiW,KAAO,EAAA;AAAEkU,gBAAAA,MAAAA,EAAQ/Z,WAAW,aAAgB,GAAA;AAAU,aAAA;AAEtD,YAAA,QAAA,gBAAAlL,eAAC4D,CAAAA,iBAAAA,EAAAA;gBAAK+G,SAAU,EAAA,QAAA;gBAASC,GAAK,EAAA,CAAA;;kCAC5B1T,cAAC0M,CAAAA,iBAAAA,EAAAA;wBAAKe,cAAe,EAAA,QAAA;AAAS6F,wBAAAA,KAAAA,EAAOU,WAAW,YAAe,GAAA,YAAA;AAC7D,wBAAA,QAAA,gBAAAhU,cAACguB,CAAAA,gBAAAA,EAAAA;4BAAW/kB,KAAM,EAAA,QAAA;4BAASqE,MAAO,EAAA;;;kCAEpCtN,cAAC0M,CAAAA,iBAAAA,EAAAA;wBAAKe,cAAe,EAAA,QAAA;AACnB,wBAAA,QAAA,gBAAAzN,cAACsL,CAAAA,uBAAAA,EAAAA;AACC2iB,4BAAAA,SAAAA,EAAWja,WAAW,YAAe,GAAA,YAAA;4BACrCD,OAAQ,EAAA,IAAA;4BACRqU,UAAW,EAAA,MAAA;sCAEV3f,aAAc,CAAA;AACb+B,gCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,6BAAA,CAAA;gCACnBtX,cAAgB,EAAA;AAClB,6BAAA;;;;;;;AAOd,CAAA;;AC1BA;;;;;;;AAOC,IACD,MAAM,CAACyjB,iBAAAA,EAAmBC,YAAa,CAAA,GAAG7uB,0BAAqC,kBAAoB,EAAA;IACjGkL,EAAIyd,EAAAA,SAAAA;AACJjc,IAAAA,KAAAA,EAAO,CAAC,CAAA;IACRpL,GAAKqnB,EAAAA,SAAAA;IACLrkB,IAAMqkB,EAAAA;AACR,CAAA,CAAA;;AC5BA,MAAMmG,kBAAqB,GAAA,CAAC,EAC1BC,QAAQ,EACRC,UAAU,EACVxgB,MAAM,EACNtO,QAAQ,EACR6T,OAAO,EACiB,GAAA;AACxB,IAAA,qBACErT,cAACuuB,CAAAA,YAAAA,EAAAA;QACC3qB,IAAK,EAAA,QAAA;QACLyP,OAASA,EAAAA,OAAAA;QACTW,QAAUsa,EAAAA,UAAAA;QACVllB,UAAW,EAAA,UAAA;QACXyQ,KAAO,EAAA;AAAEkU,YAAAA,MAAAA,EAAQO,aAAa,aAAgB,GAAA;AAAU,SAAA;QACxDva,OAAQ,EAAA,UAAA;AAER,QAAA,QAAA,gBAAAjL,eAAC4D,CAAAA,iBAAAA,EAAAA;YAAKlB,GAAI,EAAA,MAAA;YAAOkI,GAAK,EAAA,CAAA;;8BACpB1T,cAACwuB,CAAAA,aAAAA,EAAAA;oBAAcC,aAAW,EAAA,IAAA;oBAACC,OAAS5gB,EAAAA,MAAAA;AAAQga,oBAAAA,SAAAA,EAAWuG,YAAY,CAACvgB;;8BACpE9N,cAACsL,CAAAA,uBAAAA,EAAAA;oBACCyI,OAAQ,EAAA,IAAA;oBACRqU,UAAW,EAAA,MAAA;oBACX6F,SAAWI,EAAAA,QAAAA,IAAY,CAACvgB,MAAAA,GAAS,WAAc,GAAA,YAAA;AAE9CtO,oBAAAA,QAAAA,EAAAA;;;;;AAKX,CAAA;AAEA,MAAMgvB,aAAAA,GAAgB9mB,uBAAOsmB,CAAAA,gBAAAA,CAAuD;UAC1E,EAAE,CAAC,EAAEpmB,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;SAClC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AAC7B,aAAA,EAAE,CAAC,EAAE0mB,OAAO,EAAE,GAAMA,OAAAA,GAAU,kBAAkB,cAAgB,CAAA;;;AAGnE,UAAA,EAAE,CAAC,EAAE9mB,KAAK,EAAEkgB,SAAS,EAAE,GAC3BA,SAAAA,GAAYlgB,KAAME,CAAAA,MAAM,CAAC6mB,SAAS,GAAG/mB,MAAME,MAAM,CAACyT,UAAU,CAAC;;;AAGzD,UAAA,EAAE,CAAC,EAAE3T,KAAK,EAAEkgB,SAAS,EAAE,GAC3BA,SAAAA,GAAYlgB,KAAME,CAAAA,MAAM,CAACigB,SAAS,GAAGngB,MAAME,MAAM,CAACsZ,UAAU,CAAC;;AAEnE,CAAC;AAED,MAAMmN,YAAAA,GAAe7mB,uBAAOmJ,CAAAA,mBAAAA,CAAO;gBACnB,EAAE,CAAC,EAAEjJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;cAEnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMujB,CAAAA,OAAO,CAACC,YAAY,CAAC;;AAE1D,CAAC;;AC1CD,MAAMwD,iBAAoB,GAAA,CAAC,EACzBC,QAAQ,EACRntB,UAAAA,GAAa,EAAE,EACfqS,OAAU,GAAA,SAAS,EACnB+a,cAAc,EACS,GAAA;IACvB,MAAM,EAAErmB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEI,eAAA,CAACimB,uBAAUpP,IAAI,EAAA;QAAC9c,KAAOgsB,EAAAA,QAAAA;;AACrB,0BAAA7uB,cAAA,CAAC+uB,uBAAUC,MAAM,EAAA;gBAACjb,OAASA,EAAAA,OAAAA;wCACzB/T,cAAA,CAAC+uB,uBAAU7b,OAAO,EAAA;8BACfzK,aAAc,CAAA;wBAAE+B,EAAIqkB,EAAAA,QAAAA;wBAAUpkB,cAAgBokB,EAAAA;AAAS,qBAAA;;;0BAG5D7uB,cAACivB,CAAAA,0BAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAjvB,cAACkvB,CAAAA,IAAAA,EAAAA;oBAAK9I,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;oBAAGxL,WAAa,EAAA,CAAA;oBAAGC,YAAc,EAAA,CAAA;8BAClEpZ,UAAWgJ,CAAAA,GAAG,CAAC,CAAC,EAAE9J,GAAG,EAAEuuB,WAAW,EAAErkB,IAAI,EAAE,iBACzC9K,cAACovB,CAAAA,YAAAA,EAAAA;4BAEC5jB,GAAI,EAAA,QAAA;4BACJ5H,IAAK,EAAA,QAAA;4BACLwF,UAAW,EAAA,YAAA;4BACXqE,cAAe,EAAA,QAAA;AACf4F,4BAAAA,OAAAA,EAASyb,cAAeluB,CAAAA,GAAAA,CAAAA;4BACxBiJ,SAAS,EAAA,IAAA;4BACTyD,MAAO,EAAA,QAAA;4BACP+hB,MAAQ,EAAA,CAAA;4BACRhmB,WAAY,EAAA,YAAA;AAEZ,4BAAA,QAAA,gBAAAP,eAAC4D,CAAAA,iBAAAA,EAAAA;gCAAK+G,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGE,UAAW,EAAA,QAAA;gCAASnG,cAAe,EAAA,QAAA;;kDAClEzN,cAACsvB,CAAAA,2BAAAA,EAAAA;wCAAchc,KAAM,EAAA,cAAA;wCAAelK,UAAW,EAAA,YAAA;wCAAa0B,IAAMA,EAAAA;;kDAElE9K,cAACsL,CAAAA,uBAAAA,EAAAA;wCAAWyI,OAAQ,EAAA,IAAA;wCAAKqU,UAAW,EAAA,MAAA;AACjC+G,wCAAAA,QAAAA,EAAAA;;;;AAfAvuB,yBAAAA,EAAAA,GAAAA,CAAAA;;;;;AAwBnB,CAAA;AAEA,MAAMquB,0BAA6BvnB,GAAAA,uBAAAA,CAAOqnB,sBAAUxb,CAAAA,OAAO,CAAC;;AAE5D,CAAC;AAED,MAAM2b,IAAAA,GAAOxnB,uBAAOqB,CAAAA,gBAAAA,CAAI;;;YAGZ,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;yBAEpB,EAAE,IAAMunB,gCAAiCC,CAAAA,EAAE,CAAC;;;AAGrE,CAAC;AAED,MAAMJ,YAAAA,GAAe1nB,uBAAgCgF,CAAAA,iBAAAA,CAAK;SACjD,EAAE,CAAC,EAAE9E,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8Q,UAAU,CAAC;;;;4BAItB,EAAE,CAACzQ,KAAUA,GAAAA,KAAAA,CAAMP,KAAK,CAAC6nB,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC;;;;;sBAK1D,EAAE,CAAC,EAAE/nB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8nB,UAAU,CAAC;gBAC/C,EAAE,CAAC,EAAEhoB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8T,UAAU,CAAC;WAC9C,EAAE,CAAC,EAAEhU,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC+E,UAAU,CAAC;;AAEpD,CAAC;;AChFD,MAAMgjB,eAAAA,GAAkB,CAAC,EACvBC,2BAA8B,GAAA,EAAE,EAChChiB,MAAM,EACNiiB,mBAAmB,EACE,GAAA;IACrB,MAAM,EAAEtnB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAMsnB,sBAAAA,GAAyB,CAACC,YAAyB,GAAA,IAAA;YACvDF,mBAAoBE,CAAAA,YAAAA,CAAAA;AACtB,SAAA;AAEA,IAAA,IAAI,CAACniB,MAAQ,EAAA;QACX,OAAO,IAAA;AACT;AAEA,IAAA,qBACEhF,eAACC,CAAAA,gBAAAA,EAAAA;QACCqd,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfxL,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACd1R,UAAW,EAAA,UAAA;QACXI,MAAO,EAAA,aAAA;QACPH,WAAY,EAAA,YAAA;QACZQ,SAAS,EAAA,IAAA;;0BAET7J,cAAC0M,CAAAA,iBAAAA,EAAAA;gBAAKe,cAAe,EAAA,QAAA;AACnB,gBAAA,QAAA,gBAAAzN,cAACsL,CAAAA,uBAAAA,EAAAA;oBAAW8c,UAAW,EAAA,MAAA;oBAAO6F,SAAU,EAAA,YAAA;8BACrCxlB,aAAc,CAAA;AACb+B,wBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,8CAAA,CAAA;wBACnBtX,cAAgB,EAAA;AAClB,qBAAA;;;0BAGJzK,cAAC+I,CAAAA,gBAAAA,EAAAA;gBAAIqd,UAAY,EAAA,CAAA;wCACfpmB,cAAA,CAAC+uB,uBAAU9b,IAAI,EAAA;AAACid,oBAAAA,YAAAA,EAAc1vB,MAAOmE,CAAAA,IAAI,CAACmrB,2BAAAA,CAA4B,CAAC,CAAE,CAAA;8BACtEtvB,MAAOyM,CAAAA,OAAO,CAAC6iB,2BAAAA,CAAAA,CAA6BplB,GAAG,CAAC,CAAC,CAACmkB,QAAUntB,EAAAA,UAAAA,CAAW,EAAEK,KAAAA,iBACxE/B,cAAC4uB,CAAAA,iBAAAA,EAAAA;4BAECC,QAAUA,EAAAA,QAAAA;4BACVntB,UAAYA,EAAAA,UAAAA;4BACZotB,cAAgBkB,EAAAA,sBAAAA;4BAChBjc,OAAShS,EAAAA,KAAAA,GAAQ,CAAM,KAAA,CAAA,GAAI,SAAY,GAAA;AAJlC8sB,yBAAAA,EAAAA,QAAAA,CAAAA;;;;;AAWnB,CAAA;;ACpBA,MAAMsB,gBAAmB,GAAA,CAAC,EACxBF,YAAY,EACZjc,QAAQ,SACRjS,OAAK,EACL+M,IAAI,EACJshB,sBAAsB,EACtBC,eAAe,EACfC,UAAU,EACV7N,UAAU,EACV8N,QAAQ,EACRT,2BAAAA,GAA8B,EAAE,EAChChB,cAAc,EACdtvB,QAAQ,EACc,GAAA;IACtB,MAAM,EAAEiJ,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM8nB,aAAaC,mBAAQ,CAAA,kBAAA,EAAoB,CAACtvB,KAAAA,GAAUA,MAAMijB,MAAM,CAAA;AACtE,IAAA,MAAMsM,eAAerxB,kBAAmB,CAAA,kBAAA,EAAoB,CAAC8B,KAAAA,GAAUA,MAAMlB,IAAI,CAAA;IACjF,MAAM,EACJ0wB,MAAM,EAAEjvB,UAAU,EAAE,EACrB,GAAGkvB,uBAAkBF,CAAAA,YAAAA,CAAaG,KAAK,CAAA;IAExC,MAAMC,KAAAA,GAAQlxB,gBAAMmxB,CAAAA,OAAO,CAAC,IAAA;QAC1B,MAAM,EAAEC,SAAS,EAAE,GAAGtvB,UAAU,CAACuuB,YAAAA,CAAa,EAAEgB,QAAY,IAAA;YAAED,SAAW,EAAA;AAAK,SAAA;AAE9E,QAAA,MAAME,cAAiBC,GAAAA,aAAAA,CAAMX,UAAY,EAAA,CAAC,EAAE1hB,IAAAA,CAAK,CAAC,EAAE/M,OAAM,CAAA,CAAC,EAAEivB,SAAAA,CAAU,CAAC,CAAA;QAExE,MAAMxO,cAAAA,GACJwO,cAAc,IAAQ,IAAA,CAACE,iBAAiB,EAAKE,GAAAA,MAAAA,CAAOF,gBAAgBG,IAAI,EAAA;QAE1E,MAAMC,SAAAA,GAAY9O,cAAexhB,CAAAA,MAAM,GAAG,CAAA,GAAI,CAAC,EAAE,EAAEwhB,cAAe,CAAA,CAAC,GAAGA,cAAAA;QAEtE,OAAO8O,SAAAA;KACN,EAAA;AAACrB,QAAAA,YAAAA;AAAcvuB,QAAAA,UAAAA;AAAY8uB,QAAAA,UAAAA;AAAY1hB,QAAAA,IAAAA;AAAM/M,QAAAA;AAAM,KAAA,CAAA;IAEtD,MAAM,EAAE+I,IAAI,EAAEqkB,WAAW,EAAE,GAAGvvB,gBAAAA,CAAMmxB,OAAO,CAAC,IAAA;AAC1C,QAAA,MAAM,CAAClC,QAAAA,CAAS,GAAGoB,YAAAA,CAAapsB,KAAK,CAAC,GAAA,CAAA;QACtC,MAAM,EAAEiH,IAAI,EAAEqkB,WAAW,EAAE,GAAIW,CAAAA,2BAA2B,CAACjB,QAAAA,CAAS,IAAI,EAAC,EAAGloB,IAAI,CAC9E,CAAC6T,SAAcA,GAAAA,SAAAA,CAAU5Z,GAAG,KAAKqvB,YAC9B,CAAA,IAAA;YAAEnlB,IAAM,EAAA,IAAA;YAAMqkB,WAAa,EAAA;AAAK,SAAA;QAErC,OAAO;AAAErkB,YAAAA,IAAAA;AAAMqkB,YAAAA;AAAY,SAAA;KAC1B,EAAA;AAACc,QAAAA,YAAAA;AAAcH,QAAAA;AAA4B,KAAA,CAAA;AAE9C,IAAA,MAAM,CAAC,EAAE9N,SAAS,EAAEC,UAAU,EAAEqD,aAAa,EAAE,EAAEiM,MAAAA,EAAQpP,SAASC,OAASoP,EAAAA,cAAAA,CAAe,GACxFnP,sBAAAA,CAAe,CAACrO,QAAU,EAAA;QACxBpQ,IAAM,EAAA,CAAC,EAAE0e,iBAAUmP,CAAAA,YAAY,CAAC,CAAC,EAAE3iB,KAAK,CAAC;AACzC/M,eAAAA,OAAAA;QACAuV,IAAM,EAAA;AACJvV,mBAAAA,OAAAA;AACAygB,YAAAA,cAAAA,EAAgB,CAAC,EAAE2M,WAAAA,CAAY,CAAC,EAAE2B,MAAM,CAAC;AACzChmB,YAAAA;AACF,SAAA;QACA4mB,UAAYrB,EAAAA,eAAAA;AACZ5N,QAAAA,UAAAA;AACA6N,QAAAA,UAAAA;AACAC,QAAAA;AACF,KAAA,CAAA;AAEF3wB,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACdmwB,QAAAA,cAAAA,CAAeG,kCAAiB,EAAA,EAAA;YAAEC,oBAAsB,EAAA;AAAM,SAAA,CAAA;KAC7D,EAAA;AAACJ,QAAAA,cAAAA;AAAgBzvB,QAAAA;AAAM,KAAA,CAAA;AAE1B;;;MAIA,MAAM8vB,cAAiBjyB,GAAAA,gBAAAA,CAAMwsB,KAAK,EAAA;AAElC,IAAA,MAAM,EAAEvpB,KAAAA,GAAQ,EAAE,EAAEivB,QAAQ,EAAE,GAAGtE,oBAAS,CAAA,CAAC,EAAE1e,IAAAA,CAAK,CAAC,EAAE/M,QAAM,CAAC,CAAA;AAE5D,IAAA,MAAM,CAACgwB,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAGpyB,gBAAAA,CAAMC,QAAQ,CAAS,EAAA,CAAA;AAEnED,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIywB,YAAYjvB,KAAO,EAAA;YACrBmvB,iBAAkBH,CAAAA,cAAAA,CAAAA;AACpB;KACC,EAAA;AAACC,QAAAA,QAAAA;AAAUjvB,QAAAA,KAAAA;AAAOgvB,QAAAA;AAAe,KAAA,CAAA;IAEpC,MAAMnP,eAAAA,GAAkBC,6BAAgB4O,MAAQpP,EAAAA,OAAAA,CAAAA;IAEhD,MAAM8P,gBAAAA,GAAmBje,WAAW,IAClC,iBAAAlL,eAAA,CAAA0V,mBAAA,EAAA;;0BACExe,cAAC+a,CAAAA,uBAAAA,EAAAA;gBACChH,OAAQ,EAAA,OAAA;AACRjR,gBAAAA,KAAAA,EAAO2F,aACL,CAAA;AACE+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,qCAAA,CAAA;oBACnBtX,cAAgB,EAAA;iBAElB,EAAA;oBAAEqE,IAAMgiB,EAAAA;AAAM,iBAAA,CAAA;gBAEhBzd,OAAS+c,EAAAA,sBAAAA;AAET,gBAAA,QAAA,gBAAApwB,cAACkyB,CAAAA,WAAAA,EAAAA,EAAAA;;0BAEHlyB,cAAC+a,CAAAA,uBAAAA,EAAAA;gBACChH,OAAQ,EAAA,OAAA;gBACRV,OAAS,EAAA,CAAChJ,CAAMA,GAAAA,CAAAA,CAAEqI,eAAe,EAAA;gBACjCqQ,iBAAiBf,EAAAA,SAAAA;gBACjB7O,GAAKiP,EAAAA,OAAAA;AACLtf,gBAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,6BAAA,CAAA;oBACnBtX,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACA+b,SAAWlB,EAAAA,aAAAA;AAEX,gBAAA,QAAA,gBAAAtlB,cAAC0jB,CAAAA,UAAAA,EAAAA,EAAAA;;AAEH,0BAAA5a,eAAA,CAAC6R,kBAAK1H,IAAI,EAAA;;AACR,kCAAAjT,cAAA,CAAC2a,kBAAKzH,OAAO,EAAA;wBAACif,IAAK,EAAA,GAAA;wBAAIC,OAAS,EAAA,IAAA;wBAAMvX,WAAa,EAAA,CAAA;wBAAGC,YAAc,EAAA,CAAA;AAClE,wBAAA,QAAA,gBAAA9a,cAAC+a,CAAAA,uBAAAA,EAAAA;4BACChH,OAAQ,EAAA,OAAA;AACRjR,4BAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,gCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,qCAAA,CAAA;gCACnBtX,cAAgB,EAAA;AAClB,6BAAA,CAAA;4BACAe,GAAI,EAAA,MAAA;AAEJ,4BAAA,QAAA,gBAAAxL,cAACgb,CAAAA,UAAAA,EAAAA;gCAAKyT,aAAW,EAAA,IAAA;gCAAC4D,SAAW,EAAA;;;;AAGjC,kCAAAvpB,eAAA,CAAC6R,kBAAKpH,OAAO,EAAA;;AACX,0CAAAzK,eAAA,CAAC6R,kBAAK2X,OAAO,EAAA;;AACX,kDAAAtyB,cAAA,CAAC2a,kBAAK4X,UAAU,EAAA;kDACb9pB,aAAc,CAAA;AACb+B,4CAAAA,EAAAA,EAAIuX,oBAAe,CAAA,uCAAA,CAAA;4CACnBtX,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAAzK,cAAA,CAAC2a,kBAAK6X,UAAU,EAAA;AACbhyB,wCAAAA,QAAAA,EAAAA,MAAAA,CAAOyM,OAAO,CAAC6iB,2BAA6BplB,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACmkB,QAAAA,EAAUntB,UAAW,CAAA,iBACtEoH,eAAClJ,CAAAA,gBAAAA,CAAMwb,QAAQ,EAAA;;AACb,kEAAApb,cAAA,CAAC2a,kBAAK9G,KAAK,EAAA;AAAEgb,wDAAAA,QAAAA,EAAAA;;oDACZntB,UAAWgJ,CAAAA,GAAG,CAAC,CAAC,EAAEykB,WAAW,EAAEvuB,GAAG,EAAE,iBACnCZ,cAACyyB,CAAAA,qBAAAA,EAAAA;4DAA4BrT,QAAU,EAAA,IAAM0P,eAAeluB,GAAKmB,EAAAA,OAAAA,CAAAA;AAC9DotB,4DAAAA,QAAAA,EAAAA;AADYc,yDAAAA,EAAAA,YAAAA,CAAAA;;AAHEpB,6CAAAA,EAAAA,QAAAA,CAAAA;;;;AAW3B,0CAAA/lB,eAAA,CAAC6R,kBAAK2X,OAAO,EAAA;;AACX,kDAAAtyB,cAAA,CAAC2a,kBAAK4X,UAAU,EAAA;kDACb9pB,aAAc,CAAA;AACb+B,4CAAAA,EAAAA,EAAIuX,oBAAe,CAAA,uCAAA,CAAA;4CACnBtX,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAAzK,cAAA,CAAC2a,kBAAK6X,UAAU,EAAA;AACbhyB,wCAAAA,QAAAA,EAAAA,MAAAA,CAAOyM,OAAO,CAAC6iB,2BAA6BplB,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACmkB,QAAAA,EAAUntB,UAAW,CAAA,iBACtEoH,eAAClJ,CAAAA,gBAAAA,CAAMwb,QAAQ,EAAA;;AACb,kEAAApb,cAAA,CAAC2a,kBAAK9G,KAAK,EAAA;AAAEgb,wDAAAA,QAAAA,EAAAA;;oDACZntB,UAAWgJ,CAAAA,GAAG,CAAC,CAAC,EAAEykB,WAAW,EAAEvuB,GAAG,EAAE,iBACnCZ,cAACyyB,CAAAA,qBAAAA,EAAAA;4DAA4BrT,QAAU,EAAA,IAAM0P,cAAeluB,CAAAA,GAAAA,EAAKmB,OAAQ,GAAA,CAAA,CAAA;AACtEotB,4DAAAA,QAAAA,EAAAA;AADYc,yDAAAA,EAAAA,YAAAA,CAAAA;;AAHEpB,6CAAAA,EAAAA,QAAAA,CAAAA;;;;;;;;;;IAgBnC,MAAM6D,cAAAA,GAAiB5B,QAAQ,CAAC,EAAE3B,YAAY,CAAC,EAAE2B,KAAM,CAAA,CAAC,GAAG3B,WAAAA;AAE3D,IAAA,qBACErmB,eAAC6pB,CAAAA,kBAAAA,EAAAA;QAAmBnnB,GAAI,EAAA,IAAA;QAAKvC,KAAM,EAAA,MAAA;;0BACjCjJ,cAAC0M,CAAAA,iBAAAA,EAAAA;gBAAKe,cAAe,EAAA,QAAA;AACnB,gBAAA,QAAA,gBAAAzN,cAAC4yB,CAAAA,SAAAA,EAAAA;oBAAUxpB,UAAW,EAAA;;;0BAExBpJ,cAAC6yB,CAAAA,SAAAA,EAAAA;gBAAU1f,GAAKuP,EAAAA,eAAAA;gBAAiB7Y,SAAS,EAAA,IAAA;AACvCoY,gBAAAA,QAAAA,EAAAA,UAAAA,iBACCjiB,cAAC8yB,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA,iBAED9yB,cAAC+uB,CAAAA,sBAAAA,CAAU9b,IAAI,EAAA;oBAACpQ,KAAOkvB,EAAAA,cAAAA;oBAAgBgB,aAAef,EAAAA,iBAAAA;4CACpDlpB,eAAA,CAACimB,uBAAUpP,IAAI,EAAA;wBAAC9c,KAAOgvB,EAAAA,cAAAA;;AACrB,0CAAA/oB,eAAA,CAACimB,uBAAUC,MAAM,EAAA;;AACf,kDAAAhvB,cAAA,CAAC+uB,uBAAU7b,OAAO,EAAA;wCAChBpI,IACEA,EAAAA,IAAAA,IAAQkoB,6BAAe,CAACloB,IAAK,CAAA,GACzBkoB,6BAAe,CAACloB,IAAAA,CAAK,GACrBkoB,6BAAAA,CAAgBC,SAAS;AAG9BP,wCAAAA,QAAAA,EAAAA;;AAEH,kDAAA1yB,cAAA,CAAC+uB,uBAAUmE,OAAO,EAAA;AAAEjB,wCAAAA,QAAAA,EAAAA;;;;AAEtB,0CAAAjyB,cAAA,CAAC+uB,uBAAUxb,OAAO,EAAA;AAChB,gCAAA,QAAA,gBAAAvT,cAACmzB,CAAAA,sBAAAA,EAAAA;oCAAuB/pB,UAAW,EAAA,UAAA;AACjC,oCAAA,QAAA,gBAAApJ,cAAC+I,CAAAA,gBAAAA,EAAAA;wCAAI8R,WAAa,EAAA,CAAA;wCAAGC,YAAc,EAAA,CAAA;wCAAGsL,UAAY,EAAA,CAAA;wCAAGC,aAAe,EAAA,CAAA;gEAClErmB,cAAA,CAACkvB,kBAAKjc,IAAI,EAAA;4CAACS,GAAK,EAAA,CAAA;sDACbhS,UAAU,CAACuuB,YAAa,CAAA,EAAEmD,MAAQ1oB,EAAAA,GAAAA,CAAI,CAAC2oB,GAAKC,EAAAA,MAAAA,iBAC3CtzB,cAACkvB,CAAAA,iBAAAA,CAAKvP,IAAI,EAAA;oDACR4T,GAAK,EAAA,EAAA;oDAELC,CAAG,EAAA,EAAA;oDACHC,EAAI,EAAA,EAAA;oDACJhgB,SAAU,EAAA,QAAA;oDACVG,UAAW,EAAA,SAAA;AAEX,oDAAA,QAAA,gBAAA5T,cAAC0zB,CAAAA,kBAAAA,EAAAA;wDAAmBhgB,GAAK,EAAA,CAAA;AACtB2f,wDAAAA,QAAAA,EAAAA,GAAAA,CAAI3oB,GAAG,CAAC,CAAC,EAAEynB,IAAI,EAAE,GAAG5E,KAAO,EAAA,GAAA;AAC1B,4DAAA,MAAMoG,SAAY,GAAA,CAAC,EAAE7kB,IAAAA,CAAK,CAAC,EAAE/M,OAAM,CAAA,CAAC,EAAEwrB,KAAAA,CAAMze,IAAI,CAAC,CAAC;AAElD,4DAAA,MAAM8kB,wBAA2B,GAAA;AAC/B,gEAAA,GAAGrG,KAAK;AACRzqB,gEAAAA,KAAAA,EAAO2F,aAAc,CAAA;oEACnB+B,EAAI,EAAA,CAAC,2BAA2B,EAAEylB,YAAAA,CAAa,CAAC,EAAE1C,KAAAA,CAAMze,IAAI,CAAC,CAAC;AAC9DrE,oEAAAA,cAAAA,EAAgB8iB,MAAMzqB;AACxB,iEAAA;AACF,6DAAA;AAEA,4DAAA,qBACE9C,cAAC6zB,CAAAA,kBAAAA,EAAAA;gEACCN,GAAKpB,EAAAA,IAAAA;gEAELqB,CAAG,EAAA,EAAA;gEACHC,EAAI,EAAA,EAAA;gEACJhgB,SAAU,EAAA,QAAA;gEACVG,UAAW,EAAA,SAAA;AAEVpU,gEAAAA,QAAAA,EAAAA,QAAAA,GACCA,QAAS,CAAA;AAAE,oEAAA,GAAGo0B,wBAAwB;oEAAE9kB,IAAM6kB,EAAAA;AAAU,iEAAA,CAAA,iBAExD3zB,cAAC8zB,CAAAA,qBAAAA,EAAAA;AAAe,oEAAA,GAAGF,wBAAwB;oEAAE9kB,IAAM6kB,EAAAA;;AAThDA,6DAAAA,EAAAA,SAAAA,CAAAA;AAaX,yDAAA;;AAlCGL,iDAAAA,EAAAA,MAAAA,CAAAA;;;;;;;;;;;AAgD/B,CAAA;AAEA;AACA;AACA,MAAMT,SAAAA,GAAYnrB,uBAAqBqB,CAAAA,gBAAAA,CAAI;;gBAE3B,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAMujB,CAAAA,OAAO,CAAC4I,WAAW,CAAC;;AAE3D,CAAC;AAED,MAAMZ,sBAAAA,GAAyBzrB,uBAAqBqB,CAAAA,gBAAAA,CAAI;qBACnC,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AACxF,CAAC;AAED,MAAM4qB,SAAAA,GAAYlrB,uBAAqBqB,CAAAA,gBAAAA,CAAI;SAClC,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;UAChC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AAC3C,CAAC;AAED,MAAM8qB,SAAAA,GAAUprB,uBAAOuc,CAAAA,IAAI;;oBAEP,EAAE,CAAC,EAAErc,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8T,UAAU,CAAC;sBACvC,EAAE,CAAC,EAAEhU,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACksB,UAAU,CAAC;;WAEpD,EAAE,CAAC,EAAEpsB,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AAC5C,CAAC;AAED,MAAM2qB,kBAAAA,GAAqBjrB,uBAA2BqB,CAAAA,gBAAAA,CAAI;;;;AAI1D,CAAC;;ACrTD,MAAMkrB,gBAAmB,GAAA,CAAC,EACxB7G,IAAI,EACJtqB,KAAK,EACLuqB,WAAW,EACXve,IAAI,EACJolB,kBAAAA,GAAqB,CAAC,EACtB/G,QAAQ,EACc,GAAA;AACtB,IAAA,qBACEntB,cAAC0M,CAAAA,iBAAAA,EAAAA;QAAKe,cAAe,EAAA,QAAA;AACnB,QAAA,QAAA,gBAAAzN,cAAC+I,CAAAA,gBAAAA,EAAAA;YACCqd,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfvL,YAAc,EAAA,CAAA;YACdD,WAAa,EAAA,CAAA;YACbhT,YAAa,EAAA,MAAA;YACbuB,UAAW,EAAA,UAAA;YACXI,MAAO,EAAA,cAAA;YACP8J,KAAM,EAAA,YAAA;AAEN,YAAA,QAAA,gBAAAxK,eAAC4D,CAAAA,iBAAAA,EAAAA;gBAAK+G,SAAU,EAAA,QAAA;gBAAShG,cAAe,EAAA,QAAA;;kCACtC3E,eAAC4D,CAAAA,iBAAAA,EAAAA;wBAAKynB,QAAS,EAAA,SAAA;;0CACbrrB,eAACwC,CAAAA,uBAAAA,EAAAA;gCAAWyI,OAAQ,EAAA,IAAA;gCAAKka,SAAU,EAAA,YAAA;gCAAa7F,UAAW,EAAA,MAAA;gCAAOgM,QAAQ,EAAA,IAAA;;oCACvEtxB,KAASgM,IAAAA,IAAAA;AAAK,oCAAA;;;0CAEjBhG,eAACwC,CAAAA,uBAAAA,EAAAA;gCAAWyI,OAAQ,EAAA,IAAA;gCAAKka,SAAU,EAAA,YAAA;gCAAa7F,UAAW,EAAA,MAAA;;AAAO,oCAAA,GAAA;AAC9D8L,oCAAAA,kBAAAA;AAAmB,oCAAA;;;AAEtB/G,4BAAAA,QAAAA,kBAAYntB,cAACsL,CAAAA,uBAAAA,EAAAA;gCAAW2iB,SAAU,EAAA,WAAA;AAAY,gCAAA,QAAA,EAAA;;AAC9CZ,4BAAAA,WAAAA,kBAAertB,cAAC+I,CAAAA,gBAAAA,EAAAA;gCAAI8R,WAAa,EAAA,CAAA;AAAIwS,gCAAAA,QAAAA,EAAAA;;;;AAEvCD,oBAAAA,IAAAA,kBACCptB,cAAC+I,CAAAA,gBAAAA,EAAAA;wBAAIqd,UAAY,EAAA,CAAA;wBAAG+N,QAAS,EAAA,SAAA;AAC3B,wBAAA,QAAA,gBAAAn0B,cAACsL,CAAAA,uBAAAA,EAAAA;4BAAWyI,OAAQ,EAAA,IAAA;4BAAKka,SAAU,EAAA,YAAA;4BAAamG,QAAQ,EAAA,IAAA;AACrDhH,4BAAAA,QAAAA,EAAAA;;;;;;;AAQjB,CAAA;;ACvBA,MAAM,CAACiH,mBAAAA,EAAqBC,cAAe,CAAA,GAAGh1B,0BAC5C,aACA,EAAA;IACEi1B,eAAiB,EAAA;AACnB,CAAA;AAUIC,MAAAA,WAAAA,GAAc,CAAC,EACnBC,SAAS,EACTzgB,QAAU0gB,EAAAA,YAAY,EACtBtH,IAAI,EACJtqB,KAAK,EACLuqB,WAAW,EACXve,IAAI,EACJqe,WAAW,KAAK,EAChB3tB,QAAQ,EACS,GAAA;;IAEjB,MAAM,EAAEka,GAAMib,GAAAA,QAAQ,EAAEC,GAAAA,GAAM,CAACD,QAAQ,EAAE,GAAGF,SAAAA,IAAa,EAAC;AAE1D,IAAA,MAAM,CAACI,kBAAoBC,EAAAA,qBAAAA,CAAsB,GAAGl1B,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACnE,IAAA,MAAM,CAACssB,QAAU5K,EAAAA,WAAAA,CAAY,GAAG3hB,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAE/C,IAAA,MAAMC,WAAWT,kBAAmB,CAAA,aAAA,EAAe,CAAC8B,KAAAA,GAAUA,MAAMrB,QAAQ,CAAA;AAC5E,IAAA,MAAM,EAAE4B,UAAU,EAAEqzB,SAAS,EAAE,GAAGj1B,QAAAA;AAElC,IAAA,MAAMkU,WAAW0gB,YAAgBK,IAAAA,SAAAA;AACjC,IAAA,MAAM,EAAEC,WAAW,EAAEC,cAAc,EAAEC,YAAY,EAAE,GAAGzE,mBAAAA,CACpD,eACA,CAAC,EAAEuE,WAAW,EAAEC,cAAc,EAAEC,YAAY,EAAE,IAAM;AAClDF,YAAAA,WAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA;SACF,CAAA,CAAA;AAQF,IAAA,MAAM,EAAEryB,KAAQ,GAAA,EAAE,EAAE2P,KAAK,EAAE,GAAGgb,oBAA+B1e,CAAAA,IAAAA,CAAAA;IAE7D,MAAMghB,2BAAAA,GAA8BlwB,gBAAMmxB,CAAAA,OAAO,CAAC,IAAA;AAChD,QAAA,OAAO0D,UAAU/yB,UAAU,CAACS,MAAM,CAEhC,CAACgzB,GAAKlF,EAAAA,YAAAA,GAAAA;YACN,MAAM,EAAEpB,QAAQ,EAAEuG,IAAI,EAAE,GAAG1zB,UAAU,CAACuuB,YAAAA,CAAa,IAAI;AAAEmF,gBAAAA,IAAAA,EAAM;AAAG,aAAA;AAElE,YAAA,MAAM5a,SAAY,GAAA;gBAAE5Z,GAAKqvB,EAAAA,YAAAA;AAAcd,gBAAAA,WAAAA,EAAaiG,KAAKjG,WAAW;AAAErkB,gBAAAA,IAAAA,EAAMsqB,KAAKtqB;AAAK,aAAA;AAEtF,YAAA,IAAI,CAACqqB,GAAG,CAACtG,QAAAA,CAAS,EAAE;gBAClBsG,GAAG,CAACtG,QAAS,CAAA,GAAG,EAAE;AACpB;YAEAsG,GAAG,CAACtG,SAAS,GAAG;AAAIsG,gBAAAA,GAAAA,GAAG,CAACtG,QAAS,CAAA;AAAErU,gBAAAA;AAAU,aAAA;YAE7C,OAAO2a,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;KACH,EAAA;AAACV,QAAAA,SAAAA,CAAU/yB,UAAU;AAAEA,QAAAA;AAAW,KAAA,CAAA;IAErC,MAAM,EAAE+G,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAM,EAAE2sB,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAE/B,MAAMC,gCAAAA,GAAmC1yB,MAAM7B,MAAM;IAErD,MAAMw0B,kBAAAA,GAAqB,CAAC50B,GAAaoI,EAAAA,QAAAA,GAAAA;QACvC8rB,qBAAsB,CAAA,KAAA,CAAA;QAEtB,MAAMW,MAAAA,GAAS/zB,UAAU,CAACd,GAAI,CAAA;QAC9B,MAAM80B,IAAAA,GAAOC,wBAAkBF,MAAQ/zB,EAAAA,UAAAA,CAAAA;AACvC,QAAA,MAAMk0B,kBAAkBjK,MAAKkK,CAAAA,uBAAAA,CAAkBJ,QAAQ/zB,UAAa,CAAA,EAAA,CAAC2oB,QAAU;AAC7E,gBAAA,GAAGA,IAAI;gBACPyL,WAAal1B,EAAAA;aACf,CAAA,CAAA;AAEA,QAAA,MAAMypB,OAAOuL,eAAgBF,CAAAA,IAAAA,CAAAA;AAE7BV,QAAAA,WAAAA,CAAYlmB,MAAMub,IAAMrhB,EAAAA,QAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAM+sB,qBAAwB,GAAA,IAAA;AAC5B,QAAA,IAAIR,mCAAmC7b,GAAK,EAAA;YAC1Cob,qBAAsB,CAAA,CAACtb,OAAS,CAACA,IAAAA,CAAAA;SAC5B,MAAA;YACL6b,kBAAmB,CAAA;gBACjBzxB,IAAM,EAAA,MAAA;AACNoyB,gBAAAA,OAAAA,EAASvtB,aAAc,CAAA;AACrB+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,kDAAA;AACrB,iBAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAMkU,mBAAAA,GAAsB,CAACtU,QAAkBC,EAAAA,YAAAA,GAAAA;AAC7CL,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,aAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE8S,aAAa,CAAC;AAC/B5Y,YAAAA,QAAAA,EAAUktB,UAAWvU,CAAAA,QAAAA;AACvB,SAAA,CAAA,CAAA;AAIJuT,QAAAA,YAAAA,CAAapmB,MAAM8S,YAAcD,EAAAA,QAAAA,CAAAA;AACnC,KAAA;AAEA,IAAA,MAAMuU,UAAa,GAAA,CAACn0B,KAAkB,GAAA,CAAC,EAAEA,KAAAA,GAAQ,CAAE,CAAA,IAAI,EAAEc,KAAAA,CAAM7B,MAAM,CAAC,CAAC;AAEvE,IAAA,MAAMm1B,eAAe,CAACp0B,OAAAA,GAAAA;AACpBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,iBAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE/M,QAAM;AACzB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMq0B,iBAAiB,CAACr0B,OAAAA,GAAAA;AACtBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,sIAAsI;SAEzJ,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE/M,QAAM,CAAC;AACxBiH,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMs0B,iBAAiB,CAACt0B,OAAAA,GAAAA;AACtBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,oDAAoD;SAEvE,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE/M,QAAM,CAAC;AACxBiH,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;IAEA,MAAMu0B,qBAAAA,GAAwB,CAACxnB,IAAAA,EAAc8S,YAAyB,GAAA,IAAA;AACpEqT,YAAAA,cAAAA,CAAenmB,IAAM8S,EAAAA,YAAAA,CAAAA;AACvB,SAAA;AAEA,IAAA,MAAMyM,WAAW7b,KAAUyV,KAAAA,SAAAA;AAE3B,IAAA,MAAMsO,iBAAoB,GAAA,IAAA;AACxB,QAAA,IAAI1B,kBAAoB,EAAA;AACtB,YAAA,OAAOpsB,aAAc,CAAA;gBAAE+B,EAAI,EAAA,uBAAA;gBAAyBC,cAAgB,EAAA;AAAQ,aAAA,CAAA;AAC9E;QAEA,IAAI4jB,QAAAA,IAAYkH,mCAAmC7b,GAAK,EAAA;AACtD,YAAA,OAAOjR,aACL,CAAA;gBACE+B,EAAIuX,EAAAA,oBAAAA,CAAe,CAAC,uCAAuC,CAAC,CAAA;gBAC5DtX,cACE,EAAA;aAEJ,EAAA;AACE+rB,gBAAAA,MAAAA,EAAQjB,gCAAmC7b,GAAAA;AAC7C,aAAA,CAAA;AAEJ;QAEA,IAAI2U,QAAAA,IAAYkH,mCAAmCX,GAAK,EAAA;AACtD,YAAA,OAAOnsB,aACL,CAAA;gBACE+B,EAAIuX,EAAAA,oBAAAA,CAAe,CAAC,yCAAyC,CAAC,CAAA;gBAC9DtX,cACE,EAAA;aAEJ,EAAA;AAAE+rB,gBAAAA,MAAAA,EAAQ5B,GAAMW,GAAAA;AAAiC,aAAA,CAAA;AAErD;AAEA,QAAA,OAAO9sB,aACL,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,sCAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AAAEgsB,YAAAA,aAAAA,EAAe3zB,KAASgM,IAAAA;AAAK,SAAA,CAAA;AAEnC,KAAA;AAEA,IAAA,MAAM9C,QAAQmiB,YAAa,CAAA,aAAA,EAAe,CAAChtB,KAAAA,GAAUA,MAAM6K,KAAK,CAAA;IAEhE,MAAM+a,iBAAAA,GAAoBnnB,iBAAMwsB,KAAK,EAAA;AAErC,IAAA,qBACEpsB,cAACq0B,CAAAA,mBAAAA,EAAAA;QAAoBE,eAAe,EAAA,IAAA;AAClC,QAAA,QAAA,gBAAAzrB,eAAC4D,CAAAA,iBAAAA,EAAAA;YAAK+G,SAAU,EAAA,QAAA;YAASG,UAAW,EAAA,SAAA;YAAUF,GAAK,EAAA,CAAA;;AAChD6hB,gBAAAA,gCAAAA,GAAmC,mBAClCzsB,eAACC,CAAAA,gBAAAA,EAAAA;;sCACC/I,cAACi0B,CAAAA,gBAAAA,EAAAA;4BACC7G,IAAMA,EAAAA,IAAAA;4BACNtqB,KAAOA,EAAAA,KAAAA;4BACPuqB,WAAaA,EAAAA,WAAAA;4BACbve,IAAMA,EAAAA,IAAAA;4BACNolB,kBAAoBqB,EAAAA,gCAAAA;4BACpBpI,QAAUA,EAAAA;;sCAEZntB,cAAC6sB,CAAAA,2BAAAA,EAAAA;4BAAeriB,EAAIuc,EAAAA,iBAAAA;sCACjBte,aAAc,CAAA;AACb+B,gCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,kBAAA,CAAA;gCACnBtX,cAAgB,EAAA,CAAC,mCAAmC;AACtD,6BAAA;;sCAEFzK,cAAC6sB,CAAAA,2BAAAA,EAAAA;4BAAeC,WAAU,EAAA,WAAA;AAAaX,4BAAAA,QAAAA,EAAAA;;sCACvCnsB,cAACsU,CAAAA,IAAAA,EAAAA;4BAAGoT,kBAAkBX,EAAAA,iBAAAA;AACnBlkB,4BAAAA,QAAAA,EAAAA,KAAAA,CAAM6H,GAAG,CAAC,CAAC6iB,KAAAA,EAAOxrB,sBACjB/B,cAACkuB,CAAAA,iBAAAA,EAAAA;AAECliB,oCAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;AACfpL,oCAAAA,GAAAA,EAAK2sB,MAAMuI,WAAW;;AAEtBtrB,oCAAAA,EAAAA,EAAI+iB,MAAM/iB,EAAE;oCACZ5G,IAAK,EAAA,aAAA;AAEL,oCAAA,QAAA,gBAAA5D,cAACmwB,CAAAA,gBAAAA,EAAAA;wCACCnc,QAAUA,EAAAA,QAAAA;wCACVlF,IAAMA,EAAAA,IAAAA;wCACN/M,KAAOA,EAAAA,KAAAA;AACPkuB,wCAAAA,YAAAA,EAAc1C,MAAMuI,WAAW;wCAC/BzF,eAAiB4F,EAAAA,mBAAAA;AACjB7F,wCAAAA,sBAAAA,EAAwBkG,sBAAsBxnB,IAAM/M,EAAAA,KAAAA,CAAAA;wCACpDwuB,QAAU4F,EAAAA,YAAAA;wCACV1T,UAAY4T,EAAAA,cAAAA;wCACZ/F,UAAY8F,EAAAA,cAAAA;wCACZtH,cAAgB0G,EAAAA,kBAAAA;wCAChB1F,2BAA6BA,EAAAA,2BAAAA;AAE5BtwB,wCAAAA,QAAAA,EAAAA;;AApBE+tB,iCAAAA,EAAAA,KAAAA,CAAMmJ,YAAY,CAAA;;;;8BA2BjC12B,cAAC0M,CAAAA,iBAAAA,EAAAA;oBAAKe,cAAe,EAAA,QAAA;AACnB,oBAAA,QAAA,gBAAAzN,cAACouB,CAAAA,kBAAAA,EAAAA;wBACCC,QAAUA,EAAAA,QAAAA;wBACVC,UAAYta,EAAAA,QAAAA;wBACZlG,MAAQ+mB,EAAAA,kBAAAA;wBACRxhB,OAAS0iB,EAAAA,qBAAAA;AAERQ,wBAAAA,QAAAA,EAAAA,iBAAAA;;;8BAGLv2B,cAAC6vB,CAAAA,eAAAA,EAAAA;oBACCC,2BAA6BA,EAAAA,2BAAAA;oBAC7BhiB,MAAQ+mB,EAAAA,kBAAAA;oBACR9E,mBAAqByF,EAAAA;;;;;AAK/B;;AC9SMmB,MAAAA,eAAAA,GAAkB,CAAC,EAAEvJ,IAAI,EAAEtqB,KAAK,EAAEqqB,QAAQ,EAAEre,IAAI,EAAwB,GAAA;IAC5E,MAAM,EAAErG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMoL,cAAcrL,aAAc,CAAA;QAChC+B,EAAI,EAAA,iCAAA;QACJC,cAAgB,EAAA;AAClB,KAAA,CAAA;IAEA,qBACE3B,eAAA,CAAC6K,mBAAMV,IAAI,EAAA;QAACzI,EAAIsE,EAAAA,IAAAA;QAAMse,IAAMA,EAAAA,IAAAA;QAAMte,IAAMA,EAAAA,IAAAA;QAAMqe,QAAUA,EAAAA,QAAAA;;AACtD,0BAAAntB,cAAA,CAAC2T,mBAAME,KAAK,EAAA;AAAE/Q,gBAAAA,QAAAA,EAAAA;;0BACd9C,cAAC42B,CAAAA,sBAAAA,EAAAA;gBACC5iB,QAAQ,EAAA,IAAA;gBACRF,WAAaA,EAAAA,WAAAA;AACb+iB,gBAAAA,WAAAA,gBAAa72B,cAAC82B,CAAAA,gBAAAA,EAAAA;oBAAW5Z,IAAK,EAAA;;gBAC9BtZ,IAAK,EAAA,MAAA;gBACLf,KAAM,EAAA;;AAER,0BAAA7C,cAAA,CAAC2T,mBAAM+Z,IAAI,EAAA,EAAA;;;AAGjB;;ACCO,SAASqJ,kBAAkB3pB,GAAW,EAAA;IAC3C,MAAM4pB,KAAAA,GAAQ,IAAIC,MAAAA,CAAO,CAAC,CAAC,EAAEC,sBAAAA,CAAiB,CAAC,EAAEC,kBAAa,CAAA,CAAC,CAAC,CAAA;IAChE,MAAM1zB,KAAAA,GAAQ2J,GAAI3J,CAAAA,KAAK,CAACuzB,KAAAA,CAAAA;AACxB,IAAA,OAAOvzB,KAAQA,GAAAA,KAAK,CAAC,CAAA,CAAE,GAAGwkB,SAAAA;AAC5B;AAEA,MAAMmP,kBAAqB1vB,GAAAA,uBAAAA,CAAO2vB,kBAAM9jB,CAAAA,OAAO,CAAC;;;;;AAKhD,CAAC;AAED,MAAM+jB,aAAgB,GAAA,CAAC,EAAEttB,IAAI,EAAEutB,QAAQ,EAAE/sB,EAAE,EAAEqmB,KAAK,EAAE2G,WAAW,EAAsB,GAAA;IACnF,MAAM,EAAE/uB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACE1I,cAAA,CAACq3B,mBAAMpkB,IAAI,EAAA;QAACjJ,IAAMA,EAAAA,IAAAA;QAAME,YAAcqtB,EAAAA,QAAAA;AACpC,QAAA,QAAA,gBAAAzuB,eAACsuB,CAAAA,kBAAAA,EAAAA;;AACC,8BAAAp3B,cAAA,CAACq3B,mBAAMrI,MAAM,EAAA;AACX,oBAAA,QAAA,gBAAAlmB,eAAC4D,CAAAA,iBAAAA,EAAAA;;0CACC1M,cAAC+a,CAAAA,uBAAAA,EAAAA;gCACCyI,WAAa,EAAA,KAAA;gCACb1gB,KAAM,EAAA,MAAA;gCACNiR,OAAQ,EAAA,OAAA;gCACRC,QAAQ,EAAA,IAAA;AACRX,gCAAAA,OAAAA,EAAS,IAAO,EAAA;gCAChBokB,WAAa,EAAA,CAAA;AAEb,gCAAA,QAAA,gBAAAz3B,cAAC03B,CAAAA,eAAAA,EAAAA,EAAAA;;0CAEH13B,cAACsL,CAAAA,uBAAAA,EAAAA;gCAAWE,GAAI,EAAA,MAAA;gCAAO4c,UAAY,EAAA,GAAA;0CAChC3f,aAAc,CAAA;oCACb+B,EAAI,EAAA,2DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;8BAINzK,cAAC23B,CAAAA,iBAAAA,EAAAA;oBACCntB,EAAIA,EAAAA,EAAAA;oBACJqmB,KAAOA,EAAAA,KAAAA;AACP+G,oBAAAA,cAAAA,EAAgBb,iBAAkBS,CAAAA,WAAAA,CAAAA;oBAClCK,WAAa7tB,EAAAA,IAAAA;oBACb8tB,aAAeP,EAAAA;;AAEjB,8BAAAv3B,cAAA,CAACq3B,mBAAMU,MAAM,EAAA;AACX,oBAAA,QAAA,gBAAA/3B,cAAC6Q,CAAAA,mBAAAA,EAAAA;wBAAOwC,OAASkkB,EAAAA,QAAAA;wBAAUxjB,OAAQ,EAAA,UAAA;kCAChCtL,aAAc,CAAA;4BAAE+B,EAAI,EAAA,8BAAA;4BAAgCC,cAAgB,EAAA;AAAS,yBAAA;;;;;;AAM1F,CAAA;AAUA,MAAMktB,iBAAoB,GAAA,CAAC,EAAEntB,EAAE,EAA0B,GAAA;IACvD,MAAM,EAAE/B,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMgoB,eAAerxB,kBAAmB,CAAA,mBAAA,EAAqB,CAAC8B,KAAAA,GAAUA,MAAMlB,IAAI,CAAA;AAClF,IAAA,MAAM+3B,mBAAmB34B,kBAAmB,CAAA,mBAAA,EAAqB,CAAC8B,KAAAA,GAAUA,MAAMrB,QAAQ,CAAA;IAC1F,MAAMm4B,sBAAAA,GAAyBrH,uBAAkBF,CAAAA,YAAAA,CAAaG,KAAK,CAAA;IAEnE,MAAMqH,aAAAA,GAAgBF,iBAAiBG,oBAAoB,EAAA;AAE3D,IAAA,MAAM,EACJC,WAAAA,GAAc,EAAE,EAChBrD,SAAS,EACTviB,KAAK,EACN,GAAG6lB,oBACFC,iBAAY5tB,CAAAA,GAAG,CAAC,CAAC+iB,UAAY;AAC3BA,YAAAA,MAAAA;AACA8K,YAAAA,OAAAA,EAAS7H,aAAaG;SACxB,CAAA,CAAA,CAAA;AAGF,IAAA,IAAIkE,aAAaiD,gBAAiBjD,CAAAA,SAAS,IAAIkD,sBAAAA,CAAuBlD,SAAS,EAAE;AAC/E,QAAA,qBACE/0B,cAACw4B,CAAAA,mBAAAA,EAAAA;YAAOC,KAAK,EAAA,IAAA;sBACVhwB,aAAc,CAAA;gBACb+B,EAAI,EAAA,gDAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA;;AAGN;IAEA,IACE+H,KAAAA,IACA,CAACke,YAAaG,CAAAA,KAAK,IACnBoH,sBAAuBzlB,CAAAA,KAAK,IAC5B,CAACwlB,gBAAAA,CAAiBl4B,QAAQ,IAC1B,CAACk4B,iBAAiB/3B,IAAI,IACtB,CAAC+3B,gBAAiBvC,CAAAA,MAAM,IACxB,CAACyC,aACD,EAAA;AACA,QAAA,qBACEl4B,cAAC0M,CAAAA,iBAAAA,EAAAA;YAAKkH,UAAW,EAAA,QAAA;YAAStG,MAAO,EAAA,MAAA;YAAOG,cAAe,EAAA,QAAA;AACrD,YAAA,QAAA,gBAAAzN,cAAC04B,CAAAA,6BAAAA,EAAAA;AACC5tB,gBAAAA,IAAAA,gBAAM9K,cAAC24B,CAAAA,mBAAAA,EAAAA;oBAAc1vB,KAAM,EAAA;;AAC3B2vB,gBAAAA,OAAAA,EAASnwB,aAAc,CAAA;oBACrB+B,EAAI,EAAA,iBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;;AAIR;IAEA,MAAMouB,aAAAA,GAAgBb,iBAAiBc,QAAQ,CAACb,uBAAuBtH,IAAI,CAACM,QAAQ,CAACD,SAAS,CAAA;AAE9F,IAAA,MAAM+H,oBAAuBf,GAAAA,gBAAAA,CAAiBvC,MAAM,EAAEuD,SAASC,eAAmB,IAAA,KAAA;IAElF,qBACEj5B,cAAA,CAACq3B,mBAAM6B,IAAI,EAAA;AACT,QAAA,QAAA,gBAAApwB,eAACqwB,CAAAA,kBAAAA,EAAAA;YAAaf,WAAaA,EAAAA,WAAAA;AAAavH,YAAAA,KAAAA,EAAOH,aAAaG,KAAK;;8BAC/D/nB,eAAC4D,CAAAA,iBAAAA,EAAAA;oBAAK+G,SAAU,EAAA,QAAA;oBAASG,UAAW,EAAA,YAAA;oBAAaF,GAAK,EAAA,CAAA;;sCACpD1T,cAACsL,CAAAA,uBAAAA,EAAAA;4BAAWE,GAAI,EAAA,IAAA;4BAAKuI,OAAQ,EAAA,OAAA;AAC1B8kB,4BAAAA,QAAAA,EAAAA;;AAEFE,wBAAAA,oBAAAA,iBACC/4B,cAAC+I,CAAAA,gBAAAA,EAAAA;4BAAIW,SAAW,EAAA,CAAA;AACd,4BAAA,QAAA,gBAAA1J,cAACo5B,CAAAA,oBAAAA,EAAAA;gCAAeC,MAAQrB,EAAAA,gBAAAA,CAAiBl4B,QAAQ,EAAEu5B;;AAEnD,yBAAA,CAAA,GAAA;;;8BAENr5B,cAACs5B,CAAAA,gBAAAA,EAAAA;oBAAYpB,aAAeA,EAAAA,aAAAA;AAAeqB,oBAAAA,MAAAA,EAAQ/uB,KAAK,KAAQ,GAAA,MAAA;AAC9D,oBAAA,QAAA,gBAAAxK,cAAC0M,CAAAA,iBAAAA,EAAAA;wBAAK8sB,IAAM,EAAA,CAAA;wBAAGpZ,QAAS,EAAA,MAAA;wBAAOxM,UAAW,EAAA,SAAA;wBAAUwS,UAAY,EAAA,CAAA;AAC9D,wBAAA,QAAA,gBAAApmB,cAAC+I,CAAAA,gBAAAA,EAAAA;4BAAIqX,QAAS,EAAA,MAAA;4BAAOoZ,IAAM,EAAA,CAAA;AACzB,4BAAA,QAAA,gBAAAx5B,cAACy5B,CAAAA,UAAAA,EAAAA;gCAAWrG,MAAQ6E,EAAAA,sBAAAA,CAAuBtH,IAAI,CAACyC,MAAM;gCAAEsG,aAAe,EAAA;;;;;;;;AAOrF,CAAA;;ACnHA;;;;AAIC,IACD,SAASC,mBAAAA,CAAoBhG,SAAiB,EAAE9I,YAAoB,EAAA;AAClE,IAAA,MAAM0C,QAAQC,oBAASmG,CAAAA,SAAAA,CAAAA;AACvB,IAAA,MAAMsB,iBAAiBxE,mBAAQ5F,CAAAA,YAAAA,EAAc,CAAC1pB,KAAAA,GAAUA,MAAM8zB,cAAc,CAAA;AAC5E,IAAA,MAAMD,cAAcvE,mBAAQ5F,CAAAA,YAAAA,EAAc,CAAC1pB,KAAAA,GAAUA,MAAM6zB,WAAW,CAAA;AAEtE,IAAA,MAAM4E,mBAA8D,CAACC,QAAAA,GAAAA;AACnE,QAAA,IAAItM,MAAM1qB,KAAK,IAAI0qB,MAAM1qB,KAAK,CAACi3B,OAAO,EAAE;AACtC;;;;AAIC,UACD,MAAMC,6BAAAA,GAAgCxM,KAAM1qB,CAAAA,KAAK,CAACi3B,OAAO,CAACziB,SAAS,CACjE,CAAC2iB,GAA4DA,GAAAA,GAAAA,CAAIxvB,EAAE,KAAKqvB,SAASrvB,EAAE,CAAA;AAGrF,YAAA,IAAIuvB,iCAAiC,CAAG,EAAA;AACtC9E,gBAAAA,cAAAA,CAAe,CAAC,EAAEtB,SAAU,CAAA,QAAQ,CAAC,EAAEoG,6BAAAA,CAAAA;AACvC,gBAAA;AACF;AACF;AAEA/E,QAAAA,WAAAA,CAAY,CAAC,EAAErB,SAAU,CAAA,WAAW,CAAC,EAAE;AACrCnpB,YAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;YACfyvB,OAAS,EAAA;AACPzvB,gBAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;AACf0vB,gBAAAA,UAAAA,EAAYL,SAASK,UAAU;AAC/BC,gBAAAA,MAAAA,EAAQN,SAASM;AACnB;AACF,SAAA,CAAA;AACF,KAAA;IAEA,OAAOP,gBAAAA;AACT;AAEA;;AAEkG,qGAClG,MAAMQ,oBAAuB,GAAA,CAAA;AAC7B,MAAMC,iBAAoB,GAAA;AAAC,IAAA,QAAA;AAAU,IAAA,UAAA;AAAY,IAAA,WAAA;AAAa,IAAA,gBAAA;AAAkB,IAAA;AAAgB,CAAA;AA+BhG;;;;;;;;;;;AAaC,IACD,MAAMC,sBAAAA,iBAAyB16B,gBAAMoR,CAAAA,UAAU,CAC7C,CAAC,EAAEgD,QAAQ,EAAElR,KAAK,EAAE,GAAGqF,OAAO,EAAEgL,GAAAA,GAAAA;AAC9B,IAAA,MAAMud,eAAerxB,kBAAmB,CAAA,gBAAA,EAAkB,CAAC8B,KAAAA,GAAUA,MAAMlB,IAAI,CAAA;AAC/E,IAAA,MAAM+3B,mBAAmB34B,kBAAmB,CAAA,gBAAA,EAAkB,CAAC8B,KAAAA,GAAUA,MAAMrB,QAAQ,CAAA;AACvF,IAAA,MAAMH,iBAAiBN,kBAAmB,CAAA,gBAAA,EAAkB,CAAC8B,KAAAA,GAAUA,MAAMxB,cAAc,CAAA;AAE3F,IAAA,MAAM,CAAC46B,WAAaC,EAAAA,cAAAA,CAAe,GAAG56B,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;IACrD,MAAMq6B,UAAAA,GAAalC,gBAAiBl4B,CAAAA,QAAQ,EAAEo6B,UAAAA;IAE9C,MAAM,EAAEzxB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAAC,EAAE+xB,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,SAASC,sBAAiBH,CAAAA,KAAAA,CAAAA;IAEhC,MAAMI,OAAAA,GAAU1yB,MAAMssB,SAAS,CAACoF,QAAQ,CAACiB,WAAW,EAAG31B,CAAAA,QAAQ,CAAC,OAAA,CAAA;AAChE,IAAA,MAAMmpB,aAAauM,OAAW7mB,IAAAA,QAAAA;AAE9B,IAAA,MAAM,EAAE+mB,WAAW,EAAEC,YAAY,EAAE,GAAG7M,YAAAA,CAAa,gBAAkB,EAAA,CAAC,EAAEvtB,GAAG,EAAE4J,EAAE,EAAE,IAAM;YACrFuwB,WAAavwB,EAAAA,EAAAA;YACbwwB,YAAcp6B,EAAAA;SAChB,CAAA,CAAA;AAEA,IAAA,MAAMq6B,eAAexK,mBAAQ,CAAA,eAAA,EAAiB,CAACtvB,KAAAA,GAAUA,MAAM85B,YAAY,CAAA;AAE3Er7B,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACdm5B,cAAe,CAAA,CAAA,CAAA;KACd,EAAA;AAACS,QAAAA;AAAa,KAAA,CAAA;AAEjB;;;AAGC,QACD,MAAMzwB,EAAAA,GAAKuwB,WAAcA,GAAAA,WAAAA,CAAY9wB,QAAQ,EAAKiwB,GAAAA,UAAAA;IAClD,MAAMrJ,KAAAA,GAAQmK,YAAgBtK,IAAAA,YAAAA,CAAaG,KAAK;AAEhD;;;;;AAKC,QACD,MAAM,CAACqK,WAAY,CAAA,GAAG/yB,KAAM2G,CAAAA,IAAI,CAACjL,KAAK,CAAC,GAAA,CAAA,CAAK4S,KAAK,CAAC,CAAC,CAAA,CAAA;IAEnD,MAAM,EAAE4T,IAAI,EAAE0K,SAAS,EAAEoG,UAAU,EAAE,GAAGC,4BACtC,CAAA;AACEvK,QAAAA,KAAAA;AACAqK,QAAAA,WAAAA;;AAEA1wB,QAAAA,EAAAA;QACAmwB,MAAQ,EAAA;AACN,YAAA,GAAGA,MAAM;YACTU,QAAUjB,EAAAA,oBAAAA;YACVkB,IAAMf,EAAAA;AACR;KAEF,EAAA;QACEgB,yBAA2B,EAAA,IAAA;AAC3BC,QAAAA,IAAAA,EAAM,CAAChxB,EAAAA;AACPixB,QAAAA,gBAAAA,EAAkB,CAACC,MAAAA,GAAAA;YACjB,OAAO;AACL,gBAAA,GAAGA,MAAM;gBACTrR,IAAM,EAAA;AACJ,oBAAA,GAAGqR,OAAOrR,IAAI;oBACdsR,OAASD,EAAAA,MAAAA,CAAOrR,IAAI,EAAEsR,OAAAA,GAAUD,OAAOrR,IAAI,CAACsR,OAAO,GAAG;AACxD;AACF,aAAA;AACF;AACF,KAAA,CAAA;AAGF,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBpB,cAAe,CAAA,CAAChhB,OAASA,IAAO,GAAA,CAAA,CAAA;AAClC,KAAA;IAEA,MAAM+T,KAAAA,GAAQC,oBAASrlB,CAAAA,KAAAA,CAAM2G,IAAI,CAAA;AAEjC,IAAA,MAAM+sB,0BAA0B9G,SAAaoG,IAAAA,UAAAA;IAE7C,MAAMW,wBAAAA,GACJ,YAAgBzR,IAAAA,IAAAA,IAAQA,IAAK0R,CAAAA,UAAU,GAAG1R,IAAK0R,CAAAA,UAAU,CAACC,KAAK,GAAG,CAAA;AAEpE;;;AAGC,QACD,MAAMC,kBAAAA,GACJ,CAAC1O,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,IAAW,EAAC,EAAGn5B,MAAM,CACjC,CAACq5B,GAAAA,GAAkB3P,IAAKsR,CAAAA,OAAO,CAACtkB,SAAS,CAAC,CAACwiB,WAAaA,QAASrvB,CAAAA,EAAE,KAAKwvB,GAAAA,CAAIxvB,EAAE,CAAA,KAAM,CAAC,CAAA,CAAA,CACrFxJ,MAAM,IAAI,CAAA;AACd,IAAA,MAAMk7B,qBAAwB3O,GAAAA,KAAAA,CAAM1qB,KAAK,EAAEs5B,YAAYn7B,MAAU,IAAA,CAAA;IAEjE,MAAMo7B,cAAAA,GAAiBN,2BAA2BG,kBAAqBC,GAAAA,qBAAAA;AAEvE;;;;AAIC,QACD,MAAMG,SAAAA,GAAYz8B,gBAAMmxB,CAAAA,OAAO,CAAC,IAAA;AAC9B,QAAA,MAAMuL,GAAM,GAAA;AACV/O,YAAAA,KAAAA,EAAOA,MAAM1qB,KAAK;;YAElBuQ,IAAM,EAAA,CAAC,GAAG,EAAE8jB,sBAAiB,CAAA,CAAC,EAAE/uB,KAAAA,CAAMssB,SAAS,CAAC8H,WAAW,CAAC,CAAC;AAC7DvL,YAAAA,SAAAA,EAAW7oB,MAAM6oB;AACnB,SAAA;AAEA;;AAEC,UACD,MAAM4E,eAAkBjK,GAAAA,MAAAA,CACtB6Q,gBAAgBF,GAChBG,CAAAA,EAAAA,kBAAAA,CAAmBH,MACnBI,eAAgBJ,CAAAA,GAAAA,CAAAA,CAAAA;AAGlB,QAAA,MAAMK,kBAAkB/G,eAAgB,CAAA;AAAIvL,YAAAA,GAAAA,IAAAA,CAAKsR;AAAQ,SAAA,CAAA;AAEzD;;;AAGC,UACD,OAAO;AAAIgB,YAAAA,GAAAA,eAAAA;eAAqBpP,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,IAAW;SAAI,CAAC8C,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAAA;AACpE,YAAA,IAAID,EAAEnG,YAAY,GAAGoG,EAAEpG,YAAY,EAAE,OAAO,CAAC,CAAA;AAC7C,YAAA,IAAImG,EAAEnG,YAAY,GAAGoG,CAAEpG,CAAAA,YAAY,EAAE,OAAO,CAAA;YAC5C,OAAO,CAAA;AACT,SAAA,CAAA;KACC,EAAA;AACDrM,QAAAA,IAAAA,CAAKsR,OAAO;AACZpO,QAAAA,KAAAA,CAAM1qB,KAAK;;QAEXsF,KAAMssB,CAAAA,SAAS,CAAC8H,WAAW;AAC3Bp0B,QAAAA,KAAAA,CAAM6oB;AACP,KAAA,CAAA;AAED,IAAA,MAAM4I,gBAAmBD,GAAAA,mBAAAA,CAAoBxxB,KAAM2G,CAAAA,IAAI,EAAE,gBAAA,CAAA;AAEzD,IAAA,MAAMiuB,gBAAiD,CAAClD,QAAAA,GAAAA;AACtD,QAAA,MAAM,CAACmD,cAAe,CAAA,GAAGX,SAAU5lB,CAAAA,KAAK,CAAC,CAAC,CAAA,CAAA;AAE1C,QAAA,MAAMa,IAAO,GAAA;AACX9M,YAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;YACfyvB,OAAS,EAAA;AACPzvB,gBAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;AACf0vB,gBAAAA,UAAAA,EAAYL,SAASK,UAAU;AAC/BC,gBAAAA,MAAAA,EAAQN,SAASM;AACnB,aAAA;AACAd,YAAAA,MAAAA,EAAQQ,SAASR,MAAM;AACvB;;YAGA3C,YAAAA,EAAcuG,wCAAqBD,cAAgBtG,EAAAA,YAAAA,IAAgB,MAAM,IAAM,EAAA,CAAA,CAAE,CAAC,CAAE,CAAA;;AAEpF,YAAA,CAACvuB,KAAM6oB,CAAAA,SAAS,EAAEliB,IAAAA,IAAQ,YAAa,GAAE+qB,QAAQ,CAAC1xB,KAAM6oB,CAAAA,SAAS,EAAEliB,IAAAA,IAAQ,YAAa,CAAA;YACxFhM,KAAOo6B,EAAAA,wBAAAA,CAAiBrD,QAAU1xB,EAAAA,KAAAA,CAAM6oB,SAAS,CAAA;;AAEjD5d,YAAAA,IAAAA,EAAM,CAAC,GAAG,EAAE8jB,sBAAAA,CAAiB,CAAC,EAAE/uB,KAAMssB,CAAAA,SAAS,CAAC8H,WAAW,CAAC,CAAC,EAAE1C,QAASK,CAAAA,UAAU,CAAC,CAAC,EAAEL,QAAAA,CAASM,MAAM,GAAG,CAAC,sBAAsB,EAAEN,QAAAA,CAASM,MAAM,CAAC,CAAC,GAAG,GAAG;AAC1J,SAAA;AAEA,QAAA,IAAIE,kBAAkBl1B,QAAQ,CAACgD,MAAMssB,SAAS,CAACoF,QAAQ,CAAG,EAAA;;YAExDtM,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,EAASh4B,OAAQ83B,CAAAA,gBAAAA,CAAAA;AAC9ByC,YAAAA,SAAAA,CAAUv6B,OAAO,CAAC83B,gBAAAA,CAAAA;YAElBrM,KAAMxjB,CAAAA,QAAQ,CAAC,CAAC,EAAE5B,MAAM2G,IAAI,CAAC,QAAQ,CAAC,EAAE;AAACwI,gBAAAA;AAAK,aAAA,CAAA;SACzC,MAAA;YACLiW,KAAMxjB,CAAAA,QAAQ,CAAC,CAAC,EAAE5B,MAAM2G,IAAI,CAAC,QAAQ,CAAC,EAAE;mBAAKye,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,IAAW,EAAE;AAAGxiB,gBAAAA;AAAK,aAAA,CAAA;AACjF;AACF,KAAA;AAEA,IAAA,qBACExO,eAAC4D,CAAAA,iBAAAA,EAAAA;QACCyG,GAAKA,EAAAA,GAAAA;QACLM,SAAU,EAAA,QAAA;QACVC,GAAK,EAAA,CAAA;QACLjG,cAAe,EAAA,eAAA;QACfmG,UAAW,EAAA,SAAA;QACXupB,IAAK,EAAA,MAAA;;0BAELr0B,eAACs0B,CAAAA,UAAAA,EAAAA;gBAAW3pB,SAAU,EAAA,QAAA;gBAASG,UAAW,EAAA,OAAA;gBAAQF,GAAK,EAAA,CAAA;gBAAGzK,KAAM,EAAA,MAAA;;kCAC9DjJ,cAACq9B,CAAAA,cAAAA,EAAAA;wBACCrpB,QAAUsa,EAAAA,UAAAA;;AAEV9jB,wBAAAA,EAAAA,EAAIwwB,eAAgBD,WAAc,GAAA,CAAC,EAAEA,WAAY,CAAA,CAAC,GAAG,EAAMb,GAAAA,UAAAA;AAC3Dp3B,wBAAAA,KAAAA,EAAO,CAAC,EAAEA,KAAM,CAAA,CAAC,EAAEs5B,cAAiB,GAAA,CAAA,GAAI,CAAC,CAAC,EAAEA,cAAe,CAAA,CAAC,CAAC,GAAG,GAAG,CAAC;wBACpEvL,KAAOA,EAAAA,KAAAA;wBACP9mB,QAAUgzB,EAAAA,aAAAA;AACT,wBAAA,GAAG50B;;AAEL,oBAAA,YAAA,IAAgBkiB,IACjBA,IAAAA,IAAAA,CAAK0R,UAAU,IACf1R,KAAK0R,UAAU,CAACuB,SAAS,GAAGjT,IAAK0R,CAAAA,UAAU,CAACT,IAAI,iBAC9Ct7B,cAACu9B,CAAAA,uBAAAA,EAAAA;wBACCvpB,QAAU6nB,EAAAA,uBAAAA;wBACVxoB,OAASuoB,EAAAA,cAAAA;wBACT96B,OAAS+6B,EAAAA,uBAAAA;AACTpd,wBAAAA,SAAAA,gBAAWze,cAACw9B,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;;wBAEZnO,MAAQ,EAAA,CAAA;kCAEP5mB,aAAc,CAAA;AACb+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,mBAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA;AAEA,qBAAA,CAAA,GAAA;;;0BAENzK,cAACy9B,CAAAA,qBAAAA,EAAAA;gBACCpT,IAAMgS,EAAAA,SAAAA;AACNqB,gBAAAA,UAAAA,EAAYrT,KAAKsR,OAAO;gBACxB3nB,QAAUsa,EAAAA,UAAAA;AACVxf,gBAAAA,IAAAA,EAAM3G,MAAM2G,IAAI;gBAChBimB,SAAW8G,EAAAA,uBAAAA;gBACX8B,YAAcx1B,EAAAA,KAAAA,CAAMssB,SAAS,CAACoF,QAAQ;;gBAEtC0C,WAAap0B,EAAAA,KAAAA,CAAMssB,SAAS,CAAC8H,WAAW;gBACxCqB,kBAAoBj+B,EAAAA;;;;AAI5B,CAAA,CAAA;AAGF,MAAMk+B,cAAiBj+B,iBAAAA,gBAAAA,CAAMoR,UAAU,CACrC,CAAC,EAAEgD,QAAQ,EAAElR,KAAK,EAAE,GAAGqF,KAAAA,EAAO,EAAEgL,GAAAA,GAAAA;AAC9B,IAAA,MAAM,CAAConB,WAAaC,EAAAA,cAAAA,CAAe,GAAG56B,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AACrD,IAAA,MAAM,EAAEC,QAAQ,EAAE+wB,KAAOiN,EAAAA,aAAa,EAAE,GAAGC,YAAAA,EAAAA;AAC3C,IAAA,MAAM7D,aAAap6B,QAAUo6B,EAAAA,UAAAA;IAC7B,MAAM,EAAEzxB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAAC,EAAE+xB,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,SAASC,sBAAiBH,CAAAA,KAAAA,CAAAA;IAEhC,MAAMI,OAAAA,GAAU1yB,MAAMssB,SAAS,CAACoF,QAAQ,CAACiB,WAAW,EAAG31B,CAAAA,QAAQ,CAAC,OAAA,CAAA;AAChE,IAAA,MAAMmpB,aAAauM,OAAW7mB,IAAAA,QAAAA;AAE9B,IAAA,MAAM,EAAE+mB,WAAW,EAAEC,YAAY,EAAE,GAAG7M,YAAAA,CAAa,gBAAkB,EAAA,CAAC,EAAEvtB,GAAG,EAAE4J,EAAE,EAAE,IAAM;YACrFuwB,WAAavwB,EAAAA,EAAAA;YACbwwB,YAAcp6B,EAAAA;SAChB,CAAA,CAAA;AAEA,IAAA,MAAMq6B,eAAexK,mBAAQ,CAAA,eAAA,EAAiB,CAACtvB,KAAAA,GAAUA,MAAM85B,YAAY,CAAA;AAE3Er7B,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACdm5B,cAAe,CAAA,CAAA,CAAA;KACd,EAAA;AAACS,QAAAA;AAAa,KAAA,CAAA;AAEjB;;;AAGC,QACD,MAAMzwB,EAAAA,GAAKuwB,WAAcA,GAAAA,WAAAA,CAAY9wB,QAAQ,EAAKiwB,GAAAA,UAAAA;AAClD,IAAA,MAAMrJ,QAAQmK,YAAgB8C,IAAAA,aAAAA;AAE9B;;;;;AAKC,QACD,MAAM,CAAC5C,WAAY,CAAA,GAAG/yB,KAAM2G,CAAAA,IAAI,CAACjL,KAAK,CAAC,GAAA,CAAA,CAAK4S,KAAK,CAAC,CAAC,CAAA,CAAA;IAEnD,MAAM,EAAE4T,IAAI,EAAE0K,SAAS,EAAEoG,UAAU,EAAE,GAAGC,4BACtC,CAAA;AACEvK,QAAAA,KAAAA;AACAqK,QAAAA,WAAAA;;QAEA1wB,EAAIA,EAAAA,EAAAA;QACJmwB,MAAQ,EAAA;AACN,YAAA,GAAGA,MAAM;YACTU,QAAUjB,EAAAA,oBAAAA;YACVkB,IAAMf,EAAAA;AACR;KAEF,EAAA;QACEgB,yBAA2B,EAAA,IAAA;AAC3BC,QAAAA,IAAAA,EAAM,CAAChxB,EAAAA;AACPixB,QAAAA,gBAAAA,EAAkB,CAACC,MAAAA,GAAAA;YACjB,OAAO;AACL,gBAAA,GAAGA,MAAM;gBACTrR,IAAM,EAAA;AACJ,oBAAA,GAAGqR,OAAOrR,IAAI;oBACdsR,OAASD,EAAAA,MAAAA,CAAOrR,IAAI,EAAEsR,OAAAA,GAAUD,OAAOrR,IAAI,CAACsR,OAAO,GAAG;AACxD;AACF,aAAA;AACF;AACF,KAAA,CAAA;AAGF,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBpB,cAAe,CAAA,CAAChhB,OAASA,IAAO,GAAA,CAAA,CAAA;AAClC,KAAA;IAEA,MAAM+T,KAAAA,GAAQC,oBAASrlB,CAAAA,KAAAA,CAAM2G,IAAI,CAAA;AAEjC,IAAA,MAAM+sB,0BAA0B9G,SAAaoG,IAAAA,UAAAA;IAE7C,MAAMW,wBAAAA,GACJ,YAAgBzR,IAAAA,IAAAA,IAAQA,IAAK0R,CAAAA,UAAU,GAAG1R,IAAK0R,CAAAA,UAAU,CAACC,KAAK,GAAG,CAAA;AAEpE;;;AAGC,QACD,MAAMC,kBAAAA,GACJ,CAAC1O,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,IAAW,EAAC,EAAGn5B,MAAM,CACjC,CAACq5B,GAAAA,GAAkB3P,IAAKsR,CAAAA,OAAO,CAACtkB,SAAS,CAAC,CAACwiB,WAAaA,QAASrvB,CAAAA,EAAE,KAAKwvB,GAAAA,CAAIxvB,EAAE,CAAA,KAAM,CAAC,CAAA,CAAA,CACrFxJ,MAAM,IAAI,CAAA;AACd,IAAA,MAAMk7B,qBAAwB3O,GAAAA,KAAAA,CAAM1qB,KAAK,EAAEs5B,YAAYn7B,MAAU,IAAA,CAAA;IAEjE,MAAMo7B,cAAAA,GAAiBN,2BAA2BG,kBAAqBC,GAAAA,qBAAAA;AAEvE;;;;AAIC,QACD,MAAMG,SAAAA,GAAYz8B,gBAAMmxB,CAAAA,OAAO,CAAC,IAAA;AAC9B,QAAA,MAAMuL,GAAM,GAAA;AACV/O,YAAAA,KAAAA,EAAOA,MAAM1qB,KAAK;;YAElBuQ,IAAM,EAAA,CAAC,GAAG,EAAE8jB,sBAAiB,CAAA,CAAC,EAAE/uB,KAAAA,CAAMssB,SAAS,CAAC8H,WAAW,CAAC,CAAC;AAC7DvL,YAAAA,SAAAA,EAAW7oB,MAAM6oB;AACnB,SAAA;AAEA;;AAEC,UACD,MAAM4E,eAAkBjK,GAAAA,MAAAA,CACtB6Q,gBAAgBF,GAChBG,CAAAA,EAAAA,kBAAAA,CAAmBH,MACnBI,eAAgBJ,CAAAA,GAAAA,CAAAA,CAAAA;AAGlB,QAAA,MAAMK,kBAAkB/G,eAAgB,CAAA;AAAIvL,YAAAA,GAAAA,IAAAA,CAAKsR;AAAQ,SAAA,CAAA;AAEzD;;;AAGC,UACD,OAAO;AAAIgB,YAAAA,GAAAA,eAAAA;eAAqBpP,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,IAAW;SAAI,CAAC8C,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAAA;AACpE,YAAA,IAAID,EAAEnG,YAAY,GAAGoG,EAAEpG,YAAY,EAAE,OAAO,CAAC,CAAA;AAC7C,YAAA,IAAImG,EAAEnG,YAAY,GAAGoG,CAAEpG,CAAAA,YAAY,EAAE,OAAO,CAAA;YAC5C,OAAO,CAAA;AACT,SAAA,CAAA;KACC,EAAA;AACDrM,QAAAA,IAAAA,CAAKsR,OAAO;AACZpO,QAAAA,KAAAA,CAAM1qB,KAAK;;QAEXsF,KAAMssB,CAAAA,SAAS,CAAC8H,WAAW;AAC3Bp0B,QAAAA,KAAAA,CAAM6oB;AACP,KAAA,CAAA;AAED,IAAA,MAAM4I,gBAAmBD,GAAAA,mBAAAA,CAAoBxxB,KAAM2G,CAAAA,IAAI,EAAE,gBAAA,CAAA;AAEzD,IAAA,MAAMiuB,gBAAiD,CAAClD,QAAAA,GAAAA;AACtD,QAAA,MAAM,CAACmD,cAAe,CAAA,GAAGX,SAAU5lB,CAAAA,KAAK,CAAC,CAAC,CAAA,CAAA;AAE1C,QAAA,MAAMa,IAAO,GAAA;AACX9M,YAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;YACfyvB,OAAS,EAAA;AACPzvB,gBAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;AACf0vB,gBAAAA,UAAAA,EAAYL,SAASK,UAAU;AAC/BC,gBAAAA,MAAAA,EAAQN,SAASM;AACnB,aAAA;AACAd,YAAAA,MAAAA,EAAQQ,SAASR,MAAM;AACvB;;YAGA3C,YAAAA,EAAcuG,wCAAqBD,cAAgBtG,EAAAA,YAAAA,IAAgB,MAAM,IAAM,EAAA,CAAA,CAAE,CAAC,CAAE,CAAA;;AAEpF,YAAA,CAACvuB,KAAM6oB,CAAAA,SAAS,EAAEliB,IAAAA,IAAQ,YAAa,GAAE+qB,QAAQ,CAAC1xB,KAAM6oB,CAAAA,SAAS,EAAEliB,IAAAA,IAAQ,YAAa,CAAA;YACxFhM,KAAOo6B,EAAAA,wBAAAA,CAAiBrD,QAAU1xB,EAAAA,KAAAA,CAAM6oB,SAAS,CAAA;;AAEjD5d,YAAAA,IAAAA,EAAM,CAAC,GAAG,EAAE8jB,sBAAAA,CAAiB,CAAC,EAAE/uB,KAAMssB,CAAAA,SAAS,CAAC8H,WAAW,CAAC,CAAC,EAAE1C,QAASK,CAAAA,UAAU,CAAC,CAAC,EAAEL,QAAAA,CAASM,MAAM,GAAG,CAAC,sBAAsB,EAAEN,QAAAA,CAASM,MAAM,CAAC,CAAC,GAAG,GAAG;AAC1J,SAAA;AAEA,QAAA,IAAIE,kBAAkBl1B,QAAQ,CAACgD,MAAMssB,SAAS,CAACoF,QAAQ,CAAG,EAAA;;YAExDtM,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,EAASh4B,OAAQ83B,CAAAA,gBAAAA,CAAAA;AAC9ByC,YAAAA,SAAAA,CAAUv6B,OAAO,CAAC83B,gBAAAA,CAAAA;YAElBrM,KAAMxjB,CAAAA,QAAQ,CAAC,CAAC,EAAE5B,MAAM2G,IAAI,CAAC,QAAQ,CAAC,EAAE;AAACwI,gBAAAA;AAAK,aAAA,CAAA;SACzC,MAAA;YACLiW,KAAMxjB,CAAAA,QAAQ,CAAC,CAAC,EAAE5B,MAAM2G,IAAI,CAAC,QAAQ,CAAC,EAAE;mBAAKye,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,IAAW,EAAE;AAAGxiB,gBAAAA;AAAK,aAAA,CAAA;AACjF;AACF,KAAA;AAEA,IAAA,qBACExO,eAAC4D,CAAAA,iBAAAA,EAAAA;QACCyG,GAAKA,EAAAA,GAAAA;QACLM,SAAU,EAAA,QAAA;QACVC,GAAK,EAAA,CAAA;QACLjG,cAAe,EAAA,eAAA;QACfmG,UAAW,EAAA,SAAA;QACXupB,IAAK,EAAA,MAAA;;0BAELr0B,eAACs0B,CAAAA,UAAAA,EAAAA;gBAAW3pB,SAAU,EAAA,QAAA;gBAASG,UAAW,EAAA,OAAA;gBAAQF,GAAK,EAAA,CAAA;gBAAGzK,KAAM,EAAA,MAAA;;kCAC9DjJ,cAACq9B,CAAAA,cAAAA,EAAAA;wBACCrpB,QAAUsa,EAAAA,UAAAA;;AAEV9jB,wBAAAA,EAAAA,EAAIwwB,eAAgBD,WAAc,GAAA,CAAC,EAAEA,WAAY,CAAA,CAAC,GAAG,EAAMb,GAAAA,UAAAA;AAC3Dp3B,wBAAAA,KAAAA,EAAO,CAAC,EAAEA,KAAM,CAAA,CAAC,EAAEs5B,cAAiB,GAAA,CAAA,GAAI,CAAC,CAAC,EAAEA,cAAe,CAAA,CAAC,CAAC,GAAG,GAAG,CAAC;wBACpEvL,KAAOA,EAAAA,KAAAA;wBACP9mB,QAAUgzB,EAAAA,aAAAA;AACT,wBAAA,GAAG50B;;AAEL,oBAAA,YAAA,IAAgBkiB,IACjBA,IAAAA,IAAAA,CAAK0R,UAAU,IACf1R,KAAK0R,UAAU,CAACuB,SAAS,GAAGjT,IAAK0R,CAAAA,UAAU,CAACT,IAAI,iBAC9Ct7B,cAACu9B,CAAAA,uBAAAA,EAAAA;wBACCvpB,QAAU6nB,EAAAA,uBAAAA;wBACVxoB,OAASuoB,EAAAA,cAAAA;wBACT96B,OAAS+6B,EAAAA,uBAAAA;AACTpd,wBAAAA,SAAAA,gBAAWze,cAACw9B,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;;wBAEZnO,MAAQ,EAAA,CAAA;kCAEP5mB,aAAc,CAAA;AACb+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,mBAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA;AAEA,qBAAA,CAAA,GAAA;;;0BAENzK,cAACg+B,CAAAA,aAAAA,EAAAA;gBACC3T,IAAMgS,EAAAA,SAAAA;AACNqB,gBAAAA,UAAAA,EAAYrT,KAAKsR,OAAO;gBACxB3nB,QAAUsa,EAAAA,UAAAA;AACVxf,gBAAAA,IAAAA,EAAM3G,MAAM2G,IAAI;gBAChBimB,SAAW8G,EAAAA,uBAAAA;gBACX8B,YAAcx1B,EAAAA,KAAAA,CAAMssB,SAAS,CAACoF;;;;AAItC,CAAA,CAAA;AAGF;;;AAGC,IACD,MAAMuD,UAAAA,GAAa11B,uBAAsBgF,CAAAA,iBAAAA,CAAK;;;;AAI9C,CAAC;AAWD;;;AAGC,IACD,MAAM8vB,eACJ,GAAA,CAAC,EAAEjP,KAAK,EAAyB,GACjC,CAAC8O,SAAAA,GAAAA;QACC,OAAOA,SAAAA,CAAU17B,MAAM,CAAC,CAACk5B,QAAAA,GAAAA;YACvB,MAAMoE,kBAAAA,GAAqB1Q,KAAOuM,EAAAA,OAAAA,IAAW,EAAE;YAE/C,OAAOmE,kBAAAA,CAAmB5mB,SAAS,CAAC,CAAC2iB,GAAAA,GAAQA,GAAIxvB,CAAAA,EAAE,KAAKqvB,QAAAA,CAASrvB,EAAE,CAAA,KAAM,CAAC,CAAA;AAC5E,SAAA,CAAA;AACF,KAAA;AAEF;;AAEC,IACD,MAAMiyB,kBAAAA,GACJ,CAAC,EAAElP,KAAK,EAAyB,GACjC,CAAC8O,SACCA,GAAAA,SAAAA,CAAU17B,MAAM,CAAC,CAACk5B,QAAAA,GAAAA;YAChB,MAAMqE,qBAAAA,GAAwB3Q,KAAO4O,EAAAA,UAAAA,IAAc,EAAE;YAErD,OAAO+B,qBAAAA,CAAsB7mB,SAAS,CAAC,CAAC2iB,GAAAA,GAAQA,GAAIxvB,CAAAA,EAAE,KAAKqvB,QAAAA,CAASrvB,EAAE,CAAA,KAAM,CAAC,CAAA;AAC/E,SAAA,CAAA;AAEJ;;;AAGC,IACD,MAAMkyB,eAAAA,GACJ,CAAC,EAAE1L,SAAS,EAAE5d,IAAI,EAAyB,GAC3C,CAACipB,SAAAA,GACCA,SAAU3xB,CAAAA,GAAG,CAAC,CAACmvB,QAAAA,GAAAA;YACb,OAAO;AACL,gBAAA,GAAGA,QAAQ;;gBAEX,CAAC7I,SAAAA,EAAWliB,QAAQ,YAAa,GAAE+qB,QAAQ,CAAC7I,SAAAA,EAAWliB,QAAQ,YAAa,CAAA;AAC5EhM,gBAAAA,KAAAA,EAAOo6B,yBAAiBrD,QAAU7I,EAAAA,SAAAA,CAAAA;gBAClC5d,IAAM,EAAA,CAAC,EAAEA,IAAK,CAAA,CAAC,EAAEymB,QAASK,CAAAA,UAAU,CAAC,CAAC,EAAEL,QAAAA,CAASM,MAAM,GAAG,CAAC,sBAAsB,EAAEN,QAAAA,CAASM,MAAM,CAAC,CAAC,GAAG,EAAA,CAAG;AAC5G,aAAA;AACF,SAAA,CAAA;AAgBJ;;;AAGC,IACD,MAAMkD,cAAAA,GAAiB,CAAC,EACtBjQ,IAAI,EACJ5iB,EAAE,EACFqmB,KAAK,EACL/tB,KAAK,EACLuqB,WAAW,EACXve,IAAI,EACJkiB,SAAS,EACTld,WAAW,EACXqZ,QAAQ,EACRgR,MAAQC,EAAAA,OAAO,EACf,YAAA,EAAcC,UAAU,EACxBt0B,QAAQ,EACR,GAAG5B,KACiB,EAAA,GAAA;AACpB,IAAA,MAAM,CAACm2B,SAAWC,EAAAA,YAAAA,CAAa,GAAG3+B,gBAAAA,CAAMC,QAAQ,CAAqB,EAAA,CAAA;AACrE,IAAA,MAAM,CAAC2+B,YAAcC,EAAAA,eAAAA,CAAgB,GAAG7+B,gBAAAA,CAAMC,QAAQ,CAAC;QACrD6+B,EAAI,EAAA,EAAA;QACJpD,IAAM,EAAA;AACR,KAAA,CAAA;IACA,MAAM,EAAEjG,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,CAAC,EAAEmF,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;IAEpB,MAAM,EAAEjyB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMi2B,WAAWC,8BAAqC9vB,CAAAA,IAAAA,CAAAA;AACtD,IAAA,MAAMye,QAAQC,oBAA6B1e,CAAAA,IAAAA,CAAAA;IAE3C,MAAM+vB,qBAAAA,GAAwBC,oBAAYN,YAAc,EAAA,GAAA,CAAA;IACxD,MAAM,CAACO,kBAAkB,EAAE1U,IAAI,EAAE0K,SAAS,EAAE,CAAC,GAAGiK,mCAAAA,EAAAA;AAEhD;;;;;MAMAp/B,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd;;;;;QAMA,MAAM,CAAC65B,WAAAA,CAAY,GAAGpsB,IAAAA,CAAKjL,KAAK,CAAC,GAAA,CAAA,CAAK4S,KAAK,CAAC,CAAC,CAAA,CAAA;QAE7CsoB,gBAAiB,CAAA;AACflO,YAAAA,KAAAA;AACAqK,YAAAA,WAAAA;YACAP,MAAQ,EAAA;AACN,gBAAA,GAAGC,uBAAiBH,KAAM,CAAA;AAC1BjwB,gBAAAA,EAAAA,EAAIA,EAAM,IAAA,EAAA;gBACV6wB,QAAU,EAAA,EAAA;AACV4D,gBAAAA,YAAAA,EAAc1R,KAAM1qB,CAAAA,KAAK,EAAEs5B,UAAAA,EAAYzxB,GAAI,CAAA,CAACsvB,GAAQA,GAAAA,GAAAA,CAAIxvB,EAAE,CAACP,QAAQ,EAAA,CAAA,IAAO,EAAE;AAC5Ei1B,gBAAAA,SAAAA,EAAW3R,KAAM1qB,CAAAA,KAAK,EAAEi3B,OAAAA,EAASpvB,GAAI,CAAA,CAACsvB,GAAQA,GAAAA,GAAAA,CAAIxvB,EAAE,CAACP,QAAQ,EAAA,CAAA,IAAO,EAAE;AACtE,gBAAA,GAAG40B;AACL;AACF,SAAA,CAAA;KACC,EAAA;AACDtR,QAAAA,KAAAA,CAAM1qB,KAAK,EAAEi3B,OAAAA;AACbvM,QAAAA,KAAAA,CAAM1qB,KAAK,EAAEs5B,UAAAA;AACb3xB,QAAAA,EAAAA;AACAqmB,QAAAA,KAAAA;AACA/hB,QAAAA,IAAAA;AACA2rB,QAAAA,KAAAA;AACAsE,QAAAA,gBAAAA;AACAF,QAAAA;AACD,KAAA,CAAA;AAED,IAAA,MAAMM,eAAe,OAAOC,MAAAA,GAAAA;QAC1BX,eAAgB,CAAA,CAACjL,KAAO;AAAE,gBAAA,GAAGA,CAAC;gBAAEkL,EAAIU,EAAAA,MAAAA;gBAAQ9D,IAAM,EAAA;aAAE,CAAA,CAAA;AACtD,KAAA;AAEA,IAAA,MAAM+D,WAAchV,GAAAA,IAAAA,EAAM0R,UAAa1R,GAAAA,IAAAA,CAAK0R,UAAU,CAACT,IAAI,GAAGjR,IAAK0R,CAAAA,UAAU,CAACuB,SAAS,GAAG,KAAA;IAE1F,MAAMtE,OAAAA,GAAU3O,IAAMsR,EAAAA,OAAAA,IAAW,EAAE;AAEnC,IAAA,MAAM2D,eAAe,CAACC,UAAAA,GAAAA;AACpB,QAAA,IAAI,CAACA,UAAY,EAAA;AACf,YAAA;AACF;QAEA,MAAM1F,QAAAA,GAAWb,OAAQryB,CAAAA,IAAI,CAAC,CAAC64B,MAAQA,GAAIh1B,CAAAA,EAAE,CAACP,QAAQ,EAAOs1B,KAAAA,UAAAA,CAAAA;AAE7D,QAAA,IAAI,CAAC1F,QAAU,EAAA;;AAEb4F,YAAAA,OAAAA,CAAQjtB,KAAK,CACX,mJAAA,CAAA;YAGF6iB,kBAAmB,CAAA;AACjBW,gBAAAA,OAAAA,EAASvtB,aAAc,CAAA;AACrB+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,gCAAA,CAAA;oBACnBtX,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACA7G,IAAM,EAAA;AACR,aAAA,CAAA;AAEA,YAAA;AACF;AAEA;;;;;;AAMC,QACDmG,QAAS8vB,CAAAA,QAAAA,CAAAA;AACX,KAAA;AAEA,IAAA,MAAM+B,cAAiB,GAAA,IAAA;AACrB,QAAA,IAAI,CAACvR,IAAAA,IAAQ,CAACA,IAAAA,CAAK0R,UAAU,EAAE;AAC7B,YAAA;SACK,MAAA,IAAI1R,IAAK0R,CAAAA,UAAU,CAACT,IAAI,GAAGjR,IAAK0R,CAAAA,UAAU,CAACuB,SAAS,EAAE;YAC3DmB,eAAgB,CAAA,CAACjL,KAAO;AAAE,oBAAA,GAAGA,CAAC;oBAAE8H,IAAM9H,EAAAA,CAAAA,CAAE8H,IAAI,GAAG;iBAAE,CAAA,CAAA;AACnD;AACF,KAAA;AAEA17B,IAAAA,gBAAAA,CAAM8/B,eAAe,CAAC,IAAA;QACpBnB,YAAa,CAAA,EAAA,CAAA;KACZ,EAAA;AAAChR,QAAAA,KAAAA,CAAM1qB;AAAM,KAAA,CAAA;IAEhB,qBACEiG,eAAA,CAAC6K,mBAAMV,IAAI,EAAA;AAACT,QAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;QAAE4a,IAAMA,EAAAA,IAAAA;QAAMte,IAAMA,EAAAA,IAAAA;QAAMqe,QAAUA,EAAAA,QAAAA;;AAChE,0BAAAntB,cAAA,CAAC2T,mBAAME,KAAK,EAAA;gBAAC4Z,MAAQJ,EAAAA,WAAAA;AAAcvqB,gBAAAA,QAAAA,EAAAA;;0BACnC9C,cAAC2/B,CAAAA,qBAAAA,EAAAA;gBACCxsB,GAAKwrB,EAAAA,QAAAA;gBACL7vB,IAAMA,EAAAA,IAAAA;gBACN8wB,YAAa,EAAA,MAAA;AACb9rB,gBAAAA,WAAAA,EACEA,eACArL,aAAc,CAAA;AACZ+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,cAAA,CAAA;oBACnBtX,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBAEFo1B,YAAcR,EAAAA,WAAAA;gBACdv+B,OAASi0B,EAAAA,SAAAA;gBACT7qB,YAAc,EAAA,IAAA;AACZi1B,oBAAAA,YAAAA,CAAab,SAAa,IAAA,EAAA,CAAA;AAC5B,iBAAA;AACAwB,gBAAAA,gBAAAA,EAAkB,IAChBr3B,aAAc,CAAA;AACZ+B,wBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,uBAAA,CAAA;wBACnBtX,cAAgB,EAAA;AAClB,qBAAA,CAAA;AAEFs1B,gBAAAA,cAAAA,EAAgBt3B,aAAc,CAAA;AAC5B+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,oBAAA,CAAA;oBACnBtX,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACAu1B,UAAYpE,EAAAA,cAAAA;gBACZ0C,SAAWA,EAAAA,SAAAA;gBACXv0B,QAAUu1B,EAAAA,YAAAA;AACVW,gBAAAA,iBAAAA,EAAmB,CAACv6B,IAAAA,GAAAA;oBAClB64B,YAAa74B,CAAAA,IAAAA,CAAAA;AACf,iBAAA;AACAw6B,gBAAAA,aAAAA,EAAe,CAAC7qB,KAAAA,GAAAA;oBACd8pB,YAAa9pB,CAAAA,KAAAA,CAAM4N,aAAa,CAACpgB,KAAK,CAAA;AACxC,iBAAA;AACC,gBAAA,GAAGsF,KAAK;0BAER6wB,OAAQtuB,CAAAA,GAAG,CAAC,CAAC80B,GAAAA,GAAAA;oBACZ,MAAMlB,SAAAA,GAAYpB,yBAAiBsC,GAAKxO,EAAAA,SAAAA,CAAAA;AAExC,oBAAA,qBACEhxB,cAACmgC,CAAAA,2BAAAA,EAAAA;wBAA4Bt9B,KAAO28B,EAAAA,GAAAA,CAAIh1B,EAAE,CAACP,QAAQ,EAAA;wBAAIq0B,SAAWA,EAAAA,SAAAA;AAChE,wBAAA,QAAA,gBAAAx1B,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKgH,GAAK,EAAA,CAAA;4BAAGjG,cAAe,EAAA,eAAA;;8CAC3BzN,cAACsL,CAAAA,uBAAAA,EAAAA;oCAAW8oB,QAAQ,EAAA,IAAA;AAAEkK,oCAAAA,QAAAA,EAAAA;;gCACrBkB,GAAInG,CAAAA,MAAM,iBAAGr5B,cAACo5B,CAAAA,oBAAAA,EAAAA;AAAeC,oCAAAA,MAAAA,EAAQmG,IAAInG;AAAa,iCAAA,CAAA,GAAA;;;AAHtCmG,qBAAAA,EAAAA,GAAAA,CAAIh1B,EAAE,CAAA;AAO/B,iBAAA;;AAEF,0BAAAxK,cAAA,CAAC2T,mBAAMga,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAA3tB,cAAA,CAAC2T,mBAAM+Z,IAAI,EAAA,EAAA;;;AAGjB,CAAA;AAEA;;AAEkG,qGAClG,MAAM0S,oBAAuB,GAAA,EAAA;AAC7B,MAAMC,eAAkB,GAAA,CAAA;AA4BxB,MAAM5C,wBAAwB,CAAC,EAC7BpT,IAAI,EACJqT,UAAU,EACV1pB,QAAQ,EACRlF,IAAI,EACJimB,SAAS,EACT4I,YAAY,EACZpB,WAAW,EACXqB,kBAAkB,EACS,GAAA;IAC3B,MAAM7W,iBAAAA,GAAoBnnB,iBAAMwsB,KAAK,EAAA;IACrC,MAAM,EAAE3jB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM43B,OAAAA,GAAU1gC,gBAAMoS,CAAAA,MAAM,CAAgB,IAAA,CAAA;IAC5C,MAAMuuB,YAAAA,GAAe3gC,gBAAMoS,CAAAA,MAAM,CAAmB,IAAA,CAAA;AACpD,IAAA,MAAM,CAACoO,QAAAA,EAAUogB,WAAY,CAAA,GAAG5gC,iBAAMC,QAAQ,EAAA;AAC9C,IAAA,MAAM,CAACssB,QAAU5K,EAAAA,WAAAA,CAAY,GAAG3hB,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAC/C,IAAA,MAAM0tB,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;AAEvBlP,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACd,IAAIgpB,IAAAA,CAAKrpB,MAAM,IAAIo5B,oBAAsB,EAAA;AACvC,YAAA,OAAOoG,WAAYvY,CAAAA,SAAAA,CAAAA;AACrB;AAEA,QAAA,MAAMwY,qBAAqB,CAACp2B,CAAAA,GAAAA;YAC1B,MAAMq2B,EAAAA,GAAKr2B,EAAEgI,MAAM;AACnB,YAAA,MAAMsuB,2BAA8B,GAACD,EAAGE,CAAAA,UAAU,CAAoBC,YAAY;AAClF,YAAA,MAAMC,eAAkBJ,GAAAA,EAAAA,CAAGG,YAAY,GAAGH,GAAGK,SAAS;YAEtD,IAAIL,EAAAA,CAAGK,SAAS,KAAK,CAAG,EAAA;AACtB,gBAAA,OAAOP,WAAY,CAAA,QAAA,CAAA;AACrB;AAEA,YAAA,IAAIM,oBAAoBH,2BAA6B,EAAA;AACnD,gBAAA,OAAOH,WAAY,CAAA,KAAA,CAAA;AACrB;AAEA,YAAA,OAAOA,WAAY,CAAA,YAAA,CAAA;AACrB,SAAA;AAEA,QAAA,MAAMQ,sBAAsBT,YAAcztB,EAAAA,OAAAA;AAE1C,QAAA,IAAI,CAACiiB,SAAa1K,IAAAA,IAAAA,CAAKrpB,MAAM,GAAG,KAAKggC,mBAAqB,EAAA;AACxDT,YAAAA,YAAAA,CAAaztB,OAAO,CAACmuB,gBAAgB,CAAC,QAAUR,EAAAA,kBAAAA,CAAAA;AAClD;QAEA,OAAO,IAAA;AACL,YAAA,IAAIO,mBAAqB,EAAA;gBACvBA,mBAAoBE,CAAAA,mBAAmB,CAAC,QAAUT,EAAAA,kBAAAA,CAAAA;AACpD;AACF,SAAA;KACC,EAAA;AAAC1L,QAAAA,SAAAA;AAAW1K,QAAAA,IAAAA,CAAKrpB;AAAO,KAAA,CAAA;AAE3B,IAAA,MAAMk1B,UAAa,GAAA,CAACn0B,KAAkB,GAAA,CAAC,EAAEA,KAAAA,GAAQ,CAAE,CAAA,IAAI,EAAEsoB,IAAAA,CAAKrpB,MAAM,CAAC,CAAC;IAEtE,MAAMmgC,cAAAA,GAAsD,CAACxf,QAAUyf,EAAAA,QAAAA,GAAAA;QACrE,MAAM9pB,IAAAA,GAAO+S,IAAI,CAAC+W,QAAS,CAAA;AAE3B7f,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,aAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAMA,IAAKxU,CAAAA,KAAK,IAAIwU,IAAAA,CAAK4iB,UAAU;AACnClxB,YAAAA,QAAAA,EAAUktB,UAAWvU,CAAAA,QAAAA;AACvB,SAAA,CAAA,CAAA;AAIJ;;AAEC,QACD,MAAM0f,OAAU,GAAA;AAAIhX,YAAAA,GAAAA;AAAK,SAAA;QACzB,MAAMiX,UAAAA,GAAajX,IAAI,CAAC+W,QAAS,CAAA;AAEjC,QAAA,MAAMG,QACJH,GAAAA,QAAAA,GAAWzf,QAAW0f,GAAAA,OAAO,CAAC1f,QAAAA,GAAW,CAAE,CAAA,EAAE+U,YAAe2K,GAAAA,OAAO,CAAC1f,QAAAA,CAAS,EAAE+U,YAAAA;AACjF,QAAA,MAAM8K,MACJJ,GAAAA,QAAAA,GAAWzf,QAAW0f,GAAAA,OAAO,CAAC1f,QAAAA,CAAS,EAAE+U,YAAAA,GAAe2K,OAAO,CAAC1f,QAAW,GAAA,CAAA,CAAE,EAAE+U,YAAAA;AAEjF;;;AAGC,QACD,MAAM,CAAC+K,MAAAA,CAAO,GAAGxE,uCAAAA,CAAqBsE,UAAUC,MAAQ,EAAA,CAAA,CAAA;QAExDH,OAAQK,CAAAA,MAAM,CAACN,QAAU,EAAA,CAAA,CAAA;QACzBC,OAAQK,CAAAA,MAAM,CAAC/f,QAAAA,EAAU,CAAG,EAAA;AAAE,YAAA,GAAG2f,UAAU;YAAE5K,YAAc+K,EAAAA;AAAO,SAAA,CAAA;AAElE;;;;QAKA,MAAMxD,qBAAqBoD,OACxBl/B,CAAAA,MAAM,CAAa,CAACgzB,GAAAA,EAAK0E,UAAUjY,YAAc+f,EAAAA,KAAAA,GAAAA;YAChD,MAAMC,gBAAAA,GAAmBlE,UAAW/2B,CAAAA,IAAI,CAAC,CAACk7B,cAAgBA,WAAYr3B,CAAAA,EAAE,KAAKqvB,QAAAA,CAASrvB,EAAE,CAAA;AAExF,YAAA,MAAMs3B,eAAkBH,GAAAA,KAAK,CAAC/f,YAAAA,GAAe,CAAE,CAAA;AAE/C,YAAA,IAAI,CAACggB,gBAAoBA,IAAAA,gBAAAA,CAAiBlL,YAAY,KAAKmD,QAAAA,CAASnD,YAAY,EAAE;AAChF,gBAAA,MAAM1tB,WAAW84B,eACb,GAAA;AACEC,oBAAAA,MAAAA,EAAQD,gBAAgB5H,UAAU;AAClCC,oBAAAA,MAAAA,EAAQ2H,gBAAgB3H,MAAM;AAC9Bd,oBAAAA,MAAAA,EACE,aAAiByI,IAAAA,eAAAA,IAAmBA,eAAgBE,CAAAA,WAAW,GAC1D,WACA,GAAA;iBAET,GAAA;oBAAE36B,GAAK,EAAA;AAAK,iBAAA;AAEhB,gBAAA,MAAM46B,oBAAiC,GAAA;AACrC,oBAAA,GAAGpI,QAAQ;oBACX,GAAG;wBACDI,OAAS,EAAA;AACPzvB,4BAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;AACf0vB,4BAAAA,UAAAA,EAAYL,SAASK,UAAU;AAC/BC,4BAAAA,MAAAA,EAAQN,SAASM,MAAM;AACvBnxB,4BAAAA;AACF;;AAEJ,iBAAA;gBAEA,OAAO;AAAImsB,oBAAAA,GAAAA,GAAAA;AAAK8M,oBAAAA;AAAqB,iBAAA;AACvC;YAEA,OAAO9M,GAAAA;SACN,EAAA,EAAE,EACJ+M,UAAU,EAAA;AAEb3U,QAAAA,KAAAA,CAAMxjB,QAAQ,CAAC,CAAC,EAAE+E,IAAK,CAAA,QAAQ,CAAC,EAAEmvB,kBAAAA,CAAAA;AACpC,KAAA;AAEA,IAAA,MAAM7H,iBAAsD,CAACr0B,OAAAA,GAAAA;QAC3D,MAAMuV,IAAAA,GAAO+S,IAAI,CAACtoB,OAAM,CAAA;AAExBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,sIAAsI;SAEzJ,EAAA;AACE6M,YAAAA,IAAAA,EAAMA,IAAKxU,CAAAA,KAAK,IAAIwU,IAAAA,CAAK4iB,UAAU;AACnClxB,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMs0B,iBAAsD,CAACt0B,OAAAA,GAAAA;QAC3D,MAAM,EAAEqR,IAAM+uB,EAAAA,KAAK,EAAEr/B,KAAK,EAAE,GAAGwU,IAAM,EAAA,GAAG+S,IAAI,CAACtoB,OAAM,CAAA;AAEnDwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,oDAAoD;SAEvE,EAAA;YACE6M,IAAMxU,EAAAA,KAAAA,IAASwU,KAAK4iB,UAAU;AAC9BlxB,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMo0B,eAAkD,CAACp0B,OAAAA,GAAAA;QACvD,MAAMuV,IAAAA,GAAO+S,IAAI,CAACtoB,OAAM,CAAA;AAExBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,iBAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAMA,IAAKxU,CAAAA,KAAK,IAAIwU,IAAAA,CAAK4iB;AAC3B,SAAA,CAAA,CAAA;AAGN,KAAA;IAEA,MAAMN,gBAAAA,GAAmBD,oBAAoB7qB,IAAM,EAAA,eAAA,CAAA;AAEnD;;;AAGC,MACD,MAAMszB,UAAAA,GAAa,CAAC/H,iBAAAA,CAAkBl1B,QAAQ,CAACw4B,YAAAA,CAAAA;IAE/C,MAAM0E,iBAAAA,GACJhY,IAAKrpB,CAAAA,MAAM,GAAGo5B,oBAAAA,GACV3gB,IAAKmb,CAAAA,GAAG,CAACvK,IAAAA,CAAKrpB,MAAM,EAAEo5B,oBAAyBgG,CAAAA,IAAAA,oBAAuBC,GAAAA,eAAc,CACpFD,GAAAA,oBAAAA,GAAuB,CACvB3mB,GAAAA,IAAAA,CAAKmb,GAAG,CAACvK,IAAKrpB,CAAAA,MAAM,EAAEo5B,oBAAAA,CAAAA,IAAyBgG,oBAAAA,GAAuBC,eAAc,CAAA;AAE1F,IAAA,qBACEv3B,eAACw5B,CAAAA,SAAAA,EAAAA;QAAUC,kBAAoBniB,EAAAA,QAAAA;;0BAC7BpgB,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeriB,EAAIuc,EAAAA,iBAAAA;0BACjBte,aAAc,CAAA;AACb+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,kBAAA,CAAA;oBACnBtX,cAAgB,EAAA,CAAC,mCAAmC;AACtD,iBAAA;;0BAEFzK,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeC,WAAU,EAAA,WAAA;AAAaX,gBAAAA,QAAAA,EAAAA;;0BAEvCnsB,cAACwiC,CAAAA,yBAAAA,EAAAA;gBACCl1B,MAAQ+0B,EAAAA,iBAAAA;gBACRlvB,GAAKmtB,EAAAA,OAAAA;gBACLmC,QAAUlC,EAAAA,YAAAA;AACVmC,gBAAAA,SAAAA,EAAWrY,KAAKrpB,MAAM;AACtB2hC,gBAAAA,QAAAA,EAAUvC,oBAAuBC,GAAAA,eAAAA;gBACjCuC,QAAU,EAAA;oBACRC,eAAiB9b,EAAAA,iBAAAA;oBACjB+b,OAASV,EAAAA,UAAAA;AACTpuB,oBAAAA,QAAAA;AACAmiB,oBAAAA,YAAAA;AACAE,oBAAAA,cAAAA;AACAD,oBAAAA,cAAAA;AACA+K,oBAAAA,cAAAA;AACAryB,oBAAAA,IAAAA;AACA8qB,oBAAAA,gBAAAA;oBACAyC,SAAWhS,EAAAA,IAAAA;AACXkS,oBAAAA,WAAAA;AACAqB,oBAAAA;AACF,iBAAA;AACAmF,gBAAAA,OAAAA,EAAS,CAAChhC,KAAUsoB,GAAAA,IAAI,CAACtoB,KAAAA,CAAM,CAACyI,EAAE;gBAClCw4B,gBAAiB,EAAA,IAAA;AAEhBC,gBAAAA,QAAAA,EAAAA;;;;AAIT,CAAA;AAEA,MAAMjF,aAAgB,GAAA,CAAC,EACrB3T,IAAI,EACJqT,UAAU,EACV1pB,QAAQ,EACRlF,IAAI,EACJimB,SAAS,EACT4I,YAAY,EACO,GAAA;IACnB,MAAM5W,iBAAAA,GAAoBnnB,iBAAMwsB,KAAK,EAAA;IACrC,MAAM,EAAE3jB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM43B,OAAAA,GAAU1gC,gBAAMoS,CAAAA,MAAM,CAAgB,IAAA,CAAA;IAC5C,MAAMuuB,YAAAA,GAAe3gC,gBAAMoS,CAAAA,MAAM,CAAmB,IAAA,CAAA;AACpD,IAAA,MAAM,CAACoO,QAAAA,EAAUogB,WAAY,CAAA,GAAG5gC,iBAAMC,QAAQ,EAAA;AAC9C,IAAA,MAAM,CAACssB,QAAU5K,EAAAA,WAAAA,CAAY,GAAG3hB,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAC/C,IAAA,MAAM0tB,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;AAEvBlP,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACd,IAAIgpB,IAAAA,CAAKrpB,MAAM,IAAIo5B,oBAAsB,EAAA;AACvC,YAAA,OAAOoG,WAAYvY,CAAAA,SAAAA,CAAAA;AACrB;AAEA,QAAA,MAAMwY,qBAAqB,CAACp2B,CAAAA,GAAAA;YAC1B,MAAMq2B,EAAAA,GAAKr2B,EAAEgI,MAAM;AACnB,YAAA,MAAMsuB,2BAA8B,GAACD,EAAGE,CAAAA,UAAU,CAAoBC,YAAY;AAClF,YAAA,MAAMC,eAAkBJ,GAAAA,EAAAA,CAAGG,YAAY,GAAGH,GAAGK,SAAS;YAEtD,IAAIL,EAAAA,CAAGK,SAAS,KAAK,CAAG,EAAA;AACtB,gBAAA,OAAOP,WAAY,CAAA,QAAA,CAAA;AACrB;AAEA,YAAA,IAAIM,oBAAoBH,2BAA6B,EAAA;AACnD,gBAAA,OAAOH,WAAY,CAAA,KAAA,CAAA;AACrB;AAEA,YAAA,OAAOA,WAAY,CAAA,YAAA,CAAA;AACrB,SAAA;AAEA,QAAA,MAAMQ,sBAAsBT,YAAcztB,EAAAA,OAAAA;AAE1C,QAAA,IAAI,CAACiiB,SAAa1K,IAAAA,IAAAA,CAAKrpB,MAAM,GAAG,KAAKggC,mBAAqB,EAAA;AACxDT,YAAAA,YAAAA,CAAaztB,OAAO,CAACmuB,gBAAgB,CAAC,QAAUR,EAAAA,kBAAAA,CAAAA;AAClD;QAEA,OAAO,IAAA;AACL,YAAA,IAAIO,mBAAqB,EAAA;gBACvBA,mBAAoBE,CAAAA,mBAAmB,CAAC,QAAUT,EAAAA,kBAAAA,CAAAA;AACpD;AACF,SAAA;KACC,EAAA;AAAC1L,QAAAA,SAAAA;AAAW1K,QAAAA,IAAAA,CAAKrpB;AAAO,KAAA,CAAA;AAE3B,IAAA,MAAMk1B,UAAa,GAAA,CAACn0B,KAAkB,GAAA,CAAC,EAAEA,KAAAA,GAAQ,CAAE,CAAA,IAAI,EAAEsoB,IAAAA,CAAKrpB,MAAM,CAAC,CAAC;IAEtE,MAAMmgC,cAAAA,GAAsD,CAACxf,QAAUyf,EAAAA,QAAAA,GAAAA;QACrE,MAAM9pB,IAAAA,GAAO+S,IAAI,CAAC+W,QAAS,CAAA;AAE3B7f,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,aAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAMA,IAAKxU,CAAAA,KAAK,IAAIwU,IAAAA,CAAK4iB,UAAU;AACnClxB,YAAAA,QAAAA,EAAUktB,UAAWvU,CAAAA,QAAAA;AACvB,SAAA,CAAA,CAAA;AAIJ;;AAEC,QACD,MAAM0f,OAAU,GAAA;AAAIhX,YAAAA,GAAAA;AAAK,SAAA;QACzB,MAAMiX,UAAAA,GAAajX,IAAI,CAAC+W,QAAS,CAAA;AAEjC,QAAA,MAAMG,QACJH,GAAAA,QAAAA,GAAWzf,QAAW0f,GAAAA,OAAO,CAAC1f,QAAAA,GAAW,CAAE,CAAA,EAAE+U,YAAe2K,GAAAA,OAAO,CAAC1f,QAAAA,CAAS,EAAE+U,YAAAA;AACjF,QAAA,MAAM8K,MACJJ,GAAAA,QAAAA,GAAWzf,QAAW0f,GAAAA,OAAO,CAAC1f,QAAAA,CAAS,EAAE+U,YAAAA,GAAe2K,OAAO,CAAC1f,QAAW,GAAA,CAAA,CAAE,EAAE+U,YAAAA;AAEjF;;;AAGC,QACD,MAAM,CAAC+K,MAAAA,CAAO,GAAGxE,uCAAAA,CAAqBsE,UAAUC,MAAQ,EAAA,CAAA,CAAA;QAExDH,OAAQK,CAAAA,MAAM,CAACN,QAAU,EAAA,CAAA,CAAA;QACzBC,OAAQK,CAAAA,MAAM,CAAC/f,QAAAA,EAAU,CAAG,EAAA;AAAE,YAAA,GAAG2f,UAAU;YAAE5K,YAAc+K,EAAAA;AAAO,SAAA,CAAA;AAElE;;;;QAKA,MAAMxD,qBAAqBoD,OACxBl/B,CAAAA,MAAM,CAAa,CAACgzB,GAAAA,EAAK0E,UAAUjY,YAAc+f,EAAAA,KAAAA,GAAAA;YAChD,MAAMC,gBAAAA,GAAmBlE,UAAW/2B,CAAAA,IAAI,CAAC,CAACk7B,cAAgBA,WAAYr3B,CAAAA,EAAE,KAAKqvB,QAAAA,CAASrvB,EAAE,CAAA;AAExF,YAAA,MAAMs3B,eAAkBH,GAAAA,KAAK,CAAC/f,YAAAA,GAAe,CAAE,CAAA;AAE/C,YAAA,IAAI,CAACggB,gBAAoBA,IAAAA,gBAAAA,CAAiBlL,YAAY,KAAKmD,QAAAA,CAASnD,YAAY,EAAE;AAChF,gBAAA,MAAM1tB,WAAW84B,eACb,GAAA;AACEC,oBAAAA,MAAAA,EAAQD,gBAAgB5H,UAAU;AAClCC,oBAAAA,MAAAA,EAAQ2H,gBAAgB3H,MAAM;AAC9Bd,oBAAAA,MAAAA,EACE,aAAiByI,IAAAA,eAAAA,IAAmBA,eAAgBE,CAAAA,WAAW,GAC1D,WACA,GAAA;iBAET,GAAA;oBAAE36B,GAAK,EAAA;AAAK,iBAAA;AAEhB,gBAAA,MAAM46B,oBAAiC,GAAA;AACrC,oBAAA,GAAGpI,QAAQ;oBACX,GAAG;wBACDI,OAAS,EAAA;AACPzvB,4BAAAA,EAAAA,EAAIqvB,SAASrvB,EAAE;AACf0vB,4BAAAA,UAAAA,EAAYL,SAASK,UAAU;AAC/BC,4BAAAA,MAAAA,EAAQN,SAASM,MAAM;AACvBnxB,4BAAAA;AACF;;AAEJ,iBAAA;gBAEA,OAAO;AAAImsB,oBAAAA,GAAAA,GAAAA;AAAK8M,oBAAAA;AAAqB,iBAAA;AACvC;YAEA,OAAO9M,GAAAA;SACN,EAAA,EAAE,EACJ+M,UAAU,EAAA;AAEb3U,QAAAA,KAAAA,CAAMxjB,QAAQ,CAAC,CAAC,EAAE+E,IAAK,CAAA,QAAQ,CAAC,EAAEmvB,kBAAAA,CAAAA;AACpC,KAAA;AAEA,IAAA,MAAM7H,iBAAsD,CAACr0B,OAAAA,GAAAA;QAC3D,MAAMuV,IAAAA,GAAO+S,IAAI,CAACtoB,OAAM,CAAA;AAExBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,sIAAsI;SAEzJ,EAAA;AACE6M,YAAAA,IAAAA,EAAMA,IAAKxU,CAAAA,KAAK,IAAIwU,IAAAA,CAAK4iB,UAAU;AACnClxB,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMs0B,iBAAsD,CAACt0B,OAAAA,GAAAA;QAC3D,MAAM,EAAEqR,IAAM+uB,EAAAA,KAAK,EAAEr/B,KAAK,EAAE,GAAGwU,IAAM,EAAA,GAAG+S,IAAI,CAACtoB,OAAM,CAAA;AAEnDwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,oDAAoD;SAEvE,EAAA;YACE6M,IAAMxU,EAAAA,KAAAA,IAASwU,KAAK4iB,UAAU;AAC9BlxB,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMo0B,eAAkD,CAACp0B,OAAAA,GAAAA;QACvD,MAAMuV,IAAAA,GAAO+S,IAAI,CAACtoB,OAAM,CAAA;AAExBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,iBAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAMA,IAAKxU,CAAAA,KAAK,IAAIwU,IAAAA,CAAK4iB;AAC3B,SAAA,CAAA,CAAA;AAGN,KAAA;IAEA,MAAMN,gBAAAA,GAAmBD,oBAAoB7qB,IAAM,EAAA,eAAA,CAAA;AAEnD;;;AAGC,MACD,MAAMszB,UAAAA,GAAa,CAAC/H,iBAAAA,CAAkBl1B,QAAQ,CAACw4B,YAAAA,CAAAA;IAE/C,MAAM0E,iBAAAA,GACJhY,IAAKrpB,CAAAA,MAAM,GAAGo5B,oBAAAA,GACV3gB,IAAKmb,CAAAA,GAAG,CAACvK,IAAAA,CAAKrpB,MAAM,EAAEo5B,oBAAyBgG,CAAAA,IAAAA,oBAAuBC,GAAAA,eAAc,CACpFD,GAAAA,oBAAAA,GAAuB,CACvB3mB,GAAAA,IAAAA,CAAKmb,GAAG,CAACvK,IAAKrpB,CAAAA,MAAM,EAAEo5B,oBAAAA,CAAAA,IAAyBgG,oBAAAA,GAAuBC,eAAc,CAAA;AAE1F,IAAA,qBACEv3B,eAACw5B,CAAAA,SAAAA,EAAAA;QAAUC,kBAAoBniB,EAAAA,QAAAA;;0BAC7BpgB,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeriB,EAAIuc,EAAAA,iBAAAA;0BACjBte,aAAc,CAAA;AACb+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,kBAAA,CAAA;oBACnBtX,cAAgB,EAAA,CAAC,mCAAmC;AACtD,iBAAA;;0BAEFzK,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeC,WAAU,EAAA,WAAA;AAAaX,gBAAAA,QAAAA,EAAAA;;0BAEvCnsB,cAACwiC,CAAAA,yBAAAA,EAAAA;gBACCl1B,MAAQ+0B,EAAAA,iBAAAA;gBACRlvB,GAAKmtB,EAAAA,OAAAA;gBACLmC,QAAUlC,EAAAA,YAAAA;AACVmC,gBAAAA,SAAAA,EAAWrY,KAAKrpB,MAAM;AACtB2hC,gBAAAA,QAAAA,EAAUvC,oBAAuBC,GAAAA,eAAAA;gBACjCuC,QAAU,EAAA;oBACRC,eAAiB9b,EAAAA,iBAAAA;oBACjB+b,OAASV,EAAAA,UAAAA;AACTpuB,oBAAAA,QAAAA;AACAmiB,oBAAAA,YAAAA;AACAE,oBAAAA,cAAAA;AACAD,oBAAAA,cAAAA;AACA+K,oBAAAA,cAAAA;AACAryB,oBAAAA,IAAAA;AACA8qB,oBAAAA,gBAAAA;oBACAyC,SAAWhS,EAAAA;AACb,iBAAA;AACA0Y,gBAAAA,OAAAA,EAAS,CAAChhC,KAAUsoB,GAAAA,IAAI,CAACtoB,KAAAA,CAAM,CAACyI,EAAE;gBAClCw4B,gBAAiB,EAAA,IAAA;AAEhBE,gBAAAA,QAAAA,EAAAA;;;;AAIT,CAAA;AAEA,MAAMZ,SAAAA,GAAY56B,uBAAqBqB,CAAAA,gBAAAA,CAErC;;;;;;;;;;;;;;;;;;aAkBW,EAAE,CAAC,EAAEw5B,kBAAkB,EAAE,GAChCA,uBAAuB,YAAgBA,IAAAA,kBAAAA,KAAuB,KAAQ,GAAA,CAAA,GAAI,CAAE,CAAA;;;;;;;;;aASrE,EAAE,CAAC,EAAEA,kBAAkB,EAAE,GAChCA,uBAAuB,YAAgBA,IAAAA,kBAAAA,KAAuB,QAAW,GAAA,CAAA,GAAI,CAAE,CAAA;;;AAGrF,CAAC;AA2BD,MAAMY,gBAAAA,GAAmBz7B,uBAAO61B,CAAAA,uBAAAA,CAAW;;eAE5B,EAAE,CAAC,EAAE31B,KAAK,EAAE,GAAKA,KAAMw7B,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;;AAEnD,CAAC;AAED,MAAMH,gBAAAA,GAAmB,CAAC,EAAE5Y,IAAI,SAAEtoB,OAAK,EAAE8X,KAAK,EAAiB,GAAA;IAC7D,MAAM,EACJgpB,eAAe,EACfC,OAAU,GAAA,KAAK,EACf9uB,QAAAA,GAAW,KAAK,EAChBmiB,YAAY,EACZyD,gBAAgB,EAChBvD,cAAc,EACdD,cAAc,EACd+K,cAAc,EACdryB,IAAI,EACJutB,SAAS,EACTE,WAAW,EACXqB,kBAAkB,EACnB,GAAGvT,IAAAA;IAEJ,MAAM,EAAE5hB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACmvB,WAAawL,EAAAA,cAAAA,CAAe,GAAGzjC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAErD,IAAA,MAAM,EAAE2K,EAAE,EAAE1H,KAAK,EAAEu2B,MAAM,EAAEa,UAAU,EAAE9mB,IAAI,EAAE6mB,OAAO,EAAE,GAAGoC,SAAS,CAACt6B,OAAM,CAAA;AAEzE,IAAA,MAAM,CAAC,EAAEigB,SAAS,EAAEC,UAAU,EAAEqD,aAAa,EAAE,EAAEge,WAAAA,EAAanhB,SAASC,OAASoP,EAAAA,cAAAA,CAAe,GAC7FnP,sBACEygB,CAAAA,OAAAA,IAAW,CAAC9uB,QACZ,EAAA;QACEpQ,IAAM,EAAA,CAAC,EAAE0e,iBAAUihB,CAAAA,QAAQ,CAAC,CAAC,EAAEz0B,KAAK,CAAC;AACrC/M,eAAAA,OAAAA;QACAuV,IAAM,EAAA;YACJkL,cAAgB1f,EAAAA,KAAAA;AAChBu2B,YAAAA,MAAAA;YACA7uB,EAAIA,EAAAA,EAAAA;AACJzI,mBAAAA;AACF,SAAA;QACA2vB,UAAYyP,EAAAA,cAAAA;QACZ1e,UAAY4T,EAAAA,cAAAA;QACZ/F,UAAY8F,EAAAA,cAAAA;QACZ7F,QAAU4F,EAAAA,YAAAA;AACVqN,QAAAA,eAAAA,EAAiBC,yBAAiBC;AACpC,KAAA,CAAA;IAGJ,MAAMC,YAAAA,GAAehhB,6BAAgC2gB,WAAalhB,EAAAA,OAAAA,CAAAA;AAElE,IAAA,MAAMwhB,wBAA2B,GAAA,IAAA;AAC/B,QAAA,IAAIhG,kBAAoB,EAAA;AACtB,YAAA,MAAMiG,WAAc,GAAA;gBAClB3J,UAAYA,EAAAA,UAAAA,GAAaA,UAAaD,GAAAA,OAAAA,EAASC,UAAc,IAAA,EAAA;gBAC7DrJ,KAAO0L,EAAAA,WAAAA;AACP3E,gBAAAA,cAAAA,EAAgBb,iBAAkB3jB,CAAAA,IAAAA;AACpC,aAAA;YACAwqB,kBAAmBiG,CAAAA,WAAAA,CAAAA;AACrB;AACF,KAAA;AAEAjkC,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACdmwB,cAAeG,CAAAA,kCAAAA,EAAAA,CAAAA;KACd,EAAA;AAACH,QAAAA;AAAe,KAAA,CAAA;AAEnB,IAAA,qBACExxB,cAAC+I,CAAAA,gBAAAA,EAAAA;QACC8Q,KAAOA,EAAAA,KAAAA;QACPrO,GAAI,EAAA,IAAA;QACJ2H,GAAKgP,EAAAA,OAAAA;QACLuF,kBAAkBmb,EAAAA,eAAAA;AAClB9U,QAAAA,MAAAA,EAAQ+U,UAAU,YAAe,GAAA,SAAA;kBAEhC7gB,UACC,iBAAAjiB,cAAA,CAAC8jC,6CAEDh7B,eAAC4D,CAAAA,iBAAAA,EAAAA;YACC0Z,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;AACfxL,YAAAA,WAAAA,EAAaioB,UAAU,CAAI,GAAA,CAAA;YAC3BhoB,YAAc,EAAA,CAAA;YACdjR,SAAS,EAAA,IAAA;YACTR,WAAY,EAAA,YAAA;AACZD,YAAAA,UAAAA,EAAY4K,WAAW,YAAe,GAAA,UAAA;YACtCvG,cAAe,EAAA,eAAA;YACf0F,GAAKwwB,EAAAA,YAAAA;YACL5gB,iBAAiBf,EAAAA,SAAAA;;8BAEjBlZ,eAACi7B,CAAAA,WAAAA,EAAAA;oBAAYrwB,GAAK,EAAA,CAAA;;AACfovB,wBAAAA,OAAAA,iBACC9iC,cAAC+a,CAAAA,uBAAAA,EAAAA;4BACCvP,GAAI,EAAA,KAAA;4BACJgN,IAAK,EAAA,QAAA;4BACL+K,QAAU,EAAA,CAAA;4BACVC,WAAa,EAAA,KAAA;AACb1gB,4BAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,gCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,iDAAA,CAAA;gCACnBtX,cAAgB,EAAA;AAClB,6BAAA,CAAA;4BACAsJ,OAAQ,EAAA,OAAA;4BACRyS,SAAWlB,EAAAA,aAAAA;4BACXtR,QAAUA,EAAAA,QAAAA;AAEV,4BAAA,QAAA,gBAAAhU,cAAC0jB,CAAAA,UAAAA,EAAAA,EAAAA;AAED,yBAAA,CAAA,GAAA,IAAA;sCACJ5a,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKzD,KAAM,EAAA,MAAA;4BAAOiS,QAAU,EAAA,CAAA;4BAAGzN,cAAe,EAAA,eAAA;;8CAC7CzN,cAAC+I,CAAAA,gBAAAA,EAAAA;oCAAImS,QAAU,EAAA,CAAA;oCAAGkL,UAAY,EAAA,CAAA;oCAAGC,aAAe,EAAA,CAAA;oCAAGvL,YAAc,EAAA,CAAA;AAC/D,oCAAA,QAAA,gBAAA9a,cAAC4c,CAAAA,oBAAAA,EAAAA;wCAAQonB,WAAalhC,EAAAA,KAAAA;AAEnB+0B,wCAAAA,QAAAA,EAAAA,WAAAA,iBACC73B,cAACmjC,CAAAA,gBAAAA,EAAAA;4CAAiB9vB,OAASuwB,EAAAA,wBAAAA;AAA2B9gC,4CAAAA,QAAAA,EAAAA;2DAEtD9C,cAACmjC,CAAAA,gBAAAA,EAAAA;4CACC9vB,OAAS,EAAA,IAAA;gDACPgwB,cAAe,CAAA,IAAA,CAAA;AACfO,gDAAAA,wBAAAA,EAAAA;AACF,6CAAA;AAEC9gC,4CAAAA,QAAAA,EAAAA;;;;AAKRu2B,gCAAAA,MAAAA,iBAASr5B,cAACo5B,CAAAA,oBAAAA,EAAAA;oCAAeC,MAAQA,EAAAA;AAAa,iCAAA,CAAA,GAAA,IAAA;AAC9CxB,gCAAAA,WAAAA,kBACC73B,cAACs3B,CAAAA,aAAAA,EAAAA;oCACCttB,IAAM6tB,EAAAA,WAAAA;oCACNN,QAAU,EAAA,IAAA;AACR8L,wCAAAA,cAAAA,CAAe,CAACxL,WAAAA,CAAAA;AAClB,qCAAA;oCACAhH,KAAO0L,EAAAA,WAAAA;oCACP/xB,EAAI0vB,EAAAA,UAAAA,GAAaA,aAAaD,OAASC,EAAAA,UAAAA;oCACvC1C,WAAapkB,EAAAA;;;;;;8BAKrBpT,cAAC+I,CAAAA,gBAAAA,EAAAA;oBAAI8R,WAAa,EAAA,CAAA;AAChB,oBAAA,QAAA,gBAAA7a,cAAC+a,CAAAA,uBAAAA,EAAAA;AACC1H,wBAAAA,OAAAA,EAAS,IAAMumB,gBAAAA,CAAiByC,SAAS,CAACt6B,OAAM,CAAA,CAAA;wBAChDiS,QAAUA,EAAAA,QAAAA;AACVlR,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,qBAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAsJ,OAAQ,EAAA,OAAA;wBACRoe,IAAK,EAAA,GAAA;AAEL,wBAAA,QAAA,gBAAAnyB,cAACikC,CAAAA,WAAAA,EAAAA,EAAAA;;;;;;AAOf,CAAA;AAEA,MAAMf,QAAAA,GAAW,CAAC,EAAE7Y,IAAI,SAAEtoB,OAAK,EAAE8X,KAAK,EAAiB,GAAA;IACrD,MAAM,EACJgpB,eAAe,EACfC,OAAAA,GAAU,KAAK,EACf9uB,QAAAA,GAAW,KAAK,EAChBmiB,YAAY,EACZyD,gBAAgB,EAChBvD,cAAc,EACdD,cAAc,EACd+K,cAAc,EACdryB,IAAI,EACJutB,SAAS,EACV,GAAGhS,IAAAA;IACJ,MAAM,EAAE5hB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM,EAAE0K,IAAI,EAAE5I,EAAE,EAAE1H,KAAK,EAAEu2B,MAAM,EAAE,GAAGgD,SAAS,CAACt6B,OAAM,CAAA;AAEpD,IAAA,MAAM,CAAC,EAAEigB,SAAS,EAAEC,UAAU,EAAEqD,aAAa,EAAE,EAAEge,WAAAA,EAAanhB,SAASC,OAASoP,EAAAA,cAAAA,CAAe,GAC7FnP,sBACEygB,CAAAA,OAAAA,IAAW,CAAC9uB,QACZ,EAAA;QACEpQ,IAAM,EAAA,CAAC,EAAE0e,iBAAUihB,CAAAA,QAAQ,CAAC,CAAC,EAAEz0B,KAAK,CAAC;AACrC/M,eAAAA,OAAAA;QACAuV,IAAM,EAAA;YACJkL,cAAgB1f,EAAAA,KAAAA;AAChBu2B,YAAAA,MAAAA;YACA7uB,EAAIA,EAAAA,EAAAA;AACJzI,mBAAAA;AACF,SAAA;QACA2vB,UAAYyP,EAAAA,cAAAA;QACZ1e,UAAY4T,EAAAA,cAAAA;QACZ/F,UAAY8F,EAAAA,cAAAA;QACZ7F,QAAU4F,EAAAA,YAAAA;AACVqN,QAAAA,eAAAA,EAAiBC,yBAAiBC;AACpC,KAAA,CAAA;IAGJ,MAAMC,YAAAA,GAAehhB,6BAAgC2gB,WAAalhB,EAAAA,OAAAA,CAAAA;AAElExiB,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACdmwB,cAAeG,CAAAA,kCAAAA,EAAAA,CAAAA;KACd,EAAA;AAACH,QAAAA;AAAe,KAAA,CAAA;AAEnB,IAAA,qBACExxB,cAAC+I,CAAAA,gBAAAA,EAAAA;QACC8Q,KAAOA,EAAAA,KAAAA;QACPrO,GAAI,EAAA,IAAA;QACJ2H,GAAKgP,EAAAA,OAAAA;QACLuF,kBAAkBmb,EAAAA,eAAAA;AAClB9U,QAAAA,MAAAA,EAAQ+U,UAAU,YAAe,GAAA,SAAA;kBAEhC7gB,UACC,iBAAAjiB,cAAA,CAAC8jC,6CAEDh7B,eAAC4D,CAAAA,iBAAAA,EAAAA;YACC0Z,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;AACfxL,YAAAA,WAAAA,EAAaioB,UAAU,CAAI,GAAA,CAAA;YAC3BhoB,YAAc,EAAA,CAAA;YACdjR,SAAS,EAAA,IAAA;YACTR,WAAY,EAAA,YAAA;AACZD,YAAAA,UAAAA,EAAY4K,WAAW,YAAe,GAAA,UAAA;YACtCvG,cAAe,EAAA,eAAA;YACf0F,GAAKwwB,EAAAA,YAAAA;YACL5gB,iBAAiBf,EAAAA,SAAAA;;8BAEjBlZ,eAACi7B,CAAAA,WAAAA,EAAAA;oBAAYrwB,GAAK,EAAA,CAAA;;AACfovB,wBAAAA,OAAAA,iBACC9iC,cAAC+a,CAAAA,uBAAAA,EAAAA;4BACCvP,GAAI,EAAA,KAAA;4BACJgN,IAAK,EAAA,QAAA;4BACL+K,QAAU,EAAA,CAAA;4BACVC,WAAa,EAAA,KAAA;AACb1gB,4BAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,gCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,iDAAA,CAAA;gCACnBtX,cAAgB,EAAA;AAClB,6BAAA,CAAA;4BACAsJ,OAAQ,EAAA,OAAA;4BACRyS,SAAWlB,EAAAA,aAAAA;4BACXtR,QAAUA,EAAAA,QAAAA;AAEV,4BAAA,QAAA,gBAAAhU,cAAC0jB,CAAAA,UAAAA,EAAAA,EAAAA;AAED,yBAAA,CAAA,GAAA,IAAA;sCACJ5a,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKzD,KAAM,EAAA,MAAA;4BAAOiS,QAAU,EAAA,CAAA;4BAAGzN,cAAe,EAAA,eAAA;;8CAC7CzN,cAAC+I,CAAAA,gBAAAA,EAAAA;oCAAImS,QAAU,EAAA,CAAA;oCAAGkL,UAAY,EAAA,CAAA;oCAAGC,aAAe,EAAA,CAAA;oCAAGvL,YAAc,EAAA,CAAA;AAC/D,oCAAA,QAAA,gBAAA9a,cAAC4c,CAAAA,oBAAAA,EAAAA;wCAAQonB,WAAalhC,EAAAA,KAAAA;AACnBsQ,wCAAAA,QAAAA,EAAAA,IAAAA,iBACCpT,cAACkkC,CAAAA,YAAAA,EAAAA;4CAAa14B,GAAK24B,EAAAA,sBAAAA;4CAASrtB,EAAI1D,EAAAA,IAAAA;4CAAMgxB,UAAY,EAAA,KAAA;AAC/CthC,4CAAAA,QAAAA,EAAAA;2DAGH9C,cAACsL,CAAAA,uBAAAA,EAAAA;AAAW2iB,4CAAAA,SAAAA,EAAWja,WAAW,YAAe,GAAA,YAAA;4CAAcogB,QAAQ,EAAA,IAAA;AACpEtxB,4CAAAA,QAAAA,EAAAA;;;;AAKRu2B,gCAAAA,MAAAA,iBAASr5B,cAACo5B,CAAAA,oBAAAA,EAAAA;oCAAeC,MAAQA,EAAAA;AAAa,iCAAA,CAAA,GAAA;;;;;8BAGnDr5B,cAAC+I,CAAAA,gBAAAA,EAAAA;oBAAI8R,WAAa,EAAA,CAAA;AAChB,oBAAA,QAAA,gBAAA7a,cAAC+a,CAAAA,uBAAAA,EAAAA;AACC1H,wBAAAA,OAAAA,EAAS,IAAMumB,gBAAAA,CAAiByC,SAAS,CAACt6B,OAAM,CAAA,CAAA;wBAChDiS,QAAUA,EAAAA,QAAAA;AACVlR,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,qBAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAsJ,OAAQ,EAAA,OAAA;wBACRoe,IAAK,EAAA,GAAA;AAEL,wBAAA,QAAA,gBAAAnyB,cAACikC,CAAAA,WAAAA,EAAAA,EAAAA;;;;;;AAOf,CAAA;AAEMF,MAAAA,WAAAA,GAAcr8B,uBAAsBgF,CAAAA,iBAAAA,CAAK;;;;;;;;AAQ/C;AAEM23B,MAAAA,gBAAAA,GAAmB38B,uBAAO48B,CAAAA,MAAM;;AAE5B,UAAA,EAAE,CAAC,EAAE18B,KAAK,EAAEoM,QAAQ,EAAE,GAC1BA,QAAAA,GAAWpM,KAAME,CAAAA,MAAM,CAAC8Q,UAAU,GAAGhR,MAAME,MAAM,CAACsZ,UAAU,CAAC;;;;;AAKzD,UAAA,EAAE,CAAC,EAAExZ,KAAK,EAAEoM,QAAQ,EAAE,GAAK,CAACA,QAAYpM,IAAAA,KAAAA,CAAME,MAAM,CAAC8Q,UAAU,CAAC;;AAE1E;AAEMsrB,MAAAA,YAAAA,GAAex8B,uBAAOwM,CAAAA,iBAAAA,CAAK;;;;;;;;;AASjC;AAEA,MAAM4vB,uBAAAA,GAA0B,kBAC9B9jC,cAAC+I,CAAAA,gBAAAA,EAAAA;QACCqd,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfxL,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdjR,SAAS,EAAA,IAAA;QACTP,WAAY,EAAA,QAAA;QACZD,WAAY,EAAA,YAAA;QACZE,WAAY,EAAA,KAAA;QACZH,UAAW,EAAA,YAAA;AACXkE,QAAAA,MAAAA,EAAQ,CAAC,YAAY,EAAE+yB,eAAAA,CAAgB,GAAG;;AAI9C,MAAMkE,sBAAAA,iBAAyB3kC,gBAAMiuB,CAAAA,IAAI,CAACgQ,cAAAA,CAAAA;AAC1C,MAAM2G,8BAAAA,iBAAiC5kC,gBAAMiuB,CAAAA,IAAI,CAACyM,sBAAAA,CAAAA;;AClsDlD,MAAMmK,MAAAA,GAASC,uBAAkBC,CAAAA,eAAe,CAAC;IAC/CC,SAAW,EAAA,CAACC,WAAa;YACvBC,aAAeD,EAAAA,OAAAA,CAAQpK,KAAK,CAK1B;AACAA,gBAAAA,KAAAA,EAAO,CAAC,EAAEE,MAAM,EAAE,GAAGtQ,IAAM,EAAA,GAAA;oBACzB,OAAO;wBACLjd,GAAK,EAAA,+BAAA;wBACLmsB,MAAQ,EAAA,MAAA;AACRlP,wBAAAA,IAAAA;wBACA0a,MAAQ,EAAA;AACNpK,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAqK,iBAAmB,EAAA,CAACC,QAAmCA,GAAAA,QAAAA,CAAS5a;AAClE,aAAA,CAAA;YACA6a,WAAaL,EAAAA,OAAAA,CAAQM,QAAQ,CAK3B;AACA1K,gBAAAA,KAAAA,EAAO,CAAC,EAAEE,MAAM,EAAE,GAAGtQ,IAAAA,EAAM,IAAM;wBAC/Bjd,GAAK,EAAA,+BAAA;wBACLmsB,MAAQ,EAAA,MAAA;AACRlP,wBAAAA,IAAAA;wBACA0a,MAAQ,EAAA;AACNpK,4BAAAA;AACF;qBACF,CAAA;gBACAqK,iBAAmB,EAAA,CAACC,QAAmCA,GAAAA,QAAAA,CAAS5a;AAClE,aAAA,CAAA;YACA+a,eAAiBP,EAAAA,OAAAA,CAAQpK,KAAK,CAK5B;AACAA,gBAAAA,KAAAA,EAAO,CAAC,EAAEE,MAAM,EAAE,GAAGtQ,IAAAA,EAAM,IAAM;wBAC/Bjd,GAAK,EAAA,yCAAA;wBACLmsB,MAAQ,EAAA,MAAA;AACRlP,wBAAAA,IAAAA;wBACA0a,MAAQ,EAAA;AACNpK,4BAAAA;AACF;qBACF,CAAA;gBACA0K,YAAc,EAAA,CAACC,IAAMC,EAAAA,MAAAA,EAAQ5K,MAAW,GAAA;AACtC,wBAAA;4BAAE/2B,IAAM,EAAA,iBAAA;AAAmB4G,4BAAAA,EAAAA,EAAImwB,OAAO6K;AAAe;AACtD;AACH,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,sBAAsB,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAE,GAAGlB,MAAAA;;AC5BnF;;AAEkG,qGAElG,MAAMmB,SAAY,GAAA,oBAAA;AAMlB,MAAMC,yBAAWjmC,gBAAMoR,CAAAA,UAAU,CAC/B,CAAC,EAAEoc,IAAI,EAAEtqB,KAAK,EAAEuqB,WAAW,EAAEve,IAAI,EAAEqe,QAAQ,EAAE,GAAGhlB,OAAO,EAAEgL,GAAAA,GAAAA;AACvD,IAAA,MAAM,EAAE0d,KAAK,EAAErmB,EAAE,EAAE,GAAGuzB,YAAAA,EAAAA;AACtB,IAAA,MAAM+H,gBAAgBrV,mBAAQ,CAAA,UAAA,EAAY,CAACiF,IAAAA,GAASA,KAAKtR,MAAM,CAAA;AAC/D,IAAA,MAAM,CAAC2hB,YAAAA,EAAcC,eAAgB,CAAA,GAAGpmC,iBAAMC,QAAQ,EAAA;AACtD,IAAA,MAAM,CAAComC,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAGtmC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAC3D,MAAMsmC,SAAAA,GAAYC,wBAASC,gBAAgB,CAAA,KAAA,IAAA;AAC3C,IAAA,MAAM9Y,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;AACvB,IAAA,MAAMw3B,cAAiBxH,GAAAA,mBAAAA,CAAYvR,KAAM1qB,CAAAA,KAAK,EAAE,GAAA,CAAA;IAChD,MAAM0jC,UAAAA,GAAaD,cAAmB/Y,KAAAA,KAAAA,CAAMP,YAAY;IACxD,MAAM,EAAEqI,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEkR,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;IACpD,MAAM,EAAEj+B,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAAC,EAAE+xB,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,SAAS/6B,gBAAMmxB,CAAAA,OAAO,CAAC,IAAM6J,uBAAiBH,KAAQ,CAAA,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,MAAM,EACJpQ,IAAMsc,EAAAA,mBAAmB,EACzB5R,SAAAA,EAAW6R,sBAAsB,EACjCp0B,KAAOq0B,EAAAA,QAAQ,EAChB,GAAGnB,qBACF,CAAA;QACEF,cAAgB3U,EAAAA,KAAAA;QAChBtD,KAAOze,EAAAA,IAAAA;QACPub,IAAM,EAAA;AACJ7f,YAAAA,EAAAA,EAAIA,EAAM,IAAA,EAAA;AACV,YAAA,GAAGs7B;AACL,SAAA;AACAnL,QAAAA;KAEF,EAAA;QACEa,IAAMjO,EAAAA,KAAAA,CAAM1qB,KAAK,IAAI,CAACsqB;AACxB,KAAA,CAAA;AAGFvtB,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIwlC,QAAU,EAAA;YACZxR,kBAAmB,CAAA;gBACjBzxB,IAAM,EAAA,SAAA;AACNoyB,gBAAAA,OAAAA,EAASyQ,cAAeI,CAAAA,QAAAA;AAC1B,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,QAAAA;AAAUJ,QAAAA,cAAAA;AAAgBpR,QAAAA;AAAmB,KAAA,CAAA;AAEjD;;;QAIAz1B,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIslC,mBAAuBpZ,IAAAA,KAAAA,CAAM1qB,KAAK,KAAKolB,SAAW,EAAA;YACpDsF,KAAMxjB,CAAAA,QAAQ,CAAC+E,IAAM63B,EAAAA,mBAAAA,CAAAA;AACvB;KACC,EAAA;AAACA,QAAAA,mBAAAA;AAAqBpZ,QAAAA,KAAAA;AAAOze,QAAAA;AAAK,KAAA,CAAA;AAErC,IAAA,MAAM,CAACo2B,WAAa,EAAA,EAAEnQ,WAAW+R,eAAe,EAAE,CAAC,GAAGrB,sBAAAA,EAAAA;AAEtD,IAAA,MAAMsB,qBAAwB,GAAA,UAAA;QAC5B,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAM9B,WAAY,CAAA;gBAC5BM,cAAgB3U,EAAAA,KAAAA;gBAChBtD,KAAOze,EAAAA,IAAAA;gBACPub,IAAM,EAAA;AAAE7f,oBAAAA,EAAAA,EAAIA,EAAM,IAAA,EAAA;AAAI,oBAAA,GAAGs7B;AAAc,iBAAA;AACvCnL,gBAAAA;AACF,aAAA,CAAA;AAEA,YAAA,IAAI,UAAUqM,GAAK,EAAA;AACjBzZ,gBAAAA,KAAAA,CAAMxjB,QAAQ,CAAC+E,IAAMk4B,EAAAA,GAAAA,CAAI3c,IAAI,CAAA;aACxB,MAAA;gBACLgL,kBAAmB,CAAA;oBACjBzxB,IAAM,EAAA,QAAA;oBACNoyB,OAASyQ,EAAAA,cAAAA,CAAeO,IAAIx0B,KAAK;AACnC,iBAAA,CAAA;AACF;AACF,SAAA,CAAE,OAAOy0B,GAAK,EAAA;YACZ5R,kBAAmB,CAAA;gBACjBzxB,IAAM,EAAA,QAAA;AACNoyB,gBAAAA,OAAAA,EAASvtB,aAAc,CAAA;oBACrB+B,EAAI,EAAA,oBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAM,EACJ4f,IAAM6c,EAAAA,gBAAgB,EACtBnS,SAAAA,EAAWoS,sBAAsB,EACjC30B,KAAO40B,EAAAA,iBAAiB,EACzB,GAAGzB,uBACF,CAAA;QACEH,cAAgB3U,EAAAA,KAAAA;QAChBtD,KAAOze,EAAAA,IAAAA;QACPjM,KAAOyjC,EAAAA,cAAAA,GAAiBA,cAAejV,CAAAA,IAAI,EAAK,GAAA,EAAA;AAChDsJ,QAAAA;KAEF,EAAA;;AAEEa,QAAAA,IAAAA,EAAM,CAACvnB,OAAAA,CACL,CAACsyB,UAAcJ,IAAAA,SAAQ,KAAMG,cAAAA,IAAkBV,SAAUyB,CAAAA,IAAI,CAACf,cAAAA,CAAejV,IAAI,EAAA,CAAA;AAErF,KAAA,CAAA;AAGFzxB,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAI+lC,iBAAmB,EAAA;YACrB/R,kBAAmB,CAAA;gBACjBzxB,IAAM,EAAA,SAAA;AACNoyB,gBAAAA,OAAAA,EAASyQ,cAAeW,CAAAA,iBAAAA;AAC1B,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,iBAAAA;AAAmBX,QAAAA,cAAAA;AAAgBpR,QAAAA;AAAmB,KAAA,CAAA;AAE1Dz1B,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd;;;AAGC,UACD2kC,eAAgBkB,CAAAA,gBAAAA,CAAAA;QAEhB,IAAII,KAAAA;AAEJ,QAAA,IAAIJ,kBAAkBK,WAAa,EAAA;YACjCD,KAAQE,GAAAA,MAAAA,CAAOC,UAAU,CAAC,IAAA;gBACxBzB,eAAgB/d,CAAAA,SAAAA,CAAAA;aACf,EAAA,IAAA,CAAA;AACL;QAEA,OAAO,IAAA;AACL,YAAA,IAAIqf,KAAO,EAAA;gBACTI,YAAaJ,CAAAA,KAAAA,CAAAA;AACf;AACF,SAAA;KACC,EAAA;AAACJ,QAAAA;AAAiB,KAAA,CAAA;IAErB,MAAMnS,SAAAA,GAAY6R,0BAA0BE,eAAmBK,IAAAA,sBAAAA;AAE/D,IAAA,MAAMxI,WAAWC,8BAAmB9vB,CAAAA,IAAAA,CAAAA;IACpC,MAAM60B,YAAAA,GAAehhB,6BAAgBxP,GAAKwrB,EAAAA,QAAAA,CAAAA;IAE1C,MAAMgJ,sBAAAA,GACJ,CAACpB,UAAAA,IAAcJ,SAAQ,KAAMG,cAAAA,IAAkB,IAAQP,IAAAA,YAAAA,IAAgB,CAACE,cAAAA;IAE1E,qBACEn9B,eAAA,CAAC6K,mBAAMV,IAAI,EAAA;QAACma,IAAMA,EAAAA,IAAAA;QAAMte,IAAMA,EAAAA,IAAAA;AAAM0D,QAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;QAAE2a,QAAUA,EAAAA,QAAAA;;AAChE,0BAAAntB,cAAA,CAAC2T,mBAAME,KAAK,EAAA;gBAAC4Z,MAAQJ,EAAAA,WAAAA;AAAcvqB,gBAAAA,QAAAA,EAAAA;;0BACnC9C,cAAC42B,CAAAA,sBAAAA,EAAAA;gBACCzjB,GAAKwwB,EAAAA,YAAAA;AACL3vB,gBAAAA,QAAAA,EAAU7L,MAAM6L,QAAQ;AACxB4zB,gBAAAA,SAAAA,gBACE9+B,eAAC4D,CAAAA,iBAAAA,EAAAA;oBAAK1D,QAAS,EAAA,UAAA;oBAAW0K,GAAK,EAAA,CAAA;;AAC5Bi0B,wBAAAA,sBAAAA,kBACC7+B,eAAC++B,CAAAA,cAAAA,EAAAA;4BACCj0B,UAAW,EAAA,QAAA;4BACXF,GAAK,EAAA,CAAA;4BACLjG,cAAe,EAAA,UAAA;4BACfq6B,UAAY,EAAA,CAAC,CAAC/B,YAAcwB,EAAAA,WAAAA;4BAC5BQ,qBAAmB,EAAA,IAAA;4BACnB/+B,QAAS,EAAA,UAAA;4BACTg/B,aAAc,EAAA,MAAA;4BACdr+B,KAAO,EAAA,CAAA;4BACPV,KAAM,EAAA,OAAA;;gCAEL88B,YAAcwB,EAAAA,WAAAA,iBAAcvnC,cAACioC,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA,iBAAiBjoC,cAAC24B,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;8CAEhD34B,cAACsL,CAAAA,uBAAAA,EAAAA;oCACC2iB,SAAW8X,EAAAA,YAAAA,CAAawB,WAAW,GAAG,YAAe,GAAA,WAAA;oCACrDxzB,OAAQ,EAAA,IAAA;8CAEPtL,aACCs9B,CAAAA,YAAAA,CAAawB,WAAW,GACpB;wCACE/8B,EAAI,EAAA,0CAAA;wCACJC,cAAgB,EAAA;qCAElB,GAAA;wCACED,EAAI,EAAA,4CAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;;;wBAMX,CAACtC,KAAAA,CAAM6L,QAAQ,kBACdlL,eAAA,CAAA0V,mBAAA,EAAA;;AACGynB,gCAAAA,cAAAA,kBACCjmC,cAAC6nC,CAAAA,cAAAA,EAAAA;oCAAej0B,UAAW,EAAA,QAAA;oCAASnG,cAAe,EAAA,UAAA;oCAAWiG,GAAK,EAAA,CAAA;AACjE,oCAAA,QAAA,gBAAA1T,cAACsL,CAAAA,uBAAAA,EAAAA;wCAAW2iB,SAAU,EAAA,YAAA;wCAAala,OAAQ,EAAA,IAAA;kDACxCtL,aAAc,CAAA;4CACb+B,EAAI,EAAA,2CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;;8CAKNzK,cAACkoC,CAAAA,kBAAAA,EAAAA;oCACC70B,OAAS0zB,EAAAA,qBAAAA;AACTjkC,oCAAAA,KAAAA,EAAO2F,aAAc,CAAA;wCACnB+B,EAAI,EAAA,2CAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA,CAAA;AACA09B,oCAAAA,YAAAA,EAAc,IAAMjC,iBAAkB,CAAA,IAAA,CAAA;AACtC5iB,oCAAAA,YAAAA,EAAc,IAAM4iB,iBAAkB,CAAA,KAAA,CAAA;AAErCnR,oCAAAA,QAAAA,EAAAA,SAAAA,iBACC/0B,cAACooC,CAAAA,cAAAA,EAAAA;wCAAeC,aAAY,EAAA,iBAAA;AAC1B,wCAAA,QAAA,gBAAAroC,cAACw4B,CAAAA,YAAAA,EAAAA,EAAAA;uDAGHx4B,cAACw9B,CAAAA,oBAAAA,EAAAA,EAAAA;;;;;;AAObzzB,gBAAAA,QAAAA,EAAUwjB,MAAMxjB,QAAQ;gBACxBlH,KAAO0qB,EAAAA,KAAAA,CAAM1qB,KAAK,IAAI,EAAA;AACrB,gBAAA,GAAGsF;;AAEN,0BAAAnI,cAAA,CAAC2T,mBAAMga,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAA3tB,cAAA,CAAC2T,mBAAM+Z,IAAI,EAAA,EAAA;;;AAGjB,CAAA,CAAA;AAGF;;AAEkG,qGAElG,MAAMwa,kBAAqBxgC,GAAAA,uBAAAA,CAAOiM,kBAAM20B,CAAAA,MAAM,CAAC;;;;;;;YAOnC,EAAE,CAAC,EAAE1gC,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACygC,UAAU,CAAC;;;;;;YAMzC,EAAE,CAAC,EAAE3gC,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC+E,UAAU,CAAC;;;AAGrD,CAAC;AAED;;AAEkG,qGAElG,MAAMg7B,cAAAA,GAAiBngC,uBAAsBgF,CAAAA,iBAAAA,CAA+B;;;;;;AAMhE,YAAA,EAAE,CAAC,EAAE9E,KAAK,EAAEkgC,UAAU,EAAE,GAC5BA,UAAAA,GAAalgC,KAAME,CAAAA,MAAM,CAAC0gC,UAAU,GAAG5gC,MAAME,MAAM,CAACigB,SAAS,CAAC;;;AAGtE,CAAC;AAED;;qGAIA,MAAM0gB,QAAWC,GAAAA,0BAAS;;;;;;;AAO1B,CAAC;AAED,MAAMN,cAAAA,GAAiB1gC,uBAAsBgF,CAAAA,iBAAAA,CAAK;AACrC,aAAA,EAAE+7B,QAAS,CAAA;AACxB,CAAC;AAEKE,MAAAA,gBAAAA,iBAAmB/oC,gBAAMiuB,CAAAA,IAAI,CAACgY,QAAAA;;ACtTpC,MAAM+C,EAAAA,GAAe,IAAIC,QAAS,CAAA;IAChCC,IAAM,EAAA,IAAA;IACNC,QAAU,EAAA,KAAA;IACVC,MAAQ,EAAA,IAAA;IACRC,UAAY,EAAA,WAAA;IACZC,OAAS,EAAA,IAAA;IACTC,WAAa,EAAA,IAAA;;IAEbC,SAAUC,CAAAA,CAAAA,GAAG,EAAEziC,IAAI,EAAA;AACjB,QAAA,IAAIA,IAAQA,IAAAA,IAAAA,KAAS,MAAU0iC,IAAAA,wBAAAA,CAAY1iC,IAAO,CAAA,EAAA;AAChD,YAAA,OACE,4BACAgiC,GAAAA,EAAAA,CAAGW,KAAK,CAACC,UAAU,CAAC5iC,IAAAA,CAAKk0B,WAAW,EAAA,CAAA,GACpC,aACAsO,sBAAUxiC,CAAAA,IAAAA,EAAMyiC,GAAK,EAAA,IAAA,CAAA,CAAMxmC,KAAK,GAChC,eAAA;AAEJ;AAEA,QAAA,IAAI+D,SAAS,MAAQ,EAAA;AACnB,YAAA,MAAM80B,SAAS+N,0BAAcJ,CAAAA,GAAAA,CAAAA;AAE7B,YAAA,OACE,4BACAT,GAAAA,EAAAA,CAAGW,KAAK,CAACC,UAAU,CAAC9N,MAAOh1B,CAAAA,QAAQ,CACnC,GAAA,UAAA,GACAg1B,MAAO74B,CAAAA,KAAK,GACZ,eAAA;AAEJ;AAEA,QAAA,OAAO,6BAA6B+lC,EAAGW,CAAAA,KAAK,CAACC,UAAU,CAACH,GAAO,CAAA,GAAA,eAAA;AACjE;AACF,CAAA,CAAA,CACGK,GAAG,CAACC,IACJD,CAAAA,CAAAA,GAAG,CAACE,SAAAA,EAAW,SACfF,CAAAA,CAAAA,GAAG,CAACE,SAAAA,EAAW,KACfF,CAAAA,CAAAA,GAAG,CAACG,OACJH,CAAAA,CAAAA,GAAG,CAACI,KAAAA,CAAAA,CACJJ,GAAG,CAACK,QACJL,CAAAA,CAAAA,GAAG,CAACM,GAAAA,CAAAA,CACJN,GAAG,CAACO,IACJP,CAAAA,CAAAA,GAAG,CAACQ,GAAAA,CAAAA,CACJR,GAAG,CAACS,GAAAA,CAAAA;AAEP;AACAvB,EAAGwB,CAAAA,QAAQ,CAACC,KAAK,CAACC,YAAY,GAAG,CAACrjC,MAAAA,EAAQsjC,GAAKvR,EAAAA,OAAAA,EAASwR,GAAKC,EAAAA,GAAAA,GAAAA;IAC3D,MAAMC,OAAAA,GAAUD,IAAIJ,KAAK,CAACM,gBAAgB,GAAG1jC,MAAAA,EAAQsjC,GAAKvR,EAAAA,OAAAA,EAASwR,GAAKC,EAAAA,GAAAA,CAAAA;AAExE,IAAA,OAAO,qCAAqCC,OAAU,GAAA,eAAA;AACxD,CAAA;AAEA9B,EAAAA,CAAGwB,QAAQ,CAACC,KAAK,CAACO,eAAe,GAAG,IAAA;AAClC,sEACA,OAAO,qDAAA;AACT,CAAA;;AChEA,MAAMC,cAAiB,GAAA,CAAC,EAAExgB,IAAAA,GAAO,EAAE,EAAuB,GAAA;AACxD,IAAA,MAAMye,IAAOlpC,GAAAA,gBAAAA,CAAMmxB,OAAO,CACxB,IACE+Z,YAAalC,CAAAA,EAAAA,CAAGmC,MAAM,CAAC1gB,IAAK2gB,CAAAA,UAAU,CAAC,KAAA,EAAO,SAAS,EAAK,CAAA,EAAA;AAC1D,YAAA,GAAGF,aAAaG,QAAQ;YACxBC,WAAa,EAAA,KAAA;YACbC,iBAAmB,EAAA;gBACjB,GAAK,EAAA;AAAC,oBAAA,MAAA;AAAQ,oBAAA,OAAA;AAAS,oBAAA,KAAA;AAAO,oBAAA,QAAA;AAAU,oBAAA,OAAA;AAAS,oBAAA,QAAA;AAAU,oBAAA,MAAA;AAAQ,oBAAA,UAAA;AAAY,oBAAA;AAAS,iBAAA;gBACxFz9B,GAAK,EAAA;AAAC,oBAAA,KAAA;AAAO,oBAAA;AAAM,iBAAA;gBACnB09B,MAAQ,EAAA;AAAC,oBAAA,KAAA;AAAO,oBAAA;AAAO;AACzB;SAEJ,CAAA,EAAA;AAAC/gB,QAAAA;AAAK,KAAA,CAAA;AAGR,IAAA,qBACErqB,cAACwgB,CAAAA,OAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAxgB,cAAC+Y,CAAAA,KAAAA,EAAAA;YAAIsyB,uBAAyB,EAAA;gBAAEC,MAAQxC,EAAAA;AAAK;;;AAGnD,CAAA;AAEA,MAAMtoB,OAAAA,GAAU9Y,uBAAOqR,CAAAA,GAAG;;;;;;WAMf,EAAE,CAAC,EAAEnR,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAMI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAEJ,KAAMI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;;oBAEhD,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACkgB,QAAQ,CAAC;SAClD,EAAE,CAAC,EAAEpgB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC;eACnC,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAM6D,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;;;;;;;;wBAQ7B,EAAE,CAAC,EAAE7D,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;sBACnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;mBAIpC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgCpC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;mBAC9B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;2BAGzB,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;;aAEvD,EAAE,CAAC,EAAE3T,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;;;kBAS9D,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACyT,UAAU,CAAC;;;iBAG1C,EAAE,CAAC,EAAE3T,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;wBAI1B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC;;;;eAIlD,EAAE,CAAC,EAAE/Q,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;wBACxB,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC;;;;;;;;;;;;;;;;;;;aAmBpD,EAAE,CAAC,EAAE/Q,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;;;;;;;;wBActB,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;sBACnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;0BAG7B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;;;;;wBAWnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;sBACnC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;0BAG7B,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;;AAQ3D,CAAC;;AC7KD;AACA,qBAEA,IAAIujC,MAAAA,GAAS,0DACXC,EAAAA,WAAAA,GAAc,uDACdC,eAAkB,GAAA,SAAA;AAEpB;;;;;;;AAOA,GAEA,SAASC,qCAAqCC,EAAqB,EAAA;;AAEjE,IAAA,IAAIA,GAAGC,SAAS,CAAC,cAAiB,CAAA,EAAA,OAAOC,WAAWC,IAAI;AACxD,IAAA,IAAIxlC,MAASqlC,GAAAA,EAAAA,CAAGI,cAAc,EAAA,EAC5BC,eAAe,EAAE;AACnB,IAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAI3lC,MAAOtF,CAAAA,MAAM,EAAEirC,CAAK,EAAA,CAAA;AACtC,QAAA,IAAIC,GAAM5lC,GAAAA,MAAM,CAAC2lC,CAAAA,CAAE,CAACE,IAAI;AAExB,QAAA,IAAIC,QAAWT,GAAAA,EAAAA,CAAGU,aAAa,CAACH,IAAII,IAAI,CAAA;QACxC,IAAIC,MAAAA,GAASH,QAASI,CAAAA,IAAI,KAAK,KAAA;QAC/B,IAAIC,OAAAA,GAAUL,QAAStzB,CAAAA,KAAK,KAAK,CAAA;QAEjC,IAAIwzB,IAAAA,GAAOX,EAAGe,CAAAA,OAAO,CAACR,GAAAA,CAAII,IAAI,CAC5B7oC,EAAAA,KAAAA,GAAQ8nC,MAAOoB,CAAAA,IAAI,CAACL,IAAAA,CAAAA;QACtB,IAAIM,kBAAAA,GAAqB,QAAQvF,IAAI,CAACiF,KAAK71B,KAAK,CAAC,CAAGy1B,EAAAA,GAAAA,CAAIW,EAAE,CAAA,CAAA;AAC1D,QAAA,IAAI,CAACvmC,MAAM,CAAC2lC,CAAAA,CAAE,CAACa,KAAK,EAAO,IAAA,CAACP,MAAU,IAAA,CAACE,OAAY,IAAA,CAAChpC,SAASmpC,kBAAoB,EAAA;AAC/EjB,YAAAA,EAAAA,CAAGoB,WAAW,CAAC,kBAAA,CAAA;AACf,YAAA;AACF;QACA,IAAIvB,WAAAA,CAAYnE,IAAI,CAACiF,IAAO,CAAA,EAAA;AAC1B,YAAA,IAAIU,UAAaP,GAAAA,OAAAA,IAAW,OAAQpF,CAAAA,IAAI,CAACiF,IAAAA,CAAAA;AACzC,YAAA,IAAIW,SAAY,GAAA,CAAC,OAAQ5F,CAAAA,IAAI,CAACiF,IAAAA,CAAAA;AAC9B,YAAA,IAAIU,UAAcC,IAAAA,SAAAA,EAChBtB,EAAGuB,CAAAA,YAAY,CACb,EACA,EAAA;AACEZ,gBAAAA,IAAAA,EAAMJ,IAAII,IAAI;gBACdO,EAAI,EAAA;aAEN,EAAA;AACEP,gBAAAA,IAAAA,EAAMJ,IAAII,IAAI;gBACdO,EAAIX,EAAAA,GAAAA,CAAIW,EAAE,GAAG;AACf,aAAA,CAAA;YAEJb,YAAY,CAACC,EAAE,GAAG,IAAA;SACb,MAAA;YACL,IAAIkB,MAAAA,GAAS1pC,KAAK,CAAC,CAAA,CAAE,EACnB2pC,KAAQ3pC,GAAAA,KAAK,CAAC,CAAE,CAAA;AAClB,YAAA,IAAI4pC,WAAW,EAAE5B,eAAgBpE,CAAAA,IAAI,CAAC5jC,KAAK,CAAC,CAAE,CAAA,CAAA,IAAKA,KAAK,CAAC,CAAA,CAAE,CAAC6pC,OAAO,CAAC,QAAQ,CAAA,CAAA;AAC5E,YAAA,IAAIC,SAASF,QAAWG,GAAAA,QAAAA,CAAS/pC,KAAK,CAAC,CAAA,CAAE,EAAE,EAAM,CAAA,GAAA,CAAA,GAAIA,KAAK,CAAC,CAAA,CAAE,GAAGA,KAAK,CAAC,EAAE,CAACgqC,OAAO,CAAC,GAAK,EAAA,GAAA,CAAA;AACtFzB,YAAAA,YAAY,CAACC,CAAAA,CAAE,GAAG,IAAA,GAAOkB,SAASI,MAASH,GAAAA,KAAAA;YAE3C,IAAIC,QAAAA,EAAUK,sCAAsC/B,EAAIO,EAAAA,GAAAA,CAAAA;AAC1D;AACF;AAEAP,IAAAA,EAAAA,CAAGgC,iBAAiB,CAAC3B,YAAAA,CAAAA;AACvB;AAEA,SAAS0B,qCAAAA,CAAsC/B,EAAqB,EAAEO,GAAwB,EAAA;AAC5F,IAAA,IAAI0B,YAAY1B,GAAII,CAAAA,IAAI,EACtBuB,SAAAA,GAAY,GACZC,SAAY,GAAA,CAAA;IACd,IAAIC,SAAAA,GAAYxC,MAAOoB,CAAAA,IAAI,CAAChB,EAAAA,CAAGe,OAAO,CAACkB,SACrCI,CAAAA,CAAAA,EAAAA,WAAAA,GAAcD,SAAU,CAAC,CAAE,CAAA;IAE7B,GAAG;QACDF,SAAa,IAAA,CAAA;AACb,QAAA,IAAII,iBAAiBL,SAAYC,GAAAA,SAAAA;QACjC,IAAIK,QAAAA,GAAWvC,EAAGe,CAAAA,OAAO,CAACuB,cAAAA,CAAAA;QAC1B,IAAIE,QAAAA,GAAW5C,MAAOoB,CAAAA,IAAI,CAACuB,QAAAA,CAAAA;AAE3B,QAAA,IAAIC,QAAU,EAAA;YACZ,IAAIC,UAAAA,GAAaD,QAAQ,CAAC,CAAE,CAAA;AAC5B,YAAA,IAAIE,YAAYb,QAASO,CAAAA,SAAU,CAAC,CAAE,CAAA,EAAE,MAAMF,SAAYC,GAAAA,SAAAA;AAC1D,YAAA,IAAIQ,aAAad,QAASW,CAAAA,QAAQ,CAAC,CAAE,CAAA,EAAE,KACrCI,UAAaD,GAAAA,UAAAA;AAEf,YAAA,IAAIN,WAAgBI,KAAAA,UAAAA,IAAc,CAACI,KAAAA,CAAMF,UAAa,CAAA,EAAA;gBACpD,IAAID,SAAAA,KAAcC,UAAYC,EAAAA,UAAAA,GAAaD,UAAa,GAAA,CAAA;gBACxD,IAAID,SAAAA,GAAYC,UAAYC,EAAAA,UAAAA,GAAaF,SAAY,GAAA,CAAA;AACrD1C,gBAAAA,EAAAA,CAAGuB,YAAY,CACbgB,QAAST,CAAAA,OAAO,CAAClC,MAAQ6C,EAAAA,UAAAA,GAAaG,UAAaJ,GAAAA,QAAQ,CAAC,CAAE,CAAA,GAAGA,QAAQ,CAAC,EAAE,CAC5E,EAAA;oBACE7B,IAAM2B,EAAAA,cAAAA;oBACNpB,EAAI,EAAA;iBAEN,EAAA;oBACEP,IAAM2B,EAAAA,cAAAA;AACNpB,oBAAAA,EAAAA,EAAIqB,SAASltC;AACf,iBAAA,CAAA;aAEG,MAAA;AACL,gBAAA,IAAIgtC,WAAYhtC,CAAAA,MAAM,GAAGotC,UAAAA,CAAWptC,MAAM,EAAE;;;AAG5C,gBAAA,IAAIgtC,YAAYhtC,MAAM,GAAGotC,WAAWptC,MAAM,IAAI6sC,cAAc,CAAG,EAAA;gBAC/DC,SAAa,IAAA,CAAA;AACf;AACF;AACF,KAAA,OAASK,QAAU;AACrB;;ACrFA,MAAM9qC,MAAAA,iBAASzD,gBAAMoR,CAAAA,UAAU,CAC7B,CACE,EACEgD,QAAQ,EACRy6B,SAAS,EACTj8B,KAAK,EACLk8B,aAAa,EACbC,YAAY,EACZ7/B,IAAI,EACJ/E,QAAQ,EACR+J,WAAW,EACX86B,WAAW,EACX/rC,KAAK,EACN,EACDoO,YAAAA,GAAAA;IAEA,MAAM49B,WAAAA,GAAcjvC,gBAAMoS,CAAAA,MAAM,CAACjI,QAAAA,CAAAA;AAEjCnK,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACd,IAAIotC,SAAAA,CAAU37B,OAAO,EAAE;;;YAGrB27B,SAAU37B,CAAAA,OAAO,CAACg8B,UAAU,EAAA;AAC9B;AACAL,QAAAA,SAAAA,CAAU37B,OAAO,GAAG+4B,UAAAA,CAAWkD,YAAY,CAACH,WAAAA,CAAY97B,OAAO,EAAG;YAChEk8B,YAAc,EAAA,IAAA;YACdC,SAAW,EAAA;gBACTC,KAAO,EAAA,sCAAA;gBACPC,GAAK,EAAA,KAAA;gBACL,WAAa,EAAA;AACf,aAAA;YACA5oB,QAAU,EAAA,KAAA;YACV6oB,WAAa,EAAA,KAAA;AACbt7B,YAAAA,WAAAA;YACAu7B,UAAY,EAAA,IAAA;YACZC,UAAY,EAAA;AACd,SAAA,CAAA;;QAGAzD,UAAW0D,CAAAA,QAAQ,CAAC7D,oCAAoC,GACtDA,oCAAAA;AACF+C,QAAAA,SAAAA,CAAU37B,OAAO,CAAC08B,EAAE,CAAC,UAAU,CAACC,GAAAA,GAAAA;AAC9BZ,YAAAA,WAAAA,CAAY/7B,OAAO,CAAChE,IAAM2gC,EAAAA,GAAAA,CAAIC,QAAQ,EAAA,CAAA;AACxC,SAAA,CAAA;KACC,EAAA;AAACjB,QAAAA,SAAAA;AAAWG,QAAAA,WAAAA;AAAa9/B,QAAAA,IAAAA;AAAMgF,QAAAA;AAAY,KAAA,CAAA;AAE9ClU,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIwB,SAAS,CAAC4rC,SAAAA,CAAU37B,OAAO,CAAC68B,QAAQ,EAAI,EAAA;YAC1ClB,SAAU37B,CAAAA,OAAO,CAAC88B,QAAQ,CAAC/sC,KAAAA,CAAAA;AAC7B;KACC,EAAA;AAAC4rC,QAAAA,SAAAA;AAAW5rC,QAAAA;AAAM,KAAA,CAAA;AAErBjD,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIqtC,iBAAiB16B,QAAU,EAAA;AAC7By6B,YAAAA,SAAAA,CAAU37B,OAAO,CAAC+8B,SAAS,CAAC,UAAY,EAAA,UAAA,CAAA;SACnC,MAAA;AACLpB,YAAAA,SAAAA,CAAU37B,OAAO,CAAC+8B,SAAS,CAAC,UAAY,EAAA,KAAA,CAAA;AAC1C;KACC,EAAA;AAAC77B,QAAAA,QAAAA;AAAU06B,QAAAA,aAAAA;AAAeD,QAAAA;AAAU,KAAA,CAAA;AAEvC7uC,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAImR,KAAO,EAAA;AACTi8B,YAAAA,SAAAA,CAAU37B,OAAO,CAAC+8B,SAAS,CAAC,mBAAqBr9B,EAAAA,KAAAA,CAAAA;SAC5C,MAAA;;AAELi8B,YAAAA,SAAAA,CAAU37B,OAAO,CAAC+8B,SAAS,CAAC,mBAAqB,EAAA,QAAA,CAAA;AACnD;KACC,EAAA;AAACpB,QAAAA,SAAAA;AAAWj8B,QAAAA;AAAM,KAAA,CAAA;AAErB5S,IAAAA,gBAAAA,CAAM2sB,mBAAmB,CACvBtb,YACA,EAAA,KAAO;AACL1J,YAAAA,KAAAA,CAAAA,GAAAA;AACEknC,gBAAAA,SAAAA,CAAU37B,OAAO,CAACg9B,aAAa,EAAA,CAAGvoC,KAAK,EAAA;AACzC,aAAA;AACAwoC,YAAAA,cAAAA,CAAAA,CAAeC,IAAmD,EAAA;AAChEvB,gBAAAA,SAAAA,CAAU37B,OAAO,CAACg9B,aAAa,EAAA,CAAGC,cAAc,CAACC,IAAAA,CAAAA;AACnD;AACF,SAAA,CACA,EAAA;AAACvB,QAAAA;AAAU,KAAA,CAAA;AAGb,IAAA,qBACE3lC,eAACmnC,CAAAA,uBAAAA,EAAAA;;0BACCjwC,cAACkwC,CAAAA,qBAAAA,EAAAA;gBAAsBC,aAAexB,EAAAA,YAAAA;AAAc9mB,gBAAAA,SAAAA,EAAW7T,QAAY06B,IAAAA,aAAAA;AACzE,gBAAA,QAAA,gBAAA1uC,cAACowC,CAAAA,UAAAA,EAAAA;oBAASj9B,GAAKy7B,EAAAA;;;AAEhBF,YAAAA,aAAAA,kBAAiB1uC,cAAC6qC,CAAAA,cAAAA,EAAAA;gBAAexgB,IAAMxnB,EAAAA;;;;AAG9C,CAAA,CAAA;AAGF,MAAMotC,uBAAAA,GAA0BvoC,uBAAOqR,CAAAA,GAAG;;;AAG1C,CAAC;AAED,MAAMm3B,qBAAwBxoC,GAAAA,uBAAAA,CAAOqR,GAAqD;AAChF,UAAA,EAAE,CAAC,EAAE8O,SAAS,EAAE,GAAMA,SAAAA,GAAY,2BAA2B,MAAQ,CAAA;;;;WAIpE,EAAE,CAAC,EAAEjgB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC8Q,UAAU,CAAC;;;;;;AAMxC,YAAA,EAAE,CAAC,EAAEu3B,aAAa,EAAE,GAC1BA,aAAAA,GACI,SACA,OAAQ,CAAA;WACP,EAAE,CAAC,EAAEvoC,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC;;;;;;;;;aASvC,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAMI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAEJ,KAAMI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;;;;;;;AAOhD,sBAAA,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAAA,CAAME,MAAM,CAACkgB,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiIlD,gBAAA,EAAE,CAAC,EAAEpgB,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAAA,CAAME,MAAM,CAACkgB,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsI1C,kBAAA,EAAE,CAAC,EAAEpgB,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAAA,CAAME,MAAM,CAACG,UAAU,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;gBAuBhD,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;WAuB9C,EAAE,CAAC,EAAE/Q,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC;;AAEpD,CAAC;;ACtbD,MAAM4e,YAAe,GAAA,CAAC,EACpBrnB,QAAQ,EACRmvC,YAAY,EACZn8B,KAAK,EACL69B,cAAAA,GAAiB,EAAE,EACnBvpB,UAAU,EACQ,GAAA;IAClB,MAAM,EAAEre,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B9I,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIstC,YAAc,EAAA;AAChB7uC,YAAAA,QAAAA,CAASknB,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,kBAAA,CAAA;AAC9B;QAEA,OAAO,IAAA;AACLpnB,YAAAA,QAAAA,CAASknB,IAAI,CAACC,SAAS,CAACE,MAAM,CAAC,kBAAA,CAAA;AACjC,SAAA;KACC,EAAA;AAACwnB,QAAAA;AAAa,KAAA,CAAA;AAEjB,IAAA,IAAIA,YAAc,EAAA;AAChB,QAAA,qBACE3uC,cAAConB,CAAAA,mBAAAA,EAAAA;YAAO5O,IAAK,EAAA,QAAA;YAAS6O,YAAY,EAAA,KAAA;AAChC,YAAA,QAAA,gBAAArnB,cAACsnB,CAAAA,sBAAAA,EAAAA;gBAAUC,QAAUT,EAAAA,UAAAA;AACnB,gBAAA,QAAA,gBAAA9mB,cAAC4mB,CAAAA,aAAAA,EAAAA;oBACC5d,QAAS,EAAA,OAAA;oBACTS,GAAK,EAAA,CAAA;oBACL+d,IAAM,EAAA,CAAA;oBACN7d,KAAO,EAAA,CAAA;oBACPoc,MAAQ,EAAA,CAAA;oBACR0B,MAAQ,EAAA,CAAA;oBACRha,cAAe,EAAA,QAAA;oBACf4F,OAASyT,EAAAA,UAAAA;AAET,oBAAA,QAAA,gBAAA9mB,cAAC+I,CAAAA,gBAAAA,EAAAA;wBACCK,UAAW,EAAA,UAAA;wBACXS,SAAS,EAAA,IAAA;wBACTL,MAAO,EAAA,aAAA;wBACP4W,QAAS,EAAA,QAAA;wBACTnX,KAAM,EAAA,KAAA;wBACNqE,MAAO,EAAA,KAAA;wBACP+F,OAAS,EAAA,CAAChJ,CAAMA,GAAAA,CAAAA,CAAEqI,eAAe,EAAA;AAEjC,wBAAA,QAAA,gBAAA5J,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKY,MAAO,EAAA,MAAA;4BAAOsG,UAAW,EAAA,YAAA;;8CAC7B5T,cAACswC,CAAAA,aAAAA,EAAAA;oCAAc9W,IAAK,EAAA,GAAA;oCAAIlsB,MAAO,EAAA,MAAA;AAC5B9N,oCAAAA,QAAAA,EAAAA;;8CAEHsJ,eAAC4D,CAAAA,iBAAAA,EAAAA;oCAAKkH,UAAW,EAAA,OAAA;oCAAQH,SAAU,EAAA,QAAA;oCAAS+lB,IAAM,EAAA,CAAA;oCAAGlsB,MAAO,EAAA,MAAA;oCAAOrE,KAAM,EAAA,MAAA;;sDACvEjJ,cAAC0M,CAAAA,iBAAAA,EAAAA;4CACCY,MAAO,EAAA,QAAA;4CACPlE,UAAW,EAAA,YAAA;4CACXqE,cAAe,EAAA,UAAA;4CACf4hB,MAAQ,EAAA,CAAA;4CACRpmB,KAAM,EAAA,MAAA;AAEN,4CAAA,QAAA,gBAAAH,eAACynC,CAAAA,cAAAA,EAAAA;gDAAal9B,OAASyT,EAAAA,UAAAA;gDAAY/S,OAAQ,EAAA,UAAA;gDAAWoe,IAAK,EAAA,GAAA;;kEACzDnyB,cAACsL,CAAAA,uBAAAA,EAAAA;kEACE7C,aAAc,CAAA;4DACb+B,EAAI,EAAA,6BAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA;;kEAEFzK,cAAC2nB,CAAAA,cAAAA,EAAAA,EAAAA;;;;sDAIL3nB,cAAC+I,CAAAA,gBAAAA,EAAAA;4CAAIC,QAAS,EAAA,UAAA;4CAAWsE,MAAO,EAAA,MAAA;4CAAOrE,KAAM,EAAA,MAAA;AAC3C,4CAAA,QAAA,gBAAAjJ,cAAC6qC,CAAAA,cAAAA,EAAAA;gDAAexgB,IAAMgmB,EAAAA;;;;;;;;;;;AASxC;AAEA,IAAA,qBACErwC,cAAC0M,CAAAA,iBAAAA,EAAAA;AACCrD,QAAAA,WAAAA,EAAamJ,QAAQ,WAAc,GAAA,YAAA;QACnClJ,WAAY,EAAA,OAAA;QACZC,WAAY,EAAA,KAAA;QACZM,SAAS,EAAA,IAAA;QACT4J,SAAU,EAAA,QAAA;QACVG,UAAW,EAAA,SAAA;AAEVpU,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAMonB,aAAAA,GAAgBlf,uBAAsBgF,CAAAA,iBAAAA,CAAK;cACnC,EAAE,CAAC,EAAE9E,KAAK,EAAE,GACtB,CAAC,EAAEA,KAAME,CAAAA,MAAM,CAACG,UAAU,CAAC,EAAEwR,KAAK+2B,KAAK,CAAC,GAAM,GAAA,GAAA,CAAA,CAC3CvmC,QAAQ,CAAC,EACTwmC,CAAAA,CAAAA,QAAQ,CAAC,CAAA,EAAG,GAAK,CAAA,CAAA,CAAC,CAAC;AAC1B,CAAC;AAED,MAAMH,aAAAA,GAAgB5oC,uBAAqBqB,CAAAA,gBAAAA,CAAI;0BACrB,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC;AACnE,CAAC;AAED,MAAM43B,cAAAA,GAAe7oC,uBAAOmJ,CAAAA,mBAAAA,CAAO;;;;;;;;;;iBAUlB,EAAE,CAAC,EAAEjJ,KAAK,EAAE,GAAKA,KAAM6Q,CAAAA,WAAW,CAACC,OAAO,CAAC;;;;AAI3C,iBAAA,EAAE,CAAC,EAAE9Q,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAAA,CAAMI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;;;YAG3C,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC4oC,UAAU,CAAC;;;;;AAKrD,CAAC;;AClJM,MAAMC,WAAc,GAAA,CAACC,YAAsBC,EAAAA,YAAAA,GAAAA;IAChD,IAAIC,UAAAA;IAEJ,OAAQF,YAAAA;QACN,KAAK,eAAA;AACHE,YAAAA,UAAAA,GAAa,CAAC,EAAE,EAAED,YAAAA,CAAa,EAAE,CAAC;AAClC,YAAA;QACF,KAAK,MAAA;AACHC,YAAAA,UAAAA,GAAa,CAAC,EAAE,EAAED,YAAAA,CAAa,EAAE,CAAC;AAClC,YAAA;QACF,KAAK,QAAA;AACHC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAED,YAAAA,CAAa,CAAC,CAAC;AAChC,YAAA;QACF,KAAK,WAAA;AACHC,YAAAA,UAAAA,GAAa,CAAC,GAAG,EAAED,YAAAA,CAAa,IAAI,CAAC;AACrC,YAAA;QACF,KAAK,MAAA;AACHC,YAAAA,UAAAA,GAAa,CAAC,QAAQ,EAAED,YAAAA,CAAa,QAAQ,CAAC;AAC9C,YAAA;QACF,KAAK,MAAA;AACHC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAED,YAAAA,CAAa,OAAO,CAAC;AACtC,YAAA;QACF,KAAK,OAAA;AACHC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAED,YAAAA,CAAa,CAAC;AAC/B,YAAA;AACF,QAAA;YACEC,UAAaD,GAAAA,YAAAA;AACjB;IAEA,OAAOC,UAAAA;AACT,CAAE;AAEK,MAAM7qC,aAAa,CAAC2qC,YAAAA,GAAAA;IACzB,IAAIE,UAAAA;;AAEJ,IAAA,MAAM/sC,SAAY,GAAA;AAAEoD,QAAAA,KAAAA,EAAOypC,aAAa5vC,MAAM;QAAEqG,GAAK,EAAA;AAAE,KAAA;IAEvD,OAAQupC,YAAAA;QACN,KAAK,eAAA;AACHE,YAAAA,UAAAA,GAAa,CAAC,EAAE,EAAEF,YAAAA,CAAa,EAAE,CAAC;AAClC7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,MAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,EAAE,EAAEF,YAAAA,CAAa,EAAE,CAAC;AAClC7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,QAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAEF,YAAAA,CAAa,CAAC,CAAC;AAChC7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,KAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAEF,YAAAA,CAAa,GAAG,CAAC;AAClC7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,WAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,GAAG,EAAEF,YAAAA,CAAa,IAAI,CAAC;AACrC7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,MAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,QAAQ,EAAEF,YAAAA,CAAa,QAAQ,CAAC;AAC9C7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,MAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAEF,YAAAA,CAAa,OAAO,CAAC;AACtC7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;QACF,KAAK,OAAA;AACHypC,YAAAA,UAAAA,GAAa,CAAC,CAAC,EAAEF,YAAAA,CAAa,CAAC;AAC/B7sC,YAAAA,SAAAA,CAAUsD,GAAG,GAAG,CAAA;AAChB,YAAA;AACF,QAAA;YACEypC,UAAa,GAAA,EAAA;AACjB;IAEA,OAAO;AAAEA,QAAAA,UAAAA;AAAY/sC,QAAAA;AAAU,KAAA;AACjC,CAAE;AAEK,MAAMgtC,oBAAoB,CAACC,QAAAA,GAAAA;IAChC,IAAIC,YAAAA;IAEJ,OAAQD,QAAAA;QACN,KAAK,YAAA;YACHC,YAAe,GAAA,IAAA;AACf,YAAA;QACF,KAAK,YAAA;YACHA,YAAe,GAAA,KAAA;AACf,YAAA;QACF,KAAK,IAAA;YACHA,YAAe,GAAA,IAAA;AACf,YAAA;QACF,KAAK,IAAA;YACHA,YAAe,GAAA,KAAA;AACf,YAAA;QACF,KAAK,IAAA;YACHA,YAAe,GAAA,MAAA;AACf,YAAA;QACF,KAAK,IAAA;YACHA,YAAe,GAAA,OAAA;AACf,YAAA;QACF,KAAK,IAAA;YACHA,YAAe,GAAA,QAAA;AACf,YAAA;QACF,KAAK,IAAA;YACHA,YAAe,GAAA,SAAA;AACf,YAAA;AACF,QAAA;YACE,OAAO,EAAA;AACX;IAEA,OAAOA,YAAAA;AACT,CAAE;AAEF;AAEO,MAAMC,eAAkB,GAAA,CAC7BjuC,MACAkuC,EAAAA,YAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAanuC,GAAAA,MAAAA,CAAO6P,OAAO,CAACu+B,YAAY,EAAA;IAC9C,IAAIJ,YAAAA;AAEJ,IAAA,IAAIG,UAAY,EAAA;QACd,MAAMN,UAAAA,GAAaH,YAAYQ,YAAcC,EAAAA,UAAAA,CAAAA;QAC7CnuC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAACR,UAAAA,CAAAA;QAChC7tC,MAAO6P,CAAAA,OAAO,CAACvL,KAAK,EAAA;KACf,MAAA;AACL0pC,QAAAA,YAAAA,GAAehrC,UAAWkrC,CAAAA,YAAAA,CAAAA;AAC1BluC,QAAAA,MAAAA,CAAO6P,OAAO,CAACw+B,gBAAgB,CAACL,aAAaH,UAAU,CAAA;QACvD7tC,MAAO6P,CAAAA,OAAO,CAACvL,KAAK,EAAA;;QAEpB,MAAM,EAAE+kC,IAAI,EAAEO,EAAE,EAAE,GAAG5pC,MAAAA,CAAO6P,OAAO,CAACy+B,SAAS,EAAA;AAC7C,QAAA,MAAMC,YAAe3E,GAAAA,EAAAA,GAAKoE,YAAaltC,CAAAA,SAAS,CAACsD,GAAG;QACpD,MAAMoqC,cAAAA,GAAiB5E,EAAKoE,GAAAA,YAAAA,CAAaltC,SAAS,CAACsD,GAAG,GAAG4pC,YAAAA,CAAaltC,SAAS,CAACoD,KAAK;QACrFlE,MAAO6P,CAAAA,OAAO,CAAC4+B,YAAY,CAAC;AAAEpF,YAAAA,IAAAA;YAAMO,EAAI4E,EAAAA;SAAkB,EAAA;AAAEnF,YAAAA,IAAAA;YAAMO,EAAI2E,EAAAA;AAAa,SAAA,CAAA;AACrF;AACF,CAAE;AAEK,MAAMG,WAAc,GAAA,CACzB1uC,MACA2uC,EAAAA,QAAAA,GAAAA;AAEA,IAAA,MAAMnC,GAAMxsC,GAAAA,MAAAA,CAAO6P,OAAO,CAAC++B,MAAM,EAAA;IACjC,MAAMC,SAAAA,GAAYF,QAAa,KAAA,YAAA,GAAe,IAAO,GAAA,KAAA;IAErD,IAAInC,GAAAA,CAAIsC,iBAAiB,EAAI,EAAA;QAC3B,MAAMC,UAAAA,GAAavC,IAAI1D,cAAc,EAAA;AACrC,QAAA,IAAI5kB,MAAyB,GAAA,IAAA;QAE7BlkB,MAAO6P,CAAAA,OAAO,CAACgX,SAAS,CAAC,WAAA;YACvBkoB,UAAWlwC,CAAAA,OAAO,CAAC,SAAUiC,SAAS,EAAA;AACpC,gBAAA,MAAMmoC,GAAM,GAAA;oBAACnoC,SAAUooC,CAAAA,IAAI,CAACG,IAAI;oBAAEvoC,SAAUwB,CAAAA,MAAM,CAAC+mC;AAAK,iBAAA,CAAC1P,IAAI,EAAA;;AAG7D,gBAAA,IAAIzV,UAAU,IAAM,EAAA;oBAClBA,MAASsoB,GAAAA,GAAAA,CAAI/C,OAAO,CAACR,GAAG,CAAC,CAAE,CAAA,CAAA,CAAE35B,UAAU,CAACu/B,SAAAA,CAAAA;AAC1C;gBAEA,IAAK,IAAI7F,CAAIC,GAAAA,GAAG,CAAC,CAAA,CAAE,EAAED,CAAAA,IAAKC,GAAG,CAAC,CAAE,CAAA,EAAED,CAAK,EAAA,CAAA;AACrC,oBAAA,IAAI9kB,MAAQ,EAAA;;AAEV,wBAAA,IAAIsoB,IAAI/C,OAAO,CAACT,CAAG15B,CAAAA,CAAAA,UAAU,CAACu/B,SAAY,CAAA,EAAA;4BACxCrC,GAAIvC,CAAAA,YAAY,CAAC,EAAI,EAAA;gCAAEZ,IAAML,EAAAA,CAAAA;gCAAGY,EAAI,EAAA;6BAAK,EAAA;gCAAEP,IAAML,EAAAA,CAAAA;AAAGY,gCAAAA,EAAAA,EAAIiF,UAAU9wC;AAAO,6BAAA,CAAA;AAC3E;qBACK,MAAA;wBACL,MAAMixC,aAAAA,GAAgBL,aAAa,YAAe,GAAA,IAAA,GAAO,CAAC,EAAE3F,CAAAA,GAAI,CAAE,CAAA,EAAE,CAAC;wBACrEwD,GAAIvC,CAAAA,YAAY,CAAC+E,aAAe,EAAA;4BAAE3F,IAAML,EAAAA,CAAAA;4BAAGY,EAAI,EAAA;AAAE,yBAAA,CAAA;AACnD;AACF;AACF,aAAA,CAAA;AACF,SAAA,CAAA;KACK,MAAA;AACL,QAAA,MAAM,EAAEP,IAAM4F,EAAAA,WAAW,EAAE,GAAGzC,IAAI8B,SAAS,EAAA;AAC3C,QAAA,MAAMY,eAAepB,iBAAkBa,CAAAA,QAAAA,CAAAA;AACvC,QAAA,MAAMQ,WAAcnvC,GAAAA,MAAAA,CAAO6P,OAAO,CAAC45B,OAAO,CAACwF,WAAAA,CAAAA;AAE3C,QAAA,MAAMjB,eAAekB,YAAeC,GAAAA,WAAAA;QACpCnvC,MAAO6P,CAAAA,OAAO,CAAC4+B,YAAY,CACzB;YAAEpF,IAAM4F,EAAAA,WAAAA;YAAarF,EAAI,EAAA;SACzB,EAAA;YAAEP,IAAM4F,EAAAA,WAAAA;AAAarF,YAAAA,EAAAA,EAAIuF,YAAYpxC;AAAO,SAAA,CAAA;QAE9CiC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAACL,YAAAA,CAAAA;AAClC;IAEAhuC,MAAO6P,CAAAA,OAAO,CAACvL,KAAK,EAAA;AACtB,CAAE;AAEK,MAAM8qC,YAAe,GAAA,CAC1BpvC,MACAqvC,EAAAA,SAAAA,GAAAA;IAEA,MAAM,EAAEhG,MAAM4F,WAAW,EAAE,GAAGjvC,MAAO6P,CAAAA,OAAO,CAACy+B,SAAS,EAAA;AACtD,IAAA,MAAMgB,gBAAgBxB,iBAAkBuB,CAAAA,SAAAA,CAAAA;AACxC,IAAA,MAAMF,WAAcnvC,GAAAA,MAAAA,CAAO6P,OAAO,CAAC45B,OAAO,CAACwF,WAAAA,CAAAA;;AAG3C,IAAA,MAAMM,kBAAkBJ,WAAY3E,CAAAA,OAAO,CAAC,WAAA,EAAa,IAAIpc,IAAI,EAAA;AAEjE,IAAA,MAAM4f,eAAesB,aAAgBC,GAAAA,eAAAA;IACrCvvC,MAAO6P,CAAAA,OAAO,CAAC4+B,YAAY,CACzB;QAAEpF,IAAM4F,EAAAA,WAAAA;QAAarF,EAAI,EAAA;KACzB,EAAA;QAAEP,IAAM4F,EAAAA,WAAAA;AAAarF,QAAAA,EAAAA,EAAIuF,YAAYpxC;AAAO,KAAA,CAAA;IAE9CiC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAACL,YAAAA,CAAAA;IAEhCxJ,UAAW,CAAA,IAAA;AACT,QAAA,MAAMgL,oBAAoBxvC,MAAO6P,CAAAA,OAAO,CAAC45B,OAAO,CAACwF,aAAalxC,MAAM;QACpEiC,MAAO6P,CAAAA,OAAO,CAACvL,KAAK,EAAA;QACpBtE,MAAO6P,CAAAA,OAAO,CAAC4/B,SAAS,CAAC;YAAEpG,IAAM4F,EAAAA,WAAAA;YAAarF,EAAI4F,EAAAA;AAAkB,SAAA,CAAA;KACnE,EAAA,CAAA,CAAA;AACL,CAAE;AAEK,MAAME,UAAa,GAAA,CACxB1vC,MACA2vC,EAAAA,KAAAA,GAAAA;AAEA,IAAA,IAAI,EAAEtG,IAAI,EAAE,GAAGrpC,MAAO6P,CAAAA,OAAO,CAACy+B,SAAS,EAAA;AACvC,IAAA,MAAM,EAAE1E,EAAE,EAAE,GAAG5pC,MAAO6P,CAAAA,OAAO,CAACy+B,SAAS,EAAA;IAEvCqB,KAAM9wC,CAAAA,OAAO,CAAC,CAAC+wC,IAAM5G,EAAAA,CAAAA,GAAAA;AACnB,QAAA,IAAI6G,gBAAgB7vC,MAAO6P,CAAAA,OAAO,CAAC45B,OAAO,CAACJ,MAAMtrC,MAAM;QACvDiC,MAAO6P,CAAAA,OAAO,CAAC4/B,SAAS,CAAC;AAAEpG,YAAAA,IAAAA;YAAMO,EAAIiG,EAAAA;AAAc,SAAA,CAAA;;;AAInD,QAAA,IAAI7G,CAAI,GAAA,CAAA,IAAMA,CAAM,KAAA,CAAA,IAAKY,OAAO,CAAI,EAAA;AAClCiG,YAAAA,aAAAA,GAAgB7vC,OAAO6P,OAAO,CAAC45B,OAAO,CAACJ,MAAMtrC,MAAM;YACnDiC,MAAO6P,CAAAA,OAAO,CAAC4/B,SAAS,CAAC;AAAEpG,gBAAAA,IAAAA;gBAAMO,EAAIiG,EAAAA;AAAc,aAAA,CAAA;AACnDxG,YAAAA,IAAAA,EAAAA;YACArpC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAAC,IAAA,CAAA;AAClC;AAEA,QAAA,IAAIuB,IAAKE,CAAAA,IAAI,CAAC5tC,QAAQ,CAAC,OAAU,CAAA,EAAA;AAC/BlC,YAAAA,MAAAA,CAAO6P,OAAO,CAACw+B,gBAAgB,CAAC,CAAC,EAAE,EAAEuB,IAAAA,CAAKjlC,GAAG,CAAC,EAAE,EAAEilC,IAAAA,CAAKzlC,GAAG,CAAC,CAAC,CAAC,CAAA;SACxD,MAAA;AACLnK,YAAAA,MAAAA,CAAO6P,OAAO,CAACw+B,gBAAgB,CAAC,CAAC,CAAC,EAAEuB,IAAAA,CAAKjlC,GAAG,CAAC,EAAE,EAAEilC,IAAAA,CAAKzlC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9D;AACF,KAAA,CAAA;AAEAq6B,IAAAA,UAAAA,CAAW,IAAMxkC,MAAAA,CAAO6P,OAAO,CAACvL,KAAK,EAAI,EAAA,CAAA,CAAA;AAC3C,CAAE;AAEF;AAEA,MAAMyrC,oBAAuB,GAAA,CAC3B/vC,MACAkuC,EAAAA,YAAAA,EACA7E,MACAwG,aACA1B,EAAAA,UAAAA,GAAAA;IAEA,MAAMH,YAAAA,GAAeN,YAAYQ,YAAcC,EAAAA,UAAAA,CAAAA;;AAG/C,IAAA,MAAM6B,aAAgBhwC,GAAAA,MAAAA,CAAO6P,OAAO,CAACogC,QAAQ,CAC3C;AAAE5G,QAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;QAAGO,EAAI,EAAA;KACtB,EAAA;QAAEP,IAAM3X,EAAAA,QAAAA;QAAUkY,EAAIlY,EAAAA;AAAS,KAAA,CAAA;AAEjC1xB,IAAAA,MAAAA,CAAO6P,OAAO,CAACo6B,YAAY,CAAC,EAAI,EAAA;AAAEZ,QAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;QAAGO,EAAI,EAAA;KAAK,EAAA;QAAEP,IAAM3X,EAAAA,QAAAA;QAAUkY,EAAIlY,EAAAA;AAAS,KAAA,CAAA;;;;IAK1F1xB,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAAC,EAAA,CAAA;IAChCruC,MAAO6P,CAAAA,OAAO,CAAC4/B,SAAS,CAAC;AAAEpG,QAAAA,IAAAA;QAAMO,EAAIiG,EAAAA;AAAc,KAAA,CAAA;IACnD7vC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAAC,IAAA,CAAA;IAChCruC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAACL,YAAAA,CAAAA;AAEhC,IAAA,IAAIE,iBAAiB,MAAQ,EAAA;QAC3B,MAAM,EAAE7E,MAAM6G,OAAO,EAAE,GAAGlwC,MAAO6P,CAAAA,OAAO,CAACy+B,SAAS,EAAA;QAClDtuC,MAAO6P,CAAAA,OAAO,CAAC4/B,SAAS,CAAC;AAAEpG,YAAAA,IAAAA,EAAM6G,OAAU,GAAA,CAAA;AAAGtG,YAAAA,EAAAA,EAAIuE,WAAWpwC;AAAO,SAAA,CAAA;AACtE;;AAGAiC,IAAAA,MAAAA,CAAO6P,OAAO,CAACo6B,YAAY,CACzB+F,aACA,EAAA;AAAE3G,QAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;QAAGO,EAAI,EAAA;KACtB,EAAA;QAAEP,IAAM3X,EAAAA,QAAAA;QAAUkY,EAAIlY,EAAAA;AAAS,KAAA,CAAA;IAGjC1xB,MAAO6P,CAAAA,OAAO,CAACvL,KAAK,EAAA;AACtB,CAAA;AAEA,MAAM6rC,uBAA0B,GAAA,CAC9BnwC,MACAkuC,EAAAA,YAAAA,EACA7E,IACAwG,EAAAA,aAAAA,GAAAA;AAEA,IAAA,MAAM7B,eAAehrC,UAAWkrC,CAAAA,YAAAA,CAAAA;;AAGhC,IAAA,MAAM8B,aAAgBhwC,GAAAA,MAAAA,CAAO6P,OAAO,CAACogC,QAAQ,CAC3C;AAAE5G,QAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;QAAGO,EAAI,EAAA;KACtB,EAAA;QAAEP,IAAM3X,EAAAA,QAAAA;QAAUkY,EAAIlY,EAAAA;AAAS,KAAA,CAAA;AAEjC1xB,IAAAA,MAAAA,CAAO6P,OAAO,CAACo6B,YAAY,CAAC,EAAI,EAAA;AAAEZ,QAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;QAAGO,EAAI,EAAA;KAAK,EAAA;QAAEP,IAAM3X,EAAAA,QAAAA;QAAUkY,EAAIlY,EAAAA;AAAS,KAAA,CAAA;;IAG1F1xB,MAAO6P,CAAAA,OAAO,CAAC4/B,SAAS,CAAC;AAAEpG,QAAAA,IAAAA;QAAMO,EAAIiG,EAAAA;AAAc,KAAA,CAAA;IACnD7vC,MAAO6P,CAAAA,OAAO,CAACw+B,gBAAgB,CAAC,IAAA,CAAA;AAChCruC,IAAAA,MAAAA,CAAO6P,OAAO,CAACw+B,gBAAgB,CAACL,aAAaH,UAAU,CAAA;;AAIvD,IAAA,IAAIK,iBAAiB,MAAQ,EAAA;QAC3B7E,IAAQ,IAAA,CAAA;QAERrpC,MAAO6P,CAAAA,OAAO,CAAC4+B,YAAY,CAAC;AAAEpF,YAAAA,IAAAA;YAAMO,EAAI,EAAA;SAAK,EAAA;AAAEP,YAAAA,IAAAA;YAAMO,EAAI,EAAA;AAAE,SAAA,CAAA;KACtD,MAAA;QACLP,IAAQ,IAAA,CAAA;AAER,QAAA,MAAM,EAAEO,EAAE,EAAE,GAAG5pC,MAAO6P,CAAAA,OAAO,CAACy+B,SAAS,EAAA;AACvC,QAAA,MAAMC,YAAe3E,GAAAA,EAAAA,GAAKoE,YAAaltC,CAAAA,SAAS,CAACsD,GAAG;QACpD,MAAMoqC,cAAAA,GAAiB5E,EAAKoE,GAAAA,YAAAA,CAAaltC,SAAS,CAACsD,GAAG,GAAG4pC,YAAAA,CAAaltC,SAAS,CAACoD,KAAK;QACrFlE,MAAO6P,CAAAA,OAAO,CAAC4+B,YAAY,CAAC;AAAEpF,YAAAA,IAAAA;YAAMO,EAAI4E,EAAAA;SAAkB,EAAA;AAAEnF,YAAAA,IAAAA;YAAMO,EAAI2E,EAAAA;AAAa,SAAA,CAAA;AACrF;;AAGAvuC,IAAAA,MAAAA,CAAO6P,OAAO,CAACo6B,YAAY,CACzB+F,aACA,EAAA;AAAE3G,QAAAA,IAAAA,EAAMA,IAAO,GAAA,CAAA;QAAGO,EAAI,EAAA;KACtB,EAAA;QAAEP,IAAM3X,EAAAA,QAAAA;QAAUkY,EAAIlY,EAAAA;AAAS,KAAA,CAAA;IAEjC1xB,MAAO6P,CAAAA,OAAO,CAACvL,KAAK,EAAA;AACtB,CAAA;AAEO,MAAM8rC,mBAAsB,GAAA,CACjCpwC,MACAkuC,EAAAA,YAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAanuC,GAAAA,MAAAA,CAAO6P,OAAO,CAACu+B,YAAY,EAAA;AAC9C,IAAA,MAAM,EAAE/E,IAAI,EAAE,GAAGrpC,MAAO6P,CAAAA,OAAO,CAACy+B,SAAS,EAAA;AACzC,IAAA,MAAMuB,gBAAgB7vC,MAAO6P,CAAAA,OAAO,CAAC45B,OAAO,CAACJ,MAAMtrC,MAAM;AAEzD,IAAA,IAAIowC,UAAY,EAAA;QACd4B,oBAAqB/vC,CAAAA,MAAAA,EAAQkuC,YAAc7E,EAAAA,IAAAA,EAAMwG,aAAe1B,EAAAA,UAAAA,CAAAA;KAC3D,MAAA;QACLgC,uBAAwBnwC,CAAAA,MAAAA,EAAQkuC,cAAc7E,IAAMwG,EAAAA,aAAAA,CAAAA;AACtD;AACF,CAAE;;ACpVF;AAC2BprC,uBAAO4rC,CAAAA,4BAAAA,CAAgB;eACnC,EAAE,CAAC,EAAE1rC,KAAK,EAAE,GAAKA,KAAMI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AAChD;AAE0BN,uBAA4BqT,CAAAA,uBAAAA,CAAW;AACvD,UAAA,EAAE,CAAC,EAAEnT,KAAK,EAAE,GAAK,CAAC,EAAE,EAAEA,KAAAA,CAAMI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;AAClD;AAEA;AAEqCN,uBAAO4rC,CAAAA,4BAAAA,CAAgB;AAC5C,gBAAA,EAAE,CAAC,EAAE1rC,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAAA,CAAMI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;AACtD;AAEA;AACO,MAAMuoC,YAAAA,GAAe7oC,uBAAOmJ,CAAAA,mBAAAA,CAAO;;;;;;;;;;iBAUzB,EAAE,CAAC,EAAEjJ,KAAK,EAAE,GAAKA,KAAM6Q,CAAAA,WAAW,CAACC,OAAO,CAAC;;;;AAI3C,iBAAA,EAAE,CAAC,EAAE9Q,KAAK,EAAE,GAAK,CAAC,EAAEA,KAAAA,CAAMI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;;YAE3C,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC4oC,UAAU,CAAC;;;;;AAKrD,CAAC;;AC9BD,MAAM6C,aAAgB,GAAA,CAAC,EAAEC,cAAc,EAAsB,GAAA;IAC3D,MAAM,EAAE/qC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACE1I,cAAC+I,CAAAA,gBAAAA,EAAAA;QAAIa,OAAS,EAAA,CAAA;QAAGR,UAAW,EAAA,YAAA;QAAavB,YAAc,EAAA,CAAC,iBAAiB,CAAC;AACxE,QAAA,QAAA,gBAAA7H,cAAC0M,CAAAA,iBAAAA,EAAAA;YAAKe,cAAe,EAAA,UAAA;YAAWmG,UAAW,EAAA,UAAA;AACzC,YAAA,QAAA,gBAAA9K,eAACynC,CAAAA,YAAAA,EAAAA;gBAAa/lC,EAAG,EAAA,QAAA;gBAAS6I,OAASmgC,EAAAA,cAAAA;gBAAgBz/B,OAAQ,EAAA,UAAA;gBAAWoe,IAAK,EAAA,GAAA;;kCACzEnyB,cAACsL,CAAAA,uBAAAA,EAAAA;wBAAW2iB,SAAU,EAAA,YAAA;kCACnBxlB,aAAc,CAAA;4BACb+B,EAAI,EAAA,6CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;kCAEFzK,cAACitB,CAAAA,YAAAA,EAAAA,EAAAA;;;;;AAKX,CAAA;;ACkBA;;AAEC,IACD,MAAMwmB,UAAAA,GAAa,CAAC,EAClBz/B,QAAQ,EACRy6B,SAAS,EACTC,aAAa,EACbgF,gBAAgB,EAChBC,mBAAmB,EACH,GAAA;IAChB,MAAM,EAAElrC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM4lB,aAAata,QAAY06B,IAAAA,aAAAA;IAE/B,MAAMkF,iBAAAA,GAAoB,CACxB/wC,KACAgxC,EAAAA,gBAAAA,GAAAA;QAEA,OAAQhxC,KAAAA;YACN,KAAK,MAAA;AAAQ,gBAAA;AACXquC,oBAAAA,eAAAA,CAAgB2C,gBAAkBhxC,EAAAA,KAAAA,CAAAA;AAClC,oBAAA;AACF;YACA,KAAK,MAAA;YACL,KAAK,OAAA;AAAS,gBAAA;AACZwwC,oBAAAA,mBAAAA,CAAoBQ,gBAAkBhxC,EAAAA,KAAAA,CAAAA;AACtC,oBAAA;AACF;YACA,KAAK,MAAA;YACL,KAAK,QAAA;YACL,KAAK,WAAA;YACL,KAAK,eAAA;AAAiB,gBAAA;AACpBquC,oBAAAA,eAAAA,CAAgB2C,gBAAkBhxC,EAAAA,KAAAA,CAAAA;AAClC,oBAAA;AACF;YACA,KAAK,YAAA;YACL,KAAK,YAAA;AAAc,gBAAA;AACjB8uC,oBAAAA,WAAAA,CAAYkC,gBAAkBhxC,EAAAA,KAAAA,CAAAA;AAC9B,oBAAA;AACF;YACA,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;AAAM,gBAAA;AACTwvC,oBAAAA,YAAAA,CAAawB,gBAAkBhxC,EAAAA,KAAAA,CAAAA;AAC/B,oBAAA;AACF;AAIF;AACF,KAAA;AAEA,IAAA,MAAMmX,kBAA0C,GAAA;AAC9C,QAAA;AACES,YAAAA,OAAAA,gBACE3R,eAACwqC,CAAAA,4BAAAA,EAAAA;;kCACCtzC,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,MAAQnF,EAAAA,SAAAA,CAAAA;AACzC3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,kCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,kCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACgpB,CAAAA,UAAAA,EAAAA,EAAAA;;kCAEHhpB,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,QAAUnF,EAAAA,SAAAA,CAAAA;AAC3C3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,oCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,oCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACkpB,CAAAA,YAAAA,EAAAA,EAAAA;;kCAEHlpB,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,WAAanF,EAAAA,SAAAA,CAAAA;AAC9C3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,uCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,uCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACopB,CAAAA,eAAAA,EAAAA,EAAAA;;kCAEHppB,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,eAAiBnF,EAAAA,SAAAA,CAAAA;AAClD3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,2CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,2CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACspB,CAAAA,mBAAAA,EAAAA,EAAAA;;;;YAIPjO,IACE,gBAAAvS,eAAA,CAAA0V,mBAAA,EAAA;;AACE,kCAAAxe,cAAA,CAAC2a,kBAAKe,SAAS,EAAA,EAAA,CAAA;AACf,kCAAA1b,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBAACP,QAAU,EAAA,IAAMw0B,kBAAkB,MAAQnF,EAAAA,SAAAA,CAAAA;wBAAYz6B,QAAUsa,EAAAA,UAAAA;AACzE,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACgpB,CAAAA,UAAAA,EAAAA;oCAAKyF,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCACtBzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,kCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBAACP,QAAU,EAAA,IAAMw0B,kBAAkB,QAAUnF,EAAAA,SAAAA,CAAAA;wBAAYz6B,QAAUsa,EAAAA,UAAAA;AAC3E,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACkpB,CAAAA,YAAAA,EAAAA;oCAAOuF,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCACxBzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,oCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBACRP,QAAU,EAAA,IAAMw0B,kBAAkB,WAAanF,EAAAA,SAAAA,CAAAA;wBAC/Cz6B,QAAUsa,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACopB,CAAAA,eAAAA,EAAAA;oCAAUqF,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCAC3BzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,uCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBACRP,QAAU,EAAA,IAAMw0B,kBAAkB,eAAiBnF,EAAAA,SAAAA,CAAAA;wBACnDz6B,QAAUsa,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACspB,CAAAA,mBAAAA,EAAAA;oCAAcmF,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCAC/BzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,2CAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;;YAKR5F,GAAK,EAAA;AACP,SAAA;AACA,QAAA;AACE4V,YAAAA,OAAAA,gBACE3R,eAACwqC,CAAAA,4BAAAA,EAAAA;;kCACCtzC,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,YAAcnF,EAAAA,SAAAA,CAAAA;AAC/C3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAAC4X,CAAAA,gBAAAA,EAAAA,EAAAA;;kCAEH5X,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,YAAcnF,EAAAA,SAAAA,CAAAA;AAC/C3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAAC0X,CAAAA,gBAAAA,EAAAA,EAAAA;;;;YAIP2D,IACE,gBAAAvS,eAAA,CAAA0V,mBAAA,EAAA;;AACE,kCAAAxe,cAAA,CAAC2a,kBAAKe,SAAS,EAAA,EAAA,CAAA;AACf,kCAAA1b,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBACRP,QAAU,EAAA,IAAMw0B,kBAAkB,YAAcnF,EAAAA,SAAAA,CAAAA;wBAChDz6B,QAAUsa,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAAC4X,CAAAA,gBAAAA,EAAAA;oCAAW6W,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCAC5BzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,wCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBACRP,QAAU,EAAA,IAAMw0B,kBAAkB,YAAcnF,EAAAA,SAAAA,CAAAA;wBAChDz6B,QAAUsa,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAAC0X,CAAAA,gBAAAA,EAAAA;oCAAW+W,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCAC5BzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,sCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;;YAKR5F,GAAK,EAAA;AACP,SAAA;AACA,QAAA;AACE4V,YAAAA,OAAAA,gBACE3R,eAACwqC,CAAAA,4BAAAA,EAAAA;;kCACCtzC,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,MAAQnF,EAAAA,SAAAA,CAAAA;AACzC3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACupB,CAAAA,UAAAA,EAAAA,EAAAA;;kCAEHvpB,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAA;AACPqgC,4BAAAA,gBAAAA,EAAAA;AACF,yBAAA;AACA5wC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACmN,CAAAA,WAAAA,EAAAA,EAAAA;;kCAEHnN,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,MAAQnF,EAAAA,SAAAA,CAAAA;AACzC3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACkU,CAAAA,UAAAA,EAAAA,EAAAA;;kCAEHlU,cAAC+a,CAAAA,uBAAAA,EAAAA;wBACC/G,QAAUsa,EAAAA,UAAAA;wBACVjb,OAAS,EAAA,IAAMugC,kBAAkB,OAASnF,EAAAA,SAAAA,CAAAA;AAC1C3rC,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;4BACnB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAqE,wBAAAA,IAAAA,EAAMrG,aAAc,CAAA;4BAClB+B,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAzK,cAACgZ,CAAAA,YAAAA,EAAAA,EAAAA;;;;YAIPqC,IACE,gBAAAvS,eAAA,CAAA0V,mBAAA,EAAA;;AACE,kCAAAxe,cAAA,CAAC2a,kBAAKe,SAAS,EAAA,EAAA,CAAA;AACf,kCAAA1b,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBAACP,QAAU,EAAA,IAAMw0B,kBAAkB,MAAQnF,EAAAA,SAAAA,CAAAA;wBAAYz6B,QAAUsa,EAAAA,UAAAA;AACzE,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACupB,CAAAA,UAAAA,EAAAA;oCAAKkF,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCACtBzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,gCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;AACRlB,wBAAAA,SAAAA,gBAAWze,cAACmN,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;wBACZiS,QAAU,EAAA,IAAA;AACRs0B,4BAAAA,gBAAAA,EAAAA;AACF,yBAAA;wBACA1/B,QAAUsa,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACmN,CAAAA,WAAAA,EAAAA;oCAAMshB,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCACvBzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,gCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;AACRlB,wBAAAA,SAAAA,gBAAWze,cAACkU,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;wBACZkL,QAAU,EAAA,IAAMw0B,kBAAkB,MAAQnF,EAAAA,SAAAA,CAAAA;wBAC1Cz6B,QAAUsa,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACkU,CAAAA,UAAAA,EAAAA;oCAAKua,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCACtBzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,gCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAzK,cAAA,CAAC2a,kBAAKgF,IAAI,EAAA;wBAACP,QAAU,EAAA,IAAMw0B,kBAAkB,OAASnF,EAAAA,SAAAA,CAAAA;wBAAYz6B,QAAUsa,EAAAA,UAAAA;AAC1E,wBAAA,QAAA,gBAAAxlB,eAAC4D,CAAAA,iBAAAA,EAAAA;4BAAKlB,GAAI,EAAA,MAAA;4BAAOkI,GAAK,EAAA,CAAA;;8CACpB1T,cAACgZ,CAAAA,YAAAA,EAAAA;oCAAOyV,aAAW,EAAA,IAAA;oCAACvR,IAAK,EAAA;;gCACxBzU,aAAc,CAAA;oCACb+B,EAAI,EAAA,gCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;;YAKR5F,GAAK,EAAA;AACP;AACD,KAAA;AAED,IAAA,qBACEiE,eAAC4D,CAAAA,iBAAAA,EAAAA;QACC9C,OAAS,EAAA,CAAA;QACTR,UAAW,EAAA,YAAA;QACXqE,cAAe,EAAA,eAAA;QACf5F,YAAa,EAAA,mBAAA;QACboB,KAAM,EAAA,MAAA;QACNyK,GAAK,EAAA,CAAA;;AAEL,0BAAA1T,cAAA,CAAC2T,mBAAMV,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAAnK,eAACgB,CAAAA,yBAAAA,EAAAA;oBACCkK,QAAUsa,EAAAA,UAAAA;AACVxa,oBAAAA,WAAAA,EAAarL,aAAc,CAAA;wBACzB+B,EAAI,EAAA,wCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACAF,oBAAAA,YAAAA,EAAY9B,aAAc,CAAA;wBACxB+B,EAAI,EAAA,wCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;;oBAEAV,QAAU,EAAA,CAAClH,KAAU+wC,GAAAA,iBAAAA,CAAkB/wC,KAAO4rC,EAAAA,SAAAA,CAAAA;oBAC9Ctc,IAAK,EAAA,GAAA;;sCAELnyB,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAM,EAAA,IAAA;AAAK4b,4BAAAA,SAAAA,gBAAWze,cAACkM,CAAAA,gBAAAA,EAAAA;gCAAWgR,IAAK,EAAA;;sCACxDzU,aAAc,CAAA;gCACb+B,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFzK,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAM,EAAA,IAAA;AAAK4b,4BAAAA,SAAAA,gBAAWze,cAACoM,CAAAA,gBAAAA,EAAAA;gCAAW8Q,IAAK,EAAA;;sCACxDzU,aAAc,CAAA;gCACb+B,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFzK,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAM,EAAA,IAAA;AAAK4b,4BAAAA,SAAAA,gBAAWze,cAACqM,CAAAA,kBAAAA,EAAAA;gCAAa6Q,IAAK,EAAA;;sCAC1DzU,aAAc,CAAA;gCACb+B,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFzK,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAM,EAAA,IAAA;AAAK4b,4BAAAA,SAAAA,gBAAWze,cAACsM,CAAAA,iBAAAA,EAAAA;gCAAY4Q,IAAK,EAAA;;sCACzDzU,aAAc,CAAA;gCACb+B,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFzK,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAM,EAAA,IAAA;AAAK4b,4BAAAA,SAAAA,gBAAWze,cAACuM,CAAAA,iBAAAA,EAAAA;gCAAY2Q,IAAK,EAAA;;sCACzDzU,aAAc,CAAA;gCACb+B,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFzK,cAAC2K,CAAAA,+BAAAA,EAAAA;4BAAmB9H,KAAM,EAAA,IAAA;AAAK4b,4BAAAA,SAAAA,gBAAWze,cAACwM,CAAAA,gBAAAA,EAAAA;gCAAW0Q,IAAK,EAAA;;sCACxDzU,aAAc,CAAA;gCACb+B,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;0BAIN3B,eAAC4D,CAAAA,iBAAAA,EAAAA;gBAAKzD,KAAM,EAAA,MAAA;gBAAOwE,cAAe,EAAA,eAAA;gBAAgB2S,QAAS,EAAA,QAAA;;kCACzDpgB,cAAC0M,CAAAA,iBAAAA,EAAAA;wBAAKgH,GAAK,EAAA,CAAA;wBAAG0M,QAAS,EAAA,QAAA;wBAASnX,KAAM,EAAA,MAAA;AACpC,wBAAA,QAAA,gBAAAjJ,cAAC+Z,CAAAA,qBAAAA,EAAAA;4BACCE,kBAAmB,EAAA,UAAA;4BACnBD,kBAAoBA,EAAAA;;;AAIvB25B,oBAAAA,mBAAAA,kBACC3zC,cAAC6Q,CAAAA,mBAAAA,EAAAA;wBAAOwC,OAASsgC,EAAAA,mBAAAA;wBAAqB5/B,OAAQ,EAAA,UAAA;wBAAWmH,QAAS,EAAA,OAAA;AAC/DwzB,wBAAAA,QAAAA,EAAAA,aAAAA,GACGjmC,aAAc,CAAA;4BACZ+B,EAAI,EAAA,6CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA,GACAhC,aAAc,CAAA;4BACZ+B,EAAI,EAAA,4CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAMhB,CAAA;;AC1cA,MAAMqpC,OAAAA,iBAAUl0C,iBAAMoR,UAAU,CAC9B,CAAC,EAAEoc,IAAI,EAAEpZ,QAAQ,EAAElR,KAAK,EAAEgM,IAAI,EAAEgF,WAAW,EAAEqZ,QAAQ,EAAEE,WAAW,EAAE,EAAEpc,YAAAA,GAAAA;AACpE,IAAA,MAAMsc,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;IACvB,MAAM8/B,WAAAA,GAAchvC,gBAAMoS,CAAAA,MAAM,CAAsB,IAAA,CAAA;IACtD,MAAMy8B,SAAAA,GAAY7uC,gBAAMoS,CAAAA,MAAM,CAC5B,IAAA,CAAA;AAEF,IAAA,MAAM,CAAC08B,aAAeqF,EAAAA,gBAAAA,CAAiB,GAAGn0C,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACzD,IAAA,MAAM,CAACm0C,eAAiBC,EAAAA,kBAAAA,CAAmB,GAAGr0C,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC7D,IAAA,MAAM,CAAC8uC,YAAcuF,EAAAA,eAAAA,CAAgB,GAAGt0C,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACvD,IAAA,MAAM6B,aAAaR,wBAAa,CAAA,aAAA,EAAe,CAACC,KAAAA,GAAUA,MAAMO,UAAU,CAAA;IAE1E,MAAMsM,kBAAAA,GAAqBtM,UAAU,CAAC,eAAgB,CAAA;AAEtD,IAAA,MAAMyyC,oBAAuB,GAAA,IAAMF,kBAAmB,CAAA,CAACz6B,OAAS,CAACA,IAAAA,CAAAA;AACjE,IAAA,MAAM46B,uBAA0B,GAAA,IAAML,gBAAiB,CAAA,CAACv6B,OAAS,CAACA,IAAAA,CAAAA;AAClE,IAAA,MAAM8S,kBAAqB,GAAA,IAAA;QACzBynB,gBAAiB,CAAA,KAAA,CAAA;QACjBG,eAAgB,CAAA,CAAC16B,OAAS,CAACA,IAAAA,CAAAA;AAC7B,KAAA;AAEA,IAAA,MAAM9K,qBAAqB,CAACkkC,KAAAA,GAAAA;AAC1B,QAAA,MAAMyB,iBAAiBzB,KAAMloC,CAAAA,GAAG,CAAC,CAAC4pC,KAAO;AACvC1mC,gBAAAA,GAAAA,EAAK0mC,CAAEjnC,CAAAA,eAAe,IAAIinC,CAAAA,CAAExlC,IAAI;gBAChC1B,GAAK2B,EAAAA,mCAAAA,CAA4BulC,EAAElnC,GAAG,CAAA;AACtC2lC,gBAAAA,IAAAA,EAAMuB,EAAEvB;aACV,CAAA,CAAA;AAEAJ,QAAAA,UAAAA,CAAWlE,SAAW4F,EAAAA,cAAAA,CAAAA;QACtBJ,kBAAmB,CAAA,KAAA,CAAA;AACrB,KAAA;IAEA,qBACEnrC,eAAA,CAAC6K,mBAAMV,IAAI,EAAA;QAACnE,IAAMA,EAAAA,IAAAA;QAAMse,IAAMA,EAAAA,IAAAA;AAAM5a,QAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;QAAE2a,QAAUA,EAAAA,QAAAA;;0BAChErkB,eAAC4D,CAAAA,iBAAAA,EAAAA;gBAAK+G,SAAU,EAAA,QAAA;gBAASG,UAAW,EAAA,SAAA;gBAAUF,GAAK,EAAA,CAAA;;AACjD,kCAAA1T,cAAA,CAAC2T,mBAAME,KAAK,EAAA;wBAAC4Z,MAAQJ,EAAAA,WAAAA;AAAcvqB,wBAAAA,QAAAA,EAAAA;;kCACnCgG,eAAC+d,CAAAA,YAAAA,EAAAA;wBACC8nB,YAAcA,EAAAA,YAAAA;AACdn8B,wBAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;AAClB69B,wBAAAA,cAAAA,EAAgB9iB,MAAM1qB,KAAK;wBAC3BikB,UAAYwF,EAAAA,kBAAAA;;0CAEZtsB,cAACyzC,CAAAA,UAAAA,EAAAA;gCACC9E,YAAcA,EAAAA,YAAAA;gCACdF,SAAWA,EAAAA,SAAAA;gCACXC,aAAeA,EAAAA,aAAAA;gCACfgF,gBAAkBS,EAAAA,oBAAAA;AAClBR,gCAAAA,mBAAAA,EAAqBhF,eAAe1mB,SAAYmsB,GAAAA,uBAAAA;gCAChDpgC,QAAUA,EAAAA;;0CAGZhU,cAACqD,CAAAA,MAAAA,EAAAA;gCACC2Q,QAAUA,EAAAA,QAAAA;gCACV26B,YAAcA,EAAAA,YAAAA;gCACdF,SAAWA,EAAAA,SAAAA;AACXj8B,gCAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;gCAClBk8B,aAAeA,EAAAA,aAAAA;gCACf5/B,IAAMA,EAAAA,IAAAA;AACN/E,gCAAAA,QAAAA,EAAUwjB,MAAMxjB,QAAQ;gCACxB+J,WAAaA,EAAAA,WAAAA;gCACb86B,WAAaA,EAAAA,WAAAA;AACb/rC,gCAAAA,KAAAA,EAAO0qB,MAAM1qB,KAAK;gCAClBsQ,GAAKlC,EAAAA;;AAGN,4BAAA,CAAC09B,8BAAgB3uC,cAACuzC,CAAAA,aAAAA,EAAAA;gCAAcC,cAAgBlnB,EAAAA;;;;AAEnD,kCAAAtsB,cAAA,CAAC2T,mBAAM+Z,IAAI,EAAA,EAAA,CAAA;AACX,kCAAA1tB,cAAA,CAAC2T,mBAAMga,KAAK,EAAA,EAAA;;;AAEbqmB,YAAAA,eAAAA;0BAECh0C,cAACgO,CAAAA,kBAAAA,EAAAA;gBAAmBiB,OAASklC,EAAAA,oBAAAA;gBAAsBjlC,cAAgBR,EAAAA;;;;AAI3E,CAAA,CAAA;AAGI6lC,MAAAA,eAAAA,iBAAkB30C,gBAAMiuB,CAAAA,IAAI,CAACimB,OAAAA;;ACrEnC,MAAMhgB,aAAAA,GAAgB,CAAC,EAAE0gB,OAAO,EAAEpnB,IAAMqnB,EAAAA,YAAY,EAAE,GAAGtsC,KAA2B,EAAA,GAAA;AAClF,IAAA,MAAM,EAAEqC,EAAAA,EAAIkqC,MAAM,EAAE,GAAG3W,YAAAA,EAAAA;AACvB,IAAA,MAAMrN,eAAerxB,kBAAmB,CAAA,eAAA,EAAiB,CAAC8B,KAAAA,GAAUA,MAAMlB,IAAI,CAAA;AAC9E,IAAA,MAAM+3B,mBAAmB34B,kBAAmB,CAAA,eAAA,EAAiB,CAAC8B,KAAAA,GAAUA,MAAMrB,QAAQ,CAAA;IACtF,MAAM60C,cAAAA,GAAiB/jB,uBAAkBF,CAAAA,YAAAA,CAAaG,KAAK,CAAA;AAE3D,IAAA,MAAM/wB,WAAWk4B,gBAAkBl4B,EAAAA,QAAAA;IACnC,MAAM83B,cAAAA,GAAiBlH,aAAakH,cAAc;AAElD,IAAA,MAAMrD,kBAAkBD,cAAe,CAAA,iBAAA,EAAmB,CAACnzB,KAAAA,GAAUA,MAAMozB,eAAe,CAAA;AAE1F,IAAA,MAAMqgB,iBAAiBnkB,mBAAQ,CAAA,eAAA,EAAiB,CAACtvB,KAAAA,GAAUA,MAAM6S,QAAQ,CAAA;AACzE,IAAA,MAAM6gC,kBAAkBC,qBAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKF,eAAe,CAAA;AACvF,IAAA,MAAMG,gBAAgBF,qBAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKC,aAAa,CAAA;AACnF,IAAA,MAAMC,kBAAkBH,qBAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKE,eAAe,CAAA;AACvF,IAAA,MAAMC,gBAAgBJ,qBAAgB,CAAA,eAAA,EAAiB,CAACC,IAAAA,GAASA,KAAKG,aAAa,CAAA;AAEnF,IAAA,IAAIC,SAAYT,GAAAA,MAAAA;AAChB,IAAA,IAAI9c,mBAAmBT,kBAAc,EAAA;AACnCge,QAAAA,SAAAA,GAAYr1C,QAAUo6B,EAAAA,UAAAA;AACxB;IAEA,MAAMkb,cAAAA,GAAiBD,YAAYF,eAAkBJ,GAAAA,eAAAA;IACrD,MAAMQ,cAAAA,GAAiBF,YAAYH,aAAgBH,GAAAA,eAAAA;AAEnD;;;MAIA,MAAMS,mBAAmBJ,aAAc/sC,CAAAA,KAAAA,CAAM2G,IAAI,EAAEumC,cAAAA,EAAgBltC,MAAMvE,IAAI,CAAA;AAC7E,IAAA,MAAM2xC,mBAAmBL,aAAc/sC,CAAAA,KAAAA,CAAM2G,IAAI,EAAEsmC,cAAAA,EAAgBjtC,MAAMvE,IAAI,CAAA;AAE7E,IAAA,MAAM4xC,SAASt0C,wBAAa,CAAA,eAAA,EAAiB,CAACu0C,GAAAA,GAAQA,IAAID,MAAM,CAAA;IAChE,MAAM,EAAEl1C,kBAAkB,EAAE,GAAGF,kBAC7Bs1C,+BAAgCvtC,CAAAA,KAAAA,CAAMssB,SAAS,CAAI,GAAA;QAACtsB,KAAMssB,CAAAA,SAAS,CAACpyB;KAAY,GAAG4lB,SAAAA,CAAAA;AAGrF,IAAA,MAAMmF,IAAOuoB,GAAAA,YAAAA,CAAalB,YAActsC,EAAAA,KAAAA,CAAMssB,SAAS,CAAA;AAEvD,IAAA,MAAM,EACJ9D,IAAM,EAAA,EAAEjvB,YAAYk0C,sBAAsB,EAAE,EAC7C,GAAGC,kBAAAA,EAAAA;AAEJ,IAAA,MAAMn0C,UACJlB,GAAAA,MAAAA,CAAOmE,IAAI,CAACixC,sBAAwB50C,CAAAA,CAAAA,MAAM,KAAK,CAAA,GAC3C40C,sBACAjB,GAAAA,cAAAA,CAAehkB,IAAI,CAACjvB,UAAU;;IAGpC,MAAM6rB,KAAAA,GAAQC,oBAASrlB,CAAAA,KAAAA,CAAM2G,IAAI,CAAA;AAEjC,IAAA,IAAI,CAAC0lC,OAAS,EAAA;QACZ,OAAO,IAAA;AACT;AAEA;;AAEC,MACD,IAAI,CAACc,gBAAoB,IAAA,CAAC/gB,eAAiB,EAAA;AACzC,QAAA,qBAAOv0B,cAAC22B,CAAAA,eAAAA,EAAAA;YAAgBvJ,IAAMA,EAAAA,IAAAA;AAAO,YAAA,GAAGjlB;;AAC1C;IAEA,MAAM2tC,eAAAA,GACJ,CAAEP,gBAAAA,IAAoB,CAAChhB,eAAoBpsB,IAAAA,KAAAA,CAAM6L,QAAQ,IAAI4gC,cAAAA;AAE/D;;;AAGC,MACD,IAAIc,+BAAAA,CAAgCvtC,KAAMssB,CAAAA,SAAS,CAAG,EAAA;AACpD,QAAA,MAAMshB,cAAcz1C,kBAAkB,CAAC6H,MAAMssB,SAAS,CAACpyB,WAAW,CAAC;AAEnE,QAAA,IAAI0zC,WAAa,EAAA;;AAEf,YAAA,qBAAO/1C,cAAC+1C,CAAAA,WAAAA,EAAAA;AAAa,gBAAA,GAAG5tC,KAAK;AAAG,gBAAA,GAAGolB,KAAK;gBAAEH,IAAMA,EAAAA,IAAAA;gBAAMpZ,QAAU8hC,EAAAA;;AAClE;AAEA,QAAA,qBACE91C,cAACg2C,CAAAA,yBAAAA,EAAAA;AACE,YAAA,GAAG7tC,KAAK;YACTilB,IAAMA,EAAAA,IAAAA;;YAENxpB,IAAMuE,EAAAA,KAAAA,CAAMssB,SAAS,CAACpyB,WAAW;YACjC2R,QAAU8hC,EAAAA;;AAGhB;AAEA;;AAEC,MACD,MAAMG,eAAAA,GAAkBz1C,MAAOmE,CAAAA,IAAI,CAAC6wC,MAAAA,CAAAA;IACpC,IAAI,CAACE,+BAAgCvtC,CAAAA,KAAAA,CAAMssB,SAAS,CAAA,IAAKwhB,gBAAgB9wC,QAAQ,CAACgD,KAAMvE,CAAAA,IAAI,CAAG,EAAA;AAC7F,QAAA,MAAMmyC,WAAcP,GAAAA,MAAM,CAACrtC,KAAAA,CAAMvE,IAAI,CAAC;;AAEtC,QAAA,qBAAO5D,cAAC+1C,CAAAA,WAAAA,EAAAA;AAAa,YAAA,GAAG5tC,KAAK;YAAEilB,IAAMA,EAAAA,IAAAA;YAAMpZ,QAAU8hC,EAAAA;;AACvD;AAEA;;;MAIA,OAAQ3tC,MAAMvE,IAAI;QAChB,KAAK,QAAA;AACH,YAAA,qBAAO5D,cAACktB,CAAAA,mBAAAA,EAAAA;AAAa,gBAAA,GAAG/kB,KAAK;gBAAEilB,IAAMA,EAAAA,IAAAA;AAAMxpB,gBAAAA,IAAAA,EAAMuE,MAAMvE,IAAI;gBAAEoQ,QAAU8hC,EAAAA;;QACzE,KAAK,WAAA;AACH,YAAA,qBACE91C,cAACk2C,CAAAA,sBAAAA,EAAAA;AACE,gBAAA,GAAG/tC,KAAK;gBACTilB,IAAMA,EAAAA,IAAAA;gBACNgG,MAAQ1xB,EAAAA,UAAU,CAACyG,KAAMssB,CAAAA,SAAS,CAACja,SAAS,CAAC,CAAC4Y,MAAM;gBACpDpf,QAAU8hC,EAAAA,eAAAA;AAET,gBAAA,QAAA,EAAA,CAACK,2BAAen2C,cAAC8zB,CAAAA,aAAAA,EAAAA;AAAe,wBAAA,GAAGqiB;;;QAG1C,KAAK,aAAA;AACH,YAAA,qBAAOn2C,cAACw0B,CAAAA,WAAAA,EAAAA;AAAa,gBAAA,GAAGrsB,KAAK;gBAAEilB,IAAMA,EAAAA,IAAAA;gBAAMpZ,QAAU8hC,EAAAA;;QACvD,KAAK,UAAA;AACH,YAAA,IAAItO,OAAO4O,MAAM,CAACC,MAAM,CAACC,SAAS,CAAC,2BAA8B,CAAA,EAAA;AAC/D,gBAAA,qBAAOt2C,cAACu2C,CAAAA,8BAAAA,EAAAA;AAAwB,oBAAA,GAAGpuC,KAAK;oBAAEilB,IAAMA,EAAAA,IAAAA;oBAAMpZ,QAAU8hC,EAAAA;;AAClE;AACA,YAAA,qBAAO91C,cAACq9B,CAAAA,sBAAAA,EAAAA;AAAgB,gBAAA,GAAGl1B,KAAK;gBAAEilB,IAAMA,EAAAA,IAAAA;gBAAMpZ,QAAU8hC,EAAAA;;QAC1D,KAAK,UAAA;AACH,YAAA,qBAAO91C,cAAC8zC,CAAAA,eAAAA,EAAAA;AAAS,gBAAA,GAAG3rC,KAAK;gBAAEilB,IAAMA,EAAAA,IAAAA;AAAMxpB,gBAAAA,IAAAA,EAAMuE,MAAMvE,IAAI;gBAAEoQ,QAAU8hC,EAAAA;;QACrE,KAAK,KAAA;AACH,YAAA,qBAAO91C,cAAC6lC,CAAAA,gBAAAA,EAAAA;AAAU,gBAAA,GAAG19B,KAAK;gBAAEilB,IAAMA,EAAAA,IAAAA;AAAMxpB,gBAAAA,IAAAA,EAAMuE,MAAMvE,IAAI;gBAAEoQ,QAAU8hC,EAAAA;;AACtE;;AAEC,QACD,KAAK,aAAA;AACH,YAAA,qBACE91C,cAACg2C,CAAAA,yBAAAA,EAAAA;AACE,gBAAA,GAAG7tC,KAAK;gBACTilB,IAAMA,EAAAA,IAAAA;gBACN4L,OAAS7wB,EAAAA,KAAAA,CAAMssB,SAAS,CAAC+hB,IAAI,CAAC9rC,GAAG,CAAC,CAAC7H,KAAAA,IAAW;AAAEA,wBAAAA;qBAAM,CAAA,CAAA;;AAEtDe,gBAAAA,IAAAA,EAAMuE,KAAM9F,CAAAA,WAAW,GAAG,cAAA,GAAiB8F,MAAMvE,IAAI;gBACrDoQ,QAAU8hC,EAAAA;;AAGhB,QAAA;;YAEE,MAAM,EAAE3X,QAAQC,OAAO,EAAEpN,WAAWylB,UAAU,EAAE,GAAGC,SAAAA,EAAW,GAAGvuC,KAAAA;AACjE,YAAA,qBACEnI,cAACg2C,CAAAA,yBAAAA,EAAAA;AACE,gBAAA,GAAGU,SAAS;gBACbtpB,IAAMA,EAAAA,IAAAA;;AAENxpB,gBAAAA,IAAAA,EAAMuE,KAAM9F,CAAAA,WAAW,GAAG,cAAA,GAAiB8F,MAAMvE,IAAI;gBACrDoQ,QAAU8hC,EAAAA;;AAGlB;AACF,CAAA;AAEA,MAAMJ,+BAAAA,GAAkC,CACtCjhB,SAEA,GAAA,aAAA,IAAiBA,aAAa,OAAOA,SAAAA,CAAUpyB,WAAW,KAAK,QAAA;AAEjE,MAAMszC,YAAe,GAAA,CACnBvoB,IAAwBnF,GAAAA,SAAS,EACjCwM,SAAAA,GAAAA;IAEA,MAAM,EAAEhsB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM,EAAEiuC,OAAO,EAAEC,OAAO,EAAE,GAAGC,SAAUpiB,CAAAA,SAAAA,CAAAA;IAEvC,IAAI,CAACkiB,OAAW,IAAA,CAACC,OAAS,EAAA;QACxB,OAAOxpB,IAAAA;AACT;AAEA,IAAA,MAAM0pB,QAAQ,CAAC;AAAC,QAAA,YAAA;AAAc,QAAA,SAAA;AAAW,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAY,KAAA,CAAC3xC,QAAQ,CACrFsvB,SAAU7wB,CAAAA,IAAI,IAEZ6E,aACE,CAAA;QACE+B,EAAI,EAAA,gDAAA;QACJC,cAAgB,EAAA;KAElB,EAAA;AACEssC,QAAAA,QAAAA,EAAUt9B,IAAKC,CAAAA,GAAG,CAACk9B,OAAAA,IAAW,GAAGD,OAAW,IAAA,CAAA;KAGhD,CAAA,GAAA,IAAA;AAEJ,IAAA,MAAMK,YAAe,GAAA,OAAOJ,OAAY,KAAA,QAAA,IAAY,OAAOD,OAAY,KAAA,QAAA;AAEvE,IAAA,OAAOluC,aACL,CAAA;QACE+B,EAAI,EAAA,sCAAA;QACJC,cACE,EAAA;KAEJ,EAAA;QACEmqB,GAAKgiB,EAAAA,OAAAA;QACLl9B,GAAKi9B,EAAAA,OAAAA;QACL3S,WAAa5W,EAAAA,IAAAA;QACbtnB,IAAMgxC,EAAAA,KAAAA;AACNG,QAAAA,OAAAA,EAASD,eACLvuC,aAAc,CAAA;YACZ+B,EAAI,EAAA,+CAAA;YACJC,cAAgB,EAAA;SAElB,CAAA,GAAA,IAAA;AACJysC,QAAAA,EAAAA,gBAAIl3C,cAACk3C,CAAAA,IAAAA,EAAAA,EAAAA;AACP,KAAA,CAAA;AAEJ;AAEA,MAAML,YAAY,CAACpiB,SAAAA,GAAAA;IACjB,IAAI,KAAA,IAASA,SAAa,IAAA,KAAA,IAASA,SAAW,EAAA;QAC5C,OAAO;YACLkiB,OAAS,EAAA,CAACQ,MAAO3I,CAAAA,KAAK,CAAC2I,MAAAA,CAAO1iB,SAAU/a,CAAAA,GAAG,CAAKy9B,CAAAA,GAAAA,MAAAA,CAAO1iB,SAAU/a,CAAAA,GAAG,CAAIuO,GAAAA,SAAAA;YACxE2uB,OAAS,EAAA,CAACO,MAAO3I,CAAAA,KAAK,CAAC2I,MAAAA,CAAO1iB,SAAUG,CAAAA,GAAG,CAAKuiB,CAAAA,GAAAA,MAAAA,CAAO1iB,SAAUG,CAAAA,GAAG,CAAI3M,GAAAA;AAC1E,SAAA;AACF,KAAA,MAAO,IAAI,WAAA,IAAewM,SAAa,IAAA,WAAA,IAAeA,SAAW,EAAA;QAC/D,OAAO;AAAEkiB,YAAAA,OAAAA,EAASliB,UAAU2iB,SAAS;AAAER,YAAAA,OAAAA,EAASniB,UAAU4iB;AAAU,SAAA;KAC/D,MAAA;QACL,OAAO;YAAEV,OAAS1uB,EAAAA,SAAAA;YAAW2uB,OAAS3uB,EAAAA;AAAU,SAAA;AAClD;AACF,CAAA;AAEA,MAAMqvB,qBAAAA,iBAAwB13C,gBAAMiuB,CAAAA,IAAI,CAACiG,aAAAA,CAAAA;;ACtPlC,MAAMvE,gCAAmC,GAAA;IAC9CC,EAAI,EAAA;AACN,CAAE;AAEK,MAAMkE,kBAAqBhsB,GAAAA,uBAAAA,CAAOwnB,iBAAKjc,CAAAA,IAAI,CAAC;;AAEnD,CAAC;AAED;AACA;AACO,MAAM4gB;AAEX0jB,OAAQ/M,CAAAA,GAAG,CAACgN,QAAQ,KAAK,SACrB9vC,uBAAOwnB,CAAAA,iBAAAA,CAAKvP,IAAI,CAAkB;;+BAET,EAAE4P,gCAAAA,CAAiCC,EAAE,CAAC;AAC3D,UAAA,EAAE,CAAC,EAAE+D,GAAG,EAAE,GAAKA,GAAAA,IAAO,CAAC,kBAAkB,EAAEA,GAAAA,CAAI,CAAC,CAAC;;AAErD,MAAA,CAAC,GACD7rB,uBAAAA,CAAOwnB,iBAAKvP,CAAAA,IAAI,CAAkB;;AAElC,MAAA,CAAC;AAOP,MAAM8Z,aAAa,CAAC,EAAErG,MAAM,EAAEsG,aAAAA,GAAgB,IAAI,EAAmB,GAAA;IACnE,MAAM,EAAEjxB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMgoB,eAAerxB,kBAAmB,CAAA,YAAA,EAAc,CAAC8B,KAAAA,GAAUA,MAAMlB,IAAI,CAAA;IAC3E,MAAM4wB,KAAAA,GAAQH,aAAaG,KAAK;AAEhC,IAAA,qBACE7wB,cAAC0M,CAAAA,iBAAAA,EAAAA;QAAK+G,SAAU,EAAA,QAAA;QAASG,UAAW,EAAA,SAAA;QAAUF,GAAK,EAAA,CAAA;kBAChD0f,MAAO1oB,CAAAA,GAAG,CAAC,CAAC+sC,KAAO11C,EAAAA,KAAAA,GAAAA;AAClB,YAAA,IAAI01C,KAAM9qB,CAAAA,IAAI,CAAC,CAAC0G,GAAQA,GAAAA,GAAAA,CAAI1G,IAAI,CAAC,CAACY,KAAAA,GAAUA,KAAM3pB,CAAAA,IAAI,KAAK,aAAiB,CAAA,CAAA,EAAA;gBAC1E,MAAM,CAACyvB,IAAI,GAAGokB,KAAAA;gBACd,MAAM,CAAClqB,MAAM,GAAG8F,GAAAA;AAEhB,gBAAA,MAAMO,wBAA2B,GAAA;AAC/B,oBAAA,GAAGrG,KAAK;AACRzqB,oBAAAA,KAAAA,EAAO2F,aAAc,CAAA;wBACnB+B,EAAI,EAAA,CAAC,8BAA8B,EAAEqmB,KAAAA,CAAM,CAAC,EAAEtD,KAAAA,CAAMze,IAAI,CAAC,CAAC;AAC1DrE,wBAAAA,cAAAA,EAAgB8iB,MAAMzqB;AACxB,qBAAA;AACF,iBAAA;gBAEA,qBACE9C,cAAA,CAACkvB,kBAAKjc,IAAI,EAAA;oBAAkBS,GAAK,EAAA,CAAA;4CAC/B1T,cAAA,CAACkvB,kBAAKvP,IAAI,EAAA;wBAAC4T,GAAK,EAAA,EAAA;wBAAIC,CAAG,EAAA,EAAA;wBAAIC,EAAI,EAAA,EAAA;wBAAIhgB,SAAU,EAAA,QAAA;wBAASG,UAAW,EAAA,SAAA;AAC/D,wBAAA,QAAA,gBAAA5T,cAAC8zB,CAAAA,qBAAAA,EAAAA;AAAe,4BAAA,GAAGF;;;AAFPrG,iBAAAA,EAAAA,KAAAA,CAAMze,IAAI,CAAA;AAM9B;AAEA,YAAA,qBACE9O,cAAC+I,CAAAA,gBAAAA,EAAAA;AAEE,gBAAA,GAAI2wB,aAAiB,IAAA;oBACpB9vB,OAAS,EAAA,CAAA;oBACTP,WAAa,EAAA,YAAA;oBACbD,UAAY,EAAA,UAAA;oBACZS,SAAW,EAAA,IAAA;oBACXL,MAAQ,EAAA;iBACT;AAED,gBAAA,QAAA,gBAAAxJ,cAAC0M,CAAAA,iBAAAA,EAAAA;oBAAK+G,SAAU,EAAA,QAAA;oBAASG,UAAW,EAAA,SAAA;oBAAUF,GAAK,EAAA,CAAA;AAChD+jC,oBAAAA,QAAAA,EAAAA,KAAAA,CAAM/sC,GAAG,CAAC,CAAC2oB,GAAAA,EAAKqkB,6BACf13C,cAAC0zB,CAAAA,kBAAAA,EAAAA;4BAAsChgB,GAAK,EAAA,CAAA;AACzC2f,4BAAAA,QAAAA,EAAAA,GAAAA,CAAI3oB,GAAG,CAAC,CAAC,EAAEynB,IAAI,EAAE,GAAG5E,KAAO,EAAA,GAAA;AAC1B,gCAAA,MAAMqG,wBAA2B,GAAA;AAC/B,oCAAA,GAAGrG,KAAK;AACRzqB,oCAAAA,KAAAA,EAAO2F,aAAc,CAAA;wCACnB+B,EAAI,EAAA,CAAC,8BAA8B,EAAEqmB,KAAAA,CAAM,CAAC,EAAEtD,KAAAA,CAAMze,IAAI,CAAC,CAAC;AAC1DrE,wCAAAA,cAAAA,EAAgB8iB,MAAMzqB;AACxB,qCAAA;AACF,iCAAA;AACA,gCAAA,qBACE9C,cAAC6zB,CAAAA,kBAAAA,EAAAA;oCACCN,GAAKpB,EAAAA,IAAAA;oCAELqB,CAAG,EAAA,EAAA;oCACHC,EAAI,EAAA,EAAA;oCACJhgB,SAAU,EAAA,QAAA;oCACVG,UAAW,EAAA,SAAA;AAEX,oCAAA,QAAA,gBAAA5T,cAAC8zB,CAAAA,qBAAAA,EAAAA;AAAe,wCAAA,GAAGF;;AANdrG,iCAAAA,EAAAA,KAAAA,CAAMze,IAAI,CAAA;AASrB,6BAAA;AArBuB4oC,yBAAAA,EAAAA,YAAAA,CAAAA;;AAXxB31C,aAAAA,EAAAA,KAAAA,CAAAA;AAsCX,SAAA;;AAGN;;AClGA,MAAM41C,sBAAAA,GAAyB,CAAC,EAC9BljB,SAAS,EACT3lB,IAAI,EACJtP,QAAQ,EACR4zB,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAE3qB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAE7F,KAAK,EAAE,GAAG2qB,oBAAS1e,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAM9C,QAAQmiB,YAAa,CAAA,wBAAA,EAA0B,CAAChtB,KAAAA,GAAUA,MAAM6K,KAAK,CAAA;AAC3E,IAAA,MAAM4rC,WAAW5rC,KAAQ,GAAA,CAAA;AAEzB,IAAA,qBACEhM,cAACkuB,CAAAA,iBAAAA,EAAAA;AAAkB1jB,QAAAA,EAAAA,EAAI3H,KAAO2H,EAAAA,EAAAA;AAAI5J,QAAAA,GAAAA,EAAK6zB,UAAUja,SAAS;AAAExO,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGpI,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAA5D,cAAC+I,CAAAA,gBAAAA,EAAAA;YACCK,UAAY,EAAA,YAAA;YACZyR,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdsL,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfxc,SAAW+tC,EAAAA,QAAAA;AACXvuC,YAAAA,WAAAA,EAAauuC,WAAW,YAAe3vB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAjoB,cAAC0M,CAAAA,iBAAAA,EAAAA;gBAAK+G,SAAU,EAAA,QAAA;gBAASG,UAAW,EAAA,SAAA;gBAAUF,GAAK,EAAA,CAAA;0BAChD0f,MAAO1oB,CAAAA,GAAG,CAAC,CAAC2oB,GAAKtxB,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,qBACE/B,cAAC0zB,CAAAA,kBAAAA,EAAAA;wBAAmBhgB,GAAK,EAAA,CAAA;AACtB2f,wBAAAA,QAAAA,EAAAA,GAAAA,CAAI3oB,GAAG,CAAC,CAAC,EAAEynB,IAAI,EAAE,GAAG5E,KAAO,EAAA,GAAA;AAC1B;;;;;sBAMA,MAAMsqB,iBAAoB,GAAA,CAAC,EAAE/oC,IAAAA,CAAK,CAAC,EAAEye,KAAAA,CAAMze,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMgpC,kBAAkBrvC,aAAc,CAAA;gCACpC+B,EAAI,EAAA,CAAC,2BAA2B,EAAEiqB,SAAUja,CAAAA,SAAS,CAAC,CAAC,EAAE+S,KAAAA,CAAMze,IAAI,CAAC,CAAC;AACrErE,gCAAAA,cAAAA,EAAgB8iB,MAAMzqB;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACE9C,cAAC6zB,CAAAA,kBAAAA,EAAAA;gCACCN,GAAKpB,EAAAA,IAAAA;gCAELqB,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJhgB,SAAU,EAAA,QAAA;gCACVG,UAAW,EAAA,SAAA;0CAEVpU,QAAS,CAAA;AAAE,oCAAA,GAAG+tB,KAAK;oCAAEzqB,KAAOg1C,EAAAA,eAAAA;oCAAiBhpC,IAAM+oC,EAAAA;AAAkB,iCAAA;AANjEA,6BAAAA,EAAAA,iBAAAA,CAAAA;AASX,yBAAA;AA3B+B91C,qBAAAA,EAAAA,KAAAA,CAAAA;AA8BrC,iBAAA;;;;AAKV,CAAA;;AC9BA,MAAMg2C,mBAAsB,GAAA,CAAC,EAC3BtjB,SAAS,EACTzgB,QAAQ,EACRlF,IAAI,EACJkiB,SAAS,EACTxxB,QAAQ,EACR4zB,MAAM,EACmB,GAAA;IACzB,MAAM,EAAEiC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAC/B,MAAM,EAAE7sB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAE02B,MAAAA,EAAQ4Y,YAAY,EAAE,GAAGC,0BAAAA,EAAAA;AACjC,IAAA,MAAM7Y,SAASx/B,gBAAMmxB,CAAAA,OAAO,CAAC,IAAM,IAAImnB,gBAAgBF,YAAe,CAAA,EAAA;AAACA,QAAAA;AAAa,KAAA,CAAA;IACpF,MAAMt2C,UAAAA,GAAarC,mBACjB,qBACA,EAAA,CAAC8B,QAAUA,KAAMrB,CAAAA,QAAQ,CAAC4B,UAAU,CAAA;IAGtC,MAAM,EACJmB,QAAQ,EAAE,EACV2P,KAAK,EACLsf,QAAQ,EACT,GAAGtE,oBAAuE1e,CAAAA,IAAAA,CAAAA;AAC3E,IAAA,MAAMkmB,cAAcvE,mBAAQ,CAAA,qBAAA,EAAuB,CAACtvB,KAAAA,GAAUA,MAAM6zB,WAAW,CAAA;AAC/E,IAAA,MAAME,eAAezE,mBAAQ,CAAA,qBAAA,EAAuB,CAACtvB,KAAAA,GAAUA,MAAM+zB,YAAY,CAAA;AACjF,IAAA,MAAMD,iBAAiBxE,mBAAQ,CAAA,qBAAA,EAAuB,CAACtvB,KAAAA,GAAUA,MAAM8zB,cAAc,CAAA;AACrF,IAAA,MAAM,EAAEvb,GAAAA,GAAMib,QAAQ,EAAE,GAAGF,SAAAA;AAE3B,IAAA,MAAM,CAAC1C,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAGpyB,gBAAAA,CAAMC,QAAQ,CAAS,EAAA,CAAA;AACnE,IAAA,MAAM,CAACssB,QAAU5K,EAAAA,WAAAA,CAAY,GAAG3hB,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAE/CD,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACd,MAAM82C,eAAAA,GAAkBrmB,YAAYpiB,KAAM0oC,CAAAA,OAAO,CAACtmB,QAAaA,CAAAA,IAAAA,QAAAA,CAAS9wB,MAAM,GAAG,CAAA;QACjF,MAAMq3C,cAAAA,GAAiBx1C,SAAS6M,KAAM0oC,CAAAA,OAAO,CAACv1C,KAAUA,CAAAA,IAAAA,KAAAA,CAAM7B,MAAM,GAAG,CAAA;AAEvE,QAAA,IAAIm3C,mBAAmBE,cAAgB,EAAA;AACrC,YAAA,MAAMC,cAAiBxmB,GAAAA,QAAAA,CACpBpnB,GAAG,CAAC,CAACvH,CAAYonC,EAAAA,GAAAA,GAAAA;gBAChB,OAAO1nC,KAAK,CAAC0nC,GAAI,CAAA,GAAG1nC,KAAK,CAAC0nC,GAAAA,CAAI,CAAC7T,YAAY,GAAG,IAAA;AAChD,aAAA,CAAA,CACC/1B,MAAM,CAAC,CAACkC,KAAAA,GAAU,CAAC,CAACA,KAAAA,CAAAA;AAEvB,YAAA,IAAIy1C,cAAkBA,IAAAA,cAAAA,CAAet3C,MAAM,GAAG,CAAG,EAAA;AAC/CgxB,gBAAAA,iBAAAA,CAAkB,CAACD,cAAAA,GAAAA;AACjB,oBAAA,IAAI,CAACumB,cAAAA,CAAenzC,QAAQ,CAAC4sB,cAAiB,CAAA,EAAA;wBAC5C,OAAOumB,cAAc,CAAC,CAAE,CAAA;AAC1B;oBAEA,OAAOvmB,cAAAA;AACT,iBAAA,CAAA;AACF;AACF;KACC,EAAA;AAACD,QAAAA,QAAAA;AAAUjvB,QAAAA;AAAM,KAAA,CAAA;AAEpB;;;;AAIC,MACD,MAAM01C,gCAAAA,GAAmC34C,gBAAMmxB,CAAAA,OAAO,CAAC,IAAA;QACrD,IAAIqO,MAAAA,CAAOoZ,GAAG,CAAC,OAAU,CAAA,EAAA;YACvB,MAAMC,UAAAA,GAAarZ,MAAOv+B,CAAAA,GAAG,CAAC,OAAA,CAAA;AAE9B,YAAA,IAAI,CAAC43C,UAAY,EAAA;gBACf,OAAOxwB,SAAAA;AACT;YAEA,MAAM,GAAG5hB,IAAK,CAAA,GAAGoyC,UAAW50C,CAAAA,KAAK,CAAC,CAAC,EAAEiL,IAAK,CAAA,CAAC,CAAC,CAAA;AAE5C,YAAA,IAAIqiB,aAAMtuB,CAAAA,KAAAA,EAAOwD,IAAM4hB,EAAAA,SAAAA,CAAAA,KAAeA,SAAW,EAAA;AAC/C,gBAAA,MAAM,CAACywB,OAAAA,CAAQ,GAAGryC,IAAAA,CAAKxC,KAAK,CAAC,GAAA,CAAA;gBAE7B,OAAOstB,aAAAA,CAAMtuB,KAAO61C,EAAAA,OAAAA,EAASzwB,SAAYyO,CAAAA,EAAAA,YAAAA;AAC3C;AACF;QAEA,OAAOzO,SAAAA;KACN,EAAA;AAACmX,QAAAA,MAAAA;AAAQtwB,QAAAA,IAAAA;AAAMjM,QAAAA;AAAM,KAAA,CAAA;AAExB,IAAA,MAAM81C,YAAYC,eAAQ/1C,CAAAA,KAAAA,CAAAA;AAE1BjD,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACd;;AAEC,QACD,IAAIs3C,SAAaA,IAAAA,SAAAA,CAAU33C,MAAM,GAAG6B,KAAAA,CAAM7B,MAAM,EAAE;AAChDgxB,YAAAA,iBAAAA,CAAkBnvB,KAAK,CAACA,KAAAA,CAAM7B,MAAM,GAAG,CAAA,CAAE,CAAC01B,YAAY,CAAA;AACxD;KACC,EAAA;AAAC7zB,QAAAA,KAAAA;AAAO81C,QAAAA;AAAU,KAAA,CAAA;AAErB/4C,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;QACd,IAAI,OAAOk3C,qCAAqC,QAAU,EAAA;YACxDvmB,iBAAkBumB,CAAAA,gCAAAA,CAAAA;AACpB;KACC,EAAA;AAACA,QAAAA;AAAiC,KAAA,CAAA;AAErC,IAAA,MAAMM,eAAkB,GAAA,IAAA;QACtB7mB,iBAAkB,CAAA,EAAA,CAAA;AACpB,KAAA;AAEA,IAAA,MAAMvV,WAAc,GAAA,IAAA;QAClB,IAAI5Z,KAAAA,CAAM7B,MAAM,GAAG0Y,GAAK,EAAA;AACtB,YAAA,MAAM+b,MAAS/zB,GAAAA,UAAU,CAAC+yB,SAAAA,CAAUja,SAAS,CAAC;YAC9C,MAAMkb,IAAAA,GAAOC,wBAAkBF,MAAQ/zB,EAAAA,UAAAA,CAAAA;YACvC,MAAM2oB,IAAAA,GAAOwL,uBAAkBJ,CAAAA,MAAAA,EAAQ/zB,UAAYg0B,CAAAA,CAAAA,IAAAA,CAAAA;AAEnDV,YAAAA,WAAAA,CAAYlmB,IAAMub,EAAAA,IAAAA,CAAAA;;AAEpB,SAAA,MAAO,IAAIxnB,KAAAA,CAAM7B,MAAM,IAAI0Y,GAAK,EAAA;YAC9B2b,kBAAmB,CAAA;gBACjBzxB,IAAM,EAAA,MAAA;AACNoyB,gBAAAA,OAAAA,EAASvtB,aAAc,CAAA;AACrB+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,kDAAA;AACrB,iBAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAM+2B,wBAAAA,GAAyD,CAACn3B,QAAUC,EAAAA,YAAAA,GAAAA;AACxEL,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,aAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE8S,aAAa,CAAC;AAC/B5Y,YAAAA,QAAAA,EAAUktB,UAAWvU,CAAAA,QAAAA;AACvB,SAAA,CAAA,CAAA;AAIJuT,QAAAA,YAAAA,CAAapmB,MAAM8S,YAAcD,EAAAA,QAAAA,CAAAA;AACnC,KAAA;AAEA,IAAA,MAAMo3B,oBAAoB,CAACl0C,GAAAA,GAAAA;QACzBmtB,iBAAkBntB,CAAAA,GAAAA,CAAAA;AACpB,KAAA;AAEA,IAAA,MAAMqxB,UAAa,GAAA,CAACn0B,KAAkB,GAAA,CAAC,EAAEA,KAAAA,GAAQ,CAAE,CAAA,IAAI,EAAEc,KAAAA,CAAM7B,MAAM,CAAC,CAAC;AAEvE,IAAA,MAAMm1B,eAAe,CAACp0B,OAAAA,GAAAA;AACpBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,iBAAA,CAAA;YACnBtX,cAAgB,EAAA;SAElB,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE/M,QAAM;AACzB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMq0B,iBAAiB,CAACr0B,OAAAA,GAAAA;AACtBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,sIAAsI;SAEzJ,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE/M,QAAM,CAAC;AACxBiH,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;AAEA,IAAA,MAAMs0B,iBAAiB,CAACt0B,OAAAA,GAAAA;AACtBwf,QAAAA,WAAAA,CACE9Y,aACE,CAAA;AACE+B,YAAAA,EAAAA,EAAIuX,oBAAe,CAAA,eAAA,CAAA;YACnBtX,cAAgB,EAAA,CAAC,oDAAoD;SAEvE,EAAA;AACE6M,YAAAA,IAAAA,EAAM,CAAC,EAAExI,IAAAA,CAAK,CAAC,EAAE/M,QAAM,CAAC;AACxBiH,YAAAA,QAAAA,EAAUktB,UAAWn0B,CAAAA,OAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,KAAA;IAEA,MAAMglB,iBAAAA,GAAoBnnB,iBAAMwsB,KAAK,EAAA;AAErC,IAAA,MAAMpgB,QAAQmiB,YAAa,CAAA,qBAAA,EAAuB,CAAChtB,KAAAA,GAAUA,MAAM6K,KAAK,CAAA;IAExE,IAAInJ,KAAAA,CAAM7B,MAAM,KAAK,CAAG,EAAA;AACtB,QAAA,qBAAOhB,cAAC8tB,CAAAA,WAAAA,EAAAA;YAAY9Z,QAAUA,EAAAA,QAAAA;YAAUlF,IAAMA,EAAAA,IAAAA;YAAMuE,OAASoJ,EAAAA;;AAC/D;AAEA,IAAA,qBACE3T,eAACC,CAAAA,gBAAAA,EAAAA;QAAIc,SAAS,EAAA,IAAA;;0BACZ7J,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeriB,EAAIuc,EAAAA,iBAAAA;0BACjBte,aAAc,CAAA;AACb+B,oBAAAA,EAAAA,EAAIuX,oBAAe,CAAA,kBAAA,CAAA;oBACnBtX,cAAgB,EAAA,CAAC,mCAAmC;AACtD,iBAAA;;0BAEFzK,cAAC6sB,CAAAA,2BAAAA,EAAAA;gBAAeC,WAAU,EAAA,WAAA;AAAaX,gBAAAA,QAAAA,EAAAA;;0BACvCrjB,eAACkwC,CAAAA,aAAAA,EAAAA;gBACCC,MAAQzmC,EAAAA,KAAAA;gBACR3P,KAAOkvB,EAAAA,cAAAA;gBACPgB,aAAegmB,EAAAA,iBAAAA;gBACfrxB,kBAAkBX,EAAAA,iBAAAA;;oBAEjBlkB,KAAM6H,CAAAA,GAAG,CAAC,CAAC,EAAEgsB,cAAc7xB,GAAG,EAAE2F,EAAE,EAAE,EAAEzI,KAAAA,GAAAA;AACrC,wBAAA,MAAMm3C,gBAAgB,CAAC,EAAEpqC,KAAK,CAAC,EAAE/M,MAAM,CAAC;AACxC,wBAAA,qBACE/B,cAACkuB,CAAAA,iBAAAA,EAAAA;;4BAGC1jB,EAAIA,EAAAA,EAAAA;AACJ5J,4BAAAA,GAAAA,EAAK6zB,UAAUja,SAAS;AACxBxO,4BAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;4BACfpI,IAAK,EAAA,YAAA;AAEL,4BAAA,QAAA,gBAAA5D,cAACm5C,CAAAA,SAAAA,EAAAA;gCACCnlC,QAAUA,EAAAA,QAAAA;gCACVlF,IAAMoqC,EAAAA,aAAAA;gCACNzkB,SAAWA,EAAAA,SAAAA;gCACX1yB,KAAOA,EAAAA,KAAAA;gCACPivB,SAAWA,EAAAA,SAAAA;gCACXU,UAAYonB,EAAAA,wBAAAA;gCACZM,iBAAmB,EAAA,IAAA;AACjBnkB,oCAAAA,cAAAA,CAAenmB,IAAM/M,EAAAA,KAAAA,CAAAA;AACrB82C,oCAAAA,eAAAA,EAAAA;AACF,iCAAA;gCACAA,eAAiBA,EAAAA,eAAAA;gCACjBtoB,QAAU4F,EAAAA,YAAAA;gCACV1T,UAAY4T,EAAAA,cAAAA;gCACZ/F,UAAY8F,EAAAA,cAAAA;gCACZM,YAAc7xB,EAAAA,GAAAA;0CAEbuuB,MAAO1oB,CAAAA,GAAG,CAAC,CAAC2oB,GAAKtxB,EAAAA,KAAAA,GAAAA;AAChB,oCAAA,qBACE/B,cAAC0zB,CAAAA,kBAAAA,EAAAA;wCAAmBhgB,GAAK,EAAA,CAAA;AACtB2f,wCAAAA,QAAAA,EAAAA,GAAAA,CAAI3oB,GAAG,CAAC,CAAC,EAAEynB,IAAI,EAAE,GAAG5E,KAAO,EAAA,GAAA;AAC1B;;;;;4BAMA,MAAMsqB,iBAAoB,GAAA,CAAC,EAAEqB,aAAAA,CAAc,CAAC,EAAE3rB,KAAAA,CAAMze,IAAI,CAAC,CAAC;AAE1D,4CAAA,MAAMgpC,kBAAkBrvC,aAAc,CAAA;gDACpC+B,EAAI,EAAA,CAAC,2BAA2B,EAAEiqB,SAAUja,CAAAA,SAAS,CAAC,CAAC,EAAE+S,KAAAA,CAAMze,IAAI,CAAC,CAAC;AACrErE,gDAAAA,cAAAA,EAAgB8iB,MAAMzqB;AACxB,6CAAA,CAAA;AAEA,4CAAA,qBACE9C,cAAC6zB,CAAAA,kBAAAA,EAAAA;gDACCN,GAAKpB,EAAAA,IAAAA;gDAELqB,CAAG,EAAA,EAAA;gDACHC,EAAI,EAAA,EAAA;gDACJhgB,SAAU,EAAA,QAAA;gDACVG,UAAW,EAAA,SAAA;0DAEVpU,QAAS,CAAA;AACR,oDAAA,GAAG+tB,KAAK;oDACRzqB,KAAOg1C,EAAAA,eAAAA;oDACPhpC,IAAM+oC,EAAAA;AACR,iDAAA;AAVKA,6CAAAA,EAAAA,iBAAAA,CAAAA;AAaX,yCAAA;AA/B+B91C,qCAAAA,EAAAA,KAAAA,CAAAA;AAkCrC,iCAAA;;AA5DG8C,yBAAAA,EAAAA,GAAAA,CAAAA;AAgEX,qBAAA,CAAA;kCACA7E,cAACq5C,CAAAA,gBAAAA,EAAAA;wBAAiBrlC,QAAUA,EAAAA,QAAAA;wBAAUX,OAASoJ,EAAAA,WAAAA;AAAagC,wBAAAA,SAAAA,gBAAWze,cAACs5C,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;kCACrE7wC,aAAc,CAAA;AACb+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,mCAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;AAEA,MAAMuuC,aAAgBtxC,GAAAA,uBAAAA,CAAOqnB,sBAAU9b,CAAAA,IAAI,CAAsB;;AAE7D,IAAA,EAAE,CAAC,EAAErL,KAAK,EAAEqxC,MAAM,EAAE,GAAMA,MAAAA,GAASrxC,KAAME,CAAAA,MAAM,CAACigB,SAAS,GAAGngB,MAAME,MAAM,CAAC6Q,UAAU,CAAE;AACzF,CAAC;AAED,MAAM0gC,gBAAAA,GAAmB3xC,uBAAO61B,CAAAA,uBAAAA,CAAW;;;;wBAInB,EAAE,CAAC,EAAE31B,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAAC6Q,UAAU,CAAC;kBAC/C,EAAE,CAACxQ,QAAUA,KAAMP,CAAAA,KAAK,CAACI,MAAM,CAAC,EAAE,CAAC;iBACpC,EAAE,CAACG,QAAUA,KAAMP,CAAAA,KAAK,CAACI,MAAM,CAAC,EAAE,CAAC;;;;;;wBAM5B,EAAE,CAACG,QAAUA,KAAMP,CAAAA,KAAK,CAACE,MAAM,CAAC8T,UAAU,CAAC;;;;;;;;;;;uCAW5B,EAAE,CAACzT,KAAUA,GAAAA,KAAAA,CAAMP,KAAK,CAAC6nB,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC;;AAE3F,CAAC;AAmBD,MAAMwpB,SAAAA,GAAY,CAAC,EACjBnlC,QAAQ,SACRjS,OAAK,EACL+M,IAAI,EACJkiB,SAAY,GAAA;IACVliB,IAAM,EAAA,IAAA;IACNlL,IAAM,EAAA;AACR,CAAC,EACDpE,QAAQ,EACR45C,iBAAiB,EACjBP,eAAe,EACfniB,YAAY,EACZ,GAAG6iB,SACY,EAAA,GAAA;IACf,MAAM,EAAE9wC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAM8wC,YAAAA,GAAe/oB,mBAAQ,CAAA,qBAAA,EAAuB,CAACtvB,KAAAA,GAAAA;QACnD,OAAOgwB,aAAAA,CAAMhwB,KAAMijB,CAAAA,MAAM,EAAE;AAAItV,YAAAA,GAAAA,IAAAA,CAAKjL,KAAK,CAAC,GAAA,CAAA;AAAMmtB,YAAAA,SAAAA,CAAUliB;AAAK,SAAA,CAAA;AACjE,KAAA,CAAA;IAEA,MAAM2qC,YAAAA,GAAe75C,gBAAMoS,CAAAA,MAAM,CAAoB,IAAA,CAAA;AAErD;;;;;AAKC,MACD,MAAM0nC,YAAAA,GAAe5qC,IAAKjL,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAK4S,KAAK,CAAC,CAAG,EAAA,CAAC,CAAG/E,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA;AAEvD,IAAA,MAAM,CAAC,EAAEsQ,SAAS,EAAEC,UAAU,EAAEqD,aAAa,EAAE,EAAEiM,MAAAA,EAAQpP,SAASC,OAASoP,EAAAA,cAAAA,CAAe,GACxFnP,sBAAAA,CAAe,CAACrO,QAAU,EAAA;QACxBpQ,IAAM,EAAA,CAAC,EAAE0e,iBAAUq3B,CAAAA,SAAS,CAAC,CAAC,EAAED,aAAa,CAAC;AAC9C33C,eAAAA,OAAAA;QACAuV,IAAM,EAAA;AACJvV,mBAAAA,OAAAA;YACAygB,cAAgBg3B,EAAAA;AAClB,SAAA;AACAI,QAAAA,OAAAA,CAAAA,GAAAA;;AAEEf,YAAAA,eAAAA,EAAAA;AACF,SAAA;AACA,QAAA,GAAGU;AACL,KAAA,CAAA;AAEF35C,IAAAA,gBAAAA,CAAMyB,SAAS,CAAC,IAAA;AACdmwB,QAAAA,cAAAA,CAAeG,kCAAiB,EAAA,EAAA;YAAEC,oBAAsB,EAAA;AAAM,SAAA,CAAA;KAC7D,EAAA;AAACJ,QAAAA,cAAAA;AAAgBzvB,QAAAA;AAAM,KAAA,CAAA;IAE1B,MAAM83C,qBAAAA,GAAwBl3B,6BAAmC82B,YAAcr3B,EAAAA,OAAAA,CAAAA;IAC/E,MAAMM,eAAAA,GAAkBC,6BACtB4O,MACApP,EAAAA,OAAAA,CAAAA;IAGF,qBACEniB,cAAA,CAAAwe,mBAAA,EAAA;AACGyD,QAAAA,QAAAA,EAAAA,UAAAA,iBACCjiB,cAAC8yB,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,iBAEDhqB,eAACimB,CAAAA,sBAAAA,CAAUpP,IAAI,EAAA;YAACxM,GAAKuP,EAAAA,eAAAA;YAAiB7f,KAAO6zB,EAAAA,YAAAA;;AAC3C,8BAAA5tB,eAAA,CAACimB,uBAAUC,MAAM,EAAA;;AACf,sCAAAhvB,cAAA,CAAC+uB,uBAAU7b,OAAO,EAAA;AAAEsmC,4BAAAA,QAAAA,EAAAA;;AACpB,sCAAA1wC,eAAA,CAACimB,uBAAUmE,OAAO,EAAA;;8CAChBlzB,cAAC+a,CAAAA,uBAAAA,EAAAA;oCACChH,OAAQ,EAAA,OAAA;oCACRV,OAAS+lC,EAAAA,iBAAAA;AACTt2C,oCAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,wCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,wBAAA,CAAA;wCACnBtX,cAAgB,EAAA;AAClB,qCAAA,CAAA;AAEA,oCAAA,QAAA,gBAAAzK,cAACkyB,CAAAA,WAAAA,EAAAA,EAAAA;;8CAEHlyB,cAAC+a,CAAAA,uBAAAA,EAAAA;oCACC5H,GAAK0mC,EAAAA,qBAAAA;oCACL9lC,OAAQ,EAAA,OAAA;oCACRV,OAAS,EAAA,CAAChJ,CAAMA,GAAAA,CAAAA,CAAEqI,eAAe,EAAA;oCACjCqQ,iBAAiBf,EAAAA,SAAAA;AACjBlf,oCAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,wCAAAA,EAAAA,EAAIuX,oBAAe,CAAA,6BAAA,CAAA;wCACnBtX,cAAgB,EAAA;AAClB,qCAAA,CAAA;oCACA+b,SAAWlB,EAAAA,aAAAA;AAEX,oCAAA,QAAA,gBAAAtlB,cAAC0jB,CAAAA,UAAAA,EAAAA,EAAAA;;;;;;AAIP,8BAAA1jB,cAAA,CAAC+uB,uBAAUxb,OAAO,EAAA;AAChB,oBAAA,QAAA,gBAAAvT,cAAC0M,CAAAA,iBAAAA,EAAAA;wBACC+G,SAAU,EAAA,QAAA;wBACVG,UAAW,EAAA,SAAA;wBACXxK,UAAW,EAAA,YAAA;wBACXQ,OAAS,EAAA,CAAA;wBACT8J,GAAK,EAAA,CAAA;AAEJlU,wBAAAA,QAAAA,EAAAA;;;;;;AAOf,CAAA;AAEA,MAAMszB,OAAU,GAAA,IAAA;AACd,IAAA,qBAAO9yB,cAAC85C,CAAAA,UAAAA,EAAAA;QAAWtuC,GAAI,EAAA,MAAA;QAAO5B,OAAS,EAAA,CAAA;QAAGR,UAAW,EAAA;;AACvD,CAAA;AAEA,MAAM0wC,UAAAA,GAAapyC,uBAA6BqB,CAAAA,gBAAAA,CAAI;;sBAE9B,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACksB,UAAU,CAAC;;AAE/D,CAAC;;AC7cD,MAAMkiB,iBAAiB,CAAC,EACtBpzC,KAAK,EACLqqB,QAAQ,EACRre,IAAI,EACJ2lB,SAAS,EACTzgB,QAAQ,EACRqZ,WAAW,EACX,GAAGllB,KACiB,EAAA,GAAA;IACpB,MAAM,EAAEM,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM6kB,QAAQC,oBAAS1e,CAAAA,IAAAA,CAAAA;IAEvB,MAAMirC,kBAAAA,GAAqB,CAACtlB,SAAUulB,CAAAA,UAAU,IAAIzsB,KAAM1qB,CAAAA,KAAK,IAAI,CAACmR,QAAAA;IAEpE,MAAMtS,UAAAA,GAAarC,mBAAmB,gBAAkB,EAAA,CAAC8B,QAAUA,KAAMrB,CAAAA,QAAQ,CAAC4B,UAAU,CAAA;AAE5F,IAAA,MAAMu4C,yBAA4B,GAAA,IAAA;AAChC,QAAA,MAAMxkB,MAAS/zB,GAAAA,UAAU,CAAC+yB,SAAAA,CAAUja,SAAS,CAAC;QAC9C,MAAMkb,IAAAA,GAAOC,wBAAkBF,MAAQ/zB,EAAAA,UAAAA,CAAAA;QACvC,MAAM2oB,IAAAA,GAAOwL,uBAAkBJ,CAAAA,MAAAA,EAAQ/zB,UAAYg0B,CAAAA,CAAAA,IAAAA,CAAAA;QAEnDnI,KAAMxjB,CAAAA,QAAQ,CAAC+E,IAAMub,EAAAA,IAAAA,CAAAA;AACvB,KAAA;IAEA,qBACEvhB,eAAA,CAAC6K,mBAAMV,IAAI,EAAA;AAACT,QAAAA,KAAAA,EAAO+a,MAAM/a,KAAK;QAAE2a,QAAUA,EAAAA,QAAAA;;0BACxCrkB,eAAC4D,CAAAA,iBAAAA,EAAAA;gBAAKe,cAAe,EAAA,eAAA;;AACnB,kCAAA3E,eAAA,CAAC6K,mBAAME,KAAK,EAAA;wBAAC4Z,MAAQJ,EAAAA,WAAAA;;AAClBvqB,4BAAAA,KAAAA;AACA2xB,4BAAAA,SAAAA,CAAUulB,UAAU,kBACnBlxC,eAAA,CAAA0V,mBAAA,EAAA;;AAAE,oCAAA,IAAA;oCAAQ9O,KAAM0oC,CAAAA,OAAO,CAAC7qB,KAAM1qB,CAAAA,KAAK,IAAI0qB,KAAM1qB,CAAAA,KAAK,CAAC7B,MAAM,GAAG,CAAA;AAAE,oCAAA;;;;;AAIjE+4C,oBAAAA,kBAAAA,kBACC/5C,cAAC+a,CAAAA,uBAAAA,EAAAA;AACCjY,wBAAAA,KAAAA,EAAO2F,aAAc,CAAA;AACnB+B,4BAAAA,EAAAA,EAAIuX,oBAAe,CAAA,wBAAA,CAAA;4BACnBtX,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAsJ,OAAQ,EAAA,OAAA;wBACRV,OAAS,EAAA,IAAA;4BACPka,KAAMxjB,CAAAA,QAAQ,CAAC+E,IAAM,EAAA,IAAA,CAAA;AACvB,yBAAA;AAEA,wBAAA,QAAA,gBAAA9O,cAACkyB,CAAAA,WAAAA,EAAAA,EAAAA;;;;AAQN,YAAA,CAACuC,UAAUulB,UAAU,IAAI,CAACzsB,KAAM1qB,CAAAA,KAAK,kBACpC7C,cAAC8tB,CAAAA,WAAAA,EAAAA;gBAAY9Z,QAAUA,EAAAA,QAAAA;gBAAUlF,IAAMA,EAAAA,IAAAA;gBAAMuE,OAAS4mC,EAAAA;;AAEvD,YAAA,CAACxlB,UAAUulB,UAAU,IAAIzsB,KAAM1qB,CAAAA,KAAK,iBACnC7C,cAAC23C,CAAAA,sBAAAA,EAAAA;gBAAuBljB,SAAWA,EAAAA,SAAAA;gBAAW3lB,IAAMA,EAAAA,IAAAA;gBAAMkF,QAAUA,EAAAA,QAAAA;AAAW,gBAAA,GAAG7L,KAAK;AACpFA,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;AAEP,aAAA,CAAA,GAAA,IAAA;YACHi1B,SAAUulB,CAAAA,UAAU,kBACnBh6C,cAAC+3C,CAAAA,mBAAAA,EAAAA;gBAAoBtjB,SAAWA,EAAAA,SAAAA;gBAAW3lB,IAAMA,EAAAA,IAAAA;gBAAMkF,QAAUA,EAAAA,QAAAA;AAAW,gBAAA,GAAG7L,KAAK;AACjFA,gBAAAA,QAAAA,EAAAA,KAAAA,CAAM3I;;AAGX,0BAAAQ,cAAA,CAAC2T,mBAAMga,KAAK,EAAA,EAAA;;;AAGlB,CAAA;AAEMusB,MAAAA,sBAAAA,iBAAyBt6C,gBAAMiuB,CAAAA,IAAI,CAACqoB,cAAAA;;;;;;;;;;;;;;;;;"}