@unbrained/pm-cli 2026.6.24 → 2026.6.30

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 (712) hide show
  1. package/CHANGELOG.md +93 -1
  2. package/CONTRIBUTING.md +30 -0
  3. package/README.md +16 -3
  4. package/dist/cli/commander-usage.js +3 -3
  5. package/dist/cli/commander-usage.js.map +1 -1
  6. package/dist/cli/commands/aggregate.js +8 -7
  7. package/dist/cli/commands/aggregate.js.map +1 -1
  8. package/dist/cli/commands/close.d.ts +2 -4
  9. package/dist/cli/commands/close.js +5 -17
  10. package/dist/cli/commands/close.js.map +1 -1
  11. package/dist/cli/commands/completion.js +158 -9
  12. package/dist/cli/commands/completion.js.map +1 -1
  13. package/dist/cli/commands/config.d.ts +1 -1
  14. package/dist/cli/commands/config.js +2 -2
  15. package/dist/cli/commands/config.js.map +1 -1
  16. package/dist/cli/commands/context.d.ts +31 -4
  17. package/dist/cli/commands/context.js +33 -10
  18. package/dist/cli/commands/context.js.map +1 -1
  19. package/dist/cli/commands/contracts.js +48 -8
  20. package/dist/cli/commands/contracts.js.map +1 -1
  21. package/dist/cli/commands/create.d.ts +1 -6
  22. package/dist/cli/commands/create.js +10 -155
  23. package/dist/cli/commands/create.js.map +1 -1
  24. package/dist/cli/commands/extension/describe.d.ts +15 -0
  25. package/dist/cli/commands/extension/describe.js +48 -2
  26. package/dist/cli/commands/extension/describe.js.map +1 -1
  27. package/dist/cli/commands/extension/doctor.js +5 -2
  28. package/dist/cli/commands/extension/doctor.js.map +1 -1
  29. package/dist/cli/commands/extension/install-sources.js +37 -7
  30. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  31. package/dist/cli/commands/extension/scaffold.d.ts +31 -8
  32. package/dist/cli/commands/extension/scaffold.js +1891 -205
  33. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  34. package/dist/cli/commands/extension.d.ts +22 -2
  35. package/dist/cli/commands/extension.js +186 -17
  36. package/dist/cli/commands/extension.js.map +1 -1
  37. package/dist/cli/commands/index.d.ts +3 -1
  38. package/dist/cli/commands/index.js +5 -3
  39. package/dist/cli/commands/index.js.map +1 -1
  40. package/dist/cli/commands/item-filter-options.d.ts +63 -0
  41. package/dist/cli/commands/item-filter-options.js +10 -0
  42. package/dist/cli/commands/item-filter-options.js.map +1 -0
  43. package/dist/cli/commands/legacy-none-tokens.d.ts +14 -0
  44. package/dist/cli/commands/legacy-none-tokens.js +31 -2
  45. package/dist/cli/commands/legacy-none-tokens.js.map +1 -1
  46. package/dist/cli/commands/linked-artifacts.d.ts +7 -0
  47. package/dist/cli/commands/linked-artifacts.js +12 -2
  48. package/dist/cli/commands/linked-artifacts.js.map +1 -1
  49. package/dist/cli/commands/list.d.ts +16 -39
  50. package/dist/cli/commands/list.js +127 -118
  51. package/dist/cli/commands/list.js.map +1 -1
  52. package/dist/cli/commands/next.d.ts +98 -0
  53. package/dist/cli/commands/next.js +304 -0
  54. package/dist/cli/commands/next.js.map +1 -0
  55. package/dist/cli/commands/profile.d.ts +208 -0
  56. package/dist/cli/commands/profile.js +418 -0
  57. package/dist/cli/commands/profile.js.map +1 -0
  58. package/dist/cli/commands/repeatable-metadata-parsers.js +12 -13
  59. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
  60. package/dist/cli/commands/schema.d.ts +7 -0
  61. package/dist/cli/commands/schema.js +9 -3
  62. package/dist/cli/commands/schema.js.map +1 -1
  63. package/dist/cli/commands/search.d.ts +2 -39
  64. package/dist/cli/commands/search.js +104 -106
  65. package/dist/cli/commands/search.js.map +1 -1
  66. package/dist/cli/commands/shared-unset-fields.d.ts +30 -0
  67. package/dist/cli/commands/shared-unset-fields.js +161 -0
  68. package/dist/cli/commands/shared-unset-fields.js.map +1 -0
  69. package/dist/cli/commands/stats.js +15 -3
  70. package/dist/cli/commands/stats.js.map +1 -1
  71. package/dist/cli/commands/test.js +9 -5
  72. package/dist/cli/commands/test.js.map +1 -1
  73. package/dist/cli/commands/update.d.ts +1 -6
  74. package/dist/cli/commands/update.js +12 -157
  75. package/dist/cli/commands/update.js.map +1 -1
  76. package/dist/cli/commands/validate.js +20 -5
  77. package/dist/cli/commands/validate.js.map +1 -1
  78. package/dist/cli/help-content.js +26 -2
  79. package/dist/cli/help-content.js.map +1 -1
  80. package/dist/cli/help-json-payload.js +3 -3
  81. package/dist/cli/help-json-payload.js.map +1 -1
  82. package/dist/cli/main.js +27 -12
  83. package/dist/cli/main.js.map +1 -1
  84. package/dist/cli/register-list-query.js +42 -3
  85. package/dist/cli/register-list-query.js.map +1 -1
  86. package/dist/cli/register-mutation.js +86 -2
  87. package/dist/cli/register-mutation.js.map +1 -1
  88. package/dist/cli/register-setup.js +67 -6
  89. package/dist/cli/register-setup.js.map +1 -1
  90. package/dist/cli/registration-helpers.d.ts +9 -1
  91. package/dist/cli/registration-helpers.js +34 -3
  92. package/dist/cli/registration-helpers.js.map +1 -1
  93. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +16 -0
  94. package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js → activity-MVSEND6D.js} +9 -11
  95. package/dist/cli-bundle/chunks/{aggregate-63NWNIBR.js → aggregate-MOC4TR2G.js} +16 -17
  96. package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +1 -0
  97. package/dist/cli-bundle/chunks/{aggregate-YHCYX2EV.js → aggregate-XJHLZQ5X.js} +15 -16
  98. package/dist/cli-bundle/chunks/aggregate-XJHLZQ5X.js.map +7 -0
  99. package/dist/cli-bundle/chunks/{append-PUKREFV5.js → append-KDHT4GHI.js} +10 -12
  100. package/dist/cli-bundle/chunks/{append-PUKREFV5.js.map → append-KDHT4GHI.js.map} +1 -1
  101. package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js → append-LEDBAM3K.js} +8 -10
  102. package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js.map → append-LEDBAM3K.js.map} +1 -1
  103. package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js → chunk-3JWQCLR5.js} +3 -3
  104. package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js → chunk-4TXTVZL3.js} +2 -2
  105. package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js → chunk-4YIMPANT.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js → chunk-53ARXF2O.js} +9 -11
  107. package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js.map → chunk-53ARXF2O.js.map} +1 -1
  108. package/dist/cli-bundle/chunks/chunk-5ABGFWR4.js +116 -0
  109. package/dist/cli-bundle/chunks/chunk-5ABGFWR4.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{chunk-OF7V47P3.js → chunk-5IRVSKPS.js} +2990 -2890
  111. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +1 -0
  112. package/dist/cli-bundle/chunks/{chunk-XXKV4UWE.js → chunk-5T6WPLRO.js} +233 -190
  113. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-SMXSDY7J.js → chunk-6T5ZIWBS.js} +3011 -2888
  115. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-RAWA3Y7O.js → chunk-6YRAMXRS.js} +111 -114
  117. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +1 -0
  118. package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js → chunk-73PTKMAE.js} +3 -3
  119. package/dist/cli-bundle/chunks/{chunk-GQYJEEFX.js → chunk-74PUWBGN.js} +53 -54
  120. package/dist/cli-bundle/chunks/chunk-74PUWBGN.js.map +1 -0
  121. package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js → chunk-7L6TXOOC.js} +4 -6
  122. package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js.map → chunk-7L6TXOOC.js.map} +1 -1
  123. package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js +17 -0
  124. package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js.map +7 -0
  125. package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js → chunk-7RIJGN4R.js} +2 -2
  126. package/dist/cli-bundle/chunks/{chunk-JKL6HRMV.js → chunk-7WDETKGP.js} +191 -117
  127. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-HBAEFWX3.js → chunk-A3UNLXNJ.js} +40 -260
  129. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js → chunk-AWN4PPH5.js} +10 -14
  131. package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js.map → chunk-AWN4PPH5.js.map} +1 -1
  132. package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js → chunk-BN3CWK6G.js} +2 -2
  133. package/dist/cli-bundle/chunks/{chunk-SUREE24M.js → chunk-BOWQWXLI.js} +12 -24
  134. package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +1 -0
  135. package/dist/cli-bundle/chunks/{chunk-J3NMWFIN.js → chunk-C2KCIZKZ.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js → chunk-CHRNYKNI.js} +2 -2
  137. package/dist/cli-bundle/chunks/{chunk-VSAABFGQ.js → chunk-CY5IJMUM.js} +1136 -419
  138. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +1 -0
  139. package/dist/cli-bundle/chunks/chunk-CZVISY5A.js +87 -0
  140. package/dist/cli-bundle/chunks/chunk-CZVISY5A.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js → chunk-D5LYZVGB.js} +7 -9
  142. package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js.map → chunk-D5LYZVGB.js.map} +1 -1
  143. package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js → chunk-D6USKAMA.js} +2 -2
  144. package/dist/cli-bundle/chunks/{context-5LB7UGKE.js → chunk-DJDXAU74.js} +19 -21
  145. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +7 -0
  146. package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js → chunk-DLDCPF5X.js} +3 -3
  147. package/dist/cli-bundle/chunks/{chunk-J7I4C5ZB.js → chunk-DORJSBGJ.js} +35 -9
  148. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js → chunk-DRPF274X.js} +5 -7
  150. package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js.map → chunk-DRPF274X.js.map} +2 -2
  151. package/dist/cli-bundle/chunks/{chunk-6EL7SW5C.js → chunk-DU66JUGT.js} +16 -14
  152. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js → chunk-E2Q2ULMR.js} +4 -4
  154. package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js → chunk-EVWYAG46.js} +9 -11
  155. package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js.map → chunk-EVWYAG46.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{chunk-PEL2NLQE.js → chunk-F6VH3LFC.js} +2 -2
  157. package/dist/cli-bundle/chunks/{chunk-AEACLRVH.js → chunk-F7G53BOA.js} +18 -11
  158. package/dist/cli-bundle/chunks/chunk-F7G53BOA.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js → chunk-FBZ5XAAF.js} +9 -11
  160. package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js.map → chunk-FBZ5XAAF.js.map} +1 -1
  161. package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js → chunk-FDEVKXC4.js} +2 -2
  162. package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js → chunk-GF7EAR22.js} +10 -14
  163. package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js.map → chunk-GF7EAR22.js.map} +1 -1
  164. package/dist/cli-bundle/chunks/{context-55VEOYI3.js → chunk-HIBK6H4S.js} +20 -22
  165. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +1 -0
  166. package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js → chunk-HUYYMTGW.js} +2 -2
  167. package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js +14 -0
  168. package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js → chunk-IBU2LLWM.js} +8 -12
  170. package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js.map → chunk-IBU2LLWM.js.map} +1 -1
  171. package/dist/cli-bundle/chunks/{chunk-MEXZ5XUM.js → chunk-IDYCAK35.js} +53 -54
  172. package/dist/cli-bundle/chunks/chunk-IDYCAK35.js.map +7 -0
  173. package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js → chunk-IF4ERU6A.js} +7 -9
  174. package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js.map → chunk-IF4ERU6A.js.map} +1 -1
  175. package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js → chunk-IHXXUIXS.js} +4 -4
  176. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js +2459 -0
  177. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +7 -0
  178. package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js → chunk-JIP67N2K.js} +3 -3
  179. package/dist/cli-bundle/chunks/chunk-JJ4SG243.js +119 -0
  180. package/dist/cli-bundle/chunks/chunk-JJ4SG243.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js → chunk-JTRKME24.js} +11 -13
  182. package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js.map → chunk-JTRKME24.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js → chunk-JVQ7UOYC.js} +6 -8
  184. package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js.map → chunk-JVQ7UOYC.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{chunk-L7UXKP2I.js → chunk-JZG5ADVE.js} +190 -102
  186. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-N5B6WZC5.js → chunk-K46GQ265.js} +17 -15
  188. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +1 -0
  189. package/dist/cli-bundle/chunks/{chunk-KJZOSF7J.js → chunk-KGQ3W65B.js} +100 -35
  190. package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +1 -0
  191. package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js → chunk-KRASIL6M.js} +2 -2
  192. package/dist/cli-bundle/chunks/{chunk-XVYKWZNL.js → chunk-KTMMTOIP.js} +127 -127
  193. package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js → chunk-KYDYQMNW.js} +5 -7
  195. package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js.map → chunk-KYDYQMNW.js.map} +1 -1
  196. package/dist/cli-bundle/chunks/{chunk-OHDQNKJB.js → chunk-LBH7UYKY.js} +106 -34
  197. package/dist/cli-bundle/chunks/chunk-LBH7UYKY.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js → chunk-MLHX6DN5.js} +2 -2
  199. package/dist/cli-bundle/chunks/{chunk-HC2S36NB.js → chunk-NIBP3I7A.js} +36 -10
  200. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +1 -0
  201. package/dist/cli-bundle/chunks/{schema-C6QA367T.js → chunk-NO6Y6FB2.js} +144 -67
  202. package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +7 -0
  203. package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js → chunk-OB3RJV5F.js} +2 -2
  204. package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js +379 -0
  205. package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js.map +1 -0
  206. package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js → chunk-OUQ5JEFM.js} +3 -3
  207. package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js → chunk-QE5UFCCO.js} +2 -2
  208. package/dist/cli-bundle/chunks/{chunk-6W3Y65PL.js → chunk-RM6MHL6A.js} +110 -113
  209. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-RRP6D345.js → chunk-RPRW26NG.js} +12 -16
  211. package/dist/cli-bundle/chunks/{chunk-RRP6D345.js.map → chunk-RPRW26NG.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js → chunk-SJZTPVFT.js} +4 -4
  213. package/dist/cli-bundle/chunks/{chunk-EYPINTFR.js → chunk-SNUK7H5J.js} +1164 -440
  214. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +7 -0
  215. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js +2435 -0
  216. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js → chunk-TQ6E76BE.js} +11 -13
  218. package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js.map → chunk-TQ6E76BE.js.map} +1 -1
  219. package/dist/cli-bundle/chunks/{chunk-IAP5KYBQ.js → chunk-UB3V5WUI.js} +225 -189
  220. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-PRVTGX64.js → chunk-UFKNF23C.js} +11 -23
  222. package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +7 -0
  223. package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js → chunk-V3KLX7U7.js} +3 -3
  224. package/dist/cli-bundle/chunks/{chunk-LNEDHJNQ.js → chunk-VD3LKZFX.js} +41 -254
  225. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +1 -0
  226. package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js → chunk-VMY7MZEM.js} +10 -14
  227. package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js.map → chunk-VMY7MZEM.js.map} +1 -1
  228. package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js +382 -0
  229. package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js.map +7 -0
  230. package/dist/cli-bundle/chunks/{chunk-M6TUBOGW.js → chunk-WFJZDUM7.js} +19 -12
  231. package/dist/cli-bundle/chunks/chunk-WFJZDUM7.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{schema-QO5I4FBL.js → chunk-WTRUDJ3R.js} +136 -66
  233. package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +1 -0
  234. package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js → chunk-YEDFE4DC.js} +6 -8
  235. package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js.map → chunk-YEDFE4DC.js.map} +1 -1
  236. package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js +84 -0
  237. package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js → chunk-Z55WX4IQ.js} +12 -16
  239. package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js.map → chunk-Z55WX4IQ.js.map} +1 -1
  240. package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js → chunk-Z5BM2FKQ.js} +4 -4
  241. package/dist/cli-bundle/chunks/{chunk-IXAZI443.js → chunk-ZEATCVAC.js} +2 -2
  242. package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js → chunk-ZFIEEDTJ.js} +3 -3
  243. package/dist/cli-bundle/chunks/{chunk-BFFO3AIB.js → chunk-ZIE6WXJ2.js} +128 -128
  244. package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +1 -0
  245. package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js → claim-6NINZYB3.js} +10 -12
  246. package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js.map → claim-6NINZYB3.js.map} +1 -1
  247. package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js → claim-HMCLSLUE.js} +8 -10
  248. package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js.map → claim-HMCLSLUE.js.map} +1 -1
  249. package/dist/cli-bundle/chunks/close-37KEHLYM.js +14 -0
  250. package/dist/cli-bundle/chunks/{close-QHMVWM7M.js → close-OP3LK7Z2.js} +7 -8
  251. package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js → close-many-BFMP6HHK.js} +15 -17
  252. package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js.map → close-many-BFMP6HHK.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js → close-many-CXJBOWWY.js} +17 -19
  254. package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js.map → close-many-CXJBOWWY.js.map} +1 -1
  255. package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js → comments-ETHABIY6.js} +9 -11
  256. package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js.map → comments-ETHABIY6.js.map} +1 -1
  257. package/dist/cli-bundle/chunks/{comments-5YM62D75.js → comments-MU2WMBUY.js} +11 -13
  258. package/dist/cli-bundle/chunks/{comments-5YM62D75.js.map → comments-MU2WMBUY.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/{config-NCNNWF6R.js → config-FIXJZEQK.js} +18 -387
  260. package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +7 -0
  261. package/dist/cli-bundle/chunks/{config-SW3U7XP2.js → config-X3ZVCUUG.js} +18 -380
  262. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +1 -0
  263. package/dist/cli-bundle/chunks/context-7ZEZV3BV.js +42 -0
  264. package/dist/cli-bundle/chunks/context-XDI4DKKT.js +46 -0
  265. package/dist/cli-bundle/chunks/{contracts-JXFGBOYT.js → contracts-KP4QAGVW.js} +72 -15
  266. package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +1 -0
  267. package/dist/cli-bundle/chunks/{contracts-SY6PDFIK.js → contracts-SMOAN5NF.js} +72 -15
  268. package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +7 -0
  269. package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js → copy-CWM6SBY6.js} +7 -11
  270. package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js.map → copy-CWM6SBY6.js.map} +1 -1
  271. package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js → copy-JJ3KOQW2.js} +9 -13
  272. package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js.map → copy-JJ3KOQW2.js.map} +1 -1
  273. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +28 -0
  274. package/dist/cli-bundle/chunks/{create-O4VONGPG.js → create-J5Q2ELZT.js} +12 -14
  275. package/dist/cli-bundle/chunks/{delete-724EQ6OS.js → delete-2GZLQEUQ.js} +7 -9
  276. package/dist/cli-bundle/chunks/{delete-724EQ6OS.js.map → delete-2GZLQEUQ.js.map} +1 -1
  277. package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js → delete-OOQS4KVD.js} +5 -7
  278. package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js.map → delete-OOQS4KVD.js.map} +1 -1
  279. package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js → deps-IF4IGL4R.js} +6 -9
  280. package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js.map → deps-IF4IGL4R.js.map} +1 -1
  281. package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js → deps-ZVGGCRR6.js} +8 -11
  282. package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js.map → deps-ZVGGCRR6.js.map} +1 -1
  283. package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js → docs-2TIFR62T.js} +8 -9
  284. package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js.map → docs-2TIFR62T.js.map} +1 -1
  285. package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js → docs-NFTBCQQC.js} +10 -11
  286. package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js.map → docs-NFTBCQQC.js.map} +1 -1
  287. package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js → eval-2F6EH4XN.js} +12 -14
  288. package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js.map → eval-2F6EH4XN.js.map} +1 -1
  289. package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js → eval-PFKXQR3B.js} +10 -12
  290. package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js.map → eval-PFKXQR3B.js.map} +1 -1
  291. package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js → extension-3LRYX7SW.js} +11 -7
  292. package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js → extension-GMVOIP4O.js} +11 -7
  293. package/dist/cli-bundle/chunks/{files-5BQWDRDT.js → files-DF3HO6XK.js} +11 -13
  294. package/dist/cli-bundle/chunks/{files-5BQWDRDT.js.map → files-DF3HO6XK.js.map} +1 -1
  295. package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js → files-T5ODMETM.js} +9 -11
  296. package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js.map → files-T5ODMETM.js.map} +1 -1
  297. package/dist/cli-bundle/chunks/{focus-RWGKD76E.js → focus-DLXKK4AH.js} +10 -14
  298. package/dist/cli-bundle/chunks/{focus-RWGKD76E.js.map → focus-DLXKK4AH.js.map} +1 -1
  299. package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js → focus-MY5ARIEK.js} +8 -12
  300. package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js.map → focus-MY5ARIEK.js.map} +1 -1
  301. package/dist/cli-bundle/chunks/{gc-BEJMQT64.js → gc-FULIVYR4.js} +3 -3
  302. package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js → gc-MDGRR2SU.js} +3 -3
  303. package/dist/cli-bundle/chunks/{get-LQG6PEVG.js → get-AWK324RS.js} +10 -13
  304. package/dist/cli-bundle/chunks/{get-LQG6PEVG.js.map → get-AWK324RS.js.map} +1 -1
  305. package/dist/cli-bundle/chunks/{get-WVN75H42.js → get-VYPIICPC.js} +12 -15
  306. package/dist/cli-bundle/chunks/{get-WVN75H42.js.map → get-VYPIICPC.js.map} +1 -1
  307. package/dist/cli-bundle/chunks/{health-P67NZ6TT.js → health-FBCVZGSX.js} +16 -17
  308. package/dist/cli-bundle/chunks/{health-P67NZ6TT.js.map → health-FBCVZGSX.js.map} +1 -1
  309. package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js → health-Q66C43GN.js} +18 -19
  310. package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js.map → health-Q66C43GN.js.map} +1 -1
  311. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +18 -0
  312. package/dist/cli-bundle/chunks/{history-RUKPKNY7.js → history-X4OSES6K.js} +8 -10
  313. package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js → history-compact-2GHT32UX.js} +13 -16
  314. package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js.map → history-compact-2GHT32UX.js.map} +1 -1
  315. package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js → history-compact-WLCQEKXS.js} +11 -14
  316. package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js.map → history-compact-WLCQEKXS.js.map} +1 -1
  317. package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js → history-redact-45YW65BK.js} +9 -11
  318. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +19 -0
  319. package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js → history-repair-FY75IC26.js} +13 -16
  320. package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js.map → history-repair-FY75IC26.js.map} +1 -1
  321. package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js → history-repair-GABSDSVD.js} +11 -14
  322. package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js.map → history-repair-GABSDSVD.js.map} +1 -1
  323. package/dist/cli-bundle/chunks/{init-HBFGYS66.js → init-KO7CGIRQ.js} +11 -11
  324. package/dist/cli-bundle/chunks/init-TRYJELH4.js +21 -0
  325. package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js → learnings-3F7YLI45.js} +9 -11
  326. package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js.map → learnings-3F7YLI45.js.map} +1 -1
  327. package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js → learnings-LHZT5BHW.js} +11 -13
  328. package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js.map → learnings-LHZT5BHW.js.map} +1 -1
  329. package/dist/cli-bundle/chunks/{list-C7R33MD5.js → list-ROT7JF62.js} +10 -10
  330. package/dist/cli-bundle/chunks/{list-DSN6UNFB.js → list-Y6AU5BJS.js} +10 -10
  331. package/dist/cli-bundle/chunks/next-66BJB4N2.js +277 -0
  332. package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +7 -0
  333. package/dist/cli-bundle/chunks/next-N5MWJTBY.js +274 -0
  334. package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +1 -0
  335. package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js → notes-EVJZ3VAB.js} +11 -13
  336. package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js.map → notes-EVJZ3VAB.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js → notes-FW6YFLND.js} +9 -11
  338. package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js.map → notes-FW6YFLND.js.map} +1 -1
  339. package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js → plan-DQ7G4EDC.js} +15 -18
  340. package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js.map → plan-DQ7G4EDC.js.map} +1 -1
  341. package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js → plan-ZHKZ7JVF.js} +17 -20
  342. package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js.map → plan-ZHKZ7JVF.js.map} +1 -1
  343. package/dist/cli-bundle/chunks/profile-CHAW6SEA.js +1197 -0
  344. package/dist/cli-bundle/chunks/profile-CHAW6SEA.js.map +1 -0
  345. package/dist/cli-bundle/chunks/profile-UPZGCDOG.js +1235 -0
  346. package/dist/cli-bundle/chunks/profile-UPZGCDOG.js.map +7 -0
  347. package/dist/cli-bundle/chunks/{register-list-query-CCMHGZTF.js → register-list-query-KY6Z6WV7.js} +44 -20
  348. package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +7 -0
  349. package/dist/cli-bundle/chunks/{register-list-query-OM3E2KMY.js → register-list-query-Y2VRHPCL.js} +45 -21
  350. package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +1 -0
  351. package/dist/cli-bundle/chunks/{register-mutation-UXTTWL6N.js → register-mutation-N6AYSKPM.js} +103 -37
  352. package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +7 -0
  353. package/dist/cli-bundle/chunks/{register-mutation-N3CDEGZU.js → register-mutation-PCARIGZS.js} +104 -38
  354. package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +1 -0
  355. package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js → register-operations-L6CYTOIH.js} +30 -32
  356. package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js.map → register-operations-L6CYTOIH.js.map} +1 -1
  357. package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js → register-operations-YAT6FUUB.js} +32 -34
  358. package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js.map → register-operations-YAT6FUUB.js.map} +1 -1
  359. package/dist/cli-bundle/chunks/{register-setup-TWHKICM2.js → register-setup-MPANILQF.js} +67 -24
  360. package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +7 -0
  361. package/dist/cli-bundle/chunks/{register-setup-G5LTSFYK.js → register-setup-N7UGXYJC.js} +68 -25
  362. package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +1 -0
  363. package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js → restore-DKMCLPI5.js} +9 -11
  364. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +17 -0
  365. package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js → scheduling-shortcuts-3F4QUEDH.js} +14 -16
  366. package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js.map → scheduling-shortcuts-3F4QUEDH.js.map} +1 -1
  367. package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js → scheduling-shortcuts-BNZLQK36.js} +12 -14
  368. package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js.map → scheduling-shortcuts-BNZLQK36.js.map} +1 -1
  369. package/dist/cli-bundle/chunks/schema-OLT6LVKH.js +75 -0
  370. package/dist/cli-bundle/chunks/schema-XJXKJQF5.js +71 -0
  371. package/dist/cli-bundle/chunks/{search-2EI6EAXH.js → search-CX5UMV4H.js} +10 -12
  372. package/dist/cli-bundle/chunks/{search-QBFBLQRO.js → search-KP6H7COV.js} +10 -12
  373. package/dist/cli-bundle/chunks/{stats-TCW2SZQG.js → stats-7XW4OEMK.js} +20 -12
  374. package/dist/cli-bundle/chunks/stats-7XW4OEMK.js.map +7 -0
  375. package/dist/cli-bundle/chunks/{stats-TKC6CAKB.js → stats-QZUG6MX5.js} +21 -13
  376. package/dist/cli-bundle/chunks/stats-QZUG6MX5.js.map +1 -0
  377. package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js → telemetry-DIFPXCAT.js} +4 -4
  378. package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js → telemetry-WTYFUPRL.js} +4 -4
  379. package/dist/cli-bundle/chunks/{test-NV2DRPUS.js → test-HU2BS7EY.js} +14 -16
  380. package/dist/cli-bundle/chunks/test-HU2BS7EY.js.map +1 -0
  381. package/dist/cli-bundle/chunks/test-QNDXZQCW.js +34 -0
  382. package/dist/cli-bundle/chunks/test-QNDXZQCW.js.map +7 -0
  383. package/dist/cli-bundle/chunks/{test-all-REW67LXT.js → test-all-PZTBLLQ6.js} +17 -20
  384. package/dist/cli-bundle/chunks/{test-all-REW67LXT.js.map → test-all-PZTBLLQ6.js.map} +1 -1
  385. package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js → test-all-XLPI4USF.js} +19 -22
  386. package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js.map → test-all-XLPI4USF.js.map} +1 -1
  387. package/dist/cli-bundle/chunks/{test-runs-FQ5WNQLP.js → test-runs-CA6K32RD.js} +6 -7
  388. package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +1 -0
  389. package/dist/cli-bundle/chunks/{test-runs-PX73DMMI.js → test-runs-LANLLPVO.js} +5 -6
  390. package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +7 -0
  391. package/dist/cli-bundle/chunks/update-DJKWLBWJ.js +28 -0
  392. package/dist/cli-bundle/chunks/update-DJKWLBWJ.js.map +1 -0
  393. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +24 -0
  394. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js.map +7 -0
  395. package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js → update-many-LU3SCNK5.js} +32 -33
  396. package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js.map → update-many-LU3SCNK5.js.map} +1 -1
  397. package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js → update-many-VW5DGF3S.js} +34 -35
  398. package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js.map → update-many-VW5DGF3S.js.map} +1 -1
  399. package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js → upgrade-77FRUAXN.js} +12 -8
  400. package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js.map → upgrade-77FRUAXN.js.map} +1 -1
  401. package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js → upgrade-ICXY244R.js} +10 -6
  402. package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js.map → upgrade-ICXY244R.js.map} +1 -1
  403. package/dist/cli-bundle/chunks/{validate-HYZNIB6W.js → validate-2G566PKQ.js} +37 -28
  404. package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +7 -0
  405. package/dist/cli-bundle/chunks/{validate-54SYJ7QW.js → validate-BDPVXHHH.js} +38 -29
  406. package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +1 -0
  407. package/dist/cli-bundle/main.js +56 -38
  408. package/dist/cli-bundle/main.js.map +2 -2
  409. package/dist/core/config/positional-value.d.ts +2 -0
  410. package/dist/core/config/positional-value.js +2 -2
  411. package/dist/core/config/positional-value.js.map +1 -1
  412. package/dist/core/extensions/activation-summary-markdown.d.ts +71 -0
  413. package/dist/core/extensions/activation-summary-markdown.js +140 -0
  414. package/dist/core/extensions/activation-summary-markdown.js.map +1 -0
  415. package/dist/core/extensions/activation-summary.d.ts +2 -0
  416. package/dist/core/extensions/activation-summary.js +3 -2
  417. package/dist/core/extensions/activation-summary.js.map +1 -1
  418. package/dist/core/extensions/capability-usage.d.ts +1 -1
  419. package/dist/core/extensions/capability-usage.js +4 -3
  420. package/dist/core/extensions/capability-usage.js.map +1 -1
  421. package/dist/core/extensions/extension-registries.js +3 -2
  422. package/dist/core/extensions/extension-registries.js.map +1 -1
  423. package/dist/core/extensions/extension-types.d.ts +21 -1
  424. package/dist/core/extensions/extension-types.js +3 -2
  425. package/dist/core/extensions/extension-types.js.map +1 -1
  426. package/dist/core/extensions/loader.js +131 -2
  427. package/dist/core/extensions/loader.js.map +1 -1
  428. package/dist/core/fs/fs-utils.js +27 -2
  429. package/dist/core/fs/fs-utils.js.map +1 -1
  430. package/dist/core/item/actionability.d.ts +57 -0
  431. package/dist/core/item/actionability.js +178 -0
  432. package/dist/core/item/actionability.js.map +1 -0
  433. package/dist/core/item/type-registry.js +18 -45
  434. package/dist/core/item/type-registry.js.map +1 -1
  435. package/dist/core/profile/profile-describe.d.ts +64 -0
  436. package/dist/core/profile/profile-describe.js +83 -0
  437. package/dist/core/profile/profile-describe.js.map +1 -0
  438. package/dist/core/profile/profile-lint.d.ts +53 -0
  439. package/dist/core/profile/profile-lint.js +422 -0
  440. package/dist/core/profile/profile-lint.js.map +1 -0
  441. package/dist/core/profile/profile-plan.d.ts +145 -0
  442. package/dist/core/profile/profile-plan.js +0 -0
  443. package/dist/core/profile/profile-plan.js.map +1 -0
  444. package/dist/core/profile/profile-presets.d.ts +218 -0
  445. package/dist/core/profile/profile-presets.js +325 -0
  446. package/dist/core/profile/profile-presets.js.map +1 -0
  447. package/dist/core/schema/fields-file.js +25 -25
  448. package/dist/core/schema/fields-file.js.map +1 -1
  449. package/dist/core/schema/item-types-file.js +3 -3
  450. package/dist/core/schema/item-types-file.js.map +1 -1
  451. package/dist/core/schema/runtime-schema.js +4 -4
  452. package/dist/core/schema/runtime-schema.js.map +1 -1
  453. package/dist/core/schema/status-defs-file.js +3 -3
  454. package/dist/core/schema/status-defs-file.js.map +1 -1
  455. package/dist/core/shared/serialization.js +83 -62
  456. package/dist/core/shared/serialization.js.map +1 -1
  457. package/dist/core/store/item-store.d.ts +1 -0
  458. package/dist/core/store/item-store.js +16 -8
  459. package/dist/core/store/item-store.js.map +1 -1
  460. package/dist/core/store/paths.js +4 -32
  461. package/dist/core/store/paths.js.map +1 -1
  462. package/dist/core/store/settings.js +14 -14
  463. package/dist/core/store/settings.js.map +1 -1
  464. package/dist/core/telemetry/observability.js +50 -54
  465. package/dist/core/telemetry/observability.js.map +1 -1
  466. package/dist/core/telemetry/runtime.js +11 -2
  467. package/dist/core/telemetry/runtime.js.map +1 -1
  468. package/dist/core/test/background-runs.js +3 -2
  469. package/dist/core/test/background-runs.js.map +1 -1
  470. package/dist/core/validate/linked-artifact-reference.d.ts +24 -0
  471. package/dist/core/validate/linked-artifact-reference.js +41 -0
  472. package/dist/core/validate/linked-artifact-reference.js.map +1 -0
  473. package/dist/mcp/server.js +183 -83
  474. package/dist/mcp/server.js.map +1 -1
  475. package/dist/mcp/tool-definitions.js +33 -2
  476. package/dist/mcp/tool-definitions.js.map +1 -1
  477. package/dist/sdk/cli-contracts/commander-types.d.ts +1 -0
  478. package/dist/sdk/cli-contracts/commander-types.js +15 -2
  479. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  480. package/dist/sdk/cli-contracts/enum-contracts.d.ts +3 -3
  481. package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
  482. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  483. package/dist/sdk/cli-contracts/flag-contracts.d.ts +149 -0
  484. package/dist/sdk/cli-contracts/flag-contracts.js +1583 -0
  485. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -0
  486. package/dist/sdk/cli-contracts/string-lists.d.ts +14 -0
  487. package/dist/sdk/cli-contracts/string-lists.js +20 -0
  488. package/dist/sdk/cli-contracts/string-lists.js.map +1 -0
  489. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -1
  490. package/dist/sdk/cli-contracts/tool-option-contracts.js +51 -109
  491. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  492. package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +17 -0
  493. package/dist/sdk/cli-contracts/tool-parameter-tables.js +54 -5
  494. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  495. package/dist/sdk/cli-contracts/tool-schema.d.ts +74 -0
  496. package/dist/sdk/cli-contracts/tool-schema.js +840 -0
  497. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -0
  498. package/dist/sdk/cli-contracts.d.ts +13 -193
  499. package/dist/sdk/cli-contracts.js +5 -2277
  500. package/dist/sdk/cli-contracts.js.map +1 -1
  501. package/dist/sdk/compose.d.ts +7 -4
  502. package/dist/sdk/compose.js +64 -14
  503. package/dist/sdk/compose.js.map +1 -1
  504. package/dist/sdk/define.d.ts +14 -0
  505. package/dist/sdk/define.js +17 -2
  506. package/dist/sdk/define.js.map +1 -1
  507. package/dist/sdk/index.d.ts +14 -3
  508. package/dist/sdk/index.js +14 -3
  509. package/dist/sdk/index.js.map +1 -1
  510. package/dist/sdk/testing.d.ts +82 -2
  511. package/dist/sdk/testing.js +74 -3
  512. package/dist/sdk/testing.js.map +1 -1
  513. package/docs/AGENT_GUIDE.md +2 -0
  514. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  515. package/docs/COMMANDS.md +37 -0
  516. package/docs/EXTENSIONS.md +12 -13
  517. package/docs/RELEASING.md +6 -1
  518. package/docs/SDK.md +184 -17
  519. package/docs/TESTING.md +12 -0
  520. package/docs/examples/policy-restricted-extension/README.md +6 -0
  521. package/docs/examples/policy-restricted-extension/index.ts +40 -0
  522. package/docs/examples/policy-restricted-extension/manifest.json +2 -2
  523. package/docs/examples/starter-extension/README.md +14 -2
  524. package/docs/examples/starter-extension/{index.js → index.ts} +51 -6
  525. package/docs/examples/starter-extension/manifest.json +2 -2
  526. package/package.json +20 -7
  527. package/packages/pm-beads/extensions/beads/index.ts +3 -3
  528. package/packages/pm-beads/extensions/beads/manifest.json +2 -2
  529. package/packages/pm-beads/extensions/beads/runtime-loader.ts +19 -7
  530. package/packages/pm-beads/extensions/beads/runtime.ts +155 -37
  531. package/packages/pm-calendar/extensions/calendar/index.ts +3 -3
  532. package/packages/pm-calendar/extensions/calendar/manifest.json +2 -2
  533. package/packages/pm-calendar/extensions/calendar/runtime.ts +2 -2
  534. package/packages/pm-command-kit/extensions/command-kit/index.ts +1 -1
  535. package/packages/pm-command-kit/extensions/command-kit/manifest.json +2 -2
  536. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
  537. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +2 -2
  538. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +1 -1
  539. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +2 -2
  540. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +2 -2
  541. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +1 -1
  542. package/packages/pm-kanban/README.md +97 -0
  543. package/packages/pm-kanban/extensions/kanban/index.ts +191 -0
  544. package/packages/pm-kanban/extensions/kanban/manifest.json +19 -0
  545. package/packages/pm-kanban/package.json +57 -0
  546. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +1 -1
  547. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +2 -2
  548. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +2 -2
  549. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +2 -2
  550. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +1 -1
  551. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -2
  552. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +2 -2
  553. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -1
  554. package/packages/pm-templates/extensions/templates/index.ts +2 -2
  555. package/packages/pm-templates/extensions/templates/manifest.json +2 -2
  556. package/packages/pm-templates/extensions/templates/runtime.ts +1 -1
  557. package/packages/pm-todos/extensions/todos/index.ts +3 -3
  558. package/packages/pm-todos/extensions/todos/manifest.json +2 -2
  559. package/packages/pm-todos/extensions/todos/runtime-loader.ts +19 -7
  560. package/packages/pm-todos/extensions/todos/runtime.ts +177 -43
  561. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +2 -2
  562. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +2 -2
  563. package/scripts/bundle-cli.mjs +1 -1
  564. package/dist/cli-bundle/chunks/activity-54TXGJ2T.js +0 -18
  565. package/dist/cli-bundle/chunks/aggregate-63NWNIBR.js.map +0 -1
  566. package/dist/cli-bundle/chunks/aggregate-YHCYX2EV.js.map +0 -7
  567. package/dist/cli-bundle/chunks/chunk-6EL7SW5C.js.map +0 -7
  568. package/dist/cli-bundle/chunks/chunk-6W3Y65PL.js.map +0 -7
  569. package/dist/cli-bundle/chunks/chunk-AEACLRVH.js.map +0 -7
  570. package/dist/cli-bundle/chunks/chunk-B74BP6IS.js +0 -78
  571. package/dist/cli-bundle/chunks/chunk-B74BP6IS.js.map +0 -7
  572. package/dist/cli-bundle/chunks/chunk-BFFO3AIB.js.map +0 -1
  573. package/dist/cli-bundle/chunks/chunk-EYPINTFR.js.map +0 -7
  574. package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js +0 -75
  575. package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js.map +0 -1
  576. package/dist/cli-bundle/chunks/chunk-GQYJEEFX.js.map +0 -1
  577. package/dist/cli-bundle/chunks/chunk-HBAEFWX3.js.map +0 -7
  578. package/dist/cli-bundle/chunks/chunk-HC2S36NB.js.map +0 -1
  579. package/dist/cli-bundle/chunks/chunk-IAP5KYBQ.js.map +0 -1
  580. package/dist/cli-bundle/chunks/chunk-INPHFO33.js +0 -764
  581. package/dist/cli-bundle/chunks/chunk-INPHFO33.js.map +0 -7
  582. package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js +0 -86
  583. package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js.map +0 -7
  584. package/dist/cli-bundle/chunks/chunk-J7I4C5ZB.js.map +0 -7
  585. package/dist/cli-bundle/chunks/chunk-JKL6HRMV.js.map +0 -7
  586. package/dist/cli-bundle/chunks/chunk-KJZOSF7J.js.map +0 -1
  587. package/dist/cli-bundle/chunks/chunk-L7UXKP2I.js.map +0 -1
  588. package/dist/cli-bundle/chunks/chunk-LNEDHJNQ.js.map +0 -1
  589. package/dist/cli-bundle/chunks/chunk-M6TUBOGW.js.map +0 -1
  590. package/dist/cli-bundle/chunks/chunk-MEXZ5XUM.js.map +0 -7
  591. package/dist/cli-bundle/chunks/chunk-N5B6WZC5.js.map +0 -1
  592. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js +0 -761
  593. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js.map +0 -1
  594. package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js +0 -83
  595. package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js.map +0 -1
  596. package/dist/cli-bundle/chunks/chunk-OF7V47P3.js.map +0 -1
  597. package/dist/cli-bundle/chunks/chunk-OHDQNKJB.js.map +0 -7
  598. package/dist/cli-bundle/chunks/chunk-PRVTGX64.js.map +0 -7
  599. package/dist/cli-bundle/chunks/chunk-RAWA3Y7O.js.map +0 -1
  600. package/dist/cli-bundle/chunks/chunk-SMXSDY7J.js.map +0 -7
  601. package/dist/cli-bundle/chunks/chunk-SUREE24M.js.map +0 -1
  602. package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js +0 -654
  603. package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js.map +0 -1
  604. package/dist/cli-bundle/chunks/chunk-VSAABFGQ.js.map +0 -1
  605. package/dist/cli-bundle/chunks/chunk-XVYKWZNL.js.map +0 -7
  606. package/dist/cli-bundle/chunks/chunk-XXKV4UWE.js.map +0 -7
  607. package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js +0 -657
  608. package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js.map +0 -7
  609. package/dist/cli-bundle/chunks/close-JEBZXONN.js +0 -15
  610. package/dist/cli-bundle/chunks/config-NCNNWF6R.js.map +0 -7
  611. package/dist/cli-bundle/chunks/config-SW3U7XP2.js.map +0 -1
  612. package/dist/cli-bundle/chunks/context-55VEOYI3.js.map +0 -1
  613. package/dist/cli-bundle/chunks/context-5LB7UGKE.js.map +0 -7
  614. package/dist/cli-bundle/chunks/contracts-JXFGBOYT.js.map +0 -1
  615. package/dist/cli-bundle/chunks/contracts-SY6PDFIK.js.map +0 -7
  616. package/dist/cli-bundle/chunks/create-CLSCHGJJ.js +0 -30
  617. package/dist/cli-bundle/chunks/history-ALTM2RRP.js +0 -20
  618. package/dist/cli-bundle/chunks/history-redact-5YGLWUDH.js +0 -21
  619. package/dist/cli-bundle/chunks/init-C4CRHW22.js +0 -21
  620. package/dist/cli-bundle/chunks/register-list-query-CCMHGZTF.js.map +0 -7
  621. package/dist/cli-bundle/chunks/register-list-query-OM3E2KMY.js.map +0 -1
  622. package/dist/cli-bundle/chunks/register-mutation-N3CDEGZU.js.map +0 -1
  623. package/dist/cli-bundle/chunks/register-mutation-UXTTWL6N.js.map +0 -7
  624. package/dist/cli-bundle/chunks/register-setup-G5LTSFYK.js.map +0 -1
  625. package/dist/cli-bundle/chunks/register-setup-TWHKICM2.js.map +0 -7
  626. package/dist/cli-bundle/chunks/restore-LQHXBAY5.js +0 -19
  627. package/dist/cli-bundle/chunks/schema-C6QA367T.js.map +0 -7
  628. package/dist/cli-bundle/chunks/schema-QO5I4FBL.js.map +0 -1
  629. package/dist/cli-bundle/chunks/stats-TCW2SZQG.js.map +0 -7
  630. package/dist/cli-bundle/chunks/stats-TKC6CAKB.js.map +0 -1
  631. package/dist/cli-bundle/chunks/test-WA6RZGM2.js +0 -36
  632. package/dist/cli-bundle/chunks/test-runs-FQ5WNQLP.js.map +0 -1
  633. package/dist/cli-bundle/chunks/test-runs-PX73DMMI.js.map +0 -7
  634. package/dist/cli-bundle/chunks/update-BSKMQOYH.js +0 -28
  635. package/dist/cli-bundle/chunks/update-FIGYNQ2I.js +0 -24
  636. package/dist/cli-bundle/chunks/validate-54SYJ7QW.js.map +0 -1
  637. package/dist/cli-bundle/chunks/validate-HYZNIB6W.js.map +0 -7
  638. package/docs/examples/policy-restricted-extension/index.js +0 -21
  639. package/packages/pm-beads/extensions/beads/index.js +0 -64
  640. package/packages/pm-beads/extensions/beads/runtime-loader.js +0 -86
  641. package/packages/pm-beads/extensions/beads/runtime.js +0 -482
  642. package/packages/pm-calendar/extensions/calendar/index.js +0 -150
  643. package/packages/pm-calendar/extensions/calendar/runtime.js +0 -126
  644. package/packages/pm-command-kit/extensions/command-kit/index.js +0 -181
  645. package/packages/pm-governance-audit/extensions/governance-audit/index.js +0 -177
  646. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +0 -153
  647. package/packages/pm-guide-shell/extensions/guide-shell/index.js +0 -98
  648. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +0 -294
  649. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +0 -18
  650. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +0 -124
  651. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +0 -110
  652. package/packages/pm-search-advanced/extensions/search-advanced/index.js +0 -258
  653. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +0 -361
  654. package/packages/pm-templates/extensions/templates/index.js +0 -132
  655. package/packages/pm-templates/extensions/templates/runtime.js +0 -35
  656. package/packages/pm-todos/extensions/todos/index.js +0 -81
  657. package/packages/pm-todos/extensions/todos/runtime-loader.js +0 -86
  658. package/packages/pm-todos/extensions/todos/runtime.js +0 -545
  659. /package/dist/cli-bundle/chunks/{activity-54TXGJ2T.js.map → activity-EJBMXUBH.js.map} +0 -0
  660. /package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js.map → activity-MVSEND6D.js.map} +0 -0
  661. /package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js.map → chunk-3JWQCLR5.js.map} +0 -0
  662. /package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js.map → chunk-4TXTVZL3.js.map} +0 -0
  663. /package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js.map → chunk-4YIMPANT.js.map} +0 -0
  664. /package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js.map → chunk-73PTKMAE.js.map} +0 -0
  665. /package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js.map → chunk-7RIJGN4R.js.map} +0 -0
  666. /package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js.map → chunk-BN3CWK6G.js.map} +0 -0
  667. /package/dist/cli-bundle/chunks/{chunk-J3NMWFIN.js.map → chunk-C2KCIZKZ.js.map} +0 -0
  668. /package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js.map → chunk-CHRNYKNI.js.map} +0 -0
  669. /package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js.map → chunk-D6USKAMA.js.map} +0 -0
  670. /package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js.map → chunk-DLDCPF5X.js.map} +0 -0
  671. /package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js.map → chunk-E2Q2ULMR.js.map} +0 -0
  672. /package/dist/cli-bundle/chunks/{chunk-PEL2NLQE.js.map → chunk-F6VH3LFC.js.map} +0 -0
  673. /package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js.map → chunk-FDEVKXC4.js.map} +0 -0
  674. /package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js.map → chunk-HUYYMTGW.js.map} +0 -0
  675. /package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js.map → chunk-IHXXUIXS.js.map} +0 -0
  676. /package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js.map → chunk-JIP67N2K.js.map} +0 -0
  677. /package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js.map → chunk-KRASIL6M.js.map} +0 -0
  678. /package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js.map → chunk-MLHX6DN5.js.map} +0 -0
  679. /package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js.map → chunk-OB3RJV5F.js.map} +0 -0
  680. /package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js.map → chunk-OUQ5JEFM.js.map} +0 -0
  681. /package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js.map → chunk-QE5UFCCO.js.map} +0 -0
  682. /package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js.map → chunk-SJZTPVFT.js.map} +0 -0
  683. /package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js.map → chunk-V3KLX7U7.js.map} +0 -0
  684. /package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js.map → chunk-Z5BM2FKQ.js.map} +0 -0
  685. /package/dist/cli-bundle/chunks/{chunk-IXAZI443.js.map → chunk-ZEATCVAC.js.map} +0 -0
  686. /package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js.map → chunk-ZFIEEDTJ.js.map} +0 -0
  687. /package/dist/cli-bundle/chunks/{close-JEBZXONN.js.map → close-37KEHLYM.js.map} +0 -0
  688. /package/dist/cli-bundle/chunks/{close-QHMVWM7M.js.map → close-OP3LK7Z2.js.map} +0 -0
  689. /package/dist/cli-bundle/chunks/{create-CLSCHGJJ.js.map → context-7ZEZV3BV.js.map} +0 -0
  690. /package/dist/cli-bundle/chunks/{create-O4VONGPG.js.map → context-XDI4DKKT.js.map} +0 -0
  691. /package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js.map → create-DFMNBKBS.js.map} +0 -0
  692. /package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js.map → create-J5Q2ELZT.js.map} +0 -0
  693. /package/dist/cli-bundle/chunks/{history-RUKPKNY7.js.map → extension-3LRYX7SW.js.map} +0 -0
  694. /package/dist/cli-bundle/chunks/{history-ALTM2RRP.js.map → extension-GMVOIP4O.js.map} +0 -0
  695. /package/dist/cli-bundle/chunks/{gc-BEJMQT64.js.map → gc-FULIVYR4.js.map} +0 -0
  696. /package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js.map → gc-MDGRR2SU.js.map} +0 -0
  697. /package/dist/cli-bundle/chunks/{history-redact-5YGLWUDH.js.map → history-5XUSLAJA.js.map} +0 -0
  698. /package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js.map → history-X4OSES6K.js.map} +0 -0
  699. /package/dist/cli-bundle/chunks/{init-HBFGYS66.js.map → history-redact-45YW65BK.js.map} +0 -0
  700. /package/dist/cli-bundle/chunks/{init-C4CRHW22.js.map → history-redact-BVHWDXPR.js.map} +0 -0
  701. /package/dist/cli-bundle/chunks/{list-C7R33MD5.js.map → init-KO7CGIRQ.js.map} +0 -0
  702. /package/dist/cli-bundle/chunks/{list-DSN6UNFB.js.map → init-TRYJELH4.js.map} +0 -0
  703. /package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js.map → list-ROT7JF62.js.map} +0 -0
  704. /package/dist/cli-bundle/chunks/{restore-LQHXBAY5.js.map → list-Y6AU5BJS.js.map} +0 -0
  705. /package/dist/cli-bundle/chunks/{search-2EI6EAXH.js.map → restore-DKMCLPI5.js.map} +0 -0
  706. /package/dist/cli-bundle/chunks/{search-QBFBLQRO.js.map → restore-IRAKSWIW.js.map} +0 -0
  707. /package/dist/cli-bundle/chunks/{test-NV2DRPUS.js.map → schema-OLT6LVKH.js.map} +0 -0
  708. /package/dist/cli-bundle/chunks/{test-WA6RZGM2.js.map → schema-XJXKJQF5.js.map} +0 -0
  709. /package/dist/cli-bundle/chunks/{update-BSKMQOYH.js.map → search-CX5UMV4H.js.map} +0 -0
  710. /package/dist/cli-bundle/chunks/{update-FIGYNQ2I.js.map → search-KP6H7COV.js.map} +0 -0
  711. /package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js.map → telemetry-DIFPXCAT.js.map} +0 -0
  712. /package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js.map → telemetry-WTYFUPRL.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sources":["core/extensions/loader.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/extensions/loader\n *\n * Implements extension runtime contracts and governance for Loader.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { pathExists } from \"../fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../fs/path-utils.js\";\nimport { resolvePmPackageRootFromModule } from \"../packages/root.js\";\nimport { resolveGlobalPmRoot } from \"../store/paths.js\";\nimport type { GlobalOptions } from \"../shared/command-types.js\";\nimport { asRecordLoose } from \"../shared/primitives.js\";\nimport { flattenFlagListValue, isFlagDefaultValueCoercible, resolveFlagValueKind } from \"./flag-value-types.js\";\nimport { KNOWN_ITEM_FIELD_TYPES, normalizeItemFieldType, suggestKnownItemFieldType } from \"./item-field-types.js\";\nimport {\n compareComparableVersions,\n evaluatePmMaxVersionBound,\n evaluatePmMinVersionBound,\n parseComparableVersion,\n type PmVersionBoundEvaluation,\n} from \"./version-compat.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in sibling modules. They are imported for the\n// discovery/activation code that stays here and re-exported below so existing\n// import sites (sdk/index.ts, commands/extension.ts, health.ts, tests, …) keep\n// importing everything from \"./loader.js\" unchanged.\nimport {\n normalizeNames,\n isKnownExtensionCapability,\n collectUnknownExtensionCapabilities,\n resolveLegacyExtensionCapabilityAlias,\n normalizeManifestCapabilities,\n suggestKnownExtensionCapability,\n formatUnknownExtensionCapabilityWarning,\n formatLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nimport {\n normalizeExtensionPolicy,\n serializeExtensionPolicy,\n hydrateExtensionPolicy,\n normalizePolicySandboxProfile,\n evaluateExtensionPolicyForExtension,\n evaluateExtensionPolicyForCapability,\n evaluateExtensionPolicyForRegistration,\n type NormalizedExtensionPolicy,\n type PolicyExtensionRef,\n} from \"./extension-policy.js\";\nimport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nimport {\n normalizeCommandName,\n cloneContextSnapshot,\n cloneCommandOptionsSnapshot,\n cloneGlobalOptionsSnapshot,\n} from \"./extension-runtime-helpers.js\";\nexport {\n parseUnknownExtensionCapabilityWarning,\n parseLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nexport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nexport {\n runBeforeCommandHooks,\n runAfterCommandHooks,\n runOnWriteHooks,\n runOnReadHooks,\n runOnIndexHooks,\n runCommandHandler,\n runParserOverride,\n runPreflightOverride,\n runServiceOverrideSync,\n runServiceOverride,\n runCommandOverride,\n runRendererOverride,\n} from \"./extension-hook-runtime.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n KNOWN_EXTENSION_SERVICE_NAMES,\n createDefaultExtensionGovernancePolicy,\n type ExtensionDeactivationFailure,\n type ExtensionDeactivationOptions,\n type ExtensionDeactivationResult,\n type ExtensionSelfIdentity,\n type ExtensionCapability,\n type ExtensionPolicyMode,\n type ExtensionPolicySurface,\n type ExtensionSandboxProfile,\n type ExtensionGovernancePolicy,\n type ExtensionTrustMode,\n type PmMaxVersionExceededMode,\n type ExtensionLayer,\n type ExtensionStatus,\n type ExtensionManifest,\n type ExtensionManifestEngines,\n type ExtensionDiagnostic,\n type EffectiveExtension,\n type ExtensionDiscoveryResult,\n type LoadedExtension,\n type FailedExtensionLoad,\n type ExtensionLoadResult,\n type BeforeCommandHookContext,\n type AfterCommandHookContext,\n type OnWriteHookContext,\n type OnReadHookContext,\n type OnIndexHookContext,\n type BeforeCommandHook,\n type AfterCommandHook,\n type OnWriteHook,\n type OnReadHook,\n type OnIndexHook,\n type OutputRendererFormat,\n type CommandOverride,\n type RendererOverride,\n type CommandHandler,\n type ParserOverride,\n type PreflightOverride,\n type ServiceOverride,\n type ExtensionHookRegistry,\n type CommandOverrideContext,\n type RendererOverrideContext,\n type CommandHandlerContext,\n type ParserOverrideContext,\n type ParserOverrideDelta,\n type PreflightOverrideContext,\n type PreflightRuntimeDecision,\n type PreflightOverrideDelta,\n type ExtensionServiceName,\n type ServiceOverrideContext,\n type ExtensionCommandArgumentDefinition,\n type CommandDefinition,\n type FlagValueType,\n type FlagDefinition,\n type SchemaFieldDefinition,\n type SchemaItemTypeCommandOptionPolicyDefinition,\n type SchemaItemTypeOptionDefinition,\n type SchemaItemTypeDefinition,\n type SchemaMigrationRunContext,\n type SchemaMigrationRunner,\n type SchemaMigrationDefinition,\n type ImportExportContext,\n type ImportExportRegistrationOptions,\n type Importer,\n type Exporter,\n type ExtensionSearchMode,\n type SearchProviderQueryContext,\n type SearchProviderHit,\n type SearchProviderQueryResult,\n type SearchProviderEmbedBatchContext,\n type SearchProviderEmbedContext,\n type SearchProviderDefinition,\n type VectorStoreQueryHit,\n type VectorStoreQueryContext,\n type VectorStoreUpsertPoint,\n type VectorStoreUpsertContext,\n type VectorStoreDeleteContext,\n type VectorStoreAdapterDefinition,\n type RegisteredExtensionCommandOverride,\n type RegisteredExtensionCommandHandler,\n type RegisteredExtensionParserOverride,\n type RegisteredExtensionPreflightOverride,\n type RegisteredExtensionServiceOverride,\n type RegisteredExtensionRendererOverride,\n type ExtensionCommandRegistry,\n type ExtensionParserRegistry,\n type ExtensionPreflightRegistry,\n type ExtensionServiceRegistry,\n type ExtensionRendererRegistry,\n type RegisteredExtensionFlagDefinitions,\n type RegisteredExtensionCommandDefinition,\n type RegisteredExtensionSchemaFieldDefinitions,\n type RegisteredExtensionSchemaItemTypeDefinitions,\n type RegisteredExtensionSchemaMigrationDefinition,\n type RegisteredExtensionImporter,\n type RegisteredExtensionExporter,\n type RegisteredExtensionSearchProvider,\n type RegisteredExtensionVectorStoreAdapter,\n type ExtensionRegistrationRegistry,\n type ExtensionRegistrationCounts,\n type ExtensionApi,\n type FailedExtensionActivation,\n type ExtensionActivationFailureTrace,\n type ExtensionActivationResult,\n type ExtensionCandidate,\n type ExtensionLayerScanResult,\n type ScannedExtensionDirectory,\n type LegacyExtensionCapabilityAliasMapping,\n type DiscoverExtensionsOptions,\n type ActivatableExtension,\n type ServiceOverrideResult,\n type CommandOverrideResult,\n type CommandHandlerResult,\n type ParserOverrideResult,\n type PreflightOverrideResult,\n type RendererOverrideResult,\n type UnknownExtensionCapabilityWarningDetails,\n type RegisteredExtensionHook,\n} from \"./extension-types.js\";\nexport * from \"./extension-types.js\";\n\nconst DEFAULT_EXTENSION_PRIORITY = 100;\nlet currentPmCliVersionPromise: Promise<string | null> | null = null;\n\n/* Types now in extension-types.ts - re-exported via `export * from \"./extension-types.js\"` above */\n\nconst DEFAULT_EXTENSION_POLICY: ExtensionGovernancePolicy = Object.freeze(createDefaultExtensionGovernancePolicy());\n\nlet extensionReloadEpoch = 0;\n\n/**\n * Implements next extension reload token for the public runtime surface of this module.\n */\nexport function nextExtensionReloadToken(seed = Date.now()): string {\n extensionReloadEpoch += 1;\n return `${extensionReloadEpoch}-${seed}`;\n}\n\nfunction parseOptionalManifestString(candidate: Record<string, unknown>, field: string): string | null | undefined {\n const value = candidate[field];\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\nfunction parseManifestEngines(value: unknown): ExtensionManifestEngines | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const enginesRecord = asRecordLoose(value);\n if (!enginesRecord) {\n return null;\n }\n const engines: ExtensionManifestEngines = {};\n for (const key of Object.keys(enginesRecord).sort((left, right) => left.localeCompare(right))) {\n if (key.trim().length === 0) {\n return null;\n }\n const engineValue = enginesRecord[key];\n if (typeof engineValue !== \"string\" || engineValue.trim().length === 0) {\n return null;\n }\n engines[key.trim()] = engineValue.trim();\n }\n return Object.keys(engines).length > 0 ? engines : undefined;\n}\n\nfunction parseManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n\n const candidate = raw as Record<string, unknown>;\n if (typeof candidate.name !== \"string\" || candidate.name.trim().length === 0) {\n return null;\n }\n if (typeof candidate.version !== \"string\" || candidate.version.trim().length === 0) {\n return null;\n }\n if (typeof candidate.entry !== \"string\" || candidate.entry.trim().length === 0) {\n return null;\n }\n\n let priority = DEFAULT_EXTENSION_PRIORITY;\n if (\"priority\" in candidate && candidate.priority !== undefined && candidate.priority !== null) {\n if (typeof candidate.priority !== \"number\" || !Number.isInteger(candidate.priority)) {\n return null;\n }\n priority = candidate.priority;\n }\n\n let manifestVersion: number | undefined;\n if (\"manifest_version\" in candidate && candidate.manifest_version !== undefined && candidate.manifest_version !== null) {\n if (typeof candidate.manifest_version !== \"number\" || !Number.isInteger(candidate.manifest_version)) {\n return null;\n }\n manifestVersion = candidate.manifest_version;\n }\n\n const pmMinVersion = parseOptionalManifestString(candidate, \"pm_min_version\");\n if (pmMinVersion === null) {\n return null;\n }\n\n const pmMaxVersion = parseOptionalManifestString(candidate, \"pm_max_version\");\n if (pmMaxVersion === null) {\n return null;\n }\n\n const engines = parseManifestEngines(candidate.engines);\n if (engines === null) {\n return null;\n }\n\n let trusted: boolean | undefined;\n if (\"trusted\" in candidate && candidate.trusted !== undefined && candidate.trusted !== null) {\n if (typeof candidate.trusted !== \"boolean\") {\n return null;\n }\n trusted = candidate.trusted;\n }\n\n let sandboxProfile: ExtensionSandboxProfile | undefined;\n if (\"sandbox_profile\" in candidate && candidate.sandbox_profile !== undefined && candidate.sandbox_profile !== null) {\n if (typeof candidate.sandbox_profile !== \"string\") {\n return null;\n }\n const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);\n if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {\n return null;\n }\n sandboxProfile = normalizedProfile;\n }\n\n let provenance: ExtensionManifest[\"provenance\"] | undefined;\n if (\"provenance\" in candidate && candidate.provenance !== undefined && candidate.provenance !== null) {\n const provenanceRecord = asRecordLoose(candidate.provenance);\n if (!provenanceRecord) {\n return null;\n }\n const source =\n typeof provenanceRecord.source === \"string\" && provenanceRecord.source.trim().length > 0\n ? provenanceRecord.source.trim()\n : undefined;\n const signature =\n typeof provenanceRecord.signature === \"string\" && provenanceRecord.signature.trim().length > 0\n ? provenanceRecord.signature.trim()\n : undefined;\n const attestation =\n typeof provenanceRecord.attestation === \"string\" && provenanceRecord.attestation.trim().length > 0\n ? provenanceRecord.attestation.trim()\n : undefined;\n const verified =\n provenanceRecord.verified === undefined || provenanceRecord.verified === null\n ? undefined\n : typeof provenanceRecord.verified === \"boolean\"\n ? provenanceRecord.verified\n : null;\n if (verified === null) {\n return null;\n }\n provenance = {\n ...(source ? { source } : {}),\n ...(signature ? { signature } : {}),\n ...(attestation ? { attestation } : {}),\n ...(typeof verified === \"boolean\" ? { verified } : {}),\n };\n }\n\n let permissions: ExtensionManifest[\"permissions\"] | undefined;\n if (\"permissions\" in candidate && candidate.permissions !== undefined && candidate.permissions !== null) {\n const permissionsRecord = asRecordLoose(candidate.permissions);\n if (!permissionsRecord) {\n return null;\n }\n const parseOptionalBoolean = (value: unknown): boolean | undefined | null => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n return null;\n }\n return value;\n };\n const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);\n const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);\n const network = parseOptionalBoolean(permissionsRecord.network);\n const envRead = parseOptionalBoolean(permissionsRecord.env_read);\n const envWrite = parseOptionalBoolean(permissionsRecord.env_write);\n const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);\n if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {\n return null;\n }\n permissions = {\n ...(typeof fsRead === \"boolean\" ? { fs_read: fsRead } : {}),\n ...(typeof fsWrite === \"boolean\" ? { fs_write: fsWrite } : {}),\n ...(typeof network === \"boolean\" ? { network } : {}),\n ...(typeof envRead === \"boolean\" ? { env_read: envRead } : {}),\n ...(typeof envWrite === \"boolean\" ? { env_write: envWrite } : {}),\n ...(typeof processSpawn === \"boolean\" ? { process_spawn: processSpawn } : {}),\n };\n }\n\n let capabilities: string[] = [];\n let legacyCapabilityAliases: LegacyExtensionCapabilityAliasMapping[] = [];\n if (\"capabilities\" in candidate && candidate.capabilities !== undefined && candidate.capabilities !== null) {\n if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== \"string\")) {\n return null;\n }\n const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities as string[]);\n capabilities = normalizedCapabilities.capabilities;\n legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;\n }\n\n let activation: ExtensionManifest[\"activation\"] | undefined;\n if (\"activation\" in candidate && candidate.activation !== undefined && candidate.activation !== null) {\n const activationRecord = asRecordLoose(candidate.activation);\n if (!activationRecord) {\n return null;\n }\n const rawCommands = activationRecord.commands;\n if (rawCommands !== undefined && rawCommands !== null) {\n if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== \"string\")) {\n return null;\n }\n const commands = [\n ...new Set(\n rawCommands\n .map((value) => normalizeCommandName(value))\n .filter((value) => value.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (commands.length > 0) {\n activation = {\n commands,\n };\n }\n }\n }\n\n return {\n name: candidate.name.trim(),\n version: candidate.version.trim(),\n entry: candidate.entry.trim(),\n priority,\n manifest_version: manifestVersion,\n pm_min_version: pmMinVersion,\n pm_max_version: pmMaxVersion,\n engines,\n trusted,\n provenance,\n sandbox_profile: sandboxProfile,\n permissions,\n activation,\n capabilities,\n legacy_capability_aliases: legacyCapabilityAliases.length > 0 ? legacyCapabilityAliases : undefined,\n };\n}\n\nfunction shouldEnable(name: string, enabled: Set<string>, disabled: Set<string>): boolean {\n if (disabled.has(name)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(name);\n}\n\nasync function isCanonicalPathWithinDirectory(directory: string, targetPath: string): Promise<boolean> {\n const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);\n return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);\n}\n\n/**\n * Implements resolve extension roots for the public runtime surface of this module.\n */\nexport function resolveExtensionRoots(pmRoot: string, cwd = process.cwd()): { global: string; project: string } {\n return {\n global: path.join(resolveGlobalPmRoot(cwd), \"extensions\"),\n project: path.join(pmRoot, \"extensions\"),\n };\n}\n\nasync function listExtensionDirectories(extensionsRoot: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n}\n\nfunction summarizeCandidate(candidate: ExtensionCandidate): EffectiveExtension {\n const summary: EffectiveExtension = {\n layer: candidate.layer,\n directory: candidate.directory,\n manifest_path: candidate.manifest_path,\n name: candidate.manifest.name,\n version: candidate.manifest.version,\n entry: candidate.manifest.entry,\n priority: candidate.manifest.priority,\n entry_path: candidate.entry_path,\n manifest_version: candidate.manifest.manifest_version,\n pm_min_version: candidate.manifest.pm_min_version,\n pm_max_version: candidate.manifest.pm_max_version,\n engines: candidate.manifest.engines,\n trusted: candidate.manifest.trusted,\n provenance: candidate.manifest.provenance,\n sandbox_profile: candidate.manifest.sandbox_profile,\n permissions: candidate.manifest.permissions,\n capabilities: [...candidate.manifest.capabilities],\n activation: candidate.manifest.activation\n ? {\n commands: [...(candidate.manifest.activation.commands as string[])],\n }\n : undefined,\n };\n if (candidate.source_package) {\n summary.source_package = candidate.source_package;\n }\n return summary;\n}\n\nfunction normalizeManagedSourcePackage(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nasync function readManagedExtensionSourcePackages(extensionsRoot: string): Promise<Map<string, string>> {\n const packages = new Map<string, string>();\n try {\n const parsed = JSON.parse(await fs.readFile(path.join(extensionsRoot, \".managed-extensions.json\"), \"utf8\")) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || !Array.isArray((parsed as { entries?: unknown }).entries)) {\n return packages;\n }\n for (const entry of (parsed as { entries: unknown[] }).entries) {\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n const record = entry as { directory?: unknown; name?: unknown; source?: { package?: unknown } };\n const sourcePackage = normalizeManagedSourcePackage(record.source?.package);\n if (!sourcePackage) {\n continue;\n }\n if (typeof record.directory === \"string\" && record.directory.trim().length > 0) {\n packages.set(`directory:${record.directory.trim()}`, sourcePackage);\n }\n if (typeof record.name === \"string\" && record.name.trim().length > 0) {\n packages.set(`name:${record.name.trim()}`, sourcePackage);\n }\n }\n } catch {\n return packages;\n }\n return packages;\n}\n\nfunction sortCandidates(candidates: ExtensionCandidate[]): ExtensionCandidate[] {\n return [...candidates].sort((left, right) => {\n if (left.manifest.priority !== right.manifest.priority) {\n return left.manifest.priority - right.manifest.priority;\n }\n const byName = left.manifest.name.localeCompare(right.manifest.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n}\n\nfunction buildEffectiveExtensions(\n globalCandidates: ExtensionCandidate[],\n projectCandidates: ExtensionCandidate[],\n): ExtensionCandidate[] {\n const ordered = [...sortCandidates(globalCandidates), ...sortCandidates(projectCandidates)];\n const effective: ExtensionCandidate[] = [];\n for (const candidate of ordered) {\n const existingIndex = effective.findIndex((entry) => entry.manifest.name === candidate.manifest.name);\n if (existingIndex >= 0) {\n effective.splice(existingIndex, 1);\n }\n effective.push(candidate);\n }\n return effective;\n}\n\nasync function scanExtensionLayer(\n layer: ExtensionLayer,\n extensionsRoot: string,\n enabled: Set<string>,\n disabled: Set<string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ExtensionLayerScanResult> {\n const diagnostics: ExtensionDiagnostic[] = [];\n const warnings: string[] = [];\n const candidates: ExtensionCandidate[] = [];\n const directories = await listExtensionDirectories(extensionsRoot);\n const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);\n\n for (const directory of directories) {\n const scanned = await scanExtensionDirectory(\n layer,\n extensionsRoot,\n directory,\n enabled,\n disabled,\n managedSourcePackages,\n pmMaxVersionExceededMode,\n );\n diagnostics.push(scanned.diagnostic);\n warnings.push(...scanned.warnings);\n if (scanned.candidate) {\n candidates.push(scanned.candidate);\n }\n }\n\n return { diagnostics, warnings, candidates };\n}\n\nasync function scanExtensionDirectory(\n layer: ExtensionLayer,\n extensionsRoot: string,\n directory: string,\n enabled: Set<string>,\n disabled: Set<string>,\n managedSourcePackages: ReadonlyMap<string, string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ScannedExtensionDirectory> {\n const extensionDir = path.join(extensionsRoot, directory);\n const manifestPath = path.join(extensionDir, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [`extension_manifest_missing:${layer}:${directory}`],\n candidate: null,\n };\n }\n\n let manifest: ExtensionManifest | null = null;\n try {\n const parsed = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n manifest = parseManifest(parsed);\n } catch {\n manifest = null;\n }\n\n if (!manifest) {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [`extension_manifest_invalid:${layer}:${directory}`],\n candidate: null,\n };\n }\n\n const entryPath = path.resolve(extensionDir, manifest.entry);\n const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);\n const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;\n const entryWithinDirectory =\n entryWithinDirectoryByPath && entryExists\n ? await isCanonicalPathWithinDirectory(extensionDir, entryPath)\n : entryWithinDirectoryByPath;\n const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);\n const extensionWarnings: string[] = [];\n if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {\n extensionWarnings.push(\n formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases),\n );\n }\n for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {\n extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));\n }\n if (!entryWithinDirectory) {\n extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);\n } else if (!entryExists) {\n extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);\n }\n const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);\n if (pmVersionCompatibility.warning) {\n extensionWarnings.push(pmVersionCompatibility.warning);\n }\n const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);\n if (pmMaxVersionCompatibility.warning) {\n extensionWarnings.push(pmMaxVersionCompatibility.warning);\n }\n const extensionReady =\n entryWithinDirectory &&\n entryExists &&\n pmVersionCompatibility.allowed &&\n pmMaxVersionCompatibility.allowed;\n const sourcePackage =\n managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);\n\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: manifest.name,\n version: manifest.version,\n entry: manifest.entry,\n priority: manifest.priority,\n entry_path: entryPath,\n enabled: enabledForLoad,\n status: extensionReady ? \"ok\" : \"warn\",\n },\n warnings: extensionWarnings,\n candidate:\n extensionReady && enabledForLoad\n ? {\n layer,\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n source_package: sourcePackage,\n }\n : null,\n };\n}\n\n\n/**\n * Implements discover extensions for the public runtime surface of this module.\n */\nexport async function discoverExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionDiscoveryResult> {\n const roots = resolveExtensionRoots(options.pmRoot, options.cwd ?? process.cwd());\n const configured_enabled = normalizeNames(options.settings.extensions.enabled);\n const configured_disabled = normalizeNames(options.settings.extensions.disabled);\n const policy = normalizeExtensionPolicy(options.settings);\n const serializedPolicy = serializeExtensionPolicy(policy);\n\n if (options.noExtensions) {\n return {\n disabled_by_flag: true,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [],\n effective: [],\n warnings: [...policy.warnings],\n policy: serializedPolicy,\n };\n }\n\n const enabled = new Set(configured_enabled);\n const disabled = new Set(configured_disabled);\n const globalScan = await scanExtensionLayer(\"global\", roots.global, enabled, disabled, policy.pmMaxVersionExceededMode.global);\n const projectScan = await scanExtensionLayer(\"project\", roots.project, enabled, disabled, policy.pmMaxVersionExceededMode.project);\n const policyWarnings: string[] = [...policy.warnings];\n const effectiveCandidates = buildEffectiveExtensions(globalScan.candidates, projectScan.candidates);\n const effective: EffectiveExtension[] = [];\n for (const candidate of effectiveCandidates) {\n const extensionRef = {\n layer: candidate.layer,\n name: candidate.manifest.name,\n trusted: candidate.manifest.trusted === true,\n provenanceVerified: candidate.manifest.provenance?.verified === true,\n sandboxProfile: candidate.manifest.sandbox_profile,\n permissions:\n candidate.manifest.permissions && typeof candidate.manifest.permissions === \"object\"\n ? {\n fs_read: candidate.manifest.permissions.fs_read,\n fs_write: candidate.manifest.permissions.fs_write,\n network: candidate.manifest.permissions.network,\n env_read: candidate.manifest.permissions.env_read,\n env_write: candidate.manifest.permissions.env_write,\n process_spawn: candidate.manifest.permissions.process_spawn,\n }\n : undefined,\n };\n const extensionDecision = evaluateExtensionPolicyForExtension(policy, extensionRef);\n if (extensionDecision.warning) {\n policyWarnings.push(extensionDecision.warning);\n }\n if (!extensionDecision.allowed) {\n continue;\n }\n for (const capability of candidate.manifest.capabilities) {\n const capabilityDecision = evaluateExtensionPolicyForCapability(policy, extensionRef, capability);\n if (capabilityDecision.warning) {\n policyWarnings.push(capabilityDecision.warning);\n }\n }\n effective.push(summarizeCandidate(candidate));\n }\n\n return {\n disabled_by_flag: false,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [...globalScan.diagnostics, ...projectScan.diagnostics],\n effective,\n warnings: [...new Set([...globalScan.warnings, ...projectScan.warnings, ...policyWarnings])],\n policy: serializedPolicy,\n };\n}\n\nfunction formatUnknownError(error: unknown): string {\n if (error instanceof Error && error.message.trim().length > 0) {\n return error.message;\n }\n return String(error);\n}\n\nasync function readCurrentPmCliVersion(): Promise<string | null> {\n try {\n const packageRoot = resolvePmPackageRootFromModule(import.meta.url, [\"../../..\"]);\n const raw = await fs.readFile(path.join(packageRoot, \"package.json\"), \"utf8\");\n const parsed = JSON.parse(raw) as { version?: unknown };\n return typeof parsed.version === \"string\" && parsed.version.trim().length > 0 ? parsed.version.trim() : null;\n } catch {\n return null;\n }\n}\n\nfunction resolveCurrentPmCliVersion(): Promise<string | null> {\n currentPmCliVersionPromise ??= readCurrentPmCliVersion();\n return currentPmCliVersionPromise;\n}\n\nfunction formatPmVersionCompatibilityWarning(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n evaluation: PmVersionBoundEvaluation,\n): string | undefined {\n const current = evaluation.current ?? \"unknown\";\n if (evaluation.kind === \"pm_min_version\") {\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_min_version_invalid:${layer}:${manifest.name}:required=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_min_version_unchecked:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n case \"unmet\":\n return `extension_pm_min_version_unmet:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n }\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_max_version_invalid:${layer}:${manifest.name}:allowed=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_max_version_unchecked:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded_warn\":\n return `extension_pm_max_version_exceeded_warn:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded\":\n return `extension_pm_max_version_exceeded:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n}\n\nasync function evaluatePmMinVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n): Promise<{ allowed: boolean; warning?: string }> {\n // Resolve the current CLI version only when a bound is declared, so the common\n // no-bound case never reads package.json.\n if (manifest.pm_min_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMinVersionBound(manifest.pm_min_version, await resolveCurrentPmCliVersion());\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function evaluatePmMaxVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n exceededMode: PmMaxVersionExceededMode,\n): Promise<{ allowed: boolean; warning?: string }> {\n if (manifest.pm_max_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMaxVersionBound(\n manifest.pm_max_version,\n await resolveCurrentPmCliVersion(),\n exceededMode,\n );\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function fingerprintPath(pathToInspect: string): Promise<string> {\n try {\n const stats = await fs.stat(pathToInspect);\n return `${Math.trunc(stats.mtimeMs)}-${stats.size}`;\n } catch {\n return \"missing\";\n }\n}\n\nasync function resolveExtensionImportHref(\n extension: EffectiveExtension,\n options: DiscoverExtensionsOptions,\n): Promise<string> {\n const baseUrl = new URL(pathToFileURL(extension.entry_path).href);\n const shouldCacheBust = options.cache_bust === true || typeof options.reload_token === \"string\";\n if (!shouldCacheBust) {\n return baseUrl.href;\n }\n const [entryFingerprint, manifestFingerprint] = await Promise.all([\n fingerprintPath(extension.entry_path),\n fingerprintPath(extension.manifest_path),\n ]);\n const reloadToken = options.reload_token ?? nextExtensionReloadToken();\n baseUrl.searchParams.set(\"pm_ext_reload\", reloadToken);\n baseUrl.searchParams.set(\"pm_ext_entry\", entryFingerprint);\n baseUrl.searchParams.set(\"pm_ext_manifest\", manifestFingerprint);\n return baseUrl.href;\n}\n\n/**\n * Implements load extensions for the public runtime surface of this module.\n */\nexport async function loadExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionLoadResult> {\n const discovery = await discoverExtensions(options);\n const loaded: LoadedExtension[] = [];\n const failed: FailedExtensionLoad[] = [];\n const warnings = [...discovery.warnings];\n\n if (discovery.disabled_by_flag) {\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n }\n\n for (const extension of discovery.effective) {\n try {\n const importHref = await resolveExtensionImportHref(extension, options);\n const module = await import(importHref);\n loaded.push({\n ...extension,\n module,\n });\n } catch (error: unknown) {\n warnings.push(`extension_load_failed:${extension.layer}:${extension.name}`);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n });\n }\n }\n\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n}\n\ntype HookName = keyof ExtensionHookRegistry;\nconst DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5_000;\nconst MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2_147_483_647;\n\nfunction toActivatableExtension(source: Record<string, unknown>): ActivatableExtension {\n // Bind to `source` so a module/default-export authored with methods (or a class\n // instance) keeps its `this` across both lifecycle calls — `activate` is a\n // method call on a fresh object and `deactivate` is invoked bare, so without\n // binding the two would see different (or undefined) `this`.\n const activate = source.activate as ActivatableExtension[\"activate\"];\n const activatable: ActivatableExtension = {\n activate: activate.bind(source),\n };\n if (typeof source.deactivate === \"function\") {\n const deactivate = source.deactivate as NonNullable<ActivatableExtension[\"deactivate\"]>;\n activatable.deactivate = deactivate.bind(source);\n }\n return activatable;\n}\n\nfunction resolveActivatableExtension(module: unknown): ActivatableExtension | null {\n const moduleRecord = asRecordLoose(module);\n if (!moduleRecord) {\n return null;\n }\n\n if (typeof moduleRecord.activate === \"function\") {\n return toActivatableExtension(moduleRecord);\n }\n\n const defaultExport = asRecordLoose(moduleRecord.default);\n if (defaultExport && typeof defaultExport.activate === \"function\") {\n return toActivatableExtension(defaultExport);\n }\n\n return null;\n}\n\n/**\n * Run the optional `deactivate` teardown hook for every loaded extension that\n * exports one. Best-effort: a throwing teardown is captured as a warning and a\n * failure entry rather than propagated, so one extension cannot block another's\n * cleanup. Hosts call this on shutdown/reload (e.g. the MCP server between\n * native-action requests) to release resources opened during `activate`.\n *\n * Pass the `activationResult` to skip extensions whose `activate` failed — they\n * never fully initialized, so (VS Code-style) their `deactivate` must not run.\n * Teardowns run concurrently and each hook has a bounded timeout by default, so\n * one slow or hanging hook cannot serialize the rest or block the host\n * indefinitely unless the host explicitly disables the timeout; the returned\n * warnings/failures preserve loaded order.\n */\nexport async function deactivateExtensions(\n loadResult: ExtensionLoadResult,\n activationResult?: Pick<ExtensionActivationResult, \"failed\">,\n options: ExtensionDeactivationOptions = {},\n): Promise<ExtensionDeactivationResult> {\n const timeoutMs = normalizeExtensionDeactivateTimeout(options?.deactivate_timeout_ms);\n const failedActivationKeys = new Set(\n (activationResult?.failed ?? []).map((entry) => `${entry.layer}:${entry.name}`),\n );\n const targets: Array<{ extension: LoadedExtension; deactivate: () => void | Promise<void> }> = [];\n for (const extension of loadResult.loaded) {\n if (failedActivationKeys.has(`${extension.layer}:${extension.name}`)) {\n continue;\n }\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable || typeof activatable.deactivate !== \"function\") {\n continue;\n }\n targets.push({ extension, deactivate: activatable.deactivate });\n }\n const outcomes = await Promise.all(\n targets.map(async ({ extension, deactivate }) => {\n try {\n await runExtensionDeactivateWithTimeout(deactivate, timeoutMs);\n return { ok: true as const };\n } catch (error: unknown) {\n return { ok: false as const, layer: extension.layer, name: extension.name, error: formatUnknownError(error) };\n }\n }),\n );\n const warnings: string[] = [];\n const failed: ExtensionDeactivationFailure[] = [];\n let deactivated = 0;\n for (const outcome of outcomes) {\n if (outcome.ok) {\n deactivated += 1;\n continue;\n }\n warnings.push(`extension_deactivate_failed:${outcome.layer}:${outcome.name}`);\n failed.push({ layer: outcome.layer, name: outcome.name, error: outcome.error });\n }\n return { deactivated, warnings, failed };\n}\n\nfunction normalizeExtensionDeactivateTimeout(rawTimeout: unknown): number {\n if (typeof rawTimeout !== \"number\" || rawTimeout < 0) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n if (rawTimeout === 0 || rawTimeout === Infinity) {\n return 0;\n }\n if (!Number.isFinite(rawTimeout)) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n return Math.min(MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS, Math.max(1, Math.floor(rawTimeout)));\n}\n\nasync function runExtensionDeactivateWithTimeout(\n deactivate: () => void | Promise<void>,\n timeoutMs: number,\n): Promise<void> {\n if (timeoutMs === 0) {\n await deactivate();\n return;\n }\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n // A timed-out deactivate promise may still finish later; JavaScript promises\n // are not cancellable, so the host only stops waiting and consumes any late\n // rejection from the hook.\n const deactivatePromise = Promise.resolve().then(() => deactivate());\n deactivatePromise.catch(() => {});\n await Promise.race([\n deactivatePromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n reject(new Error(`extension deactivate timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n timeoutHandle.unref?.();\n }),\n ]);\n } finally {\n clearTimeout(timeoutHandle as ReturnType<typeof setTimeout>);\n }\n}\n\nfunction isOutputRendererFormat(value: string): value is OutputRendererFormat {\n return value === \"toon\" || value === \"json\";\n}\n\nfunction isExtensionServiceName(value: string): value is ExtensionServiceName {\n return KNOWN_EXTENSION_SERVICE_NAMES.includes(value as ExtensionServiceName);\n}\n\nfunction assertHookHandler(hookName: string, hook: unknown): void {\n if (typeof hook !== \"function\") {\n throw new TypeError(`api.hooks.${hookName} requires a function handler`);\n }\n}\n\nfunction assertNonEmptyString(name: string, value: unknown): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} requires a non-empty string`);\n }\n return value.trim();\n}\n\nfunction assertFunctionHandler(name: string, value: unknown): void {\n if (typeof value !== \"function\") {\n throw new TypeError(`${name} requires a function handler`);\n }\n}\n\nfunction normalizeRegistrationName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toRegistrationCommandPath(name: string, action: \"import\" | \"export\"): string {\n return normalizeCommandName(`${name} ${action}`);\n}\n\nfunction sanitizeRegistrationValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => sanitizeRegistrationValue(entry));\n }\n if (typeof value === \"function\") {\n return \"[Function]\";\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n if (typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n const normalized: Record<string, unknown> = {};\n const keys = Object.keys(record).sort((left, right) => left.localeCompare(right));\n for (const key of keys) {\n normalized[key] = sanitizeRegistrationValue(record[key]);\n }\n return normalized;\n }\n return value;\n}\n\nfunction cloneRuntimeRegistrationValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneRuntimeRegistrationValue(entry));\n }\n if (typeof value === \"object\" && value !== null) {\n const record = value as Record<string, unknown>;\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n cloned[key] = cloneRuntimeRegistrationValue(record[key]);\n }\n return cloned;\n }\n return value;\n}\n\nconst EXTENSION_REGISTRATION_TRACE_SYMBOL = Symbol(\"extension_registration_trace\");\n\ntype RegistrationTraceCarrier = Error & {\n [EXTENSION_REGISTRATION_TRACE_SYMBOL]?: ExtensionActivationFailureTrace;\n};\n\nfunction createRegistrationValidationError(message: string, trace: ExtensionActivationFailureTrace): TypeError {\n const error = new TypeError(message) as RegistrationTraceCarrier;\n Object.defineProperty(error, EXTENSION_REGISTRATION_TRACE_SYMBOL, {\n value: trace,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return error;\n}\n\nfunction extractRegistrationValidationTrace(error: unknown): ExtensionActivationFailureTrace | undefined {\n if (!(error instanceof Error)) {\n return undefined;\n }\n return (error as RegistrationTraceCarrier)[EXTENSION_REGISTRATION_TRACE_SYMBOL];\n}\n\nfunction normalizeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return sanitizeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRuntimeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return cloneRuntimeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRegistrationRecordList(name: string, value: unknown): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} requires an array of object definitions`);\n }\n return value.map((entry) => normalizeRegistrationRecord(name, entry));\n}\n\nfunction asRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction assertOptionalBooleanField(name: string, value: unknown): void {\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`${name} must be a boolean when provided`);\n }\n}\n\nfunction assertOptionalStringField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string when provided`);\n }\n}\n\nfunction isFlagDefaultScalar(value: unknown): boolean {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\n}\n\nfunction assertOptionalFlagDefaultField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (Array.isArray(value)) {\n for (const [index, item] of value.entries()) {\n if (!isFlagDefaultScalar(item)) {\n throw new TypeError(`${name}[${index}] must be a string, number, or boolean`);\n }\n }\n return;\n }\n if (!isFlagDefaultScalar(value)) {\n throw new TypeError(`${name} must be a string, number, or boolean, or an array of these when provided`);\n }\n}\n\nfunction assertOptionalStringArrayField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} must be an array of non-empty strings when provided`);\n }\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"string\" || entry.trim().length === 0) {\n throw new TypeError(`${name}[${index}] must be a non-empty string`);\n }\n }\n}\n\nfunction normalizeOptionalStringArrayField(name: string, value: unknown): string[] {\n assertOptionalStringArrayField(name, value);\n if (!Array.isArray(value)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const entry of value) {\n const trimmed = entry.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeCommandActionName(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[\\s_]+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction resolveCommandDefinitionAction(commandPath: string, action: unknown): string {\n if (action === undefined) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n if (typeof action !== \"string\" || action.trim().length === 0) {\n throw new TypeError(\"registerCommand definition.action must be a non-empty string when provided\");\n }\n const normalized = normalizeCommandActionName(action);\n if (normalized.length === 0) {\n throw new TypeError(\"registerCommand definition.action must contain alphanumeric characters\");\n }\n return normalized;\n}\n\nfunction normalizeCommandDefinitionArguments(value: unknown): ExtensionCommandArgumentDefinition[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(\"registerCommand definition.arguments must be an array when provided\");\n }\n const normalized: ExtensionCommandArgumentDefinition[] = [];\n for (const [index, entry] of value.entries()) {\n const record = asRegistrationRecord(`registerCommand definition.arguments[${index}]`, entry);\n const name = assertNonEmptyString(`registerCommand definition.arguments[${index}].name`, record.name);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].required`, record.required);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].variadic`, record.variadic);\n assertOptionalStringField(`registerCommand definition.arguments[${index}].description`, record.description);\n if (name.includes(\" \")) {\n throw new TypeError(`registerCommand definition.arguments[${index}].name must not contain spaces`);\n }\n const definition: ExtensionCommandArgumentDefinition = {\n name,\n };\n if (record.required === true) {\n definition.required = true;\n }\n if (record.variadic === true) {\n definition.variadic = true;\n }\n if (typeof record.description === \"string\") {\n definition.description = record.description.trim();\n }\n normalized.push(definition);\n }\n\n const variadicIndexes = normalized\n .map((argument, index) => (argument.variadic ? index : -1))\n .filter((index) => index >= 0);\n if (variadicIndexes.length > 1) {\n throw new TypeError(\"registerCommand definition.arguments supports at most one variadic argument\");\n }\n if (variadicIndexes.length === 1 && variadicIndexes[0] !== normalized.length - 1) {\n throw new TypeError(\"registerCommand definition.arguments variadic argument must be the final argument\");\n }\n\n return normalized;\n}\n\nfunction validateFlagDefinitions(flags: unknown): void {\n if (!Array.isArray(flags)) {\n throw new TypeError(\"registerFlags flags requires an array of object definitions\");\n }\n for (const [index, raw] of flags.entries()) {\n const record = asRegistrationRecord(`registerFlags flags[${index}]`, raw);\n const long = record.long;\n const short = record.short;\n if (long === undefined && short === undefined) {\n throw new TypeError(`registerFlags flags[${index}] requires at least one of long or short`);\n }\n assertOptionalStringField(`registerFlags flags[${index}].long`, long);\n assertOptionalStringField(`registerFlags flags[${index}].short`, short);\n assertOptionalStringField(`registerFlags flags[${index}].value_name`, record.value_name);\n assertOptionalStringField(`registerFlags flags[${index}].description`, record.description);\n assertOptionalBooleanField(`registerFlags flags[${index}].required`, record.required);\n assertOptionalBooleanField(`registerFlags flags[${index}].enabled`, record.enabled);\n assertOptionalBooleanField(`registerFlags flags[${index}].visible`, record.visible);\n assertOptionalBooleanField(`registerFlags flags[${index}].list`, record.list);\n assertOptionalFlagDefaultField(`registerFlags flags[${index}].default`, record.default);\n if (Array.isArray(record.default) && record.list !== true) {\n throw new TypeError(`registerFlags flags[${index}].default cannot be an array unless list is true.`);\n }\n assertFlagValueTypeAndDefault(`registerFlags flags[${index}]`, record);\n }\n}\n\n/**\n * Reject a declared `value_type`/`type` that is not a known flag value kind, and\n * a `default` whose value(s) would not cleanly coerce under that kind — so the\n * typed-flag contract is enforced at registration instead of silently leaving\n * an untyped value to surface at use time.\n */\nfunction assertFlagValueTypeAndDefault(label: string, record: Record<string, unknown>): void {\n const declaredType =\n (typeof record.value_type === \"string\" ? record.value_type : undefined) ??\n (typeof record.type === \"string\" ? record.type : undefined);\n if (declaredType === undefined) {\n return;\n }\n const kind = resolveFlagValueKind(declaredType);\n if (kind === null) {\n throw new TypeError(\n `${label} value_type \"${declaredType}\" is not a known flag value type (expected one of: string, number, boolean).`,\n );\n }\n if (record.default === undefined) {\n return;\n }\n // For list flags, validate the default exactly as the runtime will see it —\n // comma-joined strings and nested arrays are flattened first — so a valid\n // default like `value_type: \"number\", default: \"10,20\"` is not wrongly rejected.\n const defaults = record.list === true ? flattenFlagListValue(record.default) : [record.default];\n for (const [defaultIndex, defaultValue] of defaults.entries()) {\n if (!isFlagDefaultValueCoercible(defaultValue as string | number | boolean, kind)) {\n const suffix = defaults.length > 1 ? `default[${defaultIndex}]` : \"default\";\n throw new TypeError(`${label}.${suffix} (${JSON.stringify(defaultValue)}) is not coercible to ${kind}.`);\n }\n }\n}\n\nfunction validateItemFieldDefinitions(fields: unknown): void {\n if (!Array.isArray(fields)) {\n throw new TypeError(\"registerItemFields fields requires an array of object definitions\");\n }\n for (const [index, raw] of fields.entries()) {\n const record = asRegistrationRecord(`registerItemFields fields[${index}]`, raw);\n assertNonEmptyString(`registerItemFields fields[${index}].name`, record.name);\n const fieldType = assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);\n if (normalizeItemFieldType(fieldType) === null) {\n const suggestion = suggestKnownItemFieldType(fieldType);\n const hint = suggestion ? ` Did you mean \"${suggestion}\"?` : \"\";\n throw new TypeError(\n `registerItemFields fields[${index}].type \"${fieldType}\" is not a known field type ` +\n `(expected one of: ${KNOWN_ITEM_FIELD_TYPES.join(\", \")}).${hint}`,\n );\n }\n assertOptionalBooleanField(`registerItemFields fields[${index}].optional`, record.optional);\n }\n}\n\nfunction validateItemTypeDefinitions(types: unknown): void {\n if (!Array.isArray(types)) {\n throw new TypeError(\"registerItemTypes types requires an array of object definitions\");\n }\n for (const [typeIndex, raw] of types.entries()) {\n const record = asRegistrationRecord(`registerItemTypes types[${typeIndex}]`, raw);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].name`, record.name);\n assertOptionalStringField(`registerItemTypes types[${typeIndex}].folder`, record.folder);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].aliases`, record.aliases);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_fields`,\n record.required_create_fields,\n );\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_repeatables`,\n record.required_create_repeatables,\n );\n\n if (record.command_option_policies !== undefined) {\n if (!Array.isArray(record.command_option_policies)) {\n throw new TypeError(\n `registerItemTypes types[${typeIndex}].command_option_policies must be an array when provided`,\n );\n }\n for (const [policyIndex, rawPolicy] of record.command_option_policies.entries()) {\n const policy = asRegistrationRecord(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}]`,\n rawPolicy,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].command`,\n policy.command,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].option`,\n policy.option,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].enabled`,\n policy.enabled,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].required`,\n policy.required,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].visible`,\n policy.visible,\n );\n }\n }\n\n if (record.options !== undefined) {\n if (!Array.isArray(record.options)) {\n throw new TypeError(`registerItemTypes types[${typeIndex}].options must be an array when provided`);\n }\n for (const [optionIndex, rawOption] of record.options.entries()) {\n const option = asRegistrationRecord(`registerItemTypes types[${typeIndex}].options[${optionIndex}]`, rawOption);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].options[${optionIndex}].key`, option.key);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].values`, option.values);\n assertOptionalBooleanField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].required`, option.required);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].options[${optionIndex}].aliases`,\n option.aliases,\n );\n }\n }\n }\n}\n\nfunction validateMigrationDefinition(definition: unknown): void {\n const record = asRegistrationRecord(\"registerMigration definition\", definition);\n if (record.id !== undefined && typeof record.id !== \"string\") {\n throw new TypeError(\"registerMigration definition.id must be a string when provided\");\n }\n if (record.description !== undefined && typeof record.description !== \"string\") {\n throw new TypeError(\"registerMigration definition.description must be a string when provided\");\n }\n if (record.status !== undefined && typeof record.status !== \"string\") {\n throw new TypeError(\"registerMigration definition.status must be a string when provided\");\n }\n assertOptionalBooleanField(\"registerMigration definition.mandatory\", record.mandatory);\n if (record.run !== undefined && typeof record.run !== \"function\") {\n throw new TypeError(\"registerMigration definition.run must be a function when provided\");\n }\n}\n\nfunction attachRuntimeDefinition<TEntry extends { definition: Record<string, unknown> }>(\n entry: TEntry,\n runtimeDefinition: Record<string, unknown>,\n): TEntry {\n Object.defineProperty(entry, \"runtime_definition\", {\n value: runtimeDefinition,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return entry;\n}\n\nfunction getDeclaredExtensionCapabilities(extension: LoadedExtension): Set<ExtensionCapability> | null {\n if (!Array.isArray(extension.capabilities)) {\n return null;\n }\n const declared = new Set<ExtensionCapability>();\n for (const capability of extension.capabilities) {\n const normalized = capability.trim().toLowerCase();\n if (isKnownExtensionCapability(normalized)) {\n declared.add(normalized);\n }\n }\n return declared;\n}\n\nfunction assertExtensionCapability(extension: LoadedExtension, capability: ExtensionCapability, method: string): void {\n const declared = getDeclaredExtensionCapabilities(extension);\n // Keep direct unit tests that construct LoadedExtension fixtures without\n // capability metadata backwards-compatible while enforcing manifest-declared\n // capabilities for runtime-loaded extensions.\n if (declared === null) {\n return;\n }\n if (!declared.has(capability)) {\n throw createRegistrationValidationError(\n `${method} requires capability '${capability}' in extension manifest capabilities`,\n {\n method,\n registration_index: -1,\n capability,\n missing_capability: capability,\n expected_schema: `\"capabilities\": [..., \"${capability}\"]`,\n received: extension.capabilities,\n hint: `Add \"${capability}\" to ${extension.name} manifest capabilities, or remove the ${method} registration call.`,\n },\n );\n }\n}\n\nfunction createExtensionApi(\n extension: LoadedExtension,\n hooks: ExtensionHookRegistry,\n commands: ExtensionCommandRegistry,\n parsers: ExtensionParserRegistry,\n preflight: ExtensionPreflightRegistry,\n services: ExtensionServiceRegistry,\n renderers: ExtensionRendererRegistry,\n registrations: ExtensionRegistrationRegistry,\n activationWarnings: string[],\n policy: NormalizedExtensionPolicy,\n): ExtensionApi {\n const selfIdentity: ExtensionSelfIdentity = Object.freeze({\n name: extension.name,\n layer: extension.layer,\n version: extension.version,\n capabilities: Object.freeze(\n (extension.capabilities ?? []).filter((capability): capability is ExtensionCapability =>\n (KNOWN_EXTENSION_CAPABILITIES as readonly string[]).includes(capability),\n ),\n ) as readonly ExtensionCapability[],\n pm_min_version: extension.pm_min_version,\n pm_max_version: extension.pm_max_version,\n source_package: extension.source_package,\n });\n const extensionRef: PolicyExtensionRef = {\n layer: extension.layer,\n name: extension.name,\n trusted: extension.trusted === true,\n provenanceVerified: extension.provenance?.verified === true,\n sandboxProfile: extension.sandbox_profile,\n permissions:\n extension.permissions && typeof extension.permissions === \"object\"\n ? {\n fs_read: extension.permissions.fs_read,\n fs_write: extension.permissions.fs_write,\n network: extension.permissions.network,\n env_read: extension.permissions.env_read,\n env_write: extension.permissions.env_write,\n process_spawn: extension.permissions.process_spawn,\n }\n : undefined,\n };\n const pushPolicyWarning = (warning: string | null): void => {\n if (warning) {\n activationWarnings.push(warning);\n }\n };\n const allowRegistration = (\n surface: ExtensionPolicySurface,\n method: string,\n capability?: ExtensionCapability,\n details?: {\n command?: string;\n action?: string;\n service?: string;\n },\n ): boolean => {\n const decision = evaluateExtensionPolicyForRegistration(policy, extensionRef, surface, method, capability, details);\n pushPolicyWarning(decision.warning);\n return decision.allowed;\n };\n const registerCommandTrace = (\n mode: \"override\" | \"definition\",\n command: string | undefined,\n expectedSchema: string,\n received: unknown,\n hint?: string,\n ): ExtensionActivationFailureTrace => ({\n method: \"registerCommand\",\n registration_index: mode === \"override\" ? commands.overrides.length : commands.handlers.length,\n command,\n expected_schema: expectedSchema,\n received: sanitizeRegistrationValue(received),\n hint,\n });\n\n const registerCommand = (commandOrDefinition: string | CommandDefinition, override?: CommandOverride): void => {\n assertExtensionCapability(extension, \"commands\", \"registerCommand\");\n if (typeof commandOrDefinition === \"string\") {\n const normalizedCommand = normalizeCommandName(commandOrDefinition);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command name\",\n registerCommandTrace(\n \"override\",\n commandOrDefinition,\n 'registerCommand(\"<command>\", (context) => unknown)',\n commandOrDefinition,\n \"Provide a non-empty command path as the first argument.\",\n ),\n );\n }\n if (typeof override !== \"function\") {\n const trace = registerCommandTrace(\n \"override\",\n normalizedCommand,\n 'registerCommand(\"<command>\", (context) => unknown)',\n { command: commandOrDefinition, override },\n \"Provide a function as the second registerCommand argument.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires an override function when command name is provided (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n if (!allowRegistration(\"commands.override\", \"registerCommand\", \"commands\", { command: normalizedCommand })) {\n return;\n }\n commands.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n return;\n }\n if (typeof commandOrDefinition !== \"object\" || commandOrDefinition === null) {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition object\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Use registerCommand({ name: \\\"command path\\\", run: (context) => ... }).\",\n ),\n );\n }\n if (typeof commandOrDefinition.name !== \"string\") {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition name\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Set command definition.name to a non-empty string command path.\",\n ),\n );\n }\n\n const normalizedCommand = normalizeCommandName(commandOrDefinition.name);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command definition name\",\n registerCommandTrace(\n \"definition\",\n commandOrDefinition.name,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Ensure command definition.name contains a non-empty command path.\",\n ),\n );\n }\n const runHandler = typeof commandOrDefinition.run === \"function\" ? commandOrDefinition.run : undefined;\n const legacyHandler = typeof commandOrDefinition.handler === \"function\" ? commandOrDefinition.handler : undefined;\n if (!runHandler && legacyHandler) {\n activationWarnings.push(\n `extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`,\n );\n }\n const resolvedHandler = runHandler ?? legacyHandler;\n if (typeof resolvedHandler !== \"function\") {\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Define command definition.run as a function.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires a command definition run handler (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n try {\n assertOptionalStringField(\"registerCommand definition.action\", commandOrDefinition.action);\n assertOptionalStringField(\"registerCommand definition.description\", commandOrDefinition.description);\n assertOptionalStringField(\"registerCommand definition.intent\", commandOrDefinition.intent);\n const action = resolveCommandDefinitionAction(normalizedCommand, commandOrDefinition.action);\n if (!allowRegistration(\"commands.handler\", \"registerCommand\", \"commands\", { command: normalizedCommand, action })) {\n return;\n }\n const description = commandOrDefinition.description?.trim();\n const intent = commandOrDefinition.intent?.trim();\n const examples = normalizeOptionalStringArrayField(\"registerCommand definition.examples\", commandOrDefinition.examples);\n const failureHints = normalizeOptionalStringArrayField(\n \"registerCommand definition.failure_hints\",\n commandOrDefinition.failure_hints,\n );\n const argumentsDefinition = normalizeCommandDefinitionArguments(commandOrDefinition.arguments);\n\n if (commandOrDefinition.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", \"registerCommand flags\");\n validateFlagDefinitions(commandOrDefinition.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedCommand,\n flags: normalizeRegistrationRecordList(\"registerCommand definition.flags\", commandOrDefinition.flags),\n });\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: normalizedCommand,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n if (description) {\n registration.description = description;\n }\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n } catch (error: unknown) {\n const reason = formatUnknownError(error);\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }\",\n commandOrDefinition,\n \"Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.\",\n );\n throw createRegistrationValidationError(\n `registerCommand definition metadata invalid (command=\"${normalizedCommand}\", registration_index=${trace.registration_index}): ${reason}`,\n trace,\n );\n }\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: resolvedHandler,\n });\n };\n const registerParser = (command: string, override: ParserOverride): void => {\n assertExtensionCapability(extension, \"parser\", \"registerParser\");\n if (!allowRegistration(\"parser.override\", \"registerParser\", \"parser\")) {\n return;\n }\n const normalizedCommand = normalizeCommandName(assertNonEmptyString(\"registerParser command\", command));\n assertFunctionHandler(\"registerParser override\", override);\n parsers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n };\n const registerPreflight = (override: PreflightOverride): void => {\n assertExtensionCapability(extension, \"preflight\", \"registerPreflight\");\n if (!allowRegistration(\"preflight.override\", \"registerPreflight\", \"preflight\")) {\n return;\n }\n assertFunctionHandler(\"registerPreflight override\", override);\n preflight.overrides.push({\n layer: extension.layer,\n name: extension.name,\n run: override,\n });\n };\n const registerService = (service: ExtensionServiceName, override: ServiceOverride): void => {\n assertExtensionCapability(extension, \"services\", \"registerService\");\n const normalizedService = String(service).trim().toLowerCase();\n if (!isExtensionServiceName(normalizedService)) {\n throw new TypeError(`registerService service must be one of: ${KNOWN_EXTENSION_SERVICE_NAMES.join(\", \")}`);\n }\n if (!allowRegistration(\"services.override\", \"registerService\", \"services\", { service: normalizedService })) {\n return;\n }\n assertFunctionHandler(\"registerService override\", override);\n services.overrides.push({\n layer: extension.layer,\n name: extension.name,\n service: normalizedService as ExtensionServiceName,\n run: override,\n });\n };\n const registerRenderer = (format: OutputRendererFormat, renderer: RendererOverride): void => {\n assertExtensionCapability(extension, \"renderers\", \"registerRenderer\");\n if (!allowRegistration(\"renderers.override\", \"registerRenderer\", \"renderers\")) {\n return;\n }\n if (typeof renderer !== \"function\") {\n throw new TypeError(\"registerRenderer requires a renderer function\");\n }\n const normalizedFormat = String(format).trim().toLowerCase();\n if (!isOutputRendererFormat(normalizedFormat)) {\n throw new Error(`registerRenderer format must be toon|json, received: ${String(format)}`);\n }\n renderers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n format: normalizedFormat,\n run: renderer,\n });\n };\n const registerFlags = (targetCommand: string, flags: FlagDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerFlags\");\n if (!allowRegistration(\"schema.flags\", \"registerFlags\", \"schema\")) {\n return;\n }\n const normalizedTargetCommand = normalizeCommandName(assertNonEmptyString(\"registerFlags targetCommand\", targetCommand));\n validateFlagDefinitions(flags);\n const normalizedFlags = normalizeRegistrationRecordList(\"registerFlags flags\", flags);\n if (normalizedFlags.length === 0) {\n throw new TypeError(\"registerFlags requires at least one flag definition\");\n }\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedTargetCommand,\n flags: normalizedFlags,\n });\n };\n const registerItemFields = (fields: SchemaFieldDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemFields\");\n if (!allowRegistration(\"schema.itemfields\", \"registerItemFields\", \"schema\")) {\n return;\n }\n validateItemFieldDefinitions(fields);\n const normalizedFields = normalizeRegistrationRecordList(\n \"registerItemFields fields\",\n fields,\n ) as SchemaFieldDefinition[];\n if (normalizedFields.length === 0) {\n throw new TypeError(\"registerItemFields requires at least one field definition\");\n }\n registrations.item_fields.push({\n layer: extension.layer,\n name: extension.name,\n fields: normalizedFields,\n });\n };\n const registerItemTypes = (types: SchemaItemTypeDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemTypes\");\n if (!allowRegistration(\"schema.itemtypes\", \"registerItemTypes\", \"schema\")) {\n return;\n }\n validateItemTypeDefinitions(types);\n const normalizedTypes = normalizeRegistrationRecordList(\n \"registerItemTypes types\",\n types,\n ) as SchemaItemTypeDefinition[];\n if (normalizedTypes.length === 0) {\n throw new TypeError(\"registerItemTypes requires at least one type definition\");\n }\n registrations.item_types.push({\n layer: extension.layer,\n name: extension.name,\n types: normalizedTypes,\n });\n };\n const registerMigration = (definition: SchemaMigrationDefinition): void => {\n assertExtensionCapability(extension, \"schema\", \"registerMigration\");\n if (!allowRegistration(\"schema.migrations\", \"registerMigration\", \"schema\")) {\n return;\n }\n validateMigrationDefinition(definition);\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerMigration definition\", definition);\n registrations.migrations.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerMigration definition\", definition),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSchemaMigrationDefinition,\n );\n };\n const applyImportExportCommandMetadata = (\n method: \"registerImporter\" | \"registerExporter\",\n commandPath: string,\n options: ImportExportRegistrationOptions | undefined,\n ): void => {\n if (options === undefined) {\n return;\n }\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n throw new TypeError(`${method} options must be an object when provided`);\n }\n assertOptionalStringField(`${method} options.action`, options.action);\n assertOptionalStringField(`${method} options.description`, options.description);\n assertOptionalStringField(`${method} options.intent`, options.intent);\n const action = resolveCommandDefinitionAction(commandPath, options.action);\n const examples = normalizeOptionalStringArrayField(`${method} options.examples`, options.examples);\n const failureHints = normalizeOptionalStringArrayField(`${method} options.failure_hints`, options.failure_hints);\n const argumentsDefinition = normalizeCommandDefinitionArguments(options.arguments);\n\n if (options.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", `${method} options.flags`);\n // Route metadata flags through the same surface-policy gate as registerFlags so\n // enforce-mode policies blocking schema.flags are honored even when importers are allowed.\n if (allowRegistration(\"schema.flags\", `${method} options.flags`, \"schema\")) {\n validateFlagDefinitions(options.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: commandPath,\n flags: normalizeRegistrationRecordList(`${method} options.flags`, options.flags),\n });\n }\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: commandPath,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n const description = options.description?.trim();\n if (description) {\n registration.description = description;\n }\n const intent = options.intent?.trim();\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n };\n const registerImporter = (name: string, importer: Importer, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerImporter\");\n if (!allowRegistration(\"importers.importer\", \"registerImporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerImporter name\", name));\n assertFunctionHandler(\"registerImporter importer\", importer);\n const commandPath = toRegistrationCommandPath(normalizedName, \"import\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial importer registration.\n applyImportExportCommandMetadata(\"registerImporter\", commandPath, options);\n registrations.importers.push({\n layer: extension.layer,\n name: extension.name,\n importer: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n importer({\n registration: normalizedName,\n action: \"import\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerExporter = (name: string, exporter: Exporter, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerExporter\");\n if (!allowRegistration(\"importers.exporter\", \"registerExporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerExporter name\", name));\n assertFunctionHandler(\"registerExporter exporter\", exporter);\n const commandPath = toRegistrationCommandPath(normalizedName, \"export\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial exporter registration.\n applyImportExportCommandMetadata(\"registerExporter\", commandPath, options);\n registrations.exporters.push({\n layer: extension.layer,\n name: extension.name,\n exporter: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n exporter({\n registration: normalizedName,\n action: \"export\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerSearchProvider = (provider: SearchProviderDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerSearchProvider\");\n if (!allowRegistration(\"search.provider\", \"registerSearchProvider\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerSearchProvider provider\", provider);\n registrations.search_providers.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerSearchProvider provider\", provider),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSearchProvider,\n );\n };\n const registerVectorStoreAdapter = (adapter: VectorStoreAdapterDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerVectorStoreAdapter\");\n if (!allowRegistration(\"search.vectorstore\", \"registerVectorStoreAdapter\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter);\n registrations.vector_store_adapters.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter),\n },\n runtimeDefinition,\n ) as RegisteredExtensionVectorStoreAdapter,\n );\n };\n const registerBeforeCommand = (hook: BeforeCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.beforeCommand\");\n if (!allowRegistration(\"hooks.beforecommand\", \"api.hooks.beforeCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"beforeCommand\", hook);\n hooks.beforeCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerAfterCommand = (hook: AfterCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.afterCommand\");\n if (!allowRegistration(\"hooks.aftercommand\", \"api.hooks.afterCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"afterCommand\", hook);\n hooks.afterCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnWrite = (hook: OnWriteHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onWrite\");\n if (!allowRegistration(\"hooks.onwrite\", \"api.hooks.onWrite\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onWrite\", hook);\n hooks.onWrite.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnRead = (hook: OnReadHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onRead\");\n if (!allowRegistration(\"hooks.onread\", \"api.hooks.onRead\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onRead\", hook);\n hooks.onRead.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnIndex = (hook: OnIndexHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onIndex\");\n if (!allowRegistration(\"hooks.onindex\", \"api.hooks.onIndex\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onIndex\", hook);\n hooks.onIndex.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n\n return {\n extension: selfIdentity,\n registerCommand,\n registerParser,\n registerPreflight,\n registerService,\n registerFlags,\n registerItemFields,\n registerItemTypes,\n registerMigration,\n registerRenderer,\n registerImporter,\n registerExporter,\n registerSearchProvider,\n registerVectorStoreAdapter,\n hooks: {\n beforeCommand: registerBeforeCommand,\n afterCommand: registerAfterCommand,\n onWrite: registerOnWrite,\n onRead: registerOnRead,\n onIndex: registerOnIndex,\n },\n };\n}\n\nfunction getRegistrationCounts(registrations: ExtensionRegistrationRegistry): ExtensionRegistrationCounts {\n const commandCount = registrations.commands.length;\n const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);\n const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);\n const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);\n return {\n commands: commandCount,\n flags: flagCount,\n item_fields: itemFieldCount,\n item_types: itemTypeCount,\n migrations: registrations.migrations.length,\n importers: registrations.importers.length,\n exporters: registrations.exporters.length,\n search_providers: registrations.search_providers.length,\n vector_store_adapters: registrations.vector_store_adapters.length,\n };\n}\n\nfunction collectCommandCollisionWarnings(commands: ExtensionCommandRegistry): string[] {\n const warnings: string[] = [];\n const collectByCommand = <TEntry extends { layer: ExtensionLayer; name: string; command: string }>(\n entries: TEntry[],\n codePrefix: string,\n ): void => {\n const grouped = new Map<string, TEntry[]>();\n for (const entry of entries) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `${codePrefix}:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n };\n\n collectByCommand(commands.handlers, \"extension_command_handler_collision\");\n collectByCommand(commands.overrides, \"extension_command_override_collision\");\n\n const handlerCommands = new Set(commands.handlers.map((entry) => entry.command));\n const overlapCommands = [...new Set(commands.overrides.map((entry) => entry.command))].filter((command) =>\n handlerCommands.has(command),\n );\n overlapCommands.sort((left, right) => left.localeCompare(right));\n for (const command of overlapCommands) {\n const handlers = commands.handlers.filter((entry) => entry.command === command);\n const overrides = commands.overrides.filter((entry) => entry.command === command);\n for (const override of overrides) {\n for (const handler of handlers) {\n warnings.push(\n `extension_command_override_handler_overlap:${command}:${override.layer}:${override.name}:${handler.layer}:${handler.name}`,\n );\n }\n }\n }\n\n return warnings;\n}\n\nfunction collectRendererCollisionWarnings(renderers: ExtensionRendererRegistry): string[] {\n const grouped = new Map<OutputRendererFormat, RegisteredExtensionRendererOverride[]>();\n for (const entry of renderers.overrides) {\n const bucket = grouped.get(entry.format) ?? [];\n bucket.push(entry);\n grouped.set(entry.format, bucket);\n }\n const warnings: string[] = [];\n for (const format of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(format)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_renderer_collision:${format}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectParserCollisionWarnings(parsers: ExtensionParserRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<string, RegisteredExtensionParserOverride[]>();\n for (const entry of parsers.overrides) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_parser_override_collision:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectPreflightCollisionWarnings(preflight: ExtensionPreflightRegistry): string[] {\n if (preflight.overrides.length <= 1) {\n return [];\n }\n const winner = preflight.overrides[preflight.overrides.length - 1];\n return preflight.overrides.slice(0, -1).map(\n (displaced) =>\n `extension_preflight_override_collision:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n}\n\n// Services whose runtime semantics are chain/fall-through (each override gets a chance);\n// for those, registering multiple overrides is by design, not a collision.\nconst CHAINED_SERVICE_NAMES: ReadonlySet<ExtensionServiceName> = new Set<ExtensionServiceName>([\n \"output_format\",\n]);\n\nfunction collectServiceCollisionWarnings(services: ExtensionServiceRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<ExtensionServiceName, RegisteredExtensionServiceOverride[]>();\n for (const entry of services.overrides) {\n const bucket = grouped.get(entry.service) ?? [];\n bucket.push(entry);\n grouped.set(entry.service, bucket);\n }\n for (const service of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(service)!;\n if (bucket.length <= 1) {\n continue;\n }\n if (CHAINED_SERVICE_NAMES.has(service)) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_service_override_collision:${service}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\n/**\n * Implements activate extensions for the public runtime surface of this module.\n */\nexport async function activateExtensions(loadResult: ExtensionLoadResult): Promise<ExtensionActivationResult> {\n const policy = hydrateExtensionPolicy(loadResult.policy ?? DEFAULT_EXTENSION_POLICY);\n const hooks = createEmptyExtensionHookRegistry();\n const commands = createEmptyExtensionCommandRegistry();\n const parsers = createEmptyExtensionParserRegistry();\n const preflight = createEmptyExtensionPreflightRegistry();\n const services = createEmptyExtensionServiceRegistry();\n const renderers = createEmptyExtensionRendererRegistry();\n const registrations = createEmptyExtensionRegistrationRegistry();\n const failed: FailedExtensionActivation[] = [];\n const warnings: string[] = [];\n\n for (const extension of loadResult.loaded) {\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable) {\n continue;\n }\n\n try {\n await activatable.activate(\n createExtensionApi(\n extension,\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n warnings,\n policy,\n ),\n );\n } catch (error: unknown) {\n warnings.push(`extension_activate_failed:${extension.layer}:${extension.name}`);\n const trace = extractRegistrationValidationTrace(error);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n trace,\n });\n }\n }\n\n const collisionWarnings = [\n ...collectCommandCollisionWarnings(commands),\n ...collectParserCollisionWarnings(parsers),\n ...collectPreflightCollisionWarnings(preflight),\n ...collectServiceCollisionWarnings(services),\n ...collectRendererCollisionWarnings(renderers),\n ];\n const mergedWarnings = [...new Set([...warnings, ...collisionWarnings])];\n\n return {\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n failed,\n warnings: mergedWarnings,\n hook_counts: {\n before_command: hooks.beforeCommand.length,\n after_command: hooks.afterCommand.length,\n on_write: hooks.onWrite.length,\n on_read: hooks.onRead.length,\n on_index: hooks.onIndex.length,\n },\n command_override_count: commands.overrides.length,\n command_handler_count: commands.handlers.length,\n parser_override_count: parsers.overrides.length,\n preflight_override_count: preflight.overrides.length,\n service_override_count: services.overrides.length,\n renderer_override_count: renderers.overrides.length,\n registration_counts: getRegistrationCounts(registrations),\n };\n}\n\nexport const _testOnlyLoader = {\n assertFlagValueTypeAndDefault,\n assertOptionalStringField,\n compareComparableVersions,\n collectCommandCollisionWarnings,\n collectParserCollisionWarnings,\n collectRendererCollisionWarnings,\n collectServiceCollisionWarnings,\n createExtensionApi,\n createRegistrationValidationError,\n evaluatePmMaxVersionCompatibility,\n evaluatePmMinVersionCompatibility,\n extractRegistrationValidationTrace,\n fingerprintPath,\n getRegistrationCounts,\n normalizeCommandDefinitionArguments,\n normalizeExtensionDeactivateTimeout,\n normalizeOptionalStringArrayField,\n normalizeRegistrationRecord,\n normalizeRegistrationRecordList,\n normalizeRuntimeRegistrationRecord,\n parseComparableVersion,\n parseManifest,\n readCurrentPmCliVersion,\n readManagedExtensionSourcePackages,\n resolveExtensionImportHref,\n resolveCurrentPmCliVersion,\n resolveCommandDefinitionAction,\n sanitizeRegistrationValue,\n validateItemFieldDefinitions,\n resetCurrentPmCliVersionCacheForTest: () => {\n currentPmCliVersionPromise = null;\n },\n};\n"],"names":[],"mappings":"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","debugId":"7c5d988c-8be5-5308-90c9-b1245d50fbab"}
1
+ {"version":3,"file":"loader.js","sources":["core/extensions/loader.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/extensions/loader\n *\n * Implements extension runtime contracts and governance for Loader.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { pathExists } from \"../fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../fs/path-utils.js\";\nimport { resolvePmPackageRootFromModule } from \"../packages/root.js\";\nimport { resolveGlobalPmRoot } from \"../store/paths.js\";\nimport type { GlobalOptions } from \"../shared/command-types.js\";\nimport { asRecordLoose } from \"../shared/primitives.js\";\nimport { flattenFlagListValue, isFlagDefaultValueCoercible, resolveFlagValueKind } from \"./flag-value-types.js\";\nimport { KNOWN_ITEM_FIELD_TYPES, normalizeItemFieldType, suggestKnownItemFieldType } from \"./item-field-types.js\";\nimport {\n compareComparableVersions,\n evaluatePmMaxVersionBound,\n evaluatePmMinVersionBound,\n parseComparableVersion,\n type PmVersionBoundEvaluation,\n} from \"./version-compat.js\";\nimport type { PmSettings } from \"../../types/index.js\";\nimport type { ProjectProfileDefinition, ProjectProfileRegistrationInput } from \"../profile/profile-presets.js\";\n// Cohesive helper groups now live in sibling modules. They are imported for the\n// discovery/activation code that stays here and re-exported below so existing\n// import sites (sdk/index.ts, commands/extension.ts, health.ts, tests, …) keep\n// importing everything from \"./loader.js\" unchanged.\nimport {\n normalizeNames,\n isKnownExtensionCapability,\n collectUnknownExtensionCapabilities,\n resolveLegacyExtensionCapabilityAlias,\n normalizeManifestCapabilities,\n suggestKnownExtensionCapability,\n formatUnknownExtensionCapabilityWarning,\n formatLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nimport {\n normalizeExtensionPolicy,\n serializeExtensionPolicy,\n hydrateExtensionPolicy,\n normalizePolicySandboxProfile,\n evaluateExtensionPolicyForExtension,\n evaluateExtensionPolicyForCapability,\n evaluateExtensionPolicyForRegistration,\n type NormalizedExtensionPolicy,\n type PolicyExtensionRef,\n} from \"./extension-policy.js\";\nimport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nimport {\n normalizeCommandName,\n cloneContextSnapshot,\n cloneCommandOptionsSnapshot,\n cloneGlobalOptionsSnapshot,\n} from \"./extension-runtime-helpers.js\";\nexport {\n parseUnknownExtensionCapabilityWarning,\n parseLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nexport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nexport {\n runBeforeCommandHooks,\n runAfterCommandHooks,\n runOnWriteHooks,\n runOnReadHooks,\n runOnIndexHooks,\n runCommandHandler,\n runParserOverride,\n runPreflightOverride,\n runServiceOverrideSync,\n runServiceOverride,\n runCommandOverride,\n runRendererOverride,\n} from \"./extension-hook-runtime.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n KNOWN_EXTENSION_SERVICE_NAMES,\n createDefaultExtensionGovernancePolicy,\n type ExtensionDeactivationFailure,\n type ExtensionDeactivationOptions,\n type ExtensionDeactivationResult,\n type ExtensionSelfIdentity,\n type ExtensionCapability,\n type ExtensionPolicyMode,\n type ExtensionPolicySurface,\n type ExtensionSandboxProfile,\n type ExtensionGovernancePolicy,\n type ExtensionTrustMode,\n type PmMaxVersionExceededMode,\n type ExtensionLayer,\n type ExtensionStatus,\n type ExtensionManifest,\n type ExtensionManifestEngines,\n type ExtensionDiagnostic,\n type EffectiveExtension,\n type ExtensionDiscoveryResult,\n type LoadedExtension,\n type FailedExtensionLoad,\n type ExtensionLoadResult,\n type BeforeCommandHookContext,\n type AfterCommandHookContext,\n type OnWriteHookContext,\n type OnReadHookContext,\n type OnIndexHookContext,\n type BeforeCommandHook,\n type AfterCommandHook,\n type OnWriteHook,\n type OnReadHook,\n type OnIndexHook,\n type OutputRendererFormat,\n type CommandOverride,\n type RendererOverride,\n type CommandHandler,\n type ParserOverride,\n type PreflightOverride,\n type ServiceOverride,\n type ExtensionHookRegistry,\n type CommandOverrideContext,\n type RendererOverrideContext,\n type CommandHandlerContext,\n type ParserOverrideContext,\n type ParserOverrideDelta,\n type PreflightOverrideContext,\n type PreflightRuntimeDecision,\n type PreflightOverrideDelta,\n type ExtensionServiceName,\n type ServiceOverrideContext,\n type ExtensionCommandArgumentDefinition,\n type CommandDefinition,\n type FlagValueType,\n type FlagDefinition,\n type SchemaFieldDefinition,\n type SchemaItemTypeCommandOptionPolicyDefinition,\n type SchemaItemTypeOptionDefinition,\n type SchemaItemTypeDefinition,\n type SchemaMigrationRunContext,\n type SchemaMigrationRunner,\n type SchemaMigrationDefinition,\n type ImportExportContext,\n type ImportExportRegistrationOptions,\n type Importer,\n type Exporter,\n type ExtensionSearchMode,\n type SearchProviderQueryContext,\n type SearchProviderHit,\n type SearchProviderQueryResult,\n type SearchProviderEmbedBatchContext,\n type SearchProviderEmbedContext,\n type SearchProviderDefinition,\n type VectorStoreQueryHit,\n type VectorStoreQueryContext,\n type VectorStoreUpsertPoint,\n type VectorStoreUpsertContext,\n type VectorStoreDeleteContext,\n type VectorStoreAdapterDefinition,\n type RegisteredExtensionCommandOverride,\n type RegisteredExtensionCommandHandler,\n type RegisteredExtensionParserOverride,\n type RegisteredExtensionPreflightOverride,\n type RegisteredExtensionServiceOverride,\n type RegisteredExtensionRendererOverride,\n type ExtensionCommandRegistry,\n type ExtensionParserRegistry,\n type ExtensionPreflightRegistry,\n type ExtensionServiceRegistry,\n type ExtensionRendererRegistry,\n type RegisteredExtensionFlagDefinitions,\n type RegisteredExtensionCommandDefinition,\n type RegisteredExtensionSchemaFieldDefinitions,\n type RegisteredExtensionSchemaItemTypeDefinitions,\n type RegisteredExtensionSchemaMigrationDefinition,\n type RegisteredExtensionImporter,\n type RegisteredExtensionExporter,\n type RegisteredExtensionSearchProvider,\n type RegisteredExtensionVectorStoreAdapter,\n type ExtensionRegistrationRegistry,\n type ExtensionRegistrationCounts,\n type ExtensionApi,\n type FailedExtensionActivation,\n type ExtensionActivationFailureTrace,\n type ExtensionActivationResult,\n type ExtensionCandidate,\n type ExtensionLayerScanResult,\n type ScannedExtensionDirectory,\n type LegacyExtensionCapabilityAliasMapping,\n type DiscoverExtensionsOptions,\n type ActivatableExtension,\n type ServiceOverrideResult,\n type CommandOverrideResult,\n type CommandHandlerResult,\n type ParserOverrideResult,\n type PreflightOverrideResult,\n type RendererOverrideResult,\n type UnknownExtensionCapabilityWarningDetails,\n type RegisteredExtensionHook,\n} from \"./extension-types.js\";\nexport * from \"./extension-types.js\";\n\nconst DEFAULT_EXTENSION_PRIORITY = 100;\nlet currentPmCliVersionPromise: Promise<string | null> | null = null;\n\n/* Types now in extension-types.ts - re-exported via `export * from \"./extension-types.js\"` above */\n\nconst DEFAULT_EXTENSION_POLICY: ExtensionGovernancePolicy = Object.freeze(createDefaultExtensionGovernancePolicy());\n\nlet extensionReloadEpoch = 0;\n\n/**\n * Implements next extension reload token for the public runtime surface of this module.\n */\nexport function nextExtensionReloadToken(seed = Date.now()): string {\n extensionReloadEpoch += 1;\n return `${extensionReloadEpoch}-${seed}`;\n}\n\nfunction parseOptionalManifestString(candidate: Record<string, unknown>, field: string): string | null | undefined {\n const value = candidate[field];\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\nfunction parseManifestEngines(value: unknown): ExtensionManifestEngines | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const enginesRecord = asRecordLoose(value);\n if (!enginesRecord) {\n return null;\n }\n const engines: ExtensionManifestEngines = {};\n for (const key of Object.keys(enginesRecord).sort((left, right) => left.localeCompare(right))) {\n if (key.trim().length === 0) {\n return null;\n }\n const engineValue = enginesRecord[key];\n if (typeof engineValue !== \"string\" || engineValue.trim().length === 0) {\n return null;\n }\n engines[key.trim()] = engineValue.trim();\n }\n return Object.keys(engines).length > 0 ? engines : undefined;\n}\n\nfunction parseManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n\n const candidate = raw as Record<string, unknown>;\n if (typeof candidate.name !== \"string\" || candidate.name.trim().length === 0) {\n return null;\n }\n if (typeof candidate.version !== \"string\" || candidate.version.trim().length === 0) {\n return null;\n }\n if (typeof candidate.entry !== \"string\" || candidate.entry.trim().length === 0) {\n return null;\n }\n\n let priority = DEFAULT_EXTENSION_PRIORITY;\n if (\"priority\" in candidate && candidate.priority !== undefined && candidate.priority !== null) {\n if (typeof candidate.priority !== \"number\" || !Number.isInteger(candidate.priority)) {\n return null;\n }\n priority = candidate.priority;\n }\n\n let manifestVersion: number | undefined;\n if (\"manifest_version\" in candidate && candidate.manifest_version !== undefined && candidate.manifest_version !== null) {\n if (typeof candidate.manifest_version !== \"number\" || !Number.isInteger(candidate.manifest_version)) {\n return null;\n }\n manifestVersion = candidate.manifest_version;\n }\n\n const pmMinVersion = parseOptionalManifestString(candidate, \"pm_min_version\");\n if (pmMinVersion === null) {\n return null;\n }\n\n const pmMaxVersion = parseOptionalManifestString(candidate, \"pm_max_version\");\n if (pmMaxVersion === null) {\n return null;\n }\n\n const engines = parseManifestEngines(candidate.engines);\n if (engines === null) {\n return null;\n }\n\n let trusted: boolean | undefined;\n if (\"trusted\" in candidate && candidate.trusted !== undefined && candidate.trusted !== null) {\n if (typeof candidate.trusted !== \"boolean\") {\n return null;\n }\n trusted = candidate.trusted;\n }\n\n let sandboxProfile: ExtensionSandboxProfile | undefined;\n if (\"sandbox_profile\" in candidate && candidate.sandbox_profile !== undefined && candidate.sandbox_profile !== null) {\n if (typeof candidate.sandbox_profile !== \"string\") {\n return null;\n }\n const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);\n if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {\n return null;\n }\n sandboxProfile = normalizedProfile;\n }\n\n let provenance: ExtensionManifest[\"provenance\"] | undefined;\n if (\"provenance\" in candidate && candidate.provenance !== undefined && candidate.provenance !== null) {\n const provenanceRecord = asRecordLoose(candidate.provenance);\n if (!provenanceRecord) {\n return null;\n }\n const source =\n typeof provenanceRecord.source === \"string\" && provenanceRecord.source.trim().length > 0\n ? provenanceRecord.source.trim()\n : undefined;\n const signature =\n typeof provenanceRecord.signature === \"string\" && provenanceRecord.signature.trim().length > 0\n ? provenanceRecord.signature.trim()\n : undefined;\n const attestation =\n typeof provenanceRecord.attestation === \"string\" && provenanceRecord.attestation.trim().length > 0\n ? provenanceRecord.attestation.trim()\n : undefined;\n const verified =\n provenanceRecord.verified === undefined || provenanceRecord.verified === null\n ? undefined\n : typeof provenanceRecord.verified === \"boolean\"\n ? provenanceRecord.verified\n : null;\n if (verified === null) {\n return null;\n }\n provenance = {\n ...(source ? { source } : {}),\n ...(signature ? { signature } : {}),\n ...(attestation ? { attestation } : {}),\n ...(typeof verified === \"boolean\" ? { verified } : {}),\n };\n }\n\n let permissions: ExtensionManifest[\"permissions\"] | undefined;\n if (\"permissions\" in candidate && candidate.permissions !== undefined && candidate.permissions !== null) {\n const permissionsRecord = asRecordLoose(candidate.permissions);\n if (!permissionsRecord) {\n return null;\n }\n const parseOptionalBoolean = (value: unknown): boolean | undefined | null => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n return null;\n }\n return value;\n };\n const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);\n const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);\n const network = parseOptionalBoolean(permissionsRecord.network);\n const envRead = parseOptionalBoolean(permissionsRecord.env_read);\n const envWrite = parseOptionalBoolean(permissionsRecord.env_write);\n const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);\n if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {\n return null;\n }\n permissions = {\n ...(typeof fsRead === \"boolean\" ? { fs_read: fsRead } : {}),\n ...(typeof fsWrite === \"boolean\" ? { fs_write: fsWrite } : {}),\n ...(typeof network === \"boolean\" ? { network } : {}),\n ...(typeof envRead === \"boolean\" ? { env_read: envRead } : {}),\n ...(typeof envWrite === \"boolean\" ? { env_write: envWrite } : {}),\n ...(typeof processSpawn === \"boolean\" ? { process_spawn: processSpawn } : {}),\n };\n }\n\n let capabilities: string[] = [];\n let legacyCapabilityAliases: LegacyExtensionCapabilityAliasMapping[] = [];\n if (\"capabilities\" in candidate && candidate.capabilities !== undefined && candidate.capabilities !== null) {\n if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== \"string\")) {\n return null;\n }\n const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities as string[]);\n capabilities = normalizedCapabilities.capabilities;\n legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;\n }\n\n let activation: ExtensionManifest[\"activation\"] | undefined;\n if (\"activation\" in candidate && candidate.activation !== undefined && candidate.activation !== null) {\n const activationRecord = asRecordLoose(candidate.activation);\n if (!activationRecord) {\n return null;\n }\n const rawCommands = activationRecord.commands;\n if (rawCommands !== undefined && rawCommands !== null) {\n if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== \"string\")) {\n return null;\n }\n const commands = [\n ...new Set(\n rawCommands\n .map((value) => normalizeCommandName(value))\n .filter((value) => value.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (commands.length > 0) {\n activation = {\n commands,\n };\n }\n }\n }\n\n return {\n name: candidate.name.trim(),\n version: candidate.version.trim(),\n entry: candidate.entry.trim(),\n priority,\n manifest_version: manifestVersion,\n pm_min_version: pmMinVersion,\n pm_max_version: pmMaxVersion,\n engines,\n trusted,\n provenance,\n sandbox_profile: sandboxProfile,\n permissions,\n activation,\n capabilities,\n legacy_capability_aliases: legacyCapabilityAliases.length > 0 ? legacyCapabilityAliases : undefined,\n };\n}\n\nfunction shouldEnable(name: string, enabled: Set<string>, disabled: Set<string>): boolean {\n if (disabled.has(name)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(name);\n}\n\nasync function isCanonicalPathWithinDirectory(directory: string, targetPath: string): Promise<boolean> {\n const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);\n return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);\n}\n\n/**\n * Implements resolve extension roots for the public runtime surface of this module.\n */\nexport function resolveExtensionRoots(pmRoot: string, cwd = process.cwd()): { global: string; project: string } {\n return {\n global: path.join(resolveGlobalPmRoot(cwd), \"extensions\"),\n project: path.join(pmRoot, \"extensions\"),\n };\n}\n\nasync function listExtensionDirectories(extensionsRoot: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n}\n\nfunction summarizeCandidate(candidate: ExtensionCandidate): EffectiveExtension {\n const summary: EffectiveExtension = {\n layer: candidate.layer,\n directory: candidate.directory,\n manifest_path: candidate.manifest_path,\n name: candidate.manifest.name,\n version: candidate.manifest.version,\n entry: candidate.manifest.entry,\n priority: candidate.manifest.priority,\n entry_path: candidate.entry_path,\n manifest_version: candidate.manifest.manifest_version,\n pm_min_version: candidate.manifest.pm_min_version,\n pm_max_version: candidate.manifest.pm_max_version,\n engines: candidate.manifest.engines,\n trusted: candidate.manifest.trusted,\n provenance: candidate.manifest.provenance,\n sandbox_profile: candidate.manifest.sandbox_profile,\n permissions: candidate.manifest.permissions,\n capabilities: [...candidate.manifest.capabilities],\n activation: candidate.manifest.activation\n ? {\n commands: [...(candidate.manifest.activation.commands as string[])],\n }\n : undefined,\n };\n if (candidate.source_package) {\n summary.source_package = candidate.source_package;\n }\n return summary;\n}\n\nfunction normalizeManagedSourcePackage(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nasync function readManagedExtensionSourcePackages(extensionsRoot: string): Promise<Map<string, string>> {\n const packages = new Map<string, string>();\n try {\n const parsed = JSON.parse(await fs.readFile(path.join(extensionsRoot, \".managed-extensions.json\"), \"utf8\")) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || !Array.isArray((parsed as { entries?: unknown }).entries)) {\n return packages;\n }\n for (const entry of (parsed as { entries: unknown[] }).entries) {\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n const record = entry as { directory?: unknown; name?: unknown; source?: { package?: unknown } };\n const sourcePackage = normalizeManagedSourcePackage(record.source?.package);\n if (!sourcePackage) {\n continue;\n }\n if (typeof record.directory === \"string\" && record.directory.trim().length > 0) {\n packages.set(`directory:${record.directory.trim()}`, sourcePackage);\n }\n if (typeof record.name === \"string\" && record.name.trim().length > 0) {\n packages.set(`name:${record.name.trim()}`, sourcePackage);\n }\n }\n } catch {\n return packages;\n }\n return packages;\n}\n\nfunction sortCandidates(candidates: ExtensionCandidate[]): ExtensionCandidate[] {\n return [...candidates].sort((left, right) => {\n if (left.manifest.priority !== right.manifest.priority) {\n return left.manifest.priority - right.manifest.priority;\n }\n const byName = left.manifest.name.localeCompare(right.manifest.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n}\n\nfunction buildEffectiveExtensions(\n globalCandidates: ExtensionCandidate[],\n projectCandidates: ExtensionCandidate[],\n): ExtensionCandidate[] {\n const ordered = [...sortCandidates(globalCandidates), ...sortCandidates(projectCandidates)];\n const effective: ExtensionCandidate[] = [];\n for (const candidate of ordered) {\n const existingIndex = effective.findIndex((entry) => entry.manifest.name === candidate.manifest.name);\n if (existingIndex >= 0) {\n effective.splice(existingIndex, 1);\n }\n effective.push(candidate);\n }\n return effective;\n}\n\nasync function scanExtensionLayer(\n layer: ExtensionLayer,\n extensionsRoot: string,\n enabled: Set<string>,\n disabled: Set<string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ExtensionLayerScanResult> {\n const diagnostics: ExtensionDiagnostic[] = [];\n const warnings: string[] = [];\n const candidates: ExtensionCandidate[] = [];\n const directories = await listExtensionDirectories(extensionsRoot);\n const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);\n\n for (const directory of directories) {\n const scanned = await scanExtensionDirectory(\n layer,\n extensionsRoot,\n directory,\n enabled,\n disabled,\n managedSourcePackages,\n pmMaxVersionExceededMode,\n );\n diagnostics.push(scanned.diagnostic);\n warnings.push(...scanned.warnings);\n if (scanned.candidate) {\n candidates.push(scanned.candidate);\n }\n }\n\n return { diagnostics, warnings, candidates };\n}\n\nasync function scanExtensionDirectory(\n layer: ExtensionLayer,\n extensionsRoot: string,\n directory: string,\n enabled: Set<string>,\n disabled: Set<string>,\n managedSourcePackages: ReadonlyMap<string, string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ScannedExtensionDirectory> {\n const extensionDir = path.join(extensionsRoot, directory);\n const manifestPath = path.join(extensionDir, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [`extension_manifest_missing:${layer}:${directory}`],\n candidate: null,\n };\n }\n\n let manifest: ExtensionManifest | null = null;\n try {\n const parsed = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n manifest = parseManifest(parsed);\n } catch {\n manifest = null;\n }\n\n if (!manifest) {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [`extension_manifest_invalid:${layer}:${directory}`],\n candidate: null,\n };\n }\n\n const entryPath = path.resolve(extensionDir, manifest.entry);\n const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);\n const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;\n const entryWithinDirectory =\n entryWithinDirectoryByPath && entryExists\n ? await isCanonicalPathWithinDirectory(extensionDir, entryPath)\n : entryWithinDirectoryByPath;\n const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);\n const extensionWarnings: string[] = [];\n if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {\n extensionWarnings.push(\n formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases),\n );\n }\n for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {\n extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));\n }\n if (!entryWithinDirectory) {\n extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);\n } else if (!entryExists) {\n extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);\n }\n const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);\n if (pmVersionCompatibility.warning) {\n extensionWarnings.push(pmVersionCompatibility.warning);\n }\n const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);\n if (pmMaxVersionCompatibility.warning) {\n extensionWarnings.push(pmMaxVersionCompatibility.warning);\n }\n const extensionReady =\n entryWithinDirectory &&\n entryExists &&\n pmVersionCompatibility.allowed &&\n pmMaxVersionCompatibility.allowed;\n const sourcePackage =\n managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);\n\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: manifest.name,\n version: manifest.version,\n entry: manifest.entry,\n priority: manifest.priority,\n entry_path: entryPath,\n enabled: enabledForLoad,\n status: extensionReady ? \"ok\" : \"warn\",\n },\n warnings: extensionWarnings,\n candidate:\n extensionReady && enabledForLoad\n ? {\n layer,\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n source_package: sourcePackage,\n }\n : null,\n };\n}\n\n\n/**\n * Implements discover extensions for the public runtime surface of this module.\n */\nexport async function discoverExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionDiscoveryResult> {\n const roots = resolveExtensionRoots(options.pmRoot, options.cwd ?? process.cwd());\n const configured_enabled = normalizeNames(options.settings.extensions.enabled);\n const configured_disabled = normalizeNames(options.settings.extensions.disabled);\n const policy = normalizeExtensionPolicy(options.settings);\n const serializedPolicy = serializeExtensionPolicy(policy);\n\n if (options.noExtensions) {\n return {\n disabled_by_flag: true,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [],\n effective: [],\n warnings: [...policy.warnings],\n policy: serializedPolicy,\n };\n }\n\n const enabled = new Set(configured_enabled);\n const disabled = new Set(configured_disabled);\n const globalScan = await scanExtensionLayer(\"global\", roots.global, enabled, disabled, policy.pmMaxVersionExceededMode.global);\n const projectScan = await scanExtensionLayer(\"project\", roots.project, enabled, disabled, policy.pmMaxVersionExceededMode.project);\n const policyWarnings: string[] = [...policy.warnings];\n const effectiveCandidates = buildEffectiveExtensions(globalScan.candidates, projectScan.candidates);\n const effective: EffectiveExtension[] = [];\n for (const candidate of effectiveCandidates) {\n const extensionRef = {\n layer: candidate.layer,\n name: candidate.manifest.name,\n trusted: candidate.manifest.trusted === true,\n provenanceVerified: candidate.manifest.provenance?.verified === true,\n sandboxProfile: candidate.manifest.sandbox_profile,\n permissions:\n candidate.manifest.permissions && typeof candidate.manifest.permissions === \"object\"\n ? {\n fs_read: candidate.manifest.permissions.fs_read,\n fs_write: candidate.manifest.permissions.fs_write,\n network: candidate.manifest.permissions.network,\n env_read: candidate.manifest.permissions.env_read,\n env_write: candidate.manifest.permissions.env_write,\n process_spawn: candidate.manifest.permissions.process_spawn,\n }\n : undefined,\n };\n const extensionDecision = evaluateExtensionPolicyForExtension(policy, extensionRef);\n if (extensionDecision.warning) {\n policyWarnings.push(extensionDecision.warning);\n }\n if (!extensionDecision.allowed) {\n continue;\n }\n for (const capability of candidate.manifest.capabilities) {\n const capabilityDecision = evaluateExtensionPolicyForCapability(policy, extensionRef, capability);\n if (capabilityDecision.warning) {\n policyWarnings.push(capabilityDecision.warning);\n }\n }\n effective.push(summarizeCandidate(candidate));\n }\n\n return {\n disabled_by_flag: false,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [...globalScan.diagnostics, ...projectScan.diagnostics],\n effective,\n warnings: [...new Set([...globalScan.warnings, ...projectScan.warnings, ...policyWarnings])],\n policy: serializedPolicy,\n };\n}\n\nfunction formatUnknownError(error: unknown): string {\n if (error instanceof Error && error.message.trim().length > 0) {\n return error.message;\n }\n return String(error);\n}\n\nasync function readCurrentPmCliVersion(): Promise<string | null> {\n try {\n const packageRoot = resolvePmPackageRootFromModule(import.meta.url, [\"../../..\"]);\n const raw = await fs.readFile(path.join(packageRoot, \"package.json\"), \"utf8\");\n const parsed = JSON.parse(raw) as { version?: unknown };\n return typeof parsed.version === \"string\" && parsed.version.trim().length > 0 ? parsed.version.trim() : null;\n } catch {\n return null;\n }\n}\n\nfunction resolveCurrentPmCliVersion(): Promise<string | null> {\n currentPmCliVersionPromise ??= readCurrentPmCliVersion();\n return currentPmCliVersionPromise;\n}\n\nfunction formatPmVersionCompatibilityWarning(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n evaluation: PmVersionBoundEvaluation,\n): string | undefined {\n const current = evaluation.current ?? \"unknown\";\n if (evaluation.kind === \"pm_min_version\") {\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_min_version_invalid:${layer}:${manifest.name}:required=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_min_version_unchecked:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n case \"unmet\":\n return `extension_pm_min_version_unmet:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n }\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_max_version_invalid:${layer}:${manifest.name}:allowed=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_max_version_unchecked:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded_warn\":\n return `extension_pm_max_version_exceeded_warn:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded\":\n return `extension_pm_max_version_exceeded:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n}\n\nasync function evaluatePmMinVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n): Promise<{ allowed: boolean; warning?: string }> {\n // Resolve the current CLI version only when a bound is declared, so the common\n // no-bound case never reads package.json.\n if (manifest.pm_min_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMinVersionBound(manifest.pm_min_version, await resolveCurrentPmCliVersion());\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function evaluatePmMaxVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n exceededMode: PmMaxVersionExceededMode,\n): Promise<{ allowed: boolean; warning?: string }> {\n if (manifest.pm_max_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMaxVersionBound(\n manifest.pm_max_version,\n await resolveCurrentPmCliVersion(),\n exceededMode,\n );\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function fingerprintPath(pathToInspect: string): Promise<string> {\n try {\n const stats = await fs.stat(pathToInspect);\n return `${Math.trunc(stats.mtimeMs)}-${stats.size}`;\n } catch {\n return \"missing\";\n }\n}\n\nasync function resolveExtensionImportHref(\n extension: EffectiveExtension,\n options: DiscoverExtensionsOptions,\n): Promise<string> {\n const baseUrl = new URL(pathToFileURL(extension.entry_path).href);\n const shouldCacheBust = options.cache_bust === true || typeof options.reload_token === \"string\";\n if (!shouldCacheBust) {\n return baseUrl.href;\n }\n const [entryFingerprint, manifestFingerprint] = await Promise.all([\n fingerprintPath(extension.entry_path),\n fingerprintPath(extension.manifest_path),\n ]);\n const reloadToken = options.reload_token ?? nextExtensionReloadToken();\n baseUrl.searchParams.set(\"pm_ext_reload\", reloadToken);\n baseUrl.searchParams.set(\"pm_ext_entry\", entryFingerprint);\n baseUrl.searchParams.set(\"pm_ext_manifest\", manifestFingerprint);\n return baseUrl.href;\n}\n\n/**\n * Implements load extensions for the public runtime surface of this module.\n */\nexport async function loadExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionLoadResult> {\n const discovery = await discoverExtensions(options);\n const loaded: LoadedExtension[] = [];\n const failed: FailedExtensionLoad[] = [];\n const warnings = [...discovery.warnings];\n\n if (discovery.disabled_by_flag) {\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n }\n\n for (const extension of discovery.effective) {\n try {\n const importHref = await resolveExtensionImportHref(extension, options);\n const module = await import(importHref);\n loaded.push({\n ...extension,\n module,\n });\n } catch (error: unknown) {\n warnings.push(`extension_load_failed:${extension.layer}:${extension.name}`);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n });\n }\n }\n\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n}\n\ntype HookName = keyof ExtensionHookRegistry;\nconst DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5_000;\nconst MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2_147_483_647;\n\nfunction toActivatableExtension(source: Record<string, unknown>): ActivatableExtension {\n // Bind to `source` so a module/default-export authored with methods (or a class\n // instance) keeps its `this` across both lifecycle calls — `activate` is a\n // method call on a fresh object and `deactivate` is invoked bare, so without\n // binding the two would see different (or undefined) `this`.\n const activate = source.activate as ActivatableExtension[\"activate\"];\n const activatable: ActivatableExtension = {\n activate: activate.bind(source),\n };\n if (typeof source.deactivate === \"function\") {\n const deactivate = source.deactivate as NonNullable<ActivatableExtension[\"deactivate\"]>;\n activatable.deactivate = deactivate.bind(source);\n }\n return activatable;\n}\n\nfunction resolveActivatableExtension(module: unknown): ActivatableExtension | null {\n const moduleRecord = asRecordLoose(module);\n if (!moduleRecord) {\n return null;\n }\n\n if (typeof moduleRecord.activate === \"function\") {\n return toActivatableExtension(moduleRecord);\n }\n\n const defaultExport = asRecordLoose(moduleRecord.default);\n if (defaultExport && typeof defaultExport.activate === \"function\") {\n return toActivatableExtension(defaultExport);\n }\n\n return null;\n}\n\n/**\n * Run the optional `deactivate` teardown hook for every loaded extension that\n * exports one. Best-effort: a throwing teardown is captured as a warning and a\n * failure entry rather than propagated, so one extension cannot block another's\n * cleanup. Hosts call this on shutdown/reload (e.g. the MCP server between\n * native-action requests) to release resources opened during `activate`.\n *\n * Pass the `activationResult` to skip extensions whose `activate` failed — they\n * never fully initialized, so (VS Code-style) their `deactivate` must not run.\n * Teardowns run concurrently and each hook has a bounded timeout by default, so\n * one slow or hanging hook cannot serialize the rest or block the host\n * indefinitely unless the host explicitly disables the timeout; the returned\n * warnings/failures preserve loaded order.\n */\nexport async function deactivateExtensions(\n loadResult: ExtensionLoadResult,\n activationResult?: Pick<ExtensionActivationResult, \"failed\">,\n options: ExtensionDeactivationOptions = {},\n): Promise<ExtensionDeactivationResult> {\n const timeoutMs = normalizeExtensionDeactivateTimeout(options?.deactivate_timeout_ms);\n const failedActivationKeys = new Set(\n (activationResult?.failed ?? []).map((entry) => `${entry.layer}:${entry.name}`),\n );\n const targets: Array<{ extension: LoadedExtension; deactivate: () => void | Promise<void> }> = [];\n for (const extension of loadResult.loaded) {\n if (failedActivationKeys.has(`${extension.layer}:${extension.name}`)) {\n continue;\n }\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable || typeof activatable.deactivate !== \"function\") {\n continue;\n }\n targets.push({ extension, deactivate: activatable.deactivate });\n }\n const outcomes = await Promise.all(\n targets.map(async ({ extension, deactivate }) => {\n try {\n await runExtensionDeactivateWithTimeout(deactivate, timeoutMs);\n return { ok: true as const };\n } catch (error: unknown) {\n return { ok: false as const, layer: extension.layer, name: extension.name, error: formatUnknownError(error) };\n }\n }),\n );\n const warnings: string[] = [];\n const failed: ExtensionDeactivationFailure[] = [];\n let deactivated = 0;\n for (const outcome of outcomes) {\n if (outcome.ok) {\n deactivated += 1;\n continue;\n }\n warnings.push(`extension_deactivate_failed:${outcome.layer}:${outcome.name}`);\n failed.push({ layer: outcome.layer, name: outcome.name, error: outcome.error });\n }\n return { deactivated, warnings, failed };\n}\n\nfunction normalizeExtensionDeactivateTimeout(rawTimeout: unknown): number {\n if (typeof rawTimeout !== \"number\" || rawTimeout < 0) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n if (rawTimeout === 0 || rawTimeout === Infinity) {\n return 0;\n }\n if (!Number.isFinite(rawTimeout)) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n return Math.min(MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS, Math.max(1, Math.floor(rawTimeout)));\n}\n\nasync function runExtensionDeactivateWithTimeout(\n deactivate: () => void | Promise<void>,\n timeoutMs: number,\n): Promise<void> {\n if (timeoutMs === 0) {\n await deactivate();\n return;\n }\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n // A timed-out deactivate promise may still finish later; JavaScript promises\n // are not cancellable, so the host only stops waiting and consumes any late\n // rejection from the hook.\n const deactivatePromise = Promise.resolve().then(() => deactivate());\n deactivatePromise.catch(() => {});\n await Promise.race([\n deactivatePromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n reject(new Error(`extension deactivate timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n timeoutHandle.unref?.();\n }),\n ]);\n } finally {\n clearTimeout(timeoutHandle as ReturnType<typeof setTimeout>);\n }\n}\n\nfunction isOutputRendererFormat(value: string): value is OutputRendererFormat {\n return value === \"toon\" || value === \"json\";\n}\n\nfunction isExtensionServiceName(value: string): value is ExtensionServiceName {\n return KNOWN_EXTENSION_SERVICE_NAMES.includes(value as ExtensionServiceName);\n}\n\nfunction assertHookHandler(hookName: string, hook: unknown): void {\n if (typeof hook !== \"function\") {\n throw new TypeError(`api.hooks.${hookName} requires a function handler`);\n }\n}\n\nfunction assertNonEmptyString(name: string, value: unknown): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} requires a non-empty string`);\n }\n return value.trim();\n}\n\nfunction assertFunctionHandler(name: string, value: unknown): void {\n if (typeof value !== \"function\") {\n throw new TypeError(`${name} requires a function handler`);\n }\n}\n\nfunction normalizeRegistrationName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toRegistrationCommandPath(name: string, action: \"import\" | \"export\"): string {\n return normalizeCommandName(`${name} ${action}`);\n}\n\nfunction sanitizeRegistrationValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => sanitizeRegistrationValue(entry));\n }\n if (typeof value === \"function\") {\n return \"[Function]\";\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n if (typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n const normalized: Record<string, unknown> = {};\n const keys = Object.keys(record).sort((left, right) => left.localeCompare(right));\n for (const key of keys) {\n normalized[key] = sanitizeRegistrationValue(record[key]);\n }\n return normalized;\n }\n return value;\n}\n\nfunction cloneRuntimeRegistrationValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneRuntimeRegistrationValue(entry));\n }\n if (typeof value === \"object\" && value !== null) {\n const record = value as Record<string, unknown>;\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n cloned[key] = cloneRuntimeRegistrationValue(record[key]);\n }\n return cloned;\n }\n return value;\n}\n\nconst EXTENSION_REGISTRATION_TRACE_SYMBOL = Symbol(\"extension_registration_trace\");\n\ntype RegistrationTraceCarrier = Error & {\n [EXTENSION_REGISTRATION_TRACE_SYMBOL]?: ExtensionActivationFailureTrace;\n};\n\nfunction createRegistrationValidationError(message: string, trace: ExtensionActivationFailureTrace): TypeError {\n const error = new TypeError(message) as RegistrationTraceCarrier;\n Object.defineProperty(error, EXTENSION_REGISTRATION_TRACE_SYMBOL, {\n value: trace,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return error;\n}\n\nfunction extractRegistrationValidationTrace(error: unknown): ExtensionActivationFailureTrace | undefined {\n if (!(error instanceof Error)) {\n return undefined;\n }\n return (error as RegistrationTraceCarrier)[EXTENSION_REGISTRATION_TRACE_SYMBOL];\n}\n\nfunction normalizeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return sanitizeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRuntimeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return cloneRuntimeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRegistrationRecordList(name: string, value: unknown): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} requires an array of object definitions`);\n }\n return value.map((entry) => normalizeRegistrationRecord(name, entry));\n}\n\nfunction asRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction assertOptionalBooleanField(name: string, value: unknown): void {\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`${name} must be a boolean when provided`);\n }\n}\n\nfunction assertOptionalStringField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string when provided`);\n }\n}\n\nfunction isFlagDefaultScalar(value: unknown): boolean {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\n}\n\nfunction assertOptionalFlagDefaultField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (Array.isArray(value)) {\n for (const [index, item] of value.entries()) {\n if (!isFlagDefaultScalar(item)) {\n throw new TypeError(`${name}[${index}] must be a string, number, or boolean`);\n }\n }\n return;\n }\n if (!isFlagDefaultScalar(value)) {\n throw new TypeError(`${name} must be a string, number, or boolean, or an array of these when provided`);\n }\n}\n\nfunction assertOptionalStringArrayField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} must be an array of non-empty strings when provided`);\n }\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"string\" || entry.trim().length === 0) {\n throw new TypeError(`${name}[${index}] must be a non-empty string`);\n }\n }\n}\n\nfunction normalizeOptionalStringArrayField(name: string, value: unknown): string[] {\n assertOptionalStringArrayField(name, value);\n if (!Array.isArray(value)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const entry of value) {\n const trimmed = entry.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeCommandActionName(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[\\s_]+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction resolveCommandDefinitionAction(commandPath: string, action: unknown): string {\n if (action === undefined) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n if (typeof action !== \"string\" || action.trim().length === 0) {\n throw new TypeError(\"registerCommand definition.action must be a non-empty string when provided\");\n }\n const normalized = normalizeCommandActionName(action);\n if (normalized.length === 0) {\n throw new TypeError(\"registerCommand definition.action must contain alphanumeric characters\");\n }\n return normalized;\n}\n\nfunction normalizeCommandDefinitionArguments(value: unknown): ExtensionCommandArgumentDefinition[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(\"registerCommand definition.arguments must be an array when provided\");\n }\n const normalized: ExtensionCommandArgumentDefinition[] = [];\n for (const [index, entry] of value.entries()) {\n const record = asRegistrationRecord(`registerCommand definition.arguments[${index}]`, entry);\n const name = assertNonEmptyString(`registerCommand definition.arguments[${index}].name`, record.name);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].required`, record.required);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].variadic`, record.variadic);\n assertOptionalStringField(`registerCommand definition.arguments[${index}].description`, record.description);\n if (name.includes(\" \")) {\n throw new TypeError(`registerCommand definition.arguments[${index}].name must not contain spaces`);\n }\n const definition: ExtensionCommandArgumentDefinition = {\n name,\n };\n if (record.required === true) {\n definition.required = true;\n }\n if (record.variadic === true) {\n definition.variadic = true;\n }\n if (typeof record.description === \"string\") {\n definition.description = record.description.trim();\n }\n normalized.push(definition);\n }\n\n const variadicIndexes = normalized\n .map((argument, index) => (argument.variadic ? index : -1))\n .filter((index) => index >= 0);\n if (variadicIndexes.length > 1) {\n throw new TypeError(\"registerCommand definition.arguments supports at most one variadic argument\");\n }\n if (variadicIndexes.length === 1 && variadicIndexes[0] !== normalized.length - 1) {\n throw new TypeError(\"registerCommand definition.arguments variadic argument must be the final argument\");\n }\n\n return normalized;\n}\n\nfunction validateFlagDefinitions(flags: unknown): void {\n if (!Array.isArray(flags)) {\n throw new TypeError(\"registerFlags flags requires an array of object definitions\");\n }\n for (const [index, raw] of flags.entries()) {\n const record = asRegistrationRecord(`registerFlags flags[${index}]`, raw);\n const long = record.long;\n const short = record.short;\n if (long === undefined && short === undefined) {\n throw new TypeError(`registerFlags flags[${index}] requires at least one of long or short`);\n }\n assertOptionalStringField(`registerFlags flags[${index}].long`, long);\n assertOptionalStringField(`registerFlags flags[${index}].short`, short);\n assertOptionalStringField(`registerFlags flags[${index}].value_name`, record.value_name);\n assertOptionalStringField(`registerFlags flags[${index}].description`, record.description);\n assertOptionalBooleanField(`registerFlags flags[${index}].required`, record.required);\n assertOptionalBooleanField(`registerFlags flags[${index}].enabled`, record.enabled);\n assertOptionalBooleanField(`registerFlags flags[${index}].visible`, record.visible);\n assertOptionalBooleanField(`registerFlags flags[${index}].list`, record.list);\n assertOptionalFlagDefaultField(`registerFlags flags[${index}].default`, record.default);\n if (Array.isArray(record.default) && record.list !== true) {\n throw new TypeError(`registerFlags flags[${index}].default cannot be an array unless list is true.`);\n }\n assertFlagValueTypeAndDefault(`registerFlags flags[${index}]`, record);\n }\n}\n\n/**\n * Reject a declared `value_type`/`type` that is not a known flag value kind, and\n * a `default` whose value(s) would not cleanly coerce under that kind — so the\n * typed-flag contract is enforced at registration instead of silently leaving\n * an untyped value to surface at use time.\n */\nfunction assertFlagValueTypeAndDefault(label: string, record: Record<string, unknown>): void {\n const declaredType =\n (typeof record.value_type === \"string\" ? record.value_type : undefined) ??\n (typeof record.type === \"string\" ? record.type : undefined);\n if (declaredType === undefined) {\n return;\n }\n const kind = resolveFlagValueKind(declaredType);\n if (kind === null) {\n throw new TypeError(\n `${label} value_type \"${declaredType}\" is not a known flag value type (expected one of: string, number, boolean).`,\n );\n }\n if (record.default === undefined) {\n return;\n }\n // For list flags, validate the default exactly as the runtime will see it —\n // comma-joined strings and nested arrays are flattened first — so a valid\n // default like `value_type: \"number\", default: \"10,20\"` is not wrongly rejected.\n const defaults = record.list === true ? flattenFlagListValue(record.default) : [record.default];\n for (const [defaultIndex, defaultValue] of defaults.entries()) {\n if (!isFlagDefaultValueCoercible(defaultValue as string | number | boolean, kind)) {\n const suffix = defaults.length > 1 ? `default[${defaultIndex}]` : \"default\";\n throw new TypeError(`${label}.${suffix} (${JSON.stringify(defaultValue)}) is not coercible to ${kind}.`);\n }\n }\n}\n\nfunction validateItemFieldDefinitions(fields: unknown): void {\n if (!Array.isArray(fields)) {\n throw new TypeError(\"registerItemFields fields requires an array of object definitions\");\n }\n for (const [index, raw] of fields.entries()) {\n const record = asRegistrationRecord(`registerItemFields fields[${index}]`, raw);\n assertNonEmptyString(`registerItemFields fields[${index}].name`, record.name);\n const fieldType = assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);\n if (normalizeItemFieldType(fieldType) === null) {\n const suggestion = suggestKnownItemFieldType(fieldType);\n const hint = suggestion ? ` Did you mean \"${suggestion}\"?` : \"\";\n throw new TypeError(\n `registerItemFields fields[${index}].type \"${fieldType}\" is not a known field type ` +\n `(expected one of: ${KNOWN_ITEM_FIELD_TYPES.join(\", \")}).${hint}`,\n );\n }\n assertOptionalBooleanField(`registerItemFields fields[${index}].optional`, record.optional);\n }\n}\n\nfunction validateItemTypeDefinitions(types: unknown): void {\n if (!Array.isArray(types)) {\n throw new TypeError(\"registerItemTypes types requires an array of object definitions\");\n }\n for (const [typeIndex, raw] of types.entries()) {\n const record = asRegistrationRecord(`registerItemTypes types[${typeIndex}]`, raw);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].name`, record.name);\n assertOptionalStringField(`registerItemTypes types[${typeIndex}].folder`, record.folder);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].aliases`, record.aliases);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_fields`,\n record.required_create_fields,\n );\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_repeatables`,\n record.required_create_repeatables,\n );\n\n if (record.command_option_policies !== undefined) {\n if (!Array.isArray(record.command_option_policies)) {\n throw new TypeError(\n `registerItemTypes types[${typeIndex}].command_option_policies must be an array when provided`,\n );\n }\n for (const [policyIndex, rawPolicy] of record.command_option_policies.entries()) {\n const policy = asRegistrationRecord(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}]`,\n rawPolicy,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].command`,\n policy.command,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].option`,\n policy.option,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].enabled`,\n policy.enabled,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].required`,\n policy.required,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].visible`,\n policy.visible,\n );\n }\n }\n\n if (record.options !== undefined) {\n if (!Array.isArray(record.options)) {\n throw new TypeError(`registerItemTypes types[${typeIndex}].options must be an array when provided`);\n }\n for (const [optionIndex, rawOption] of record.options.entries()) {\n const option = asRegistrationRecord(`registerItemTypes types[${typeIndex}].options[${optionIndex}]`, rawOption);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].options[${optionIndex}].key`, option.key);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].values`, option.values);\n assertOptionalBooleanField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].required`, option.required);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].options[${optionIndex}].aliases`,\n option.aliases,\n );\n }\n }\n }\n}\n\nfunction validateMigrationDefinition(definition: unknown): void {\n const record = asRegistrationRecord(\"registerMigration definition\", definition);\n if (record.id !== undefined && typeof record.id !== \"string\") {\n throw new TypeError(\"registerMigration definition.id must be a string when provided\");\n }\n if (record.description !== undefined && typeof record.description !== \"string\") {\n throw new TypeError(\"registerMigration definition.description must be a string when provided\");\n }\n if (record.status !== undefined && typeof record.status !== \"string\") {\n throw new TypeError(\"registerMigration definition.status must be a string when provided\");\n }\n assertOptionalBooleanField(\"registerMigration definition.mandatory\", record.mandatory);\n if (record.run !== undefined && typeof record.run !== \"function\") {\n throw new TypeError(\"registerMigration definition.run must be a function when provided\");\n }\n}\n\n/**\n * The seven array-valued dimensions a {@link ProjectProfileDefinition} stages.\n * Each is \"optional-by-emptiness\": an omitted dimension normalizes to an empty\n * array so the profile planner can iterate every dimension unconditionally.\n */\nconst PROJECT_PROFILE_DIMENSIONS = [\n \"types\",\n \"statuses\",\n \"fields\",\n \"workflows\",\n \"config\",\n \"templates\",\n \"packages\",\n] as const;\n\n/**\n * Validates the field shapes the profile planner, `pm profile show/apply/lint`,\n * and `describeProjectProfile` dereference without re-checking, so a structurally\n * well-formed but type-violating extension entry (e.g. a workflow whose `type` is\n * a number, or whose `allowed_transitions` is not an array) is rejected here\n * rather than crashing a downstream consumer. Dimensions whose consumers already\n * coerce or gracefully reject malformed values (statuses, fields, config) need no\n * shape check. The `entry` is an already-confirmed non-null object.\n */\nfunction validateProjectProfileEntryShape(dimension: string, index: number, entry: Record<string, unknown>): void {\n const at = `registerProfile profile.${dimension}[${index}]`;\n if (dimension === \"types\") {\n if (entry.name !== undefined && typeof entry.name !== \"string\") {\n throw new TypeError(`${at}.name must be a string when provided`);\n }\n return;\n }\n if (dimension === \"workflows\") {\n if (typeof entry.type !== \"string\") {\n throw new TypeError(`${at}.type must be a string`);\n }\n if (!Array.isArray(entry.allowed_transitions)) {\n throw new TypeError(`${at}.allowed_transitions must be an array`);\n }\n for (const [pairIndex, pair] of entry.allowed_transitions.entries()) {\n if (!Array.isArray(pair)) {\n throw new TypeError(`${at}.allowed_transitions[${pairIndex}] must be a [from, to] array`);\n }\n }\n return;\n }\n if (dimension === \"templates\") {\n if (typeof entry.name !== \"string\") {\n throw new TypeError(`${at}.name must be a string`);\n }\n if (typeof entry.options !== \"object\" || entry.options === null || Array.isArray(entry.options)) {\n throw new TypeError(`${at}.options must be an object`);\n }\n return;\n }\n if (dimension === \"packages\") {\n if (typeof entry.spec !== \"string\") {\n throw new TypeError(`${at}.spec must be a string`);\n }\n }\n}\n\nfunction validateProjectProfileDefinition(profile: unknown): void {\n const record = asRegistrationRecord(\"registerProfile profile\", profile);\n assertNonEmptyString(\"registerProfile profile.name\", record.name);\n assertNonEmptyString(\"registerProfile profile.title\", record.title);\n if (record.summary !== undefined && typeof record.summary !== \"string\") {\n throw new TypeError(\"registerProfile profile.summary must be a string when provided\");\n }\n for (const dimension of PROJECT_PROFILE_DIMENSIONS) {\n const value = record[dimension];\n if (value === undefined) {\n continue;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`registerProfile profile.${dimension} must be an array when provided`);\n }\n // Each dimension entry must be a non-null object: a primitive or null entry\n // (e.g. `statuses: [null]`, `types: [42]`) survives an array-only check but\n // crashes the profile planner and `pm profile show` when they read `entry.id`\n // / `entry.key` / `entry.type` later. Reject it at the registration boundary.\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n throw new TypeError(`registerProfile profile.${dimension}[${index}] must be an object`);\n }\n // Beyond \"is an object\", validate the specific field shapes consumers\n // dereference so a type-violating entry can never crash the planner, the\n // `pm profile` surfaces, or describeProjectProfile downstream.\n validateProjectProfileEntryShape(dimension, index, entry as Record<string, unknown>);\n }\n }\n}\n\n/**\n * Fills an already-validated profile snapshot's optional surfaces — an absent\n * `summary` becomes an empty string and every omitted dimension an empty array —\n * so the stored definition always has the full {@link ProjectProfileDefinition}\n * shape the profile planner and `pm profile` resolution rely on. It runs after\n * validation on the cloned snapshot, so it only ever supplies missing defaults\n * and never has to coerce an invalid type (those are already rejected).\n */\nfunction applyProjectProfileDefaults(profile: Record<string, unknown>): ProjectProfileDefinition {\n if (profile.summary === undefined) {\n profile.summary = \"\";\n }\n for (const dimension of PROJECT_PROFILE_DIMENSIONS) {\n if (profile[dimension] === undefined) {\n profile[dimension] = [];\n }\n }\n return profile as unknown as ProjectProfileDefinition;\n}\n\nfunction attachRuntimeDefinition<TEntry extends { definition: Record<string, unknown> }>(\n entry: TEntry,\n runtimeDefinition: Record<string, unknown>,\n): TEntry {\n Object.defineProperty(entry, \"runtime_definition\", {\n value: runtimeDefinition,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return entry;\n}\n\nfunction getDeclaredExtensionCapabilities(extension: LoadedExtension): Set<ExtensionCapability> | null {\n if (!Array.isArray(extension.capabilities)) {\n return null;\n }\n const declared = new Set<ExtensionCapability>();\n for (const capability of extension.capabilities) {\n const normalized = capability.trim().toLowerCase();\n if (isKnownExtensionCapability(normalized)) {\n declared.add(normalized);\n }\n }\n return declared;\n}\n\nfunction assertExtensionCapability(extension: LoadedExtension, capability: ExtensionCapability, method: string): void {\n const declared = getDeclaredExtensionCapabilities(extension);\n // Keep direct unit tests that construct LoadedExtension fixtures without\n // capability metadata backwards-compatible while enforcing manifest-declared\n // capabilities for runtime-loaded extensions.\n if (declared === null) {\n return;\n }\n if (!declared.has(capability)) {\n throw createRegistrationValidationError(\n `${method} requires capability '${capability}' in extension manifest capabilities`,\n {\n method,\n registration_index: -1,\n capability,\n missing_capability: capability,\n expected_schema: `\"capabilities\": [..., \"${capability}\"]`,\n received: extension.capabilities,\n hint: `Add \"${capability}\" to ${extension.name} manifest capabilities, or remove the ${method} registration call.`,\n },\n );\n }\n}\n\nfunction createExtensionApi(\n extension: LoadedExtension,\n hooks: ExtensionHookRegistry,\n commands: ExtensionCommandRegistry,\n parsers: ExtensionParserRegistry,\n preflight: ExtensionPreflightRegistry,\n services: ExtensionServiceRegistry,\n renderers: ExtensionRendererRegistry,\n registrations: ExtensionRegistrationRegistry,\n activationWarnings: string[],\n policy: NormalizedExtensionPolicy,\n): ExtensionApi {\n const selfIdentity: ExtensionSelfIdentity = Object.freeze({\n name: extension.name,\n layer: extension.layer,\n version: extension.version,\n capabilities: Object.freeze(\n (extension.capabilities ?? []).filter((capability): capability is ExtensionCapability =>\n (KNOWN_EXTENSION_CAPABILITIES as readonly string[]).includes(capability),\n ),\n ) as readonly ExtensionCapability[],\n pm_min_version: extension.pm_min_version,\n pm_max_version: extension.pm_max_version,\n source_package: extension.source_package,\n });\n const extensionRef: PolicyExtensionRef = {\n layer: extension.layer,\n name: extension.name,\n trusted: extension.trusted === true,\n provenanceVerified: extension.provenance?.verified === true,\n sandboxProfile: extension.sandbox_profile,\n permissions:\n extension.permissions && typeof extension.permissions === \"object\"\n ? {\n fs_read: extension.permissions.fs_read,\n fs_write: extension.permissions.fs_write,\n network: extension.permissions.network,\n env_read: extension.permissions.env_read,\n env_write: extension.permissions.env_write,\n process_spawn: extension.permissions.process_spawn,\n }\n : undefined,\n };\n const pushPolicyWarning = (warning: string | null): void => {\n if (warning) {\n activationWarnings.push(warning);\n }\n };\n const allowRegistration = (\n surface: ExtensionPolicySurface,\n method: string,\n capability?: ExtensionCapability,\n details?: {\n command?: string;\n action?: string;\n service?: string;\n },\n ): boolean => {\n const decision = evaluateExtensionPolicyForRegistration(policy, extensionRef, surface, method, capability, details);\n pushPolicyWarning(decision.warning);\n return decision.allowed;\n };\n const registerCommandTrace = (\n mode: \"override\" | \"definition\",\n command: string | undefined,\n expectedSchema: string,\n received: unknown,\n hint?: string,\n ): ExtensionActivationFailureTrace => ({\n method: \"registerCommand\",\n registration_index: mode === \"override\" ? commands.overrides.length : commands.handlers.length,\n command,\n expected_schema: expectedSchema,\n received: sanitizeRegistrationValue(received),\n hint,\n });\n\n const registerCommand = (commandOrDefinition: string | CommandDefinition, override?: CommandOverride): void => {\n assertExtensionCapability(extension, \"commands\", \"registerCommand\");\n if (typeof commandOrDefinition === \"string\") {\n const normalizedCommand = normalizeCommandName(commandOrDefinition);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command name\",\n registerCommandTrace(\n \"override\",\n commandOrDefinition,\n 'registerCommand(\"<command>\", (context) => unknown)',\n commandOrDefinition,\n \"Provide a non-empty command path as the first argument.\",\n ),\n );\n }\n if (typeof override !== \"function\") {\n const trace = registerCommandTrace(\n \"override\",\n normalizedCommand,\n 'registerCommand(\"<command>\", (context) => unknown)',\n { command: commandOrDefinition, override },\n \"Provide a function as the second registerCommand argument.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires an override function when command name is provided (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n if (!allowRegistration(\"commands.override\", \"registerCommand\", \"commands\", { command: normalizedCommand })) {\n return;\n }\n commands.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n return;\n }\n if (typeof commandOrDefinition !== \"object\" || commandOrDefinition === null) {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition object\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Use registerCommand({ name: \\\"command path\\\", run: (context) => ... }).\",\n ),\n );\n }\n if (typeof commandOrDefinition.name !== \"string\") {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition name\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Set command definition.name to a non-empty string command path.\",\n ),\n );\n }\n\n const normalizedCommand = normalizeCommandName(commandOrDefinition.name);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command definition name\",\n registerCommandTrace(\n \"definition\",\n commandOrDefinition.name,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Ensure command definition.name contains a non-empty command path.\",\n ),\n );\n }\n const runHandler = typeof commandOrDefinition.run === \"function\" ? commandOrDefinition.run : undefined;\n const legacyHandler = typeof commandOrDefinition.handler === \"function\" ? commandOrDefinition.handler : undefined;\n if (!runHandler && legacyHandler) {\n activationWarnings.push(\n `extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`,\n );\n }\n const resolvedHandler = runHandler ?? legacyHandler;\n if (typeof resolvedHandler !== \"function\") {\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Define command definition.run as a function.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires a command definition run handler (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n try {\n assertOptionalStringField(\"registerCommand definition.action\", commandOrDefinition.action);\n assertOptionalStringField(\"registerCommand definition.description\", commandOrDefinition.description);\n assertOptionalStringField(\"registerCommand definition.intent\", commandOrDefinition.intent);\n const action = resolveCommandDefinitionAction(normalizedCommand, commandOrDefinition.action);\n if (!allowRegistration(\"commands.handler\", \"registerCommand\", \"commands\", { command: normalizedCommand, action })) {\n return;\n }\n const description = commandOrDefinition.description?.trim();\n const intent = commandOrDefinition.intent?.trim();\n const examples = normalizeOptionalStringArrayField(\"registerCommand definition.examples\", commandOrDefinition.examples);\n const failureHints = normalizeOptionalStringArrayField(\n \"registerCommand definition.failure_hints\",\n commandOrDefinition.failure_hints,\n );\n const argumentsDefinition = normalizeCommandDefinitionArguments(commandOrDefinition.arguments);\n\n if (commandOrDefinition.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", \"registerCommand flags\");\n validateFlagDefinitions(commandOrDefinition.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedCommand,\n flags: normalizeRegistrationRecordList(\"registerCommand definition.flags\", commandOrDefinition.flags),\n });\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: normalizedCommand,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n if (description) {\n registration.description = description;\n }\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n } catch (error: unknown) {\n const reason = formatUnknownError(error);\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }\",\n commandOrDefinition,\n \"Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.\",\n );\n throw createRegistrationValidationError(\n `registerCommand definition metadata invalid (command=\"${normalizedCommand}\", registration_index=${trace.registration_index}): ${reason}`,\n trace,\n );\n }\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: resolvedHandler,\n });\n };\n const registerParser = (command: string, override: ParserOverride): void => {\n assertExtensionCapability(extension, \"parser\", \"registerParser\");\n if (!allowRegistration(\"parser.override\", \"registerParser\", \"parser\")) {\n return;\n }\n const normalizedCommand = normalizeCommandName(assertNonEmptyString(\"registerParser command\", command));\n assertFunctionHandler(\"registerParser override\", override);\n parsers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n };\n const registerPreflight = (override: PreflightOverride): void => {\n assertExtensionCapability(extension, \"preflight\", \"registerPreflight\");\n if (!allowRegistration(\"preflight.override\", \"registerPreflight\", \"preflight\")) {\n return;\n }\n assertFunctionHandler(\"registerPreflight override\", override);\n preflight.overrides.push({\n layer: extension.layer,\n name: extension.name,\n run: override,\n });\n };\n const registerService = (service: ExtensionServiceName, override: ServiceOverride): void => {\n assertExtensionCapability(extension, \"services\", \"registerService\");\n const normalizedService = String(service).trim().toLowerCase();\n if (!isExtensionServiceName(normalizedService)) {\n throw new TypeError(`registerService service must be one of: ${KNOWN_EXTENSION_SERVICE_NAMES.join(\", \")}`);\n }\n if (!allowRegistration(\"services.override\", \"registerService\", \"services\", { service: normalizedService })) {\n return;\n }\n assertFunctionHandler(\"registerService override\", override);\n services.overrides.push({\n layer: extension.layer,\n name: extension.name,\n service: normalizedService as ExtensionServiceName,\n run: override,\n });\n };\n const registerRenderer = (format: OutputRendererFormat, renderer: RendererOverride): void => {\n assertExtensionCapability(extension, \"renderers\", \"registerRenderer\");\n if (!allowRegistration(\"renderers.override\", \"registerRenderer\", \"renderers\")) {\n return;\n }\n if (typeof renderer !== \"function\") {\n throw new TypeError(\"registerRenderer requires a renderer function\");\n }\n const normalizedFormat = String(format).trim().toLowerCase();\n if (!isOutputRendererFormat(normalizedFormat)) {\n throw new Error(`registerRenderer format must be toon|json, received: ${String(format)}`);\n }\n renderers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n format: normalizedFormat,\n run: renderer,\n });\n };\n const registerFlags = (targetCommand: string, flags: FlagDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerFlags\");\n if (!allowRegistration(\"schema.flags\", \"registerFlags\", \"schema\")) {\n return;\n }\n const normalizedTargetCommand = normalizeCommandName(assertNonEmptyString(\"registerFlags targetCommand\", targetCommand));\n validateFlagDefinitions(flags);\n const normalizedFlags = normalizeRegistrationRecordList(\"registerFlags flags\", flags);\n if (normalizedFlags.length === 0) {\n throw new TypeError(\"registerFlags requires at least one flag definition\");\n }\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedTargetCommand,\n flags: normalizedFlags,\n });\n };\n const registerItemFields = (fields: SchemaFieldDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemFields\");\n if (!allowRegistration(\"schema.itemfields\", \"registerItemFields\", \"schema\")) {\n return;\n }\n validateItemFieldDefinitions(fields);\n const normalizedFields = normalizeRegistrationRecordList(\n \"registerItemFields fields\",\n fields,\n ) as SchemaFieldDefinition[];\n if (normalizedFields.length === 0) {\n throw new TypeError(\"registerItemFields requires at least one field definition\");\n }\n registrations.item_fields.push({\n layer: extension.layer,\n name: extension.name,\n fields: normalizedFields,\n });\n };\n const registerItemTypes = (types: SchemaItemTypeDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemTypes\");\n if (!allowRegistration(\"schema.itemtypes\", \"registerItemTypes\", \"schema\")) {\n return;\n }\n validateItemTypeDefinitions(types);\n const normalizedTypes = normalizeRegistrationRecordList(\n \"registerItemTypes types\",\n types,\n ) as SchemaItemTypeDefinition[];\n if (normalizedTypes.length === 0) {\n throw new TypeError(\"registerItemTypes requires at least one type definition\");\n }\n registrations.item_types.push({\n layer: extension.layer,\n name: extension.name,\n types: normalizedTypes,\n });\n };\n const registerMigration = (definition: SchemaMigrationDefinition): void => {\n assertExtensionCapability(extension, \"schema\", \"registerMigration\");\n if (!allowRegistration(\"schema.migrations\", \"registerMigration\", \"schema\")) {\n return;\n }\n validateMigrationDefinition(definition);\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerMigration definition\", definition);\n registrations.migrations.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerMigration definition\", definition),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSchemaMigrationDefinition,\n );\n };\n const registerProfile = (profile: ProjectProfileRegistrationInput): void => {\n assertExtensionCapability(extension, \"schema\", \"registerProfile\");\n if (!allowRegistration(\"schema.profiles\", \"registerProfile\", \"schema\")) {\n return;\n }\n // Snapshot first, then validate and default the snapshot: cloning resolves\n // any getters once into plain data decoupled from the caller's object, so\n // validation and storage operate on the same value — a getter cannot present\n // one value to validation and another to the registry. Defaults are applied\n // only after validation, so an invalid type is rejected, not silently coerced.\n const snapshot = cloneRuntimeRegistrationValue(profile);\n validateProjectProfileDefinition(snapshot);\n registrations.profiles.push({\n layer: extension.layer,\n name: extension.name,\n profile: applyProjectProfileDefaults(snapshot as Record<string, unknown>),\n });\n };\n const applyImportExportCommandMetadata = (\n method: \"registerImporter\" | \"registerExporter\",\n commandPath: string,\n options: ImportExportRegistrationOptions | undefined,\n ): void => {\n if (options === undefined) {\n return;\n }\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n throw new TypeError(`${method} options must be an object when provided`);\n }\n assertOptionalStringField(`${method} options.action`, options.action);\n assertOptionalStringField(`${method} options.description`, options.description);\n assertOptionalStringField(`${method} options.intent`, options.intent);\n const action = resolveCommandDefinitionAction(commandPath, options.action);\n const examples = normalizeOptionalStringArrayField(`${method} options.examples`, options.examples);\n const failureHints = normalizeOptionalStringArrayField(`${method} options.failure_hints`, options.failure_hints);\n const argumentsDefinition = normalizeCommandDefinitionArguments(options.arguments);\n\n if (options.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", `${method} options.flags`);\n // Route metadata flags through the same surface-policy gate as registerFlags so\n // enforce-mode policies blocking schema.flags are honored even when importers are allowed.\n if (allowRegistration(\"schema.flags\", `${method} options.flags`, \"schema\")) {\n validateFlagDefinitions(options.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: commandPath,\n flags: normalizeRegistrationRecordList(`${method} options.flags`, options.flags),\n });\n }\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: commandPath,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n const description = options.description?.trim();\n if (description) {\n registration.description = description;\n }\n const intent = options.intent?.trim();\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n };\n const registerImporter = (name: string, importer: Importer, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerImporter\");\n if (!allowRegistration(\"importers.importer\", \"registerImporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerImporter name\", name));\n assertFunctionHandler(\"registerImporter importer\", importer);\n const commandPath = toRegistrationCommandPath(normalizedName, \"import\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial importer registration.\n applyImportExportCommandMetadata(\"registerImporter\", commandPath, options);\n registrations.importers.push({\n layer: extension.layer,\n name: extension.name,\n importer: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n importer({\n registration: normalizedName,\n action: \"import\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerExporter = (name: string, exporter: Exporter, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerExporter\");\n if (!allowRegistration(\"importers.exporter\", \"registerExporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerExporter name\", name));\n assertFunctionHandler(\"registerExporter exporter\", exporter);\n const commandPath = toRegistrationCommandPath(normalizedName, \"export\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial exporter registration.\n applyImportExportCommandMetadata(\"registerExporter\", commandPath, options);\n registrations.exporters.push({\n layer: extension.layer,\n name: extension.name,\n exporter: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n exporter({\n registration: normalizedName,\n action: \"export\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerSearchProvider = (provider: SearchProviderDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerSearchProvider\");\n if (!allowRegistration(\"search.provider\", \"registerSearchProvider\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerSearchProvider provider\", provider);\n registrations.search_providers.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerSearchProvider provider\", provider),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSearchProvider,\n );\n };\n const registerVectorStoreAdapter = (adapter: VectorStoreAdapterDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerVectorStoreAdapter\");\n if (!allowRegistration(\"search.vectorstore\", \"registerVectorStoreAdapter\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter);\n registrations.vector_store_adapters.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter),\n },\n runtimeDefinition,\n ) as RegisteredExtensionVectorStoreAdapter,\n );\n };\n const registerBeforeCommand = (hook: BeforeCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.beforeCommand\");\n if (!allowRegistration(\"hooks.beforecommand\", \"api.hooks.beforeCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"beforeCommand\", hook);\n hooks.beforeCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerAfterCommand = (hook: AfterCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.afterCommand\");\n if (!allowRegistration(\"hooks.aftercommand\", \"api.hooks.afterCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"afterCommand\", hook);\n hooks.afterCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnWrite = (hook: OnWriteHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onWrite\");\n if (!allowRegistration(\"hooks.onwrite\", \"api.hooks.onWrite\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onWrite\", hook);\n hooks.onWrite.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnRead = (hook: OnReadHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onRead\");\n if (!allowRegistration(\"hooks.onread\", \"api.hooks.onRead\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onRead\", hook);\n hooks.onRead.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnIndex = (hook: OnIndexHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onIndex\");\n if (!allowRegistration(\"hooks.onindex\", \"api.hooks.onIndex\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onIndex\", hook);\n hooks.onIndex.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n\n return {\n extension: selfIdentity,\n registerCommand,\n registerParser,\n registerPreflight,\n registerService,\n registerFlags,\n registerItemFields,\n registerItemTypes,\n registerMigration,\n registerProfile,\n registerRenderer,\n registerImporter,\n registerExporter,\n registerSearchProvider,\n registerVectorStoreAdapter,\n hooks: {\n beforeCommand: registerBeforeCommand,\n afterCommand: registerAfterCommand,\n onWrite: registerOnWrite,\n onRead: registerOnRead,\n onIndex: registerOnIndex,\n },\n };\n}\n\nfunction getRegistrationCounts(registrations: ExtensionRegistrationRegistry): ExtensionRegistrationCounts {\n const commandCount = registrations.commands.length;\n const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);\n const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);\n const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);\n return {\n commands: commandCount,\n flags: flagCount,\n item_fields: itemFieldCount,\n item_types: itemTypeCount,\n migrations: registrations.migrations.length,\n profiles: registrations.profiles.length,\n importers: registrations.importers.length,\n exporters: registrations.exporters.length,\n search_providers: registrations.search_providers.length,\n vector_store_adapters: registrations.vector_store_adapters.length,\n };\n}\n\nfunction collectCommandCollisionWarnings(commands: ExtensionCommandRegistry): string[] {\n const warnings: string[] = [];\n const collectByCommand = <TEntry extends { layer: ExtensionLayer; name: string; command: string }>(\n entries: TEntry[],\n codePrefix: string,\n ): void => {\n const grouped = new Map<string, TEntry[]>();\n for (const entry of entries) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `${codePrefix}:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n };\n\n collectByCommand(commands.handlers, \"extension_command_handler_collision\");\n collectByCommand(commands.overrides, \"extension_command_override_collision\");\n\n const handlerCommands = new Set(commands.handlers.map((entry) => entry.command));\n const overlapCommands = [...new Set(commands.overrides.map((entry) => entry.command))].filter((command) =>\n handlerCommands.has(command),\n );\n overlapCommands.sort((left, right) => left.localeCompare(right));\n for (const command of overlapCommands) {\n const handlers = commands.handlers.filter((entry) => entry.command === command);\n const overrides = commands.overrides.filter((entry) => entry.command === command);\n for (const override of overrides) {\n for (const handler of handlers) {\n warnings.push(\n `extension_command_override_handler_overlap:${command}:${override.layer}:${override.name}:${handler.layer}:${handler.name}`,\n );\n }\n }\n }\n\n return warnings;\n}\n\nfunction collectRendererCollisionWarnings(renderers: ExtensionRendererRegistry): string[] {\n const grouped = new Map<OutputRendererFormat, RegisteredExtensionRendererOverride[]>();\n for (const entry of renderers.overrides) {\n const bucket = grouped.get(entry.format) ?? [];\n bucket.push(entry);\n grouped.set(entry.format, bucket);\n }\n const warnings: string[] = [];\n for (const format of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(format)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_renderer_collision:${format}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectParserCollisionWarnings(parsers: ExtensionParserRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<string, RegisteredExtensionParserOverride[]>();\n for (const entry of parsers.overrides) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_parser_override_collision:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectPreflightCollisionWarnings(preflight: ExtensionPreflightRegistry): string[] {\n if (preflight.overrides.length <= 1) {\n return [];\n }\n const winner = preflight.overrides[preflight.overrides.length - 1];\n return preflight.overrides.slice(0, -1).map(\n (displaced) =>\n `extension_preflight_override_collision:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n}\n\n// Services whose runtime semantics are chain/fall-through (each override gets a chance);\n// for those, registering multiple overrides is by design, not a collision.\nconst CHAINED_SERVICE_NAMES: ReadonlySet<ExtensionServiceName> = new Set<ExtensionServiceName>([\n \"output_format\",\n]);\n\nfunction collectServiceCollisionWarnings(services: ExtensionServiceRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<ExtensionServiceName, RegisteredExtensionServiceOverride[]>();\n for (const entry of services.overrides) {\n const bucket = grouped.get(entry.service) ?? [];\n bucket.push(entry);\n grouped.set(entry.service, bucket);\n }\n for (const service of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(service)!;\n if (bucket.length <= 1) {\n continue;\n }\n if (CHAINED_SERVICE_NAMES.has(service)) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_service_override_collision:${service}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\n/**\n * Implements activate extensions for the public runtime surface of this module.\n */\nexport async function activateExtensions(loadResult: ExtensionLoadResult): Promise<ExtensionActivationResult> {\n const policy = hydrateExtensionPolicy(loadResult.policy ?? DEFAULT_EXTENSION_POLICY);\n const hooks = createEmptyExtensionHookRegistry();\n const commands = createEmptyExtensionCommandRegistry();\n const parsers = createEmptyExtensionParserRegistry();\n const preflight = createEmptyExtensionPreflightRegistry();\n const services = createEmptyExtensionServiceRegistry();\n const renderers = createEmptyExtensionRendererRegistry();\n const registrations = createEmptyExtensionRegistrationRegistry();\n const failed: FailedExtensionActivation[] = [];\n const warnings: string[] = [];\n\n for (const extension of loadResult.loaded) {\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable) {\n continue;\n }\n\n try {\n await activatable.activate(\n createExtensionApi(\n extension,\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n warnings,\n policy,\n ),\n );\n } catch (error: unknown) {\n warnings.push(`extension_activate_failed:${extension.layer}:${extension.name}`);\n const trace = extractRegistrationValidationTrace(error);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n trace,\n });\n }\n }\n\n const collisionWarnings = [\n ...collectCommandCollisionWarnings(commands),\n ...collectParserCollisionWarnings(parsers),\n ...collectPreflightCollisionWarnings(preflight),\n ...collectServiceCollisionWarnings(services),\n ...collectRendererCollisionWarnings(renderers),\n ];\n const mergedWarnings = [...new Set([...warnings, ...collisionWarnings])];\n\n return {\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n failed,\n warnings: mergedWarnings,\n hook_counts: {\n before_command: hooks.beforeCommand.length,\n after_command: hooks.afterCommand.length,\n on_write: hooks.onWrite.length,\n on_read: hooks.onRead.length,\n on_index: hooks.onIndex.length,\n },\n command_override_count: commands.overrides.length,\n command_handler_count: commands.handlers.length,\n parser_override_count: parsers.overrides.length,\n preflight_override_count: preflight.overrides.length,\n service_override_count: services.overrides.length,\n renderer_override_count: renderers.overrides.length,\n registration_counts: getRegistrationCounts(registrations),\n };\n}\n\nexport const _testOnlyLoader = {\n assertFlagValueTypeAndDefault,\n assertOptionalStringField,\n compareComparableVersions,\n collectCommandCollisionWarnings,\n collectParserCollisionWarnings,\n collectRendererCollisionWarnings,\n collectServiceCollisionWarnings,\n createExtensionApi,\n createRegistrationValidationError,\n evaluatePmMaxVersionCompatibility,\n evaluatePmMinVersionCompatibility,\n extractRegistrationValidationTrace,\n fingerprintPath,\n getRegistrationCounts,\n normalizeCommandDefinitionArguments,\n normalizeExtensionDeactivateTimeout,\n normalizeOptionalStringArrayField,\n normalizeRegistrationRecord,\n normalizeRegistrationRecordList,\n normalizeRuntimeRegistrationRecord,\n parseComparableVersion,\n parseManifest,\n readCurrentPmCliVersion,\n readManagedExtensionSourcePackages,\n resolveExtensionImportHref,\n resolveCurrentPmCliVersion,\n resolveCommandDefinitionAction,\n sanitizeRegistrationValue,\n validateItemFieldDefinitions,\n resetCurrentPmCliVersionCacheForTest: () => {\n currentPmCliVersionPromise = null;\n },\n};\n"],"names":[],"mappings":"AAAA;;;;GAIG;;;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAChH,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,GAEvB,MAAM,qBAAqB,CAAC;AAG7B,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,qDAAqD;AACrD,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,mCAAmC,EAEnC,6BAA6B,EAE7B,uCAAuC,EACvC,2CAA2C,GAC5C,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,mCAAmC,EACnC,oCAAoC,EACpC,sCAAsC,GAGvC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gCAAgC,EAChC,mCAAmC,EACnC,kCAAkC,EAClC,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,wCAAwC,GACzC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAGrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,sCAAsC,EACtC,0CAA0C,GAC3C,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,gCAAgC,EAChC,mCAAmC,EACnC,kCAAkC,EAClC,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,wCAAwC,GACzC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,sCAAsC,GAsHvC,MAAM,sBAAsB,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAErC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,IAAI,0BAA0B,GAAkC,IAAI,CAAC;AAErE,oGAAoG;AAEpG,MAAM,wBAAwB,GAA8B,MAAM,CAAC,MAAM,CAAC,sCAAsC,EAAE,CAAC,CAAC;AAEpH,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;IACxD,oBAAoB,IAAI,CAAC,CAAC;IAC1B,OAAO,GAAG,oBAAoB,IAAI,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAkC,EAAE,KAAa;IACpF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9F,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,GAA8B,CAAC;IACjD,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,GAAG,0BAA0B,CAAC;IAC1C,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC/F,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,eAAmC,CAAC;IACxC,IAAI,kBAAkB,IAAI,SAAS,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,IAAI,SAAS,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;QACvH,IAAI,OAAO,SAAS,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,eAAe,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAC/C,CAAC;IAED,MAAM,YAAY,GAAG,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC9E,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC9E,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAA4B,CAAC;IACjC,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5F,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAI,cAAmD,CAAC;IACxD,IAAI,iBAAiB,IAAI,SAAS,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS,IAAI,SAAS,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACpH,IAAI,OAAO,SAAS,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnF,IAAI,iBAAiB,KAAK,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,cAAc,GAAG,iBAAiB,CAAC;IACrC,CAAC;IAED,IAAI,UAAuD,CAAC;IAC5D,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACrG,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GACV,OAAO,gBAAgB,CAAC,MAAM,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACtF,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE;YAChC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,SAAS,GACb,OAAO,gBAAgB,CAAC,SAAS,KAAK,QAAQ,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAC5F,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE;YACnC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,WAAW,GACf,OAAO,gBAAgB,CAAC,WAAW,KAAK,QAAQ,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAChG,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE;YACrC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,QAAQ,GACZ,gBAAgB,CAAC,QAAQ,KAAK,SAAS,IAAI,gBAAgB,CAAC,QAAQ,KAAK,IAAI;YAC3E,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,gBAAgB,CAAC,QAAQ,KAAK,SAAS;gBAC9C,CAAC,CAAC,gBAAgB,CAAC,QAAQ;gBAC3B,CAAC,CAAC,IAAI,CAAC;QACb,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG;YACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,IAAI,WAAyD,CAAC;IAC9D,IAAI,aAAa,IAAI,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACxG,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAA8B,EAAE;YAC1E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,WAAW,GAAG;YACZ,GAAG,CAAC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,OAAO,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAAa,EAAE,CAAC;IAChC,IAAI,uBAAuB,GAA4C,EAAE,CAAC;IAC1E,IAAI,cAAc,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,IAAI,SAAS,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAC3G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;YAChH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,SAAS,CAAC,YAAwB,CAAC,CAAC;QACjG,YAAY,GAAG,sBAAsB,CAAC,YAAY,CAAC;QACnD,uBAAuB,GAAG,sBAAsB,CAAC,cAAc,CAAC;IAClE,CAAC;IAED,IAAI,UAAuD,CAAC;IAC5D,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACrG,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAC9C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC1F,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAG;gBACf,GAAG,IAAI,GAAG,CACR,WAAW;qBACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;qBAC3C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACvC;aACF,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,UAAU,GAAG;oBACX,QAAQ;iBACT,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;QACjC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;QAC7B,QAAQ;QACR,gBAAgB,EAAE,eAAe;QACjC,cAAc,EAAE,YAAY;QAC5B,cAAc,EAAE,YAAY;QAC5B,OAAO;QACP,OAAO;QACP,UAAU;QACV,eAAe,EAAE,cAAc;QAC/B,WAAW;QACX,UAAU;QACV,YAAY;QACZ,yBAAyB,EAAE,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;KACpG,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,OAAoB,EAAE,QAAqB;IAC7E,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,SAAiB,EAAE,UAAkB;IACjF,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrH,OAAO,qBAAqB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACvE,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;QACzD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,cAAsB;IAC5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAA6B;IACvD,MAAM,OAAO,GAAuB;QAClC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;QAC7B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;QACnC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;QAC/B,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ;QACrC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,gBAAgB;QACrD,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,cAAc;QACjD,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,cAAc;QACjD,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;QACnC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;QACnC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU;QACzC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;QACnD,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW;QAC3C,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QAClD,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU;YACvC,CAAC,CAAC;gBACE,QAAQ,EAAE,CAAC,GAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAqB,CAAC;aACpE;YACH,CAAC,CAAC,SAAS;KACd,CAAC;IACF,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC7B,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;IACpD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,kCAAkC,CAAC,cAAsB;IACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAY,CAAC;QACvH,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,MAAgC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/G,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,MAAM,KAAK,IAAK,MAAiC,CAAC,OAAO,EAAE,CAAC;YAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,KAAgF,CAAC;YAChG,MAAM,aAAa,GAAG,6BAA6B,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/E,QAAQ,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrE,QAAQ,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,UAAgC;IACtD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1D,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAsC,EACtC,iBAAuC;IAEvC,MAAM,OAAO,GAAG,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EAAE,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtG,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAqB,EACrB,cAAsB,EACtB,OAAoB,EACpB,QAAqB,EACrB,wBAAkD;IAElD,MAAM,WAAW,GAA0B,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,MAAM,kCAAkC,CAAC,cAAc,CAAC,CAAC;IAEvF,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAC1C,KAAK,EACL,cAAc,EACd,SAAS,EACT,OAAO,EACP,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,CACzB,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAqB,EACrB,cAAsB,EACtB,SAAiB,EACjB,OAAoB,EACpB,QAAqB,EACrB,qBAAkD,EAClD,wBAAkD;IAElD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,UAAU,EAAE;gBACV,KAAK;gBACL,SAAS;gBACT,aAAa,EAAE,YAAY;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;aACf;YACD,QAAQ,EAAE,CAAC,8BAA8B,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9D,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,GAA6B,IAAI,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAY,CAAC;QAC9E,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,UAAU,EAAE;gBACV,KAAK;gBACL,SAAS;gBACT,aAAa,EAAE,YAAY;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;aACf;YACD,QAAQ,EAAE,CAAC,8BAA8B,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9D,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,0BAA0B,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrF,MAAM,oBAAoB,GACxB,0BAA0B,IAAI,WAAW;QACvC,CAAC,CAAC,MAAM,8BAA8B,CAAC,YAAY,EAAE,SAAS,CAAC;QAC/D,CAAC,CAAC,0BAA0B,CAAC;IACjC,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,QAAQ,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvG,iBAAiB,CAAC,IAAI,CACpB,2CAA2C,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CACtG,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,mCAAmC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpF,iBAAiB,CAAC,IAAI,CAAC,uCAAuC,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,iBAAiB,CAAC,IAAI,CAAC,qCAAqC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;SAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxB,iBAAiB,CAAC,IAAI,CAAC,2BAA2B,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,sBAAsB,GAAG,MAAM,iCAAiC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxF,IAAI,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACnC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,yBAAyB,GAAG,MAAM,iCAAiC,CAAC,KAAK,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IACrH,IAAI,yBAAyB,CAAC,OAAO,EAAE,CAAC;QACtC,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,cAAc,GAClB,oBAAoB;QACpB,WAAW;QACX,sBAAsB,CAAC,OAAO;QAC9B,yBAAyB,CAAC,OAAO,CAAC;IACpC,MAAM,aAAa,GACjB,qBAAqB,CAAC,GAAG,CAAC,aAAa,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5G,OAAO;QACL,UAAU,EAAE;YACV,KAAK;YACL,SAAS;YACT,aAAa,EAAE,YAAY;YAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;SACvC;QACD,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EACP,cAAc,IAAI,cAAc;YAC9B,CAAC,CAAC;gBACE,KAAK;gBACL,SAAS;gBACT,aAAa,EAAE,YAAY;gBAC3B,UAAU,EAAE,SAAS;gBACrB,QAAQ;gBACR,cAAc,EAAE,aAAa;aAC9B;YACH,CAAC,CAAC,IAAI;KACX,CAAC;AACJ,CAAC;AAGD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAkC;IACzE,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClF,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO;YACL,gBAAgB,EAAE,IAAI;YACtB,KAAK;YACL,kBAAkB;YAClB,mBAAmB;YACnB,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,gBAAgB;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/H,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACnI,MAAM,cAAc,GAAa,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACpG,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG;YACnB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI;YAC5C,kBAAkB,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI;YACpE,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;YAClD,WAAW,EACT,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,QAAQ,CAAC,WAAW,KAAK,QAAQ;gBAClF,CAAC,CAAC;oBACE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO;oBAC/C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ;oBACjD,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO;oBAC/C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ;oBACjD,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS;oBACnD,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa;iBAC5D;gBACH,CAAC,CAAC,SAAS;SAChB,CAAC;QACF,MAAM,iBAAiB,GAAG,mCAAmC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpF,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,kBAAkB,GAAG,oCAAoC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;YAClG,IAAI,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,KAAK;QACvB,KAAK;QACL,kBAAkB;QAClB,mBAAmB;QACnB,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC;QACnE,SAAS;QACT,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC;QAC5F,MAAM,EAAE,gBAAgB;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,uBAAuB;IACpC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACxD,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,0BAA0B,KAAK,uBAAuB,EAAE,CAAC;IACzD,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,SAAS,mCAAmC,CAC1C,KAAqB,EACrB,QAA2B,EAC3B,UAAoC;IAEpC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACzC,QAAQ,UAAU,CAAC,MAAM,EAAE,CAAC;YAC1B,KAAK,SAAS;gBACZ,OAAO,oCAAoC,KAAK,IAAI,QAAQ,CAAC,IAAI,aAAa,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtG,KAAK,WAAW;gBACd,OAAO,sCAAsC,KAAK,IAAI,QAAQ,CAAC,IAAI,aAAa,UAAU,CAAC,QAAQ,YAAY,OAAO,EAAE,CAAC;YAC3H,KAAK,OAAO;gBACV,OAAO,kCAAkC,KAAK,IAAI,QAAQ,CAAC,IAAI,aAAa,UAAU,CAAC,QAAQ,YAAY,OAAO,EAAE,CAAC;YACvH;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IACD,QAAQ,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,oCAAoC,KAAK,IAAI,QAAQ,CAAC,IAAI,YAAY,UAAU,CAAC,QAAQ,EAAE,CAAC;QACrG,KAAK,WAAW;YACd,OAAO,sCAAsC,KAAK,IAAI,QAAQ,CAAC,IAAI,YAAY,UAAU,CAAC,QAAQ,YAAY,OAAO,EAAE,CAAC;QAC1H,KAAK,eAAe;YAClB,OAAO,0CAA0C,KAAK,IAAI,QAAQ,CAAC,IAAI,YAAY,UAAU,CAAC,QAAQ,YAAY,OAAO,EAAE,CAAC;QAC9H,KAAK,UAAU;YACb,OAAO,qCAAqC,KAAK,IAAI,QAAQ,CAAC,IAAI,YAAY,UAAU,CAAC,QAAQ,YAAY,OAAO,EAAE,CAAC;QACzH;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,KAAqB,EACrB,QAA2B;IAE3B,+EAA+E;IAC/E,0CAA0C;IAC1C,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,0BAA0B,EAAE,CAAC,CAAC;IAC1G,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACjF,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,KAAqB,EACrB,QAA2B,EAC3B,YAAsC;IAEtC,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,UAAU,GAAG,yBAAyB,CAC1C,QAAQ,CAAC,cAAc,EACvB,MAAM,0BAA0B,EAAE,EAClC,YAAY,CACb,CAAC;IACF,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACjF,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,aAAqB;IAClD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,SAA6B,EAC7B,OAAkC;IAElC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC;IAChG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChE,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC;QACrC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC;KACzC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,IAAI,wBAAwB,EAAE,CAAC;IACvE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACvD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC3D,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAkC;IACrE,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,SAAS;YACZ,QAAQ;YACR,MAAM;YACN,MAAM;SACP,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,SAAS;gBACZ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AAGD,MAAM,uCAAuC,GAAG,KAAK,CAAC;AACtD,MAAM,mCAAmC,GAAG,aAAa,CAAC;AAE1D,SAAS,sBAAsB,CAAC,MAA+B;IAC7D,gFAAgF;IAChF,2EAA2E;IAC3E,6EAA6E;IAC7E,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA4C,CAAC;IACrE,MAAM,WAAW,GAAyB;QACxC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;KAChC,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,UAA6D,CAAC;QACxF,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAe;IAClD,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAChD,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAClE,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAA+B,EAC/B,gBAA4D,EAC5D,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,mCAAmC,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACtF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,CAAC,gBAAgB,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAChF,CAAC;IACF,MAAM,OAAO,GAAkF,EAAE,CAAC;IAClG,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACjE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,iCAAiC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/D,OAAO,EAAE,EAAE,EAAE,IAAa,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChH,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAmC,EAAE,CAAC;IAClD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACf,WAAW,IAAI,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,mCAAmC,CAAC,UAAmB;IAC9D,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,uCAAuC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,uCAAuC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,UAAsC,EACtC,SAAiB;IAEjB,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,UAAU,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,IAAI,aAAwD,CAAC;IAC7D,IAAI,CAAC;QACH,6EAA6E;QAC7E,4EAA4E;QAC5E,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,iBAAiB;YACjB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,SAAS,IAAI,CAAC,CAAC,CAAC;gBAC3E,CAAC,EAAE,SAAS,CAAC,CAAC;gBACd,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1B,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,aAA8C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,CAAC;AAC9C,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,6BAA6B,CAAC,QAAQ,CAAC,KAA6B,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,IAAa;IACxD,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,aAAa,QAAQ,8BAA8B,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAc;IACzD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI;SACR,IAAI,EAAE;SACN,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,MAA2B;IAC1E,OAAO,oBAAoB,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvF,MAAM,CAAC,GAAG,CAAC,GAAG,6BAA6B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,mCAAmC,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAMnF,SAAS,iCAAiC,CAAC,OAAe,EAAE,KAAsC;IAChG,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,OAAO,CAA6B,CAAC;IACjE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,mCAAmC,EAAE;QAChE,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAc;IACxD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAQ,KAAkC,CAAC,mCAAmC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAE,KAAc;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,yBAAyB,CAAC,KAAK,CAA4B,CAAC;AACrE,CAAC;AAED,SAAS,kCAAkC,CAAC,IAAY,EAAE,KAAc;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,6BAA6B,CAAC,KAAK,CAA4B,CAAC;AACzE,CAAC;AAED,SAAS,+BAA+B,CAAC,IAAY,EAAE,KAAc;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,0CAA0C,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,KAAc;IAC9D,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,KAAc;IAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,2CAA2C,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AAC9F,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAY,EAAE,KAAc;IAClE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,KAAK,wCAAwC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,2EAA2E,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAY,EAAE,KAAc;IAClE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,sDAAsD,CAAC,CAAC;IACrF,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,KAAK,8BAA8B,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iCAAiC,CAAC,IAAY,EAAE,KAAc;IACrE,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAa;IAC/C,OAAO,KAAK;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,8BAA8B,CAAC,WAAmB,EAAE,MAAe;IAC1E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,4EAA4E,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,wEAAwE,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,mCAAmC,CAAC,KAAc;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,UAAU,GAAyC,EAAE,CAAC;IAC5D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,wCAAwC,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,oBAAoB,CAAC,wCAAwC,KAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACtG,0BAA0B,CAAC,wCAAwC,KAAK,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvG,0BAA0B,CAAC,wCAAwC,KAAK,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvG,yBAAyB,CAAC,wCAAwC,KAAK,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CAAC,wCAAwC,KAAK,gCAAgC,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,UAAU,GAAuC;YACrD,IAAI;SACL,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC3C,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,eAAe,GAAG,UAAU;SAC/B,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACjC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,6EAA6E,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,SAAS,CAAC,mFAAmF,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;IACrF,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,oBAAoB,CAAC,uBAAuB,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,SAAS,CAAC,uBAAuB,KAAK,0CAA0C,CAAC,CAAC;QAC9F,CAAC;QACD,yBAAyB,CAAC,uBAAuB,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,yBAAyB,CAAC,uBAAuB,KAAK,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,yBAAyB,CAAC,uBAAuB,KAAK,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACzF,yBAAyB,CAAC,uBAAuB,KAAK,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,0BAA0B,CAAC,uBAAuB,KAAK,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtF,0BAA0B,CAAC,uBAAuB,KAAK,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpF,0BAA0B,CAAC,uBAAuB,KAAK,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpF,0BAA0B,CAAC,uBAAuB,KAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9E,8BAA8B,CAAC,uBAAuB,KAAK,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACxF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,SAAS,CAAC,uBAAuB,KAAK,mDAAmD,CAAC,CAAC;QACvG,CAAC;QACD,6BAA6B,CAAC,uBAAuB,KAAK,GAAG,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,6BAA6B,CAAC,KAAa,EAAE,MAA+B;IACnF,MAAM,YAAY,GAChB,CAAC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,SAAS,CACjB,GAAG,KAAK,gBAAgB,YAAY,8EAA8E,CACnH,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IACD,4EAA4E;IAC5E,0EAA0E;IAC1E,iFAAiF;IACjF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChG,KAAK,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9D,IAAI,CAAC,2BAA2B,CAAC,YAAyC,EAAE,IAAI,CAAC,EAAE,CAAC;YAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5E,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAe;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;IAC3F,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,6BAA6B,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QAChF,oBAAoB,CAAC,6BAA6B,KAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,oBAAoB,CAAC,6BAA6B,KAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChG,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,SAAS,CACjB,6BAA6B,KAAK,WAAW,SAAS,8BAA8B;gBAClF,qBAAqB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,0BAA0B,CAAC,6BAA6B,KAAK,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,iEAAiE,CAAC,CAAC;IACzF,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,oBAAoB,CAAC,2BAA2B,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;QAClF,oBAAoB,CAAC,2BAA2B,SAAS,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChF,yBAAyB,CAAC,2BAA2B,SAAS,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACzF,8BAA8B,CAAC,2BAA2B,SAAS,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAChG,8BAA8B,CAC5B,2BAA2B,SAAS,0BAA0B,EAC9D,MAAM,CAAC,sBAAsB,CAC9B,CAAC;QACF,8BAA8B,CAC5B,2BAA2B,SAAS,+BAA+B,EACnE,MAAM,CAAC,2BAA2B,CACnC,CAAC;QAEF,IAAI,MAAM,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,SAAS,CACjB,2BAA2B,SAAS,0DAA0D,CAC/F,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChF,MAAM,MAAM,GAAG,oBAAoB,CACjC,2BAA2B,SAAS,6BAA6B,WAAW,GAAG,EAC/E,SAAS,CACV,CAAC;gBACF,oBAAoB,CAClB,2BAA2B,SAAS,6BAA6B,WAAW,WAAW,EACvF,MAAM,CAAC,OAAO,CACf,CAAC;gBACF,oBAAoB,CAClB,2BAA2B,SAAS,6BAA6B,WAAW,UAAU,EACtF,MAAM,CAAC,MAAM,CACd,CAAC;gBACF,0BAA0B,CACxB,2BAA2B,SAAS,6BAA6B,WAAW,WAAW,EACvF,MAAM,CAAC,OAAO,CACf,CAAC;gBACF,0BAA0B,CACxB,2BAA2B,SAAS,6BAA6B,WAAW,YAAY,EACxF,MAAM,CAAC,QAAQ,CAChB,CAAC;gBACF,0BAA0B,CACxB,2BAA2B,SAAS,6BAA6B,WAAW,WAAW,EACvF,MAAM,CAAC,OAAO,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,SAAS,CAAC,2BAA2B,SAAS,0CAA0C,CAAC,CAAC;YACtG,CAAC;YACD,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,oBAAoB,CAAC,2BAA2B,SAAS,aAAa,WAAW,GAAG,EAAE,SAAS,CAAC,CAAC;gBAChH,oBAAoB,CAAC,2BAA2B,SAAS,aAAa,WAAW,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtG,8BAA8B,CAAC,2BAA2B,SAAS,aAAa,WAAW,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtH,0BAA0B,CAAC,2BAA2B,SAAS,aAAa,WAAW,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtH,8BAA8B,CAC5B,2BAA2B,SAAS,aAAa,WAAW,WAAW,EACvE,MAAM,CAAC,OAAO,CACf,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,UAAmB;IACtD,MAAM,MAAM,GAAG,oBAAoB,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC/E,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,oEAAoE,CAAC,CAAC;IAC5F,CAAC;IACD,0BAA0B,CAAC,wCAAwC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,0BAA0B,GAAG;IACjC,OAAO;IACP,UAAU;IACV,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,WAAW;IACX,UAAU;CACF,CAAC;AAEX;;;;;;;;GAQG;AACH,SAAS,gCAAgC,CAAC,SAAiB,EAAE,KAAa,EAAE,KAA8B;IACxG,MAAM,EAAE,GAAG,2BAA2B,SAAS,IAAI,KAAK,GAAG,CAAC;IAC5D,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,SAAS,8BAA8B,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAChG,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;QACzD,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,OAAgB;IACxD,MAAM,MAAM,GAAG,oBAAoB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACxE,oBAAoB,CAAC,8BAA8B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAClE,oBAAoB,CAAC,+BAA+B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvE,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,0BAA0B,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,2BAA2B,SAAS,iCAAiC,CAAC,CAAC;QAC7F,CAAC;QACD,4EAA4E;QAC5E,4EAA4E;QAC5E,8EAA8E;QAC9E,8EAA8E;QAC9E,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,SAAS,CAAC,2BAA2B,SAAS,IAAI,KAAK,qBAAqB,CAAC,CAAC;YAC1F,CAAC;YACD,sEAAsE;YACtE,yEAAyE;YACzE,+DAA+D;YAC/D,gCAAgC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAgC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,2BAA2B,CAAC,OAAgC;IACnE,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,0BAA0B,EAAE,CAAC;QACnD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,OAA8C,CAAC;AACxD,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAa,EACb,iBAA0C;IAE1C,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAAE;QACjD,KAAK,EAAE,iBAAiB;QACxB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gCAAgC,CAAC,SAA0B;IAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,yBAAyB,CAAC,SAA0B,EAAE,UAA+B,EAAE,MAAc;IAC5G,MAAM,QAAQ,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC7D,yEAAyE;IACzE,6EAA6E;IAC7E,8CAA8C;IAC9C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,iCAAiC,CACrC,GAAG,MAAM,yBAAyB,UAAU,sCAAsC,EAClF;YACE,MAAM;YACN,kBAAkB,EAAE,CAAC,CAAC;YACtB,UAAU;YACV,kBAAkB,EAAE,UAAU;YAC9B,eAAe,EAAE,0BAA0B,UAAU,IAAI;YACzD,QAAQ,EAAE,SAAS,CAAC,YAAY;YAChC,IAAI,EAAE,QAAQ,UAAU,QAAQ,SAAS,CAAC,IAAI,yCAAyC,MAAM,qBAAqB;SACnH,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,SAA0B,EAC1B,KAA4B,EAC5B,QAAkC,EAClC,OAAgC,EAChC,SAAqC,EACrC,QAAkC,EAClC,SAAoC,EACpC,aAA4C,EAC5C,kBAA4B,EAC5B,MAAiC;IAEjC,MAAM,YAAY,GAA0B,MAAM,CAAC,MAAM,CAAC;QACxD,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,CACzB,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAqC,EAAE,CACrF,4BAAkD,CAAC,QAAQ,CAAC,UAAU,CAAC,CACzE,CACgC;QACnC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,cAAc,EAAE,SAAS,CAAC,cAAc;KACzC,CAAC,CAAC;IACH,MAAM,YAAY,GAAuB;QACvC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EAAE,SAAS,CAAC,OAAO,KAAK,IAAI;QACnC,kBAAkB,EAAE,SAAS,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI;QAC3D,cAAc,EAAE,SAAS,CAAC,eAAe;QACzC,WAAW,EACT,SAAS,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,QAAQ;YAChE,CAAC,CAAC;gBACE,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO;gBACtC,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,QAAQ;gBACxC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO;gBACtC,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,QAAQ;gBACxC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,SAAS;gBAC1C,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,aAAa;aACnD;YACH,CAAC,CAAC,SAAS;KAChB,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAQ,EAAE;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CACxB,OAA+B,EAC/B,MAAc,EACd,UAAgC,EAChC,OAIC,EACQ,EAAE;QACX,MAAM,QAAQ,GAAG,sCAAsC,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpH,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,oBAAoB,GAAG,CAC3B,IAA+B,EAC/B,OAA2B,EAC3B,cAAsB,EACtB,QAAiB,EACjB,IAAa,EACoB,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,iBAAiB;QACzB,kBAAkB,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAC9F,OAAO;QACP,eAAe,EAAE,cAAc;QAC/B,QAAQ,EAAE,yBAAyB,CAAC,QAAQ,CAAC;QAC7C,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,mBAA+C,EAAE,QAA0B,EAAQ,EAAE;QAC5G,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACpE,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;YACpE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,iCAAiC,CACrC,mDAAmD,EACnD,oBAAoB,CAClB,UAAU,EACV,mBAAmB,EACnB,oDAAoD,EACpD,mBAAmB,EACnB,yDAAyD,CAC1D,CACF,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,oBAAoB,CAChC,UAAU,EACV,iBAAiB,EACjB,oDAAoD,EACpD,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAC1C,4DAA4D,CAC7D,CAAC;gBACF,MAAM,iCAAiC,CACrC,yFAAyF,iBAAiB,yBAAyB,KAAK,CAAC,kBAAkB,GAAG,EAC9J,KAAK,CACN,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;gBAC3G,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,OAAO,EAAE,iBAAiB;gBAC1B,GAAG,EAAE,QAAQ;aACd,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;YAC5E,MAAM,iCAAiC,CACrC,sDAAsD,EACtD,oBAAoB,CAClB,YAAY,EACZ,SAAS,EACT,8CAA8C,EAC9C,mBAAmB,EACnB,yEAAyE,CAC1E,CACF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,mBAAmB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,iCAAiC,CACrC,oDAAoD,EACpD,oBAAoB,CAClB,YAAY,EACZ,SAAS,EACT,8CAA8C,EAC9C,mBAAmB,EACnB,iEAAiE,CAClE,CACF,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,iCAAiC,CACrC,8DAA8D,EAC9D,oBAAoB,CAClB,YAAY,EACZ,mBAAmB,CAAC,IAAI,EACxB,8CAA8C,EAC9C,mBAAmB,EACnB,mEAAmE,CACpE,CACF,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,mBAAmB,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACvG,MAAM,aAAa,GAAG,OAAO,mBAAmB,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAClH,IAAI,CAAC,UAAU,IAAI,aAAa,EAAE,CAAC;YACjC,kBAAkB,CAAC,IAAI,CACrB,qDAAqD,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAC9G,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,UAAU,IAAI,aAAa,CAAC;QACpD,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,oBAAoB,CAChC,YAAY,EACZ,iBAAiB,EACjB,8CAA8C,EAC9C,mBAAmB,EACnB,8CAA8C,CAC/C,CAAC;YACF,MAAM,iCAAiC,CACrC,uEAAuE,iBAAiB,yBAAyB,KAAK,CAAC,kBAAkB,GAAG,EAC5I,KAAK,CACN,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,yBAAyB,CAAC,mCAAmC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC3F,yBAAyB,CAAC,wCAAwC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACrG,yBAAyB,CAAC,mCAAmC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,8BAA8B,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC7F,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAClH,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,iCAAiC,CAAC,qCAAqC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACxH,MAAM,YAAY,GAAG,iCAAiC,CACpD,0CAA0C,EAC1C,mBAAmB,CAAC,aAAa,CAClC,CAAC;YACF,MAAM,mBAAmB,GAAG,mCAAmC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAE/F,IAAI,mBAAmB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5C,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;gBACxE,uBAAuB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACnD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;oBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,cAAc,EAAE,iBAAiB;oBACjC,KAAK,EAAE,+BAA+B,CAAC,kCAAkC,EAAE,mBAAmB,CAAC,KAAK,CAAC;iBACtG,CAAC,CAAC;YACL,CAAC;YAED,MAAM,YAAY,GAAyC;gBACzD,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,OAAO,EAAE,iBAAiB;gBAC1B,MAAM;gBACN,QAAQ;gBACR,aAAa,EAAE,YAAY;gBAC3B,SAAS,EAAE,mBAAmB;aAC/B,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;YACzC,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,CAAC;YACD,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,oBAAoB,CAChC,YAAY,EACZ,iBAAiB,EACjB,uGAAuG,EACvG,mBAAmB,EACnB,uFAAuF,CACxF,CAAC;YACF,MAAM,iCAAiC,CACrC,yDAAyD,iBAAiB,yBAAyB,KAAK,CAAC,kBAAkB,MAAM,MAAM,EAAE,EACzI,KAAK,CACN,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,iBAAiB;YAC1B,GAAG,EAAE,eAAe;SACrB,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,QAAwB,EAAQ,EAAE;QACzE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC,CAAC;QACxG,qBAAqB,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,iBAAiB;YAC1B,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,QAA2B,EAAQ,EAAE;QAC9D,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC/E,OAAO;QACT,CAAC;QACD,qBAAqB,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;QAC9D,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,OAA6B,EAAE,QAAyB,EAAQ,EAAE;QACzF,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/D,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,SAAS,CAAC,2CAA2C,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;YAC3G,OAAO;QACT,CAAC;QACD,qBAAqB,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;QAC5D,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,iBAAyC;YAClD,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,MAA4B,EAAE,QAA0B,EAAQ,EAAE;QAC1F,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7D,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,wDAAwD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,gBAAgB;YACxB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,aAAqB,EAAE,KAAuB,EAAQ,EAAE;QAC7E,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,6BAA6B,EAAE,aAAa,CAAC,CAAC,CAAC;QACzH,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,eAAe,GAAG,+BAA+B,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QACtF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;QAC7E,CAAC;QACD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,cAAc,EAAE,uBAAuB;YACvC,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,kBAAkB,GAAG,CAAC,MAA+B,EAAQ,EAAE;QACnE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACrE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5E,OAAO;QACT,CAAC;QACD,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,gBAAgB,GAAG,+BAA+B,CACtD,2BAA2B,EAC3B,MAAM,CACoB,CAAC;QAC7B,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;QACnF,CAAC;QACD,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC;YAC7B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,KAAiC,EAAQ,EAAE;QACpE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,+BAA+B,CACrD,yBAAyB,EACzB,KAAK,CACwB,CAAC;QAChC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;QACjF,CAAC;QACD,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,UAAqC,EAAQ,EAAE;QACxE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,2BAA2B,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QACzG,aAAa,CAAC,UAAU,CAAC,IAAI,CAC3B,uBAAuB,CACrB;YACE,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,UAAU,EAAE,2BAA2B,CAAC,8BAA8B,EAAE,UAAU,CAAC;SACpF,EACD,iBAAiB,CAC8B,CAClD,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,OAAwC,EAAQ,EAAE;QACzE,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QACD,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,4EAA4E;QAC5E,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QACxD,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QAC3C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,2BAA2B,CAAC,QAAmC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,gCAAgC,GAAG,CACvC,MAA+C,EAC/C,WAAmB,EACnB,OAAoD,EAC9C,EAAE;QACR,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,SAAS,CAAC,GAAG,MAAM,0CAA0C,CAAC,CAAC;QAC3E,CAAC;QACD,yBAAyB,CAAC,GAAG,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,yBAAyB,CAAC,GAAG,MAAM,sBAAsB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAChF,yBAAyB,CAAC,GAAG,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,8BAA8B,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,GAAG,MAAM,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnG,MAAM,YAAY,GAAG,iCAAiC,CAAC,GAAG,MAAM,wBAAwB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACjH,MAAM,mBAAmB,GAAG,mCAAmC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC;YAC1E,gFAAgF;YAChF,2FAA2F;YAC3F,IAAI,iBAAiB,CAAC,cAAc,EAAE,GAAG,MAAM,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC3E,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;oBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,cAAc,EAAE,WAAW;oBAC3B,KAAK,EAAE,+BAA+B,CAAC,GAAG,MAAM,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC;iBACjF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAyC;YACzD,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,OAAO,EAAE,WAAW;YACpB,MAAM;YACN,QAAQ;YACR,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,mBAAmB;SAC/B,CAAC;QACF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/B,CAAC;QACD,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,OAAyC,EAAQ,EAAE;QAC7G,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,MAAM,cAAc,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QACtG,qBAAqB,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACxE,+EAA+E;QAC/E,wEAAwE;QACxE,gCAAgC,CAAC,kBAAkB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3E,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,cAAc;SACzB,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACrB,QAAQ,CAAC;gBACP,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;gBACxC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC9C,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;SACL,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,OAAyC,EAAQ,EAAE;QAC7G,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,MAAM,cAAc,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;QACtG,qBAAqB,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACxE,+EAA+E;QAC/E,wEAAwE;QACxE,gCAAgC,CAAC,kBAAkB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3E,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,cAAc;SACzB,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACrB,QAAQ,CAAC;gBACP,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;gBACxC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC9C,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;SACL,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,sBAAsB,GAAG,CAAC,QAAkC,EAAQ,EAAE;QAC1E,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,iCAAiC,EAAE,QAAQ,CAAC,CAAC;QAC1G,aAAa,CAAC,gBAAgB,CAAC,IAAI,CACjC,uBAAuB,CACrB;YACE,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,UAAU,EAAE,2BAA2B,CAAC,iCAAiC,EAAE,QAAQ,CAAC;SACrF,EACD,iBAAiB,CACmB,CACvC,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,0BAA0B,GAAG,CAAC,OAAqC,EAAQ,EAAE;QACjF,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAC7E,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,QAAQ,CAAC,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;QAC5G,aAAa,CAAC,qBAAqB,CAAC,IAAI,CACtC,uBAAuB,CACrB;YACE,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,UAAU,EAAE,2BAA2B,CAAC,oCAAoC,EAAE,OAAO,CAAC;SACvF,EACD,iBAAiB,CACuB,CAC3C,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,qBAAqB,GAAG,CAAC,IAAuB,EAAQ,EAAE;QAC9D,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC;YAClF,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,oBAAoB,GAAG,CAAC,IAAsB,EAAQ,EAAE;QAC5D,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC;QACxE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,CAAC,EAAE,CAAC;YAChF,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACxC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,IAAiB,EAAQ,EAAE;QAClD,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,CAAC,IAAgB,EAAQ,EAAE;QAChD,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAChB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,IAAiB,EAAQ,EAAE;QAClD,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,YAAY;QACvB,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;QACtB,0BAA0B;QAC1B,KAAK,EAAE;YACL,aAAa,EAAE,qBAAqB;YACpC,YAAY,EAAE,oBAAoB;YAClC,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,eAAe;SACzB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,aAA4C;IACzE,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;IACnD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1G,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvG,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM;QAC3C,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM;QACvC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;QACzC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;QACzC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC,MAAM;QACvD,qBAAqB,EAAE,aAAa,CAAC,qBAAqB,CAAC,MAAM;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,QAAkC;IACzE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,CACvB,OAAiB,EACjB,UAAkB,EACZ,EAAE;QACR,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CACX,GAAG,UAAU,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAC/F,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;IAC3E,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;IAE7E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACxG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAC7B,CAAC;IACF,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAClF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CACX,8CAA8C,OAAO,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAC5H,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gCAAgC,CAAC,SAAoC;IAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+D,CAAC;IACvF,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,gCAAgC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAC7G,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,8BAA8B,CAAC,OAAgC;IACtE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+C,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QACrC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,uCAAuC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CACrH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iCAAiC,CAAC,SAAqC;IAC9E,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC,SAAS,EAAE,EAAE,CACZ,0CAA0C,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAC/G,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,2EAA2E;AAC3E,MAAM,qBAAqB,GAAsC,IAAI,GAAG,CAAuB;IAC7F,eAAe;CAChB,CAAC,CAAC;AAEH,SAAS,+BAA+B,CAAC,QAAkC;IACzE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8D,CAAC;IACtF,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QACrC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,wCAAwC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CACtH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA+B;IACtE,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,MAAM,IAAI,wBAAwB,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,gCAAgC,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,mCAAmC,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,kCAAkC,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,qCAAqC,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,mCAAmC,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,oCAAoC,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,wCAAwC,EAAE,CAAC;IACjE,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,QAAQ,CACxB,kBAAkB,CAChB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAQ,EACR,MAAM,CACP,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,6BAA6B,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAChF,MAAM,KAAK,GAAG,kCAAkC,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC;gBAChC,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG;QACxB,GAAG,+BAA+B,CAAC,QAAQ,CAAC;QAC5C,GAAG,8BAA8B,CAAC,OAAO,CAAC;QAC1C,GAAG,iCAAiC,CAAC,SAAS,CAAC;QAC/C,GAAG,+BAA+B,CAAC,QAAQ,CAAC;QAC5C,GAAG,gCAAgC,CAAC,SAAS,CAAC;KAC/C,CAAC;IACF,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEzE,OAAO;QACL,KAAK;QACL,QAAQ;QACR,OAAO;QACP,SAAS;QACT,QAAQ;QACR,SAAS;QACT,aAAa;QACb,MAAM;QACN,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE;YACX,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;YAC1C,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;YACxC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;YAC9B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YAC5B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;SAC/B;QACD,sBAAsB,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM;QACjD,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAC/C,qBAAqB,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;QAC/C,wBAAwB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM;QACpD,sBAAsB,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM;QACjD,uBAAuB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM;QACnD,mBAAmB,EAAE,qBAAqB,CAAC,aAAa,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,6BAA6B;IAC7B,yBAAyB;IACzB,yBAAyB;IACzB,+BAA+B;IAC/B,8BAA8B;IAC9B,gCAAgC;IAChC,+BAA+B;IAC/B,kBAAkB;IAClB,iCAAiC;IACjC,iCAAiC;IACjC,iCAAiC;IACjC,kCAAkC;IAClC,eAAe;IACf,qBAAqB;IACrB,mCAAmC;IACnC,mCAAmC;IACnC,iCAAiC;IACjC,2BAA2B;IAC3B,+BAA+B;IAC/B,kCAAkC;IAClC,sBAAsB;IACtB,aAAa;IACb,uBAAuB;IACvB,kCAAkC;IAClC,0BAA0B;IAC1B,0BAA0B;IAC1B,8BAA8B;IAC9B,yBAAyB;IACzB,4BAA4B;IAC5B,oCAAoC,EAAE,GAAG,EAAE;QACzC,0BAA0B,GAAG,IAAI,CAAC;IACpC,CAAC;CACF,CAAC","debugId":"a323e13b-37e3-5ec6-bc21-1ab78e0b30b9"}