@farm.js/core 0.1.0-beta.6 → 0.1.0-beta.8

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 (447) hide show
  1. package/dist/after.cjs +227 -0
  2. package/dist/after.cjs.map +1 -0
  3. package/dist/after.d.mts +25 -0
  4. package/dist/after.d.ts +25 -0
  5. package/dist/after.mjs +14 -0
  6. package/dist/after.mjs.map +1 -0
  7. package/dist/agent-runtime.cjs +2379 -0
  8. package/dist/agent-runtime.cjs.map +1 -0
  9. package/dist/agent-runtime.d.mts +94 -0
  10. package/dist/agent-runtime.d.ts +94 -0
  11. package/dist/agent-runtime.mjs +479 -0
  12. package/dist/agent-runtime.mjs.map +1 -0
  13. package/dist/api/route-manager.d.mts +66 -0
  14. package/dist/api/route-manager.d.ts +66 -0
  15. package/dist/api/runtime.d.mts +3 -0
  16. package/dist/api/runtime.d.ts +3 -0
  17. package/dist/api.cjs +4100 -0
  18. package/dist/api.cjs.map +1 -0
  19. package/dist/api.d.mts +48 -0
  20. package/dist/api.d.ts +48 -0
  21. package/dist/api.mjs +93 -0
  22. package/dist/api.mjs.map +1 -0
  23. package/dist/app-BWtqQu3R.d.mts +302 -0
  24. package/dist/app-markdown.cjs +244 -0
  25. package/dist/app-markdown.cjs.map +1 -0
  26. package/dist/app-markdown.d.mts +22 -0
  27. package/dist/app-markdown.d.ts +22 -0
  28. package/dist/app-markdown.mjs +27 -0
  29. package/dist/app-markdown.mjs.map +1 -0
  30. package/dist/app-xltejvLY.d.ts +302 -0
  31. package/dist/cache.cjs +945 -0
  32. package/dist/cache.cjs.map +1 -0
  33. package/dist/cache.d.mts +192 -0
  34. package/dist/cache.d.ts +192 -0
  35. package/dist/cache.mjs +46 -0
  36. package/dist/cache.mjs.map +1 -0
  37. package/dist/chunk-2ED5Q2GH.mjs +422 -0
  38. package/dist/chunk-2ED5Q2GH.mjs.map +1 -0
  39. package/dist/chunk-32W4QEJP.mjs +158 -0
  40. package/dist/chunk-32W4QEJP.mjs.map +1 -0
  41. package/dist/chunk-3XNTL3FQ.mjs +452 -0
  42. package/dist/chunk-3XNTL3FQ.mjs.map +1 -0
  43. package/dist/chunk-44ZCFSKE.mjs +84 -0
  44. package/dist/chunk-44ZCFSKE.mjs.map +1 -0
  45. package/dist/chunk-4MGVSBRP.mjs +7787 -0
  46. package/dist/chunk-4MGVSBRP.mjs.map +1 -0
  47. package/dist/chunk-4S3ORGFA.mjs +44 -0
  48. package/dist/chunk-4S3ORGFA.mjs.map +1 -0
  49. package/dist/chunk-5BY76U2M.mjs +1 -0
  50. package/dist/chunk-5BY76U2M.mjs.map +1 -0
  51. package/dist/chunk-5ZGPRGWV.mjs +136 -0
  52. package/dist/chunk-5ZGPRGWV.mjs.map +1 -0
  53. package/dist/chunk-65A7QIKI.mjs +142 -0
  54. package/dist/chunk-65A7QIKI.mjs.map +1 -0
  55. package/dist/chunk-74YTBPTY.mjs +450 -0
  56. package/dist/chunk-74YTBPTY.mjs.map +1 -0
  57. package/dist/chunk-7FBJLMQH.mjs +338 -0
  58. package/dist/chunk-7FBJLMQH.mjs.map +1 -0
  59. package/dist/chunk-7HO6AEOP.mjs +74 -0
  60. package/dist/chunk-7HO6AEOP.mjs.map +1 -0
  61. package/dist/chunk-7MABZJIM.mjs +29 -0
  62. package/dist/chunk-7MABZJIM.mjs.map +1 -0
  63. package/dist/chunk-7N62DNSO.mjs +41 -0
  64. package/dist/chunk-7N62DNSO.mjs.map +1 -0
  65. package/dist/chunk-7ZY5AIJO.mjs +161 -0
  66. package/dist/chunk-7ZY5AIJO.mjs.map +1 -0
  67. package/dist/chunk-ALCLXXTY.mjs +187 -0
  68. package/dist/chunk-ALCLXXTY.mjs.map +1 -0
  69. package/dist/chunk-AZ7YUVNR.mjs +65 -0
  70. package/dist/chunk-AZ7YUVNR.mjs.map +1 -0
  71. package/dist/chunk-B232I2GP.mjs +163 -0
  72. package/dist/chunk-B232I2GP.mjs.map +1 -0
  73. package/dist/chunk-B4W3BNTL.mjs +483 -0
  74. package/dist/chunk-B4W3BNTL.mjs.map +1 -0
  75. package/dist/chunk-C2ROET2V.mjs +718 -0
  76. package/dist/chunk-C2ROET2V.mjs.map +1 -0
  77. package/dist/chunk-CGILA3WO.mjs +14 -0
  78. package/dist/chunk-CGILA3WO.mjs.map +1 -0
  79. package/dist/chunk-CGIXMLSY.mjs +184 -0
  80. package/dist/chunk-CGIXMLSY.mjs.map +1 -0
  81. package/dist/chunk-DJSGLHCN.mjs +597 -0
  82. package/dist/chunk-DJSGLHCN.mjs.map +1 -0
  83. package/dist/chunk-E2MPIBRE.mjs +149 -0
  84. package/dist/chunk-E2MPIBRE.mjs.map +1 -0
  85. package/dist/chunk-E6EPN5BT.mjs +203 -0
  86. package/dist/chunk-E6EPN5BT.mjs.map +1 -0
  87. package/dist/chunk-EI43C4RA.mjs +6277 -0
  88. package/dist/chunk-EI43C4RA.mjs.map +1 -0
  89. package/dist/chunk-EJ7T4TPB.mjs +622 -0
  90. package/dist/chunk-EJ7T4TPB.mjs.map +1 -0
  91. package/dist/chunk-FQYDHKKU.mjs +128 -0
  92. package/dist/chunk-FQYDHKKU.mjs.map +1 -0
  93. package/dist/chunk-FRPWCMMG.mjs +299 -0
  94. package/dist/chunk-FRPWCMMG.mjs.map +1 -0
  95. package/dist/chunk-GN72QAIH.mjs +146 -0
  96. package/dist/chunk-GN72QAIH.mjs.map +1 -0
  97. package/dist/chunk-GQVGIUSN.mjs +149 -0
  98. package/dist/chunk-GQVGIUSN.mjs.map +1 -0
  99. package/dist/chunk-GS6K5OCM.mjs +407 -0
  100. package/dist/chunk-GS6K5OCM.mjs.map +1 -0
  101. package/dist/chunk-GXASWWJU.mjs +364 -0
  102. package/dist/chunk-GXASWWJU.mjs.map +1 -0
  103. package/dist/chunk-GY2STC2S.mjs +180 -0
  104. package/dist/chunk-GY2STC2S.mjs.map +1 -0
  105. package/dist/chunk-H2FA2SBS.mjs +51 -0
  106. package/dist/chunk-H2FA2SBS.mjs.map +1 -0
  107. package/dist/chunk-I4CUBGVF.mjs +93 -0
  108. package/dist/chunk-I4CUBGVF.mjs.map +1 -0
  109. package/dist/chunk-ITN462YM.mjs +98 -0
  110. package/dist/chunk-ITN462YM.mjs.map +1 -0
  111. package/dist/chunk-J23HNLFY.mjs +72 -0
  112. package/dist/chunk-J23HNLFY.mjs.map +1 -0
  113. package/dist/chunk-J4FNJ5IU.mjs +179 -0
  114. package/dist/chunk-J4FNJ5IU.mjs.map +1 -0
  115. package/dist/chunk-J5YWQVI5.mjs +211 -0
  116. package/dist/chunk-J5YWQVI5.mjs.map +1 -0
  117. package/dist/chunk-JDEOUK5V.mjs +427 -0
  118. package/dist/chunk-JDEOUK5V.mjs.map +1 -0
  119. package/dist/chunk-JK25YEN6.mjs +219 -0
  120. package/dist/chunk-JK25YEN6.mjs.map +1 -0
  121. package/dist/chunk-K4667E2Q.mjs +1916 -0
  122. package/dist/chunk-K4667E2Q.mjs.map +1 -0
  123. package/dist/chunk-LGHEOHBU.mjs +218 -0
  124. package/dist/chunk-LGHEOHBU.mjs.map +1 -0
  125. package/dist/chunk-LM2YNO4U.mjs +24 -0
  126. package/dist/chunk-LM2YNO4U.mjs.map +1 -0
  127. package/dist/chunk-ME4MO2RJ.mjs +3540 -0
  128. package/dist/chunk-ME4MO2RJ.mjs.map +1 -0
  129. package/dist/chunk-MIUW47JX.mjs +639 -0
  130. package/dist/chunk-MIUW47JX.mjs.map +1 -0
  131. package/dist/chunk-NNLCAVB6.mjs +391 -0
  132. package/dist/chunk-NNLCAVB6.mjs.map +1 -0
  133. package/dist/chunk-P7QDS5AT.mjs +191 -0
  134. package/dist/chunk-P7QDS5AT.mjs.map +1 -0
  135. package/dist/chunk-PFE6GMNE.mjs +603 -0
  136. package/dist/chunk-PFE6GMNE.mjs.map +1 -0
  137. package/dist/chunk-QGOHVJ6J.mjs +63 -0
  138. package/dist/chunk-QGOHVJ6J.mjs.map +1 -0
  139. package/dist/chunk-QKVUNGAH.mjs +39 -0
  140. package/dist/chunk-QKVUNGAH.mjs.map +1 -0
  141. package/dist/chunk-QM746KUO.mjs +56 -0
  142. package/dist/chunk-QM746KUO.mjs.map +1 -0
  143. package/dist/chunk-QTZZ2ISQ.mjs +753 -0
  144. package/dist/chunk-QTZZ2ISQ.mjs.map +1 -0
  145. package/dist/chunk-RBRLLZL5.mjs +81 -0
  146. package/dist/chunk-RBRLLZL5.mjs.map +1 -0
  147. package/dist/chunk-RHIFZZUI.mjs +69 -0
  148. package/dist/chunk-RHIFZZUI.mjs.map +1 -0
  149. package/dist/chunk-RQ633A5I.mjs +187 -0
  150. package/dist/chunk-RQ633A5I.mjs.map +1 -0
  151. package/dist/chunk-SCFX4UTD.mjs +28 -0
  152. package/dist/chunk-SCFX4UTD.mjs.map +1 -0
  153. package/dist/chunk-SL6HTIOK.mjs +66 -0
  154. package/dist/chunk-SL6HTIOK.mjs.map +1 -0
  155. package/dist/chunk-SPBBQLXI.mjs +207 -0
  156. package/dist/chunk-SPBBQLXI.mjs.map +1 -0
  157. package/dist/chunk-SSA7THPX.mjs +10 -0
  158. package/dist/chunk-SSA7THPX.mjs.map +1 -0
  159. package/dist/chunk-T4QJQK76.mjs +459 -0
  160. package/dist/chunk-T4QJQK76.mjs.map +1 -0
  161. package/dist/chunk-TQAEEJB4.mjs +157 -0
  162. package/dist/chunk-TQAEEJB4.mjs.map +1 -0
  163. package/dist/chunk-UB5UOSHB.mjs +458 -0
  164. package/dist/chunk-UB5UOSHB.mjs.map +1 -0
  165. package/dist/chunk-USWZZUEH.mjs +25 -0
  166. package/dist/chunk-USWZZUEH.mjs.map +1 -0
  167. package/dist/chunk-UVCIEUJC.mjs +16 -0
  168. package/dist/chunk-UVCIEUJC.mjs.map +1 -0
  169. package/dist/chunk-UXUAWNO5.mjs +396 -0
  170. package/dist/chunk-UXUAWNO5.mjs.map +1 -0
  171. package/dist/chunk-V3XURYJO.mjs +756 -0
  172. package/dist/chunk-V3XURYJO.mjs.map +1 -0
  173. package/dist/chunk-V6WE6JSZ.mjs +352 -0
  174. package/dist/chunk-V6WE6JSZ.mjs.map +1 -0
  175. package/dist/chunk-V7RBCSDJ.mjs +170 -0
  176. package/dist/chunk-V7RBCSDJ.mjs.map +1 -0
  177. package/dist/chunk-VCANOYFI.mjs +588 -0
  178. package/dist/chunk-VCANOYFI.mjs.map +1 -0
  179. package/dist/chunk-VY2UYN5R.mjs +224 -0
  180. package/dist/chunk-VY2UYN5R.mjs.map +1 -0
  181. package/dist/chunk-W2CRQFF6.mjs +1352 -0
  182. package/dist/chunk-W2CRQFF6.mjs.map +1 -0
  183. package/dist/chunk-WDU6QXNK.mjs +872 -0
  184. package/dist/chunk-WDU6QXNK.mjs.map +1 -0
  185. package/dist/chunk-WZ5QFROO.mjs +23 -0
  186. package/dist/chunk-WZ5QFROO.mjs.map +1 -0
  187. package/dist/chunk-XIVV5IWN.mjs +541 -0
  188. package/dist/chunk-XIVV5IWN.mjs.map +1 -0
  189. package/dist/chunk-YW7OBE6Q.mjs +119 -0
  190. package/dist/chunk-YW7OBE6Q.mjs.map +1 -0
  191. package/dist/chunk-Z5CQMP54.mjs +365 -0
  192. package/dist/chunk-Z5CQMP54.mjs.map +1 -0
  193. package/dist/chunk-ZBE6MLHL.mjs +230 -0
  194. package/dist/chunk-ZBE6MLHL.mjs.map +1 -0
  195. package/dist/chunk-ZVWA4ZQ3.mjs +189 -0
  196. package/dist/chunk-ZVWA4ZQ3.mjs.map +1 -0
  197. package/dist/chunk-ZZ57EH5Z.mjs +173 -0
  198. package/dist/chunk-ZZ57EH5Z.mjs.map +1 -0
  199. package/dist/client-BT1mFQas.d.mts +447 -0
  200. package/dist/client-Nn0q4eO4.d.ts +447 -0
  201. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  202. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  203. package/dist/client-plugins-BI2R6Eae.d.mts +1926 -0
  204. package/dist/client-plugins-DU9oMspX.d.ts +1926 -0
  205. package/dist/client-plugins.cjs +415 -0
  206. package/dist/client-plugins.cjs.map +1 -0
  207. package/dist/client-plugins.d.mts +22 -0
  208. package/dist/client-plugins.d.ts +22 -0
  209. package/dist/client-plugins.mjs +10 -0
  210. package/dist/client-plugins.mjs.map +1 -0
  211. package/dist/client.cjs +5402 -0
  212. package/dist/client.cjs.map +1 -0
  213. package/dist/client.d.mts +447 -0
  214. package/dist/client.d.ts +447 -0
  215. package/dist/client.mjs +110 -0
  216. package/dist/client.mjs.map +1 -0
  217. package/dist/config.cjs +38 -0
  218. package/dist/config.cjs.map +1 -0
  219. package/dist/config.d.mts +29 -0
  220. package/dist/config.d.ts +29 -0
  221. package/dist/config.mjs +10 -0
  222. package/dist/config.mjs.map +1 -0
  223. package/dist/cron.cjs +406 -0
  224. package/dist/cron.cjs.map +1 -0
  225. package/dist/cron.d.mts +78 -0
  226. package/dist/cron.d.ts +78 -0
  227. package/dist/cron.mjs +30 -0
  228. package/dist/cron.mjs.map +1 -0
  229. package/dist/deferred.cjs +438 -0
  230. package/dist/deferred.cjs.map +1 -0
  231. package/dist/deferred.d.mts +42 -0
  232. package/dist/deferred.d.ts +42 -0
  233. package/dist/deferred.mjs +28 -0
  234. package/dist/deferred.mjs.map +1 -0
  235. package/dist/deployment.cjs +199 -0
  236. package/dist/deployment.cjs.map +1 -0
  237. package/dist/deployment.d.mts +34 -0
  238. package/dist/deployment.d.ts +34 -0
  239. package/dist/deployment.mjs +38 -0
  240. package/dist/deployment.mjs.map +1 -0
  241. package/dist/devtools-REQTS3I7.mjs +371 -0
  242. package/dist/devtools-REQTS3I7.mjs.map +1 -0
  243. package/dist/devtools-client-3XRTBND5.mjs +216 -0
  244. package/dist/devtools-client-3XRTBND5.mjs.map +1 -0
  245. package/dist/devtools-ui-NJKFORTG.mjs +1349 -0
  246. package/dist/devtools-ui-NJKFORTG.mjs.map +1 -0
  247. package/dist/docs.cjs +5548 -0
  248. package/dist/docs.cjs.map +1 -0
  249. package/dist/docs.d.mts +69 -0
  250. package/dist/docs.d.ts +69 -0
  251. package/dist/docs.mjs +47 -0
  252. package/dist/docs.mjs.map +1 -0
  253. package/dist/env-types.cjs +232 -0
  254. package/dist/env-types.cjs.map +1 -0
  255. package/dist/env-types.d.mts +12 -0
  256. package/dist/env-types.d.ts +12 -0
  257. package/dist/env-types.mjs +11 -0
  258. package/dist/env-types.mjs.map +1 -0
  259. package/dist/env.cjs +215 -0
  260. package/dist/env.cjs.map +1 -0
  261. package/dist/env.d.mts +45 -0
  262. package/dist/env.d.ts +45 -0
  263. package/dist/env.mjs +22 -0
  264. package/dist/env.mjs.map +1 -0
  265. package/dist/environment/vite.d.mts +22 -0
  266. package/dist/environment/vite.d.ts +22 -0
  267. package/dist/environment.cjs +96 -0
  268. package/dist/environment.cjs.map +1 -0
  269. package/dist/environment.d.mts +18 -0
  270. package/dist/environment.d.ts +18 -0
  271. package/dist/environment.mjs +14 -0
  272. package/dist/environment.mjs.map +1 -0
  273. package/dist/headers.cjs +126 -0
  274. package/dist/headers.cjs.map +1 -0
  275. package/dist/headers.d.mts +22 -0
  276. package/dist/headers.d.ts +22 -0
  277. package/dist/headers.mjs +12 -0
  278. package/dist/headers.mjs.map +1 -0
  279. package/dist/i18n/client.d.mts +32 -0
  280. package/dist/i18n/client.d.ts +32 -0
  281. package/dist/i18n/index.d.mts +20 -0
  282. package/dist/i18n/index.d.ts +20 -0
  283. package/dist/i18n/server.d.mts +30 -0
  284. package/dist/i18n/server.d.ts +30 -0
  285. package/dist/image/server.d.mts +37 -0
  286. package/dist/image/server.d.ts +37 -0
  287. package/dist/image/sharp.d.mts +7 -0
  288. package/dist/image/sharp.d.ts +7 -0
  289. package/dist/image-config-Duob7wER.d.mts +50 -0
  290. package/dist/image-config-Duob7wER.d.ts +50 -0
  291. package/dist/image.cjs +209 -0
  292. package/dist/image.cjs.map +1 -0
  293. package/dist/image.d.mts +39 -0
  294. package/dist/image.d.ts +39 -0
  295. package/dist/image.mjs +165 -0
  296. package/dist/image.mjs.map +1 -0
  297. package/dist/index.cjs +42186 -0
  298. package/dist/index.cjs.map +1 -0
  299. package/dist/index.d.mts +454 -0
  300. package/dist/index.d.ts +454 -0
  301. package/dist/index.mjs +980 -0
  302. package/dist/index.mjs.map +1 -0
  303. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  304. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  305. package/dist/integration-orm-GQLGU66X.mjs +13 -0
  306. package/dist/integration-orm-GQLGU66X.mjs.map +1 -0
  307. package/dist/integrations.cjs +2820 -0
  308. package/dist/integrations.cjs.map +1 -0
  309. package/dist/integrations.d.mts +22 -0
  310. package/dist/integrations.d.ts +22 -0
  311. package/dist/integrations.mjs +51 -0
  312. package/dist/integrations.mjs.map +1 -0
  313. package/dist/internal/build-runtime.cjs +643 -322
  314. package/dist/internal/build-runtime.cjs.map +1 -1
  315. package/dist/internal/build-runtime.d.mts +39 -0
  316. package/dist/internal/build-runtime.d.ts +39 -0
  317. package/dist/internal/build-runtime.mjs +11 -10
  318. package/dist/internal/client-runtime.d.mts +2 -0
  319. package/dist/internal/client-runtime.d.ts +2 -0
  320. package/dist/internal/config-runtime.cjs +135 -39
  321. package/dist/internal/config-runtime.cjs.map +1 -1
  322. package/dist/internal/config-runtime.d.mts +39 -0
  323. package/dist/internal/config-runtime.d.ts +39 -0
  324. package/dist/internal/config-runtime.mjs +5 -4
  325. package/dist/internal/production-node-env.d.mts +12 -0
  326. package/dist/internal/production-node-env.d.ts +12 -0
  327. package/dist/internal/production-runtime.d.mts +39 -0
  328. package/dist/internal/production-runtime.d.ts +39 -0
  329. package/dist/layers-VWVDTPUZ.mjs +16 -0
  330. package/dist/layers-VWVDTPUZ.mjs.map +1 -0
  331. package/dist/manager-THKFTOFE.mjs +10 -0
  332. package/dist/manager-THKFTOFE.mjs.map +1 -0
  333. package/dist/markdown.cjs +364 -0
  334. package/dist/markdown.cjs.map +1 -0
  335. package/dist/markdown.d.mts +60 -0
  336. package/dist/markdown.d.ts +60 -0
  337. package/dist/markdown.mjs +18 -0
  338. package/dist/markdown.mjs.map +1 -0
  339. package/dist/metadata-Cm9ujH4I.d.ts +22 -0
  340. package/dist/metadata-DacXbnLA.d.mts +22 -0
  341. package/dist/middleware.cjs +2148 -0
  342. package/dist/middleware.cjs.map +1 -0
  343. package/dist/middleware.d.mts +164 -0
  344. package/dist/middleware.d.ts +164 -0
  345. package/dist/middleware.mjs +49 -0
  346. package/dist/middleware.mjs.map +1 -0
  347. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  348. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  349. package/dist/navigation.cjs +1329 -0
  350. package/dist/navigation.cjs.map +1 -0
  351. package/dist/navigation.d.mts +14 -0
  352. package/dist/navigation.d.ts +14 -0
  353. package/dist/navigation.mjs +33 -0
  354. package/dist/navigation.mjs.map +1 -0
  355. package/dist/nitro-QO5LV6QK.mjs +689 -0
  356. package/dist/nitro-QO5LV6QK.mjs.map +1 -0
  357. package/dist/observability.cjs +186 -0
  358. package/dist/observability.cjs.map +1 -0
  359. package/dist/observability.d.mts +335 -0
  360. package/dist/observability.d.ts +335 -0
  361. package/dist/observability.mjs +16 -0
  362. package/dist/observability.mjs.map +1 -0
  363. package/dist/params-BALtrRim.d.ts +15 -0
  364. package/dist/params-ry-lxqmy.d.mts +15 -0
  365. package/dist/plugin-BJDf43dc.d.mts +165 -0
  366. package/dist/plugin-BJDf43dc.d.ts +165 -0
  367. package/dist/plugin.cjs +23470 -0
  368. package/dist/plugin.cjs.map +1 -1
  369. package/dist/plugin.d.mts +22 -0
  370. package/dist/plugin.d.ts +22 -0
  371. package/dist/plugin.mjs +8 -7
  372. package/dist/production-runtime-4KKq1AVC.d.mts +79 -0
  373. package/dist/production-runtime-C_B79w2P.d.mts +28 -0
  374. package/dist/production-runtime-DDEM1D2q.d.ts +28 -0
  375. package/dist/production-runtime-DRsWDN2x.d.ts +79 -0
  376. package/dist/query/client.d.mts +61 -0
  377. package/dist/query/client.d.ts +61 -0
  378. package/dist/query/index.d.mts +90 -0
  379. package/dist/query/index.d.ts +90 -0
  380. package/dist/query/parsers.d.mts +25 -0
  381. package/dist/query/parsers.d.ts +25 -0
  382. package/dist/query/server.d.mts +55 -0
  383. package/dist/query/server.d.ts +55 -0
  384. package/dist/request-Dsq4kGW0.d.mts +6 -0
  385. package/dist/request-udtobOLv.d.ts +6 -0
  386. package/dist/request.d.mts +2 -0
  387. package/dist/request.d.ts +2 -0
  388. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  389. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  390. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  391. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  392. package/dist/router.d.mts +36 -0
  393. package/dist/router.d.ts +36 -0
  394. package/dist/routes.d.mts +224 -0
  395. package/dist/routes.d.ts +224 -0
  396. package/dist/runtime-9nQjVM7X.d.mts +206 -0
  397. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  398. package/dist/runtime-DgeS2skB.d.ts +206 -0
  399. package/dist/runtime-bv63eUiO.d.ts +27 -0
  400. package/dist/server-action-security.d.mts +43 -0
  401. package/dist/server-action-security.d.ts +43 -0
  402. package/dist/server-fn-client.d.mts +32 -0
  403. package/dist/server-fn-client.d.ts +32 -0
  404. package/dist/server-fn.d.mts +93 -0
  405. package/dist/server-fn.d.ts +93 -0
  406. package/dist/server-plugins.d.mts +55 -0
  407. package/dist/server-plugins.d.ts +55 -0
  408. package/dist/server-query-client.d.mts +50 -0
  409. package/dist/server-query-client.d.ts +50 -0
  410. package/dist/server-query.d.mts +36 -0
  411. package/dist/server-query.d.ts +36 -0
  412. package/dist/server.cjs +731 -447
  413. package/dist/server.cjs.map +1 -1
  414. package/dist/server.d.mts +48 -0
  415. package/dist/server.d.ts +48 -0
  416. package/dist/server.mjs +9 -8
  417. package/dist/server.mjs.map +1 -1
  418. package/dist/storage.d.mts +52 -0
  419. package/dist/storage.d.ts +52 -0
  420. package/dist/testing.d.mts +101 -0
  421. package/dist/testing.d.ts +101 -0
  422. package/dist/transport-BmbGTXA5.d.mts +49 -0
  423. package/dist/transport-BmbGTXA5.d.ts +49 -0
  424. package/dist/types-BMxWr97v.d.mts +81 -0
  425. package/dist/types-BMxWr97v.d.ts +81 -0
  426. package/dist/types-C9N-nk5R.d.mts +53 -0
  427. package/dist/types-C9N-nk5R.d.ts +53 -0
  428. package/dist/types-D1A6-XvH.d.mts +73 -0
  429. package/dist/types-D1A6-XvH.d.ts +73 -0
  430. package/dist/utils-B-cUHwoK.d.ts +23 -0
  431. package/dist/utils-Cm41AefV.d.mts +23 -0
  432. package/dist/version.cjs +1 -1
  433. package/dist/version.cjs.map +1 -1
  434. package/dist/version.d.mts +3 -0
  435. package/dist/version.d.ts +3 -0
  436. package/dist/version.mjs +1 -1
  437. package/dist/vite.cjs +682 -437
  438. package/dist/vite.cjs.map +1 -1
  439. package/dist/vite.d.mts +22 -0
  440. package/dist/vite.d.ts +22 -0
  441. package/dist/vite.mjs +6 -5
  442. package/dist/workflows.d.mts +110 -0
  443. package/dist/workflows.d.ts +110 -0
  444. package/package.json +3 -2
  445. package/types/client.d.ts +1 -1
  446. package/types/image.d.ts +4 -0
  447. package/types/images.d.ts +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/docs/handler.ts","../src/docs/last-modified.ts","../src/docs/pixel-border-css.ts","../src/docs/api.ts"],"sourcesContent":["import { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport {\n buildDocsAgentDiscoverySpec,\n buildDocsSitemapManifest,\n isDocsAgentDiscoveryRequest,\n isDocsAgentsRequest,\n isDocsSkillRequest,\n renderDocsAgentsDocument,\n renderDocsLlmsTxt,\n renderDocsMarkdownDocument,\n renderDocsRobotsTxt,\n renderDocsSitemapMarkdown,\n renderDocsSitemapXml,\n renderDocsSkillDocument,\n resolveDocsLlmsTxtFormat,\n resolveDocsRobotsRequest,\n resolveDocsSitemapRequest,\n type DocsLlmsTxtPageInput,\n type DocsMarkdownPage,\n type DocsSitemapPageInput,\n} from \"@farming-labs/docs\";\nimport { marked, Renderer } from \"marked\";\nimport { highlight } from \"sugar-high\";\nimport { resolveFarmDocsPageLastModified } from \"./last-modified\";\nimport { farmDocsPixelBorderCss } from \"./pixel-border-css\";\nimport { generateFarmDocsSearchBootstrapRuntime, isFarmDocsSearchEnabled } from \"./search-client\";\nimport type { FarmDocsResolvedConfig } from \"./types\";\n\nexport interface FarmDocsHandlerOptions {\n root: string;\n srcDir?: string;\n clientEntry?: string;\n}\n\nexport interface FarmDocsPage {\n slug: string;\n title: string;\n description?: string;\n section?: string;\n href: string;\n sourcePath: string;\n lastModified?: string;\n}\n\nexport interface LoadedFarmDocsPage extends FarmDocsPage {\n body: string;\n frontmatter: Record<string, string>;\n}\n\nconst DOCS_FILE_NAMES = [\"page.mdx\", \"page.md\", \"index.mdx\", \"index.md\"];\nconst DOCS_FILE_EXTENSIONS = [\".mdx\", \".md\"];\nconst FARM_DOCS_FALLBACK_FAVICON =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='black'/%3E%3Cpath d='M7 8h18v3H10v5h12v3H10v5H7z' fill='white'/%3E%3C/svg%3E\";\nconst FARM_DOCS_FAVICON_FILES = [\"favicon.svg\", \"favicon.ico\", \"favicon.png\"];\n\nconst GEIST_SANS_FONT_URL = \"/assets/Geist-Variable-CrgPqtmy.woff2\";\nconst GEIST_MONO_FONT_URL = \"/assets/GeistMono-Variable-BNLlm6Cd.woff2\";\n\nfunction trimSlashes(value: string): string {\n return value.replace(/^\\/+|\\/+$/g, \"\");\n}\n\nfunction normalizeEntry(entry: string | undefined): string {\n if (!entry || entry === \"/\") return \"/\";\n return `/${trimSlashes(entry)}`;\n}\n\nfunction normalizeSlug(value: string): string {\n return trimSlashes(decodeURIComponent(value)).replace(/\\.(mdx?|markdown)$/i, \"\");\n}\n\nfunction resolveFarmDocsFavicon(\n docs: FarmDocsResolvedConfig | undefined,\n options: FarmDocsHandlerOptions,\n): string {\n const configuredFavicon = docs?.config.favicon;\n if (typeof configuredFavicon === \"string\" && configuredFavicon.trim()) {\n return configuredFavicon.trim();\n }\n\n const publicDir = path.join(path.resolve(options.root), \"public\");\n\n for (const fileName of FARM_DOCS_FAVICON_FILES) {\n const faviconPath = path.join(publicDir, fileName);\n if (existsSync(faviconPath) && statSync(faviconPath).isFile()) {\n return `/${fileName}`;\n }\n }\n\n return FARM_DOCS_FALLBACK_FAVICON;\n}\n\nfunction renderFarmDocsFaviconLink(faviconHref: string): string {\n const normalizedHref = faviconHref.split(/[?#]/, 1)[0]?.toLowerCase() || \"\";\n const type =\n normalizedHref.endsWith(\".svg\") || faviconHref.startsWith(\"data:image/svg+xml\")\n ? \"image/svg+xml\"\n : normalizedHref.endsWith(\".png\")\n ? \"image/png\"\n : normalizedHref.endsWith(\".ico\")\n ? \"image/x-icon\"\n : undefined;\n const metadata =\n type === \"image/svg+xml\" ? ' sizes=\"any\" type=\"image/svg+xml\"' : type ? ` type=\"${type}\"` : \"\";\n\n return `<link rel=\"icon\" href=\"${escapeAttribute(faviconHref)}\"${metadata}>`;\n}\n\nfunction renderFarmDocsBrandMark(): string {\n return `<svg class=\"sidebar-brand-logo\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <rect x=\"2\" y=\"2\" width=\"5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\"></rect>\n <path d=\"M9.75 2h11.5c.41 0 .75.34.75.75v3.5c0 .41-.34.75-.75.75H9.75A.75.75 0 0 1 9 6.25v-3.5c0-.41.34-.75.75-.75Zm9.75 1.62a.38.38 0 0 0-.38.38v1c0 .21.17.38.38.38h.75c.21 0 .38-.17.38-.38V4a.38.38 0 0 0-.38-.38h-.75Z\" fill=\"currentColor\"></path>\n <rect x=\"2\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.64\"></rect>\n <rect x=\"9\" y=\"9.5\" width=\"13\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.64\"></rect>\n <rect x=\"2\" y=\"17\" width=\"5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.34\"></rect>\n <rect x=\"9\" y=\"17\" width=\"7.5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.34\"></rect>\n </svg>`;\n}\n\nfunction renderFarmDocsBrandTitle(navTitle: string): string {\n const suffix = navTitle.match(/\\.js$/i)?.[0];\n\n if (!suffix) {\n return `<span class=\"sidebar-brand-title\">${escapeHtml(navTitle)}</span>`;\n }\n\n const productName = navTitle.slice(0, -suffix.length);\n return `<span class=\"sidebar-brand-title\">${escapeHtml(productName)}<span class=\"sidebar-brand-suffix\">${escapeHtml(suffix)}</span></span>`;\n}\n\nfunction isSafeSegment(segment: string): boolean {\n return segment !== \"..\" && !segment.includes(\"/\") && !segment.includes(\"\\\\\");\n}\n\nfunction resolveInside(root: string, target: string): string | null {\n const resolvedRoot = path.resolve(root);\n const resolvedTarget = path.resolve(target);\n const relative = path.relative(resolvedRoot, resolvedTarget);\n if (relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative))) {\n return resolvedTarget;\n }\n return null;\n}\n\nexport function isFarmDocsRequest(docs: FarmDocsResolvedConfig | undefined, request: Request) {\n if (!docs?.enabled) return false;\n if (request.method !== \"GET\" && request.method !== \"HEAD\") return false;\n\n const pathname = new URL(request.url).pathname;\n const entry = normalizeEntry(docs.entry);\n if (entry === \"/\") return true;\n\n return pathname === entry || pathname === `${entry}.md` || pathname.startsWith(`${entry}/`);\n}\n\nexport function resolveFarmDocsContentDir(\n docs: FarmDocsResolvedConfig,\n options: FarmDocsHandlerOptions,\n): string {\n const root = path.resolve(options.root);\n const srcDir = options.srcDir || \"src\";\n const configuredContentDir = docs.contentDir || docs.config.contentDir;\n\n if (configuredContentDir) {\n return path.isAbsolute(configuredContentDir)\n ? configuredContentDir\n : path.join(root, configuredContentDir);\n }\n\n const entryDir = docs.config.entry || trimSlashes(docs.entry) || \"docs\";\n const appDocsDir = path.join(root, srcDir, \"app\", entryDir);\n if (existsSync(appDocsDir)) return appDocsDir;\n\n return path.join(root, entryDir);\n}\n\nexport function getFarmDocsRouteTypeEntries(docs: FarmDocsResolvedConfig | undefined): string[] {\n if (!docs?.enabled) return [];\n const entry = normalizeEntry(docs.entry);\n if (entry === \"/\") return [\"/\", \"/[...docs]\"];\n return [entry, `${entry}/[...docs]`];\n}\n\nexport function getFarmDocsDocumentNavigationMatchers(\n docs: FarmDocsResolvedConfig | undefined,\n): string[] {\n if (!docs?.enabled) return [];\n const entry = normalizeEntry(docs.entry);\n return [entry === \"/\" ? \"/(.*)\" : `${entry}(.*)`];\n}\n\nfunction getRequestSlug(docs: FarmDocsResolvedConfig, request: Request): string {\n const pathname = new URL(request.url).pathname;\n const entry = normalizeEntry(docs.entry);\n\n if (entry === \"/\") return normalizeSlug(pathname);\n if (pathname === entry || pathname === `${entry}.md`) return \"\";\n\n return normalizeSlug(pathname.slice(entry.length));\n}\n\nfunction findDocsPageFile(contentDir: string, slug: string): string | null {\n const segments = slug ? slug.split(\"/\").filter(Boolean) : [];\n if (!segments.every(isSafeSegment)) return null;\n\n const slugDir = path.join(contentDir, ...segments);\n const candidates =\n segments.length === 0\n ? DOCS_FILE_NAMES.map((filename) => path.join(contentDir, filename))\n : [\n ...DOCS_FILE_NAMES.map((filename) => path.join(slugDir, filename)),\n ...DOCS_FILE_EXTENSIONS.map((extension) => path.join(contentDir, `${slug}${extension}`)),\n ];\n\n for (const candidate of candidates) {\n const safePath = resolveInside(contentDir, candidate);\n if (safePath && existsSync(safePath) && statSync(safePath).isFile()) {\n return safePath;\n }\n }\n\n return null;\n}\n\nfunction parseFrontmatter(source: string): {\n frontmatter: Record<string, string>;\n body: string;\n} {\n if (!source.startsWith(\"---\")) {\n return { frontmatter: {}, body: source };\n }\n\n const endIndex = source.indexOf(\"\\n---\", 3);\n if (endIndex === -1) return { frontmatter: {}, body: source };\n\n const frontmatterSource = source.slice(3, endIndex).trim();\n const body = source.slice(source.indexOf(\"\\n\", endIndex + 1) + 1);\n const frontmatter: Record<string, string> = {};\n\n for (const line of frontmatterSource.split(/\\r?\\n/)) {\n const separator = line.indexOf(\":\");\n if (separator === -1) continue;\n const key = line.slice(0, separator).trim();\n const value = line\n .slice(separator + 1)\n .trim()\n .replace(/^[\"']|[\"']$/g, \"\");\n if (key && value) frontmatter[key] = value;\n }\n\n return { frontmatter, body };\n}\n\nfunction titleFromSlug(slug: string): string {\n const lastSegment = slug.split(\"/\").filter(Boolean).pop() || \"Docs\";\n return lastSegment\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction titleFromMarkdown(body: string, fallback: string): string {\n const heading = body.match(/^#\\s+(.+)$/m)?.[1]?.trim();\n return heading || fallback;\n}\n\nexport function loadFarmDocsPage(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n slug: string,\n): LoadedFarmDocsPage | null {\n const sourcePath = findDocsPageFile(contentDir, slug);\n if (!sourcePath) return null;\n\n const source = readFileSync(sourcePath, \"utf8\");\n const { frontmatter, body } = parseFrontmatter(source);\n const title = frontmatter.title || titleFromMarkdown(body, titleFromSlug(slug));\n const href = createDocsHref(docs.entry, slug);\n\n return {\n slug,\n title,\n description: frontmatter.description,\n href,\n sourcePath,\n lastModified: resolveFarmDocsPageLastModified(contentDir, sourcePath, frontmatter),\n frontmatter,\n body,\n };\n}\n\nfunction createDocsHref(entry: string, slug: string): string {\n const normalizedEntry = normalizeEntry(entry);\n const normalizedSlug = trimSlashes(slug);\n if (normalizedEntry === \"/\") return normalizedSlug ? `/${normalizedSlug}` : \"/\";\n return normalizedSlug ? `${normalizedEntry}/${normalizedSlug}` : normalizedEntry;\n}\n\nfunction pathToSlug(contentDir: string, filePath: string): string | null {\n const relative = path.relative(contentDir, filePath).replace(/\\\\/g, \"/\");\n if (relative.startsWith(\"..\")) return null;\n\n const extension = path.extname(relative);\n if (!DOCS_FILE_EXTENSIONS.includes(extension)) return null;\n\n const withoutExtension = relative.slice(0, -extension.length);\n if (withoutExtension === \"page\" || withoutExtension === \"index\") return \"\";\n if (withoutExtension.endsWith(\"/page\") || withoutExtension.endsWith(\"/index\")) {\n return withoutExtension.replace(/\\/(page|index)$/, \"\");\n }\n return withoutExtension;\n}\n\nfunction loadPage(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n request: Request,\n): LoadedFarmDocsPage | null {\n return loadFarmDocsPage(contentDir, docs, getRequestSlug(docs, request));\n}\n\nexport function discoverFarmDocsPages(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n): FarmDocsPage[] {\n if (!existsSync(contentDir)) return [];\n\n const pages: FarmDocsPage[] = [];\n const visit = (dir: string) => {\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n const absolutePath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolutePath);\n continue;\n }\n if (!entry.isFile()) continue;\n\n const slug = pathToSlug(contentDir, absolutePath);\n if (slug === null) continue;\n\n const source = readFileSync(absolutePath, \"utf8\");\n const { frontmatter, body } = parseFrontmatter(source);\n pages.push({\n slug,\n title: frontmatter.title || titleFromMarkdown(body, titleFromSlug(slug)),\n description: frontmatter.description,\n section: frontmatter.section,\n href: createDocsHref(docs.entry, slug),\n sourcePath: absolutePath,\n lastModified: resolveFarmDocsPageLastModified(contentDir, absolutePath, frontmatter),\n });\n }\n };\n\n visit(contentDir);\n return pages.sort((a, b) => a.href.localeCompare(b.href));\n}\n\nexport function toFarmDocsMarkdownPage(page: LoadedFarmDocsPage): DocsMarkdownPage {\n const lastModified =\n page.lastModified || page.frontmatter.lastModified || page.frontmatter.lastmod;\n\n return {\n slug: page.slug,\n url: page.href,\n title: page.title,\n description: page.description,\n lastModified,\n lastmod: lastModified,\n content: page.body,\n rawContent: page.body,\n };\n}\n\nfunction getDocsTitle(docs: FarmDocsResolvedConfig): string {\n return typeof docs.config.nav === \"object\" && docs.config.nav && \"title\" in docs.config.nav\n ? String((docs.config.nav as { title?: unknown }).title || \"Documentation\")\n : \"Documentation\";\n}\n\nfunction getDocsDescription(docs: FarmDocsResolvedConfig): string | undefined {\n return docs.config.metadata?.description;\n}\n\nfunction getLoadedDocsPages(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n): LoadedFarmDocsPage[] {\n return discoverFarmDocsPages(contentDir, docs)\n .map((page) => loadFarmDocsPage(contentDir, docs, page.slug))\n .filter((page): page is LoadedFarmDocsPage => Boolean(page));\n}\n\nfunction toDocsLlmsPage(page: LoadedFarmDocsPage): DocsLlmsTxtPageInput {\n return toFarmDocsMarkdownPage(page);\n}\n\nfunction toDocsSitemapPage(page: LoadedFarmDocsPage): DocsSitemapPageInput {\n return {\n ...toFarmDocsMarkdownPage(page),\n sourcePath: page.sourcePath,\n };\n}\n\ntype CopyMarkdownActionConfig = {\n format: \"markdown\" | \"text\";\n includeTitle: boolean;\n label: string;\n copiedLabel: string;\n};\n\ntype LastUpdatedDisplayConfig = {\n enabled: boolean;\n label: string;\n position: \"footer\" | \"below-title\";\n};\n\ntype ReadingTimeDisplayConfig = {\n wordsPerMinute: number;\n format: \"long\" | \"short\";\n includeCode: boolean;\n};\n\nfunction resolvePageActionsConfig(docs: FarmDocsResolvedConfig): Record<string, unknown> {\n return isObjectRecord(docs.config.pageActions) ? docs.config.pageActions : {};\n}\n\nfunction resolvePageActionsAlignment(docs: FarmDocsResolvedConfig): \"left\" | \"right\" {\n return resolvePageActionsConfig(docs).alignment === \"right\" ? \"right\" : \"left\";\n}\n\nfunction resolveCopyMarkdownActionConfig(\n docs: FarmDocsResolvedConfig,\n): CopyMarkdownActionConfig | null {\n const raw = resolvePageActionsConfig(docs).copyMarkdown;\n if (raw === undefined || raw === false) return null;\n\n const options = isObjectRecord(raw) ? raw : {};\n if (isObjectRecord(raw) && raw.enabled === false) return null;\n\n return {\n format: options.format === \"text\" ? \"text\" : \"markdown\",\n includeTitle: options.includeTitle === true,\n label: readString(options.label) ?? \"Copy page\",\n copiedLabel: readString(options.copiedLabel) ?? \"Copied!\",\n };\n}\n\nfunction resolveLastUpdatedDisplayConfig(docs: FarmDocsResolvedConfig): LastUpdatedDisplayConfig {\n const raw = docs.config.lastUpdated;\n const options = isObjectRecord(raw) ? raw : {};\n\n return {\n enabled: raw !== false && (!isObjectRecord(raw) || raw.enabled !== false),\n label: typeof options.label === \"string\" ? options.label : \"Last updated\",\n position: options.position === \"below-title\" ? \"below-title\" : \"footer\",\n };\n}\n\nfunction formatLastModifiedDate(value: string | undefined): string | undefined {\n if (!value) return undefined;\n\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n\n return new Intl.DateTimeFormat(\"en\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nfunction renderLastUpdatedText(\n page: LoadedFarmDocsPage,\n docs: FarmDocsResolvedConfig,\n position: \"footer\" | \"below-title\",\n): string {\n const config = resolveLastUpdatedDisplayConfig(docs);\n const formatted = formatLastModifiedDate(page.lastModified);\n if (!config.enabled || config.position !== position || !formatted) return \"\";\n\n const time = `<time datetime=\"${escapeAttribute(page.lastModified || \"\")}\">${escapeHtml(formatted)}</time>`;\n const label = config.label.trim();\n return label ? `${escapeHtml(label)} ${time}` : time;\n}\n\nfunction resolveReadingTimeDisplayConfig(\n docs: FarmDocsResolvedConfig,\n): ReadingTimeDisplayConfig | null {\n const raw = docs.config.readingTime;\n if (raw === undefined || raw === false) return null;\n\n const options = isObjectRecord(raw) ? raw : {};\n if (isObjectRecord(raw) && options.enabled === false) return null;\n\n const wordsPerMinute =\n typeof options.wordsPerMinute === \"number\" && options.wordsPerMinute > 0\n ? options.wordsPerMinute\n : 220;\n\n return {\n wordsPerMinute,\n format: options.format === \"short\" ? \"short\" : \"long\",\n includeCode: options.includeCode === true,\n };\n}\n\nfunction countMarkdownWords(body: string, includeCode: boolean): number {\n const readable = (\n includeCode ? body : body.replace(/```[\\s\\S]*?```/g, \" \").replace(/`[^`]*`/g, \" \")\n )\n .replace(/!\\[[^\\]]*]\\([^)]*\\)/g, \" \")\n .replace(/\\[([^\\]]+)]\\([^)]*\\)/g, \"$1\")\n .replace(/<[^>]+>/g, \" \")\n .replace(/[#>*_~`|:-]/g, \" \");\n\n return readable.match(/[A-Za-z0-9]+(?:[-'][A-Za-z0-9]+)*/g)?.length ?? 0;\n}\n\nfunction renderReadingTimeMeta(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const config = resolveReadingTimeDisplayConfig(docs);\n if (!config) return \"\";\n\n const words = countMarkdownWords(page.body, config.includeCode);\n const minutes = Math.max(1, Math.ceil(words / config.wordsPerMinute));\n const label = config.format === \"short\" ? `${minutes} min` : `${minutes} min read`;\n\n return `<div class=\"fd-page-meta not-prose\" data-page-reading-time>\n <span class=\"fd-page-meta-dot\" aria-hidden=\"true\">·</span>\n <span class=\"fd-page-meta-item\">${escapeHtml(label)}</span>\n</div>`;\n}\n\nfunction renderPixelPageActions(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const copyMarkdown = resolveCopyMarkdownActionConfig(docs);\n if (!copyMarkdown) return \"\";\n\n const markdownUrl = `${page.href}.md`;\n const includeTitle = copyMarkdown.includeTitle ? \"true\" : \"false\";\n\n return `<div class=\"fd-page-actions\" data-page-actions data-actions-alignment=\"${resolvePageActionsAlignment(docs)}\">\n <button\n type=\"button\"\n class=\"fd-page-action-btn\"\n data-page-action=\"copy-markdown\"\n data-copied=\"false\"\n data-markdown-url=\"${escapeAttribute(markdownUrl)}\"\n data-copy-markdown-format=\"${copyMarkdown.format}\"\n data-copy-markdown-include-title=\"${includeTitle}\"\n data-copy-label=\"${escapeAttribute(copyMarkdown.label)}\"\n data-copied-label=\"${escapeAttribute(copyMarkdown.copiedLabel)}\"\n aria-label=\"${escapeAttribute(copyMarkdown.label)}\"\n title=\"${escapeAttribute(copyMarkdown.label)}\"\n >\n <svg class=\"fd-page-action-copy-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>\n <svg class=\"fd-page-action-check-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 6 9 17l-5-5\"></path></svg>\n <span data-page-action-label>${escapeHtml(copyMarkdown.label)}</span>\n </button>\n</div>`;\n}\n\nfunction renderBelowTitleMeta(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const lastUpdated = renderLastUpdatedText(page, docs, \"below-title\");\n const actions = renderPixelPageActions(page, docs);\n const readingTime = renderReadingTimeMeta(page, docs);\n if (!lastUpdated && !actions && !readingTime) return \"\";\n\n return `<div class=\"fd-below-title-block not-prose\">\n ${lastUpdated ? `<p class=\"fd-last-updated-inline\">${lastUpdated}</p>` : \"\"}\n ${actions}\n ${readingTime}\n</div>`;\n}\n\nfunction renderMarkdownHtmlWithTitleMeta(\n page: LoadedFarmDocsPage,\n docs: FarmDocsResolvedConfig,\n): string {\n const html = renderMarkdownHtml(page.body);\n const meta = renderBelowTitleMeta(page, docs);\n if (!meta) return html;\n\n const withTitleMeta = html.replace(/(<h1\\b[\\s\\S]*?<\\/h1>)/, `$1\\n${meta}`);\n return withTitleMeta === html ? `${meta}\\n${html}` : withTitleMeta;\n}\n\nfunction renderPixelPageFooter(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const lastUpdated = renderLastUpdatedText(page, docs, \"footer\");\n if (!lastUpdated) return \"\";\n\n return `<div class=\"not-prose fd-page-footer\">\n <span class=\"fd-last-updated-footer\">${lastUpdated}</span>\n</div>`;\n}\n\nfunction getDocsLlmsOptions(docs: FarmDocsResolvedConfig, request: Request) {\n const configured =\n typeof docs.config.llmsTxt === \"object\" && docs.config.llmsTxt !== null\n ? docs.config.llmsTxt\n : {};\n return {\n enabled: true,\n baseUrl: new URL(request.url).origin,\n siteTitle: getDocsTitle(docs),\n siteDescription: getDocsDescription(docs),\n ...configured,\n };\n}\n\nfunction getDocsDiscoveryOptions(docs: FarmDocsResolvedConfig, request: Request) {\n return {\n origin: new URL(request.url).origin,\n entry: docs.entry,\n i18n: null,\n search: docs.config.search ?? true,\n mcp: {\n enabled: false,\n route: \"/api/docs/mcp\",\n name: `${getDocsTitle(docs)} MCP`,\n version: \"1\",\n tools: {\n listDocs: false,\n listPages: false,\n readPage: false,\n searchDocs: false,\n getNavigation: false,\n getCodeExamples: false,\n getConfigSchema: false,\n },\n },\n feedback: undefined,\n llms: getDocsLlmsOptions(docs, request),\n sitemap: docs.config.sitemap ?? true,\n robots: docs.config.robots ?? true,\n openapi: undefined,\n markdown: {\n acceptHeader: true,\n signatureAgentHeader: true,\n },\n };\n}\n\nfunction createFarmDocsPublicResponse(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n request: Request,\n): Response | null {\n const url = new URL(request.url);\n const loadedPages = getLoadedDocsPages(contentDir, docs);\n const sitemapManifest = () =>\n buildDocsSitemapManifest({\n pages: loadedPages.map(toDocsSitemapPage),\n entry: docs.entry,\n siteTitle: getDocsTitle(docs),\n baseUrl: url.origin,\n });\n const textHeaders = (contentType: string) => ({\n \"Content-Type\": contentType,\n \"Cache-Control\": \"public, max-age=60\",\n });\n\n const llmsFormat = resolveDocsLlmsTxtFormat(url);\n if (llmsFormat) {\n const generated = renderDocsLlmsTxt(\n loadedPages.map(toDocsLlmsPage),\n getDocsLlmsOptions(docs, request),\n );\n return new Response(llmsFormat === \"llms-full\" ? generated.llmsFullTxt : generated.llmsTxt, {\n status: 200,\n headers: textHeaders(\"text/plain; charset=utf-8\"),\n });\n }\n\n const sitemapFormat = resolveDocsSitemapRequest(url, docs.config.sitemap ?? true);\n if (sitemapFormat === \"xml\") {\n return new Response(\n renderDocsSitemapXml(sitemapManifest(), {\n baseUrl: url.origin,\n includeLastmod: true,\n }),\n {\n status: 200,\n headers: textHeaders(\"application/xml; charset=utf-8\"),\n },\n );\n }\n if (sitemapFormat === \"markdown\") {\n return new Response(\n renderDocsSitemapMarkdown(sitemapManifest(), {\n includeDescriptions: true,\n }),\n {\n status: 200,\n headers: textHeaders(\"text/markdown; charset=utf-8\"),\n },\n );\n }\n\n if (resolveDocsRobotsRequest(url, docs.config.robots ?? true)) {\n return new Response(\n renderDocsRobotsTxt({\n entry: docs.entry,\n sitemap: docs.config.sitemap ?? true,\n robots: docs.config.robots ?? true,\n baseUrl: url.origin,\n }),\n {\n status: 200,\n headers: textHeaders(\"text/plain; charset=utf-8\"),\n },\n );\n }\n\n if (isDocsAgentDiscoveryRequest(url)) {\n const spec = buildDocsAgentDiscoverySpec(getDocsDiscoveryOptions(docs, request));\n const title = getDocsTitle(docs);\n return new Response(\n JSON.stringify({\n ...spec,\n name: title,\n site: {\n ...spec.site,\n title,\n description: getDocsDescription(docs),\n entry: docs.entry,\n },\n }),\n {\n status: 200,\n headers: textHeaders(\"application/json; charset=utf-8\"),\n },\n );\n }\n\n if (isDocsAgentsRequest(url)) {\n return new Response(\n `${renderDocsAgentsDocument(getDocsDiscoveryOptions(docs, request)).trim()}\\n`,\n {\n status: 200,\n headers: textHeaders(\"text/markdown; charset=utf-8\"),\n },\n );\n }\n\n if (isDocsSkillRequest(url)) {\n return new Response(\n `${renderDocsSkillDocument(getDocsDiscoveryOptions(docs, request)).trim()}\\n`,\n {\n status: 200,\n headers: textHeaders(\"text/markdown; charset=utf-8\"),\n },\n );\n }\n\n return null;\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\");\n}\n\nfunction shouldReturnMarkdown(request: Request): boolean {\n const url = new URL(request.url);\n return (\n url.pathname.endsWith(\".md\") ||\n request.headers.get(\"accept\")?.includes(\"text/markdown\") === true ||\n request.headers.get(\"accept\")?.includes(\"text/plain\") === true\n );\n}\n\nfunction escapeAttribute(value: string): string {\n return escapeHtml(value).replace(/'/g, \"&#39;\");\n}\n\nfunction slugify(value: string): string {\n return value\n .toLowerCase()\n .replace(/<[^>]+>/g, \"\")\n .replace(/`([^`]+)`/g, \"$1\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\nfunction createSlugger() {\n const seen = new Map<string, number>();\n\n return (value: string) => {\n const base = slugify(value) || \"section\";\n const count = seen.get(base) || 0;\n seen.set(base, count + 1);\n return count === 0 ? base : `${base}-${count + 1}`;\n };\n}\n\nfunction stripHtml(value: string): string {\n return value.replace(/<[^>]+>/g, \"\");\n}\n\nfunction getCodeFence(line: string): { marker: \"`\" | \"~\"; length: number } | null {\n const match = /^(?: {0,3})(`{3,}|~{3,})/.exec(line);\n const value = match?.[1];\n if (!value) return null;\n return { marker: value[0] as \"`\" | \"~\", length: value.length };\n}\n\nfunction isClosingCodeFence(line: string, fence: { marker: \"`\" | \"~\"; length: number }): boolean {\n const trimmed = line.trim();\n return (\n trimmed.length >= fence.length && Array.from(trimmed).every((char) => char === fence.marker)\n );\n}\n\nfunction stripMdxRuntimeSyntax(body: string): string {\n const output: string[] = [];\n let fence: { marker: \"`\" | \"~\"; length: number } | null = null;\n\n for (const line of body.split(\"\\n\")) {\n const nextFence = getCodeFence(line);\n if (fence) {\n output.push(line);\n if (nextFence && nextFence.marker === fence.marker && isClosingCodeFence(line, fence)) {\n fence = null;\n }\n continue;\n }\n\n if (nextFence) {\n fence = nextFence;\n output.push(line);\n continue;\n }\n\n if (/^\\s*import\\s.+$/.test(line) || /^\\s*export\\s+(const|default)\\s.+$/.test(line)) {\n continue;\n }\n\n output.push(line);\n }\n\n return output.join(\"\\n\");\n}\n\nfunction unescapeHtml(value: string): string {\n return value\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&amp;/g, \"&\");\n}\n\nconst CODE_LANGUAGE_LABELS = new Set([\n \"bash\",\n \"cjs\",\n \"cmd\",\n \"console\",\n \"css\",\n \"html\",\n \"javascript\",\n \"js\",\n \"json\",\n \"jsx\",\n \"md\",\n \"mdx\",\n \"shell\",\n \"sh\",\n \"terminal\",\n \"text\",\n \"ts\",\n \"tsx\",\n \"txt\",\n \"typescript\",\n \"yaml\",\n \"yml\",\n \"zsh\",\n]);\n\nconst EXTENSIONLESS_CODE_FILENAMES = new Set([\n \"dockerfile\",\n \"makefile\",\n \"procfile\",\n \"readme\",\n \"license\",\n]);\n\nfunction isCodePathLabel(label: string): boolean {\n const trimmed = label.trim();\n if (!trimmed || /\\s/.test(trimmed)) return false;\n\n const lower = trimmed.toLowerCase();\n if (CODE_LANGUAGE_LABELS.has(lower)) return false;\n\n const fileName = trimmed.split(/[\\\\/]/).filter(Boolean).pop() || trimmed;\n const lowerFileName = fileName.toLowerCase();\n if (EXTENSIONLESS_CODE_FILENAMES.has(lowerFileName)) return true;\n if (fileName.startsWith(\".\") && fileName.length > 1) return true;\n\n return /\\.[a-z0-9][a-z0-9-]*$/i.test(fileName);\n}\n\nfunction parseCodeInfo(info: string | undefined): {\n language: string;\n label: string;\n hasExplicitLabel: boolean;\n} {\n const source = (info || \"\").trim();\n const language = source.match(/^\\S+/)?.[0] || \"text\";\n const explicitLabel = source\n .match(/\\b(?:title|filename|file|label|name)=[\"']([^\"']+)[\"']/)?.[1]\n ?.trim();\n return { language, label: explicitLabel || language, hasExplicitLabel: Boolean(explicitLabel) };\n}\n\nfunction getStandaloneCodeLabel(line: string): string | null {\n const trimmed = line.trim();\n const match = /^(?:\\*\\*([^*]+)\\*\\*|__([^_]+)__|`([^`]+)`)$/u.exec(trimmed);\n const label = match?.[1] || match?.[2] || match?.[3];\n return label?.trim() || null;\n}\n\nfunction hasCodeFenceTitle(info: string): boolean {\n return /\\b(?:title|filename|file|label|name)=[\"'][^\"']+[\"']/.test(info);\n}\n\nfunction escapeCodeFenceTitle(value: string): string {\n return value.replace(/\"/g, \"&quot;\");\n}\n\nfunction addTitleToCodeFence(line: string, title: string): string {\n const match = /^(\\s{0,3})(`{3,}|~{3,})(.*)$/u.exec(line);\n if (!match) return line;\n const [, indent, marker, infoSource] = match;\n const info = infoSource.trim();\n if (hasCodeFenceTitle(info)) return line;\n const suffix = `title=\"${escapeCodeFenceTitle(title)}\"`;\n return `${indent}${marker}${info ? `${info} ${suffix}` : `text ${suffix}`}`;\n}\n\nfunction attachCodeBlockLabels(body: string): string {\n const lines = body.split(\"\\n\");\n const output: string[] = [];\n let fence: { marker: \"`\" | \"~\"; length: number } | null = null;\n\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index] || \"\";\n const nextFence = getCodeFence(line);\n\n if (fence) {\n output.push(line);\n if (nextFence && nextFence.marker === fence.marker && isClosingCodeFence(line, fence)) {\n fence = null;\n }\n continue;\n }\n\n if (nextFence) {\n fence = nextFence;\n output.push(line);\n continue;\n }\n\n const label = getStandaloneCodeLabel(line);\n if (!label) {\n output.push(line);\n continue;\n }\n\n let fenceIndex = index + 1;\n while (fenceIndex < lines.length && (lines[fenceIndex] || \"\").trim() === \"\") {\n fenceIndex += 1;\n }\n\n const labeledFence = getCodeFence(lines[fenceIndex] || \"\");\n if (!labeledFence) {\n output.push(line);\n continue;\n }\n\n output.push(addTitleToCodeFence(lines[fenceIndex] || \"\", label));\n fence = labeledFence;\n index = fenceIndex;\n }\n\n return output.join(\"\\n\");\n}\n\nfunction highlightCodeBlock(code: string): string {\n return highlight(code.replace(/\\n$/, \"\")).replace(/<\\/span>\\n<span/g, \"</span><span\");\n}\n\nfunction renderCodeCopyButton(className = \"code-copy\"): string {\n return `<button class=\"${className}\" type=\"button\" data-copied=\"false\" aria-label=\"Copy code\" title=\"Copy code\" onclick=\"navigator.clipboard?.writeText(this.closest('figure').querySelector('code').innerText); this.dataset.copied='true'; this.setAttribute('aria-label','Copied'); this.title='Copied'; clearTimeout(this._copyTimer); this._copyTimer=setTimeout(() => { this.dataset.copied='false'; this.setAttribute('aria-label','Copy code'); this.title='Copy code'; }, 4500);\"><svg class=\"code-copy-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg><svg class=\"code-copy-check\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 6 9 17l-5-5\"></path></svg></button>`;\n}\n\nfunction renderMarkdownHtml(body: string): string {\n const slug = createSlugger();\n const renderer = new Renderer();\n\n renderer.heading = (text, level, raw) => {\n const id = slug(raw || stripHtml(text));\n return `<h${level} id=\"${escapeAttribute(id)}\"><a class=\"heading-anchor\" href=\"#${escapeAttribute(id)}\">${text}</a></h${level}>\\n`;\n };\n\n renderer.code = (code, infostring, escaped) => {\n const { language, label, hasExplicitLabel } = parseCodeInfo(infostring);\n const rawCode = escaped ? unescapeHtml(code) : code;\n const highlighted = highlightCodeBlock(rawCode);\n const shouldRenderHeader = hasExplicitLabel && isCodePathLabel(label);\n const header = shouldRenderHeader\n ? `<div class=\"code-block-header\">\n <span class=\"code-block-title\">${escapeHtml(label)}</span>\n ${renderCodeCopyButton()}\n </div>`\n : renderCodeCopyButton(\"code-copy code-copy-floating\");\n\n return `<figure class=\"shiki code-block ${shouldRenderHeader ? \"code-block-framed\" : \"code-block-plain\"}\" data-language=\"${escapeAttribute(language)}\">\n ${header}\n <pre><code class=\"sh-code language-${escapeAttribute(language)}\">${highlighted}</code></pre>\n</figure>\\n`;\n };\n\n renderer.table = (header, body) =>\n `<div class=\"fd-table-wrapper table-wrap relative overflow-auto prose-no-margin my-6\"><table><thead>${header}</thead><tbody>${body}</tbody></table></div>\\n`;\n\n renderer.blockquote = (quote) => `<blockquote>${quote}</blockquote>\\n`;\n renderer.codespan = (code) => `<code>${escapeHtml(code)}</code>`;\n\n renderer.link = (href, title, text) => {\n const safeHref = href || \"\";\n const titleAttribute = title ? ` title=\"${escapeAttribute(title)}\"` : \"\";\n return `<a href=\"${escapeAttribute(safeHref)}\"${titleAttribute}>${text}</a>`;\n };\n\n renderer.image = (href, title, text) => {\n const titleAttribute = title ? ` title=\"${escapeAttribute(title)}\"` : \"\";\n return `<img src=\"${escapeAttribute(href)}\" alt=\"${escapeAttribute(text)}\"${titleAttribute}>`;\n };\n\n const html = marked(attachCodeBlockLabels(stripMdxRuntimeSyntax(body)), {\n async: false,\n breaks: false,\n gfm: true,\n renderer,\n }) as string;\n\n return html.trim();\n}\n\ninterface TocItem {\n id: string;\n title: string;\n level: number;\n}\n\nfunction extractTocItems(body: string, depth: number): TocItem[] {\n const slug = createSlugger();\n const maxLevel = Math.max(2, Math.min(depth, 6));\n\n return body\n .split(/\\r?\\n/)\n .map((line) => line.match(/^(#{2,6})\\s+(.+)$/))\n .filter((match): match is RegExpMatchArray => Boolean(match))\n .map((match) => ({\n id: slug(match[2].trim()),\n title: match[2].trim(),\n level: match[1].length,\n }))\n .filter((item) => item.level <= maxLevel);\n}\n\nfunction getThemeUI(docs: FarmDocsResolvedConfig): Record<string, any> {\n const theme = docs.config.theme;\n return theme && typeof theme === \"object\" && \"ui\" in theme && typeof theme.ui === \"object\"\n ? (theme.ui as Record<string, any>)\n : {};\n}\n\nfunction getThemeName(docs: FarmDocsResolvedConfig): string {\n const theme = docs.config.theme;\n return theme && typeof theme === \"object\" && \"name\" in theme\n ? String((theme as { name?: unknown }).name || \"farm-docs\")\n : \"farm-docs\";\n}\n\nfunction getThemeLayoutValue(docs: FarmDocsResolvedConfig, key: string, fallback: number): number {\n const layout = getThemeUI(docs).layout;\n const value =\n layout && typeof layout === \"object\" ? (layout as Record<string, unknown>)[key] : undefined;\n return typeof value === \"number\" ? value : fallback;\n}\n\nfunction getThemeTocDepth(docs: FarmDocsResolvedConfig): number {\n const toc = getThemeUI(docs).layout?.toc;\n return toc && typeof toc === \"object\" && typeof toc.depth === \"number\" ? toc.depth : 3;\n}\n\nconst SIDEBAR_SECTION_ORDER = [\n \"Start\",\n \"Core\",\n \"Data and APIs\",\n \"Integrations\",\n \"Runtime\",\n \"Content\",\n \"Extending\",\n \"Reference\",\n];\n\nconst SIDEBAR_PAGE_ORDER = new Map(\n [\n \"\",\n \"getting-started\",\n \"project-structure\",\n \"configuration\",\n \"routing\",\n \"layouts\",\n \"server-rendering\",\n \"middleware\",\n \"query\",\n \"api-routes\",\n \"api-client\",\n \"storage\",\n \"integrations\",\n \"integrations/stripe\",\n \"integrations/autumn\",\n \"integrations/polar\",\n \"integrations/auth\",\n \"integrations/email\",\n \"integrations/jobs\",\n \"integrations/unkey\",\n \"integrations/ui-registry\",\n \"integrations/orm-storage\",\n \"cache-ppr\",\n \"observability\",\n \"deployment\",\n \"docs-engine\",\n \"markdown\",\n \"openapi\",\n \"plugins\",\n \"plugins/create-plugin\",\n \"cli\",\n \"examples\",\n \"reference\",\n ].map((slug, index) => [slug, index]),\n);\n\ntype SidebarNavigationItem = {\n label?: string;\n icon?: string;\n slug?: string;\n href?: string;\n children: SidebarNavigationItem[];\n};\n\nfunction isSidebarNavigationItem(\n value: SidebarNavigationItem | null,\n): value is SidebarNavigationItem {\n return value !== null;\n}\n\nfunction compareSidebarPages(a: FarmDocsPage, b: FarmDocsPage): number {\n const aOrder = SIDEBAR_PAGE_ORDER.get(a.slug) ?? 1000;\n const bOrder = SIDEBAR_PAGE_ORDER.get(b.slug) ?? 1000;\n return aOrder - bOrder || a.title.localeCompare(b.title);\n}\n\nfunction getSidebarSection(page: FarmDocsPage): string {\n if (page.section) return page.section;\n if (page.slug.startsWith(\"integrations/\")) return \"Integrations\";\n if (page.slug.startsWith(\"plugins/\")) return \"Extending\";\n return \"Reference\";\n}\n\nfunction sidebarIdFor(section: string): string {\n return `sidebar-${slugify(section)}`;\n}\n\nfunction isObjectRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction readOptionalString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value.trim() : undefined;\n}\n\nfunction normalizeSidebarSlug(value: string): string {\n if (value === \"/\" || value === \".\") return \"\";\n return trimSlashes(value);\n}\n\nfunction getSidebarNavigation(docs: FarmDocsResolvedConfig): SidebarNavigationItem[] {\n const navigation = docs.config.navigation;\n if (!isObjectRecord(navigation) || !Array.isArray(navigation.sidebar)) return [];\n return navigation.sidebar.map(normalizeSidebarNavigationItem).filter(isSidebarNavigationItem);\n}\n\nfunction normalizeSidebarNavigationItem(value: unknown): SidebarNavigationItem | null {\n if (!isObjectRecord(value)) return null;\n\n const label = readString(value.label) ?? readString(value.title);\n const icon = readString(value.icon);\n const slug = readOptionalString(value.slug) ?? readOptionalString(value.path);\n const href = readString(value.href) ?? readString(value.url);\n const rawChildren = Array.isArray(value.children)\n ? value.children\n : Array.isArray(value.items)\n ? value.items\n : [];\n const children = rawChildren.map(normalizeSidebarNavigationItem).filter(isSidebarNavigationItem);\n\n if (!label && !slug && !href && children.length === 0) return null;\n return {\n ...(label ? { label } : {}),\n ...(icon ? { icon } : {}),\n ...(slug !== undefined ? { slug: normalizeSidebarSlug(slug) } : {}),\n ...(href ? { href } : {}),\n children,\n };\n}\n\nfunction createSidebarPageMaps(pages: FarmDocsPage[]) {\n return {\n bySlug: new Map(pages.map((page) => [page.slug, page])),\n byHref: new Map(pages.map((page) => [page.href, page])),\n };\n}\n\nfunction resolveConfiguredSidebarPage(\n item: SidebarNavigationItem,\n maps: ReturnType<typeof createSidebarPageMaps>,\n): FarmDocsPage | undefined {\n if (item.slug !== undefined) return maps.bySlug.get(item.slug);\n if (item.href) return maps.byHref.get(item.href);\n return undefined;\n}\n\nfunction getSidebarIconRegistry(docs: FarmDocsResolvedConfig): Record<string, unknown> {\n return isObjectRecord(docs.config.icons) ? docs.config.icons : {};\n}\n\nfunction renderConfiguredIconSvg(value: unknown): string {\n if (typeof value !== \"string\") return \"\";\n const icon = value.trim();\n if (!icon) return \"\";\n if (/^<svg[\\s>]/i.test(icon)) return icon;\n if (/^<(path|circle|rect|line|polyline|polygon|ellipse|g)\\b/i.test(icon)) {\n return `<svg viewBox=\"0 0 24 24\" focusable=\"false\">${icon}</svg>`;\n }\n return \"\";\n}\n\nfunction renderSidebarIcon(\n docs: FarmDocsResolvedConfig,\n icon: string | undefined,\n className = \"sidebar-icon\",\n): string {\n if (!icon) return \"\";\n const iconRegistry = getSidebarIconRegistry(docs);\n const configuredIcon = iconRegistry[icon] ?? icon;\n const svg = renderConfiguredIconSvg(configuredIcon);\n if (!svg) return \"\";\n return `<span class=\"${className}\" data-sidebar-icon=\"${escapeAttribute(icon)}\" aria-hidden=\"true\">${svg}</span>`;\n}\n\nfunction renderSidebarLabel(\n docs: FarmDocsResolvedConfig,\n icon: string | undefined,\n label: string,\n className: string,\n): string {\n return `<span class=\"${className}\">${renderSidebarIcon(docs, icon)}<span class=\"sidebar-label-text\">${escapeHtml(label)}</span></span>`;\n}\n\nfunction getSidebarPageLabel(item: FarmDocsPage, configured?: SidebarNavigationItem): string {\n if (configured?.label) return configured.label;\n if (item.slug === \"\") return \"Why?\";\n if (item.slug === \"integrations\") return \"Overview\";\n if (item.slug === \"integrations/ui-registry\") return \"UI Registry\";\n if (item.slug === \"integrations/orm-storage\") return \"ORM Storage\";\n if (item.slug.startsWith(\"integrations/\")) {\n return item.title.replace(/\\s+Integrations?$/i, \"\");\n }\n return item.title;\n}\n\nfunction renderSidebarLink(\n item: FarmDocsPage,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n configured?: SidebarNavigationItem,\n): string {\n const active = item.href === activeHref;\n return `<a data-active=\"${active ? \"true\" : \"false\"}\" href=\"${escapeAttribute(item.href)}\">${renderSidebarLabel(docs, configured?.icon, getSidebarPageLabel(item, configured), \"sidebar-link-label\")}</a>`;\n}\n\nfunction collectConfiguredSidebarPages(\n items: SidebarNavigationItem[],\n maps: ReturnType<typeof createSidebarPageMaps>,\n seen = new Set<string>(),\n): FarmDocsPage[] {\n const ordered: FarmDocsPage[] = [];\n for (const item of items) {\n const page = resolveConfiguredSidebarPage(item, maps);\n if (page && !seen.has(page.slug)) {\n seen.add(page.slug);\n ordered.push(page);\n }\n ordered.push(...collectConfiguredSidebarPages(item.children, maps, seen));\n }\n return ordered;\n}\n\nfunction getOrderedSidebarPages(\n pages: FarmDocsPage[],\n docs?: FarmDocsResolvedConfig,\n): FarmDocsPage[] {\n if (!docs) return [...pages].sort(compareSidebarPages);\n\n const maps = createSidebarPageMaps(pages);\n const configuredPages = collectConfiguredSidebarPages(getSidebarNavigation(docs), maps);\n if (configuredPages.length === 0) return [...pages].sort(compareSidebarPages);\n\n const configuredSlugs = new Set(configuredPages.map((page) => page.slug));\n const remainingPages = pages\n .filter((page) => !configuredSlugs.has(page.slug))\n .sort(compareSidebarPages);\n return [...configuredPages, ...remainingPages];\n}\n\nfunction renderExternalSidebarLink(\n item: SidebarNavigationItem,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n if (!item.href || !item.label) return \"\";\n const active = item.href === activeHref;\n return `<a data-active=\"${active ? \"true\" : \"false\"}\" href=\"${escapeAttribute(item.href)}\">${renderSidebarLabel(docs, item.icon, item.label, \"sidebar-link-label\")}</a>`;\n}\n\nfunction renderConfiguredSidebarSubgroup(\n item: SidebarNavigationItem,\n childHtml: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const label = item.label;\n if (!label) return childHtml;\n return `<div class=\"sidebar-subgroup\" data-sidebar-subgroup=\"${escapeAttribute(slugify(label))}\">\n <div class=\"sidebar-subgroup-title\">${renderSidebarLabel(docs, item.icon, label, \"sidebar-subgroup-label\")}</div>\n <div class=\"sidebar-subgroup-content\">\n${childHtml}\n </div>\n</div>`;\n}\n\nfunction renderConfiguredSidebarItems(\n items: SidebarNavigationItem[],\n maps: ReturnType<typeof createSidebarPageMaps>,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const renderedItems: string[] = [];\n for (const item of items) {\n const page = resolveConfiguredSidebarPage(item, maps);\n const childHtml = renderConfiguredSidebarItems(item.children, maps, activeHref, docs);\n\n if (item.children.length > 0) {\n renderedItems.push(renderConfiguredSidebarSubgroup(item, childHtml, docs));\n continue;\n }\n\n const linkHtml = page\n ? renderSidebarLink(page, activeHref, docs, item)\n : renderExternalSidebarLink(item, activeHref, docs);\n if (linkHtml) renderedItems.push(linkHtml);\n }\n return renderedItems.join(\"\\n\");\n}\n\nfunction renderConfiguredSidebarSection(\n section: SidebarNavigationItem,\n maps: ReturnType<typeof createSidebarPageMaps>,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const label = section.label || \"Docs\";\n const id = sidebarIdFor(label);\n const links = renderConfiguredSidebarItems(section.children, maps, activeHref, docs);\n return `<div class=\"sidebar-folder\" data-state=\"open\">\n <button class=\"text-fd-muted-foreground sidebar-folder-trigger\" type=\"button\" aria-controls=\"${escapeAttribute(id)}\" aria-expanded=\"true\">${renderSidebarLabel(docs, section.icon, label, \"sidebar-folder-label\")}</button>\n <div id=\"${escapeAttribute(id)}\" class=\"overflow-hidden sidebar-folder-content\" data-state=\"open\">\n${links}\n </div>\n</div>`;\n}\n\nfunction renderAutoSidebarSectionItems(\n items: FarmDocsPage[],\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n return [...items]\n .sort(compareSidebarPages)\n .map((item) => renderSidebarLink(item, activeHref, docs))\n .join(\"\\n\");\n}\n\nfunction renderPixelNavItems(\n pages: FarmDocsPage[],\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const configuredSidebar = getSidebarNavigation(docs);\n if (configuredSidebar.length > 0) {\n const maps = createSidebarPageMaps(pages);\n const renderedSections = configuredSidebar\n .map((section) => {\n if (section.children.length > 0) {\n return renderConfiguredSidebarSection(section, maps, activeHref, docs);\n }\n const page = resolveConfiguredSidebarPage(section, maps);\n return page\n ? renderSidebarLink(page, activeHref, docs, section)\n : renderExternalSidebarLink(section, activeHref, docs);\n })\n .filter(Boolean)\n .join(\"\\n\");\n\n return `<div class=\"sidebar-scroll overscroll-contain\">\n <div class=\"sidebar-tree\">\n${renderedSections}\n </div>\n</div>`;\n }\n\n const groups = new Map<string, FarmDocsPage[]>();\n for (const item of pages) {\n const group = item.slug === \"\" ? \"Start\" : getSidebarSection(item);\n const entries = groups.get(group) ?? [];\n entries.push(item);\n groups.set(group, entries);\n }\n\n const renderedSections = Array.from(groups.entries())\n .sort(([a], [b]) => {\n const aOrder = SIDEBAR_SECTION_ORDER.indexOf(a);\n const bOrder = SIDEBAR_SECTION_ORDER.indexOf(b);\n return (aOrder === -1 ? 100 : aOrder) - (bOrder === -1 ? 100 : bOrder) || a.localeCompare(b);\n })\n .map(([section, items]) => {\n const id = sidebarIdFor(section);\n const links = renderAutoSidebarSectionItems(items, activeHref, docs);\n return `<div class=\"sidebar-folder\" data-state=\"open\">\n <button class=\"text-fd-muted-foreground sidebar-folder-trigger\" type=\"button\" aria-controls=\"${escapeAttribute(id)}\" aria-expanded=\"true\">${renderSidebarLabel(docs, undefined, section, \"sidebar-folder-label\")}</button>\n <div id=\"${escapeAttribute(id)}\" class=\"overflow-hidden sidebar-folder-content\" data-state=\"open\">\n${links}\n </div>\n</div>`;\n })\n .join(\"\\n\");\n\n return `<div class=\"sidebar-scroll overscroll-contain\">\n <div class=\"sidebar-tree\">\n${renderedSections}\n </div>\n</div>`;\n}\n\nfunction renderPixelPageNav(\n pages: FarmDocsPage[],\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const orderedPages = getOrderedSidebarPages(pages, docs);\n const activeIndex = orderedPages.findIndex((item) => item.href === activeHref);\n if (activeIndex === -1) return \"\";\n\n const previous = orderedPages[activeIndex - 1];\n const next = orderedPages[activeIndex + 1];\n if (!previous && !next) return \"\";\n\n const renderChevron = (direction: \"prev\" | \"next\") =>\n `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"${direction === \"prev\" ? \"15 18 9 12 15 6\" : \"9 18 15 12 9 6\"}\" /></svg>`;\n const renderCard = (item: FarmDocsPage, direction: \"prev\" | \"next\") =>\n `<a class=\"fd-page-nav-card fd-page-nav-${direction}\" href=\"${escapeAttribute(item.href)}\">\n <span class=\"fd-page-nav-title fd-page-nav-title-${direction}\">${direction === \"prev\" ? `${renderChevron(direction)}${escapeHtml(item.title)}` : `${escapeHtml(item.title)}${renderChevron(direction)}`}</span>\n <span class=\"fd-page-nav-description\">${direction === \"prev\" ? \"Previous Page\" : \"Next Page\"}</span>\n</a>`;\n\n return `<nav class=\"not-prose fd-page-nav\" aria-label=\"Page navigation\">\n ${previous ? renderCard(previous, \"prev\") : \"\"}\n ${next ? renderCard(next, \"next\") : \"\"}\n</nav>`;\n}\n\nfunction titleizePathSegment(value: string): string {\n return value.replace(/[-_]+/g, \" \").replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n\nfunction isBreadcrumbEnabled(docs: FarmDocsResolvedConfig): boolean {\n const breadcrumb = docs.config.breadcrumb;\n if (breadcrumb === false) return false;\n if (breadcrumb && typeof breadcrumb === \"object\" && \"enabled\" in breadcrumb) {\n return (breadcrumb as { enabled?: unknown }).enabled !== false;\n }\n return true;\n}\n\nfunction renderPixelBreadcrumb(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n if (!isBreadcrumbEnabled(docs)) return \"\";\n\n const segments = trimSlashes(page.slug).split(\"/\").filter(Boolean);\n if (segments.length < 2) return \"\";\n\n const parentSegments = segments.slice(0, -1);\n const parentSegment = parentSegments[parentSegments.length - 1];\n const currentSegment = segments[segments.length - 1];\n const entry = normalizeEntry(docs.entry);\n const parentPath = parentSegments.join(\"/\");\n const parentHref = entry === \"/\" ? `/${parentPath}` : `${entry}/${parentPath}`;\n\n return `<nav class=\"fd-breadcrumb\" aria-label=\"Breadcrumb\">\n <span class=\"fd-breadcrumb-item\">\n <a class=\"fd-breadcrumb-parent fd-breadcrumb-link\" href=\"${escapeAttribute(parentHref)}\">${escapeHtml(titleizePathSegment(parentSegment))}</a>\n </span>\n <span class=\"fd-breadcrumb-item\">\n <span class=\"fd-breadcrumb-sep\">/</span>\n <span class=\"fd-breadcrumb-current\">${escapeHtml(titleizePathSegment(currentSegment))}</span>\n </span>\n</nav>`;\n}\n\nfunction renderDocsSearchTrigger(showIcon = true): string {\n return `<button class=\"fd-docs-search-trigger\" type=\"button\" data-search-full=\"\" aria-label=\"Search documentation\" aria-haspopup=\"dialog\" aria-keyshortcuts=\"Meta+K Control+K\">\n ${showIcon ? '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"m20 20-4-4\"></path></svg>' : \"\"}\n <kbd><span>⌘</span><span>K</span></kbd>\n</button>`;\n}\n\nfunction renderDocsSearchMount(clientEntry: string): string {\n return `<div id=\"farm-docs-search-root\" data-farm-docs-search-root data-api=\"/api/docs\"></div>\n <script type=\"module\" src=\"${escapeAttribute(clientEntry)}\"></script>`;\n}\n\nfunction renderDocsSearchBootstrapScript(): string {\n return `<script>${generateFarmDocsSearchBootstrapRuntime()}</script>`;\n}\n\nfunction renderPixelToc(items: TocItem[]): string {\n if (items.length === 0) return '<p class=\"toc-empty\">No sections</p>';\n return `<div class=\"toc-track\">\n <div class=\"toc-thumb\" data-toc-thumb style=\"clip-path: polygon(0 0px, 100% 0px, 100% 32px, 0 32px);\"></div>\n <div class=\"toc-links\">\n${items\n .map(\n (item) =>\n `<a class=\"toc-link\" data-active=\"${items[0] === item ? \"true\" : \"false\"}\" data-toc-item data-depth=\"${item.level}\" href=\"#${escapeAttribute(item.id)}\">${escapeHtml(item.title)}</a>`,\n )\n .join(\"\\n\")}\n </div>\n</div>`;\n}\n\nfunction renderDocsRuntimeScript(docs: FarmDocsResolvedConfig): string {\n const docsEntry = JSON.stringify(normalizeEntry(docs.entry));\n return `<script>(()=>{if(window.__farmDocsRuntime)return;window.__farmDocsRuntime=true;document.documentElement.dataset.farmDocsRuntime=\"true\";document.documentElement.dataset.farmDocsRuntimeId=Math.random().toString(36).slice(2);const docsEntry=${docsEntry};let cleanupToc=()=>{};let closeMobileSidebar=()=>{};const normalizePath=(path)=>path.length>1?path.replace(/\\\\/+$/,\"\"):path;const isDocsPath=(path)=>{const next=normalizePath(path);const entry=normalizePath(docsEntry);if(next.endsWith(\".md\"))return false;if(entry===\"/\")return true;return next===entry||next.startsWith(entry+\"/\")};const initToc=()=>{cleanupToc();const toc=document.getElementById(\"nd-toc\");if(!toc){cleanupToc=()=>{};return}const links=Array.from(toc.querySelectorAll(\"[data-toc-item]\"));const thumb=toc.querySelector(\"[data-toc-thumb]\");const pairs=links.map((link)=>{let id=link.hash.slice(1);try{id=decodeURIComponent(id)}catch{}return{link,heading:document.getElementById(id)}}).filter((item)=>item.heading);const setActive=(active)=>{for(const {link} of pairs)link.dataset.active=link===active.link?\"true\":\"false\";if(!thumb)return;const styles=getComputedStyle(active.link);const top=active.link.offsetTop+parseFloat(styles.paddingTop||\"0\");const bottom=active.link.offsetTop+active.link.clientHeight-parseFloat(styles.paddingBottom||\"0\");thumb.style.clipPath=\"polygon(0 \"+top+\"px,100% \"+top+\"px,100% \"+bottom+\"px,0 \"+bottom+\"px)\"};const update=()=>{if(pairs.length===0)return;const offset=Math.min(window.innerHeight*0.3,160);let active=pairs[0];for(const pair of pairs){if(pair.heading.getBoundingClientRect().top<=offset)active=pair;else break}setActive(active)};let frame=0;const schedule=()=>{if(frame)return;frame=requestAnimationFrame(()=>{frame=0;update()})};const onHashChange=()=>setTimeout(schedule,0);window.addEventListener(\"scroll\",schedule,{passive:true});window.addEventListener(\"resize\",schedule);window.addEventListener(\"hashchange\",onHashChange);cleanupToc=()=>{window.removeEventListener(\"scroll\",schedule);window.removeEventListener(\"resize\",schedule);window.removeEventListener(\"hashchange\",onHashChange);if(frame)cancelAnimationFrame(frame);frame=0};update()};const getSidebar=()=>document.getElementById(\"nd-sidebar\");const ensureActiveVisible=()=>{const sidebar=getSidebar();if(!sidebar)return;const active=sidebar.querySelector('a[data-active=\"true\"]');if(!(active instanceof HTMLElement))return;const activeRect=active.getBoundingClientRect();const sidebarRect=sidebar.getBoundingClientRect();if(activeRect.top<sidebarRect.top||activeRect.bottom>sidebarRect.bottom)sidebar.scrollTop+=activeRect.top-sidebarRect.top-(sidebar.clientHeight-activeRect.height)/2};const setSidebarActive=(path)=>{const sidebar=getSidebar();if(!sidebar)return;const current=normalizePath(path);for(const link of Array.from(sidebar.querySelectorAll(\"a[href]\"))){try{link.dataset.active=normalizePath(new URL(link.href,location.href).pathname)===current?\"true\":\"false\"}catch{}}ensureActiveVisible()};const initMobileSidebar=()=>{const layout=document.getElementById(\"nd-docs-layout\");const sidebar=getSidebar();const toggle=document.querySelector(\"[data-sidebar-toggle]\");const backdrop=document.querySelector(\"[data-sidebar-backdrop]\");if(!layout||!sidebar||!(toggle instanceof HTMLButtonElement))return;const setOpen=(open)=>{layout.dataset.sidebarOpen=open?\"true\":\"false\";document.documentElement.dataset.farmDocsSidebar=open?\"open\":\"closed\";toggle.setAttribute(\"aria-expanded\",open?\"true\":\"false\");toggle.setAttribute(\"aria-label\",open?\"Close menu\":\"Open menu\")};const toggleOpen=()=>setOpen(layout.dataset.sidebarOpen!==\"true\");closeMobileSidebar=()=>setOpen(false);toggle.addEventListener(\"click\",(event)=>{event.preventDefault();toggleOpen()});backdrop?.addEventListener(\"click\",()=>closeMobileSidebar());document.addEventListener(\"keydown\",(event)=>{if(event.key===\"Escape\")closeMobileSidebar()});sidebar.addEventListener(\"click\",(event)=>{const target=event.target instanceof Element?event.target.closest(\"a[href]\"):null;if(target)closeMobileSidebar()});closeMobileSidebar()};const initSidebarScroll=()=>{const sidebar=getSidebar();if(!sidebar)return;const key=\"farmdocs:sidebar-scroll:\"+location.origin;const getStorage=()=>{try{return window.sessionStorage}catch{return null}};const readSaved=()=>{try{const raw=getStorage()?.getItem(key);if(!raw)return null;const parsed=JSON.parse(raw);return parsed&&typeof parsed===\"object\"?parsed:null}catch{return null}};const save=(path=location.pathname)=>{try{getStorage()?.setItem(key,JSON.stringify({path,scrollTop:sidebar.scrollTop}))}catch{}};const saved=readSaved();if(saved?.path===location.pathname&&Number.isFinite(Number(saved.scrollTop)))sidebar.scrollTop=Number(saved.scrollTop);ensureActiveVisible();save();sidebar.addEventListener(\"scroll\",()=>save(),{passive:true});sidebar.addEventListener(\"click\",(event)=>{const target=event.target instanceof Element?event.target.closest(\"a[href]\"):null;if(!target)return;try{save(new URL(target.href,location.href).pathname)}catch{save()}});window.addEventListener(\"beforeunload\",()=>save())};let navigateController=null;const getPageKey=(root)=>{const article=root.getElementById(\"nd-page\");if(!article)return\"\";return article.querySelector(\"h1\")?.textContent?.trim()||article.textContent?.replace(/\\\\s+/g,\" \").trim().slice(0,160)||\"\"};const swapDocsPage=(html,url)=>{const nextDoc=new DOMParser().parseFromString(html,\"text/html\");const nextArticle=nextDoc.getElementById(\"nd-page\");const currentArticle=document.getElementById(\"nd-page\");if(!nextArticle||!currentArticle)return false;const nextKey=getPageKey(nextDoc);const importedArticle=document.importNode(nextArticle,true);currentArticle.replaceWith(importedArticle);const renderedArticle=document.getElementById(\"nd-page\");if(!renderedArticle||renderedArticle===currentArticle||(nextKey&&getPageKey(document)!==nextKey))return false;const nextToc=nextDoc.getElementById(\"nd-toc\");const currentToc=document.getElementById(\"nd-toc\");if(nextToc&&currentToc)currentToc.replaceWith(document.importNode(nextToc,true));if(nextDoc.title)document.title=nextDoc.title;const nextDescription=nextDoc.querySelector('meta[name=\"description\"]');const currentDescription=document.querySelector('meta[name=\"description\"]');if(nextDescription&&currentDescription)currentDescription.setAttribute(\"content\",nextDescription.getAttribute(\"content\")||\"\");setSidebarActive(url.pathname);initToc();closeMobileSidebar();return true};const navigateDocs=async(url,{replace=false,scroll=true}={})=>{if(!isDocsPath(url.pathname))return false;if(navigateController)navigateController.abort();const controller=new AbortController();navigateController=controller;document.documentElement.dataset.farmDocsNavigating=\"true\";try{const response=await fetch(url.href,{cache:\"no-store\",headers:{accept:\"text/html\",\"x-farm-docs-navigate\":\"1\"},signal:controller.signal});if(!response.ok||!((response.headers.get(\"content-type\")||\"\").includes(\"text/html\")))return false;const html=await response.text();if(!swapDocsPage(html,url))return false;if(replace)history.replaceState({farmDocs:true},\"\",url.href);else history.pushState({farmDocs:true},\"\",url.href);if(scroll){if(url.hash){let id=url.hash.slice(1);try{id=decodeURIComponent(id)}catch{}document.getElementById(id)?.scrollIntoView({block:\"start\"})}else window.scrollTo({top:0,left:0})}return true}catch(error){if(error?.name===\"AbortError\")return true;return false}finally{if(navigateController===controller){delete document.documentElement.dataset.farmDocsNavigating;navigateController=null}}};const initClientNavigation=()=>{document.addEventListener(\"click\",(event)=>{if(event.defaultPrevented||event.button!==0||event.metaKey||event.ctrlKey||event.shiftKey||event.altKey)return;const target=event.target instanceof Element?event.target.closest(\"a[href]\"):null;if(!target||target.target||target.hasAttribute(\"download\"))return;let url;try{url=new URL(target.href,location.href)}catch{return}if(url.origin!==location.origin||!isDocsPath(url.pathname))return;if(normalizePath(url.pathname)===normalizePath(location.pathname)&&url.hash)return;event.preventDefault();navigateDocs(url).then((handled)=>{if(!handled)location.href=url.href})});window.addEventListener(\"popstate\",()=>{navigateDocs(new URL(location.href),{replace:true,scroll:false}).then((handled)=>{if(!handled)location.reload()})})};const init=()=>{initToc();initMobileSidebar();initSidebarScroll();initClientNavigation()};if(document.readyState===\"loading\")document.addEventListener(\"DOMContentLoaded\",init,{once:true});else init()})();</script>`;\n}\n\nfunction renderDocsPageActionsRuntimeScript(): string {\n return `<script>(()=>{if(window.__farmDocsPageActionsRuntime)return;window.__farmDocsPageActionsRuntime=true;const readArticleText=()=>{const article=document.getElementById(\"nd-page\");if(!article)return\"\";const clone=article.cloneNode(true);if(!(clone instanceof HTMLElement))return article.innerText||\"\";clone.querySelectorAll(\"[data-page-actions],.fd-page-footer,.fd-page-nav\").forEach((node)=>node.remove());return clone.innerText||\"\"};const withTitle=(content,format,includeTitle)=>{if(!includeTitle)return content;const title=document.querySelector(\"#nd-page h1\")?.textContent?.trim()||document.title.trim();if(!title)return content;const trimmed=content.trimStart();if(trimmed.startsWith(title)||trimmed.startsWith(\"# \"+title))return content;return format===\"markdown\"?\"# \"+title+\"\\\\n\\\\n\"+content:title+\"\\\\n\\\\n\"+content};const writeClipboard=async(text)=>{if(navigator.clipboard?.writeText){try{await navigator.clipboard.writeText(text);return}catch{}}const textarea=document.createElement(\"textarea\");textarea.value=text;textarea.setAttribute(\"readonly\",\"\");textarea.style.position=\"fixed\";textarea.style.opacity=\"0\";textarea.style.pointerEvents=\"none\";document.body.appendChild(textarea);textarea.select();document.execCommand(\"copy\");textarea.remove()};const markCopied=(button)=>{const label=button.querySelector(\"[data-page-action-label]\");button.dataset.copied=\"true\";button.setAttribute(\"aria-label\",button.dataset.copiedLabel||\"Copied!\");button.title=button.dataset.copiedLabel||\"Copied!\";if(label)label.textContent=button.dataset.copiedLabel||\"Copied!\";const previous=Number(button.dataset.copyTimeout||0);if(previous)clearTimeout(previous);button.dataset.copyTimeout=String(setTimeout(()=>{button.dataset.copied=\"false\";button.setAttribute(\"aria-label\",button.dataset.copyLabel||\"Copy page\");button.title=button.dataset.copyLabel||\"Copy page\";if(label)label.textContent=button.dataset.copyLabel||\"Copy page\";button.dataset.copyTimeout=\"0\"},4500))};document.addEventListener(\"click\",async(event)=>{const target=event.target instanceof Element?event.target.closest('[data-page-action=\"copy-markdown\"]'):null;if(!(target instanceof HTMLButtonElement))return;event.preventDefault();const format=target.dataset.copyMarkdownFormat===\"text\"?\"text\":\"markdown\";const includeTitle=target.dataset.copyMarkdownIncludeTitle===\"true\";let content=\"\";target.disabled=true;try{if(format===\"markdown\"&&target.dataset.markdownUrl){try{const response=await fetch(target.dataset.markdownUrl,{headers:{Accept:\"text/markdown\"}});if(response.ok)content=await response.text()}catch{}}if(!content)content=readArticleText();content=withTitle(content,format,includeTitle);if(content.trim()){await writeClipboard(content);markCopied(target)}}finally{target.disabled=false}})})();</script>`;\n}\n\nfunction renderDocsHashRuntimeScript(): string {\n return `<script>(()=>{if(window.__farmDocsHashRuntime)return;window.__farmDocsHashRuntime=true;const scrollToHash=()=>{if(!location.hash)return;let id=location.hash.slice(1);try{id=decodeURIComponent(id)}catch{}document.getElementById(id)?.scrollIntoView({block:\"start\"})};const schedule=()=>requestAnimationFrame(()=>requestAnimationFrame(scrollToHash));if(document.readyState===\"loading\")document.addEventListener(\"DOMContentLoaded\",schedule,{once:true});else schedule();window.addEventListener(\"load\",schedule,{once:true});window.addEventListener(\"hashchange\",schedule)})();</script>`;\n}\n\nfunction renderDocsRuntimeScripts(docs: FarmDocsResolvedConfig): string {\n return `${renderDocsRuntimeScript(docs)}\n${renderDocsHashRuntimeScript()}\n${renderDocsPageActionsRuntimeScript()}`;\n}\n\nconst themeCssCache = new Map<string, string>();\n\nfunction readCssWithImports(filePath: string, seen = new Set<string>()): string {\n const resolved = path.resolve(filePath);\n if (seen.has(resolved)) return \"\";\n seen.add(resolved);\n\n const source = readFileSync(resolved, \"utf8\");\n return source.replace(/@import\\s+[\"']([^\"']+)[\"'];?/g, (_match, importPath: string) => {\n try {\n const importedPath = importPath.startsWith(\".\")\n ? path.resolve(path.dirname(resolved), importPath)\n : createRequire(resolved).resolve(importPath);\n return readCssWithImports(importedPath, seen);\n } catch {\n return \"\";\n }\n });\n}\n\nfunction resolvePixelBorderThemeCss(options: FarmDocsHandlerOptions): string {\n const cacheKey = path.resolve(options.root);\n const cached = themeCssCache.get(cacheKey);\n if (cached !== undefined) return cached;\n\n try {\n const requireFromApp = createRequire(path.join(cacheKey, \"package.json\"));\n const themeCssPath = requireFromApp.resolve(\"@farming-labs/theme/pixel-border/css\");\n const requireFromTheme = createRequire(themeCssPath);\n const fumadocsCssPath = requireFromTheme.resolve(\"fumadocs-ui/style.css\");\n const css = `${readCssWithImports(fumadocsCssPath)}\\n${readCssWithImports(themeCssPath)}`;\n themeCssCache.set(cacheKey, css);\n return css;\n } catch {\n themeCssCache.set(cacheKey, \"\");\n return \"\";\n }\n}\n\nfunction renderFarmDocsBridgeCss(docs: FarmDocsResolvedConfig): string {\n const sidebarWidth = getThemeLayoutValue(docs, \"sidebarWidth\", 320);\n const contentWidth = getThemeLayoutValue(docs, \"contentWidth\", 860);\n\n return `\n @font-face { font-family: \"Geist Sans\"; src: local(\"Geist Sans\"), url(\"${GEIST_SANS_FONT_URL}\") format(\"woff2\"), url(\"/node_modules/geist/dist/fonts/geist-sans/Geist-Variable.woff2\") format(\"woff2\"); font-display: block; font-style: normal; font-weight: 100 900; }\n @font-face { font-family: \"Geist Mono\"; src: local(\"Geist Mono\"), url(\"${GEIST_MONO_FONT_URL}\") format(\"woff2\"), url(\"/node_modules/geist/dist/fonts/geist-mono/GeistMono-Variable.woff2\") format(\"woff2\"); font-display: block; font-style: normal; font-weight: 100 900; }\n :root { color-scheme: dark; --font-geist-sans: \"Geist Sans\"; --font-geist-mono: \"Geist Mono\"; --fd-sidebar-width: ${sidebarWidth}px; --fd-content-width: ${contentWidth}px; --fd-toc-width: 240px; --fd-docs-height: 100vh; --fd-docs-row-1: var(--fd-nav-height, 44px); --fd-docs-font-sans: var(--font-geist-sans, \"Geist Sans\", var(--font-sans, system-ui, -apple-system, sans-serif)); --fd-docs-font-mono: var(--font-geist-mono, \"Geist Mono\", var(--font-mono, ui-monospace, monospace)); --fd-font-sans: var(--fd-docs-font-sans); --fd-font-mono: var(--fd-docs-font-mono); --fd-pixel-rail-width: 12px; --fd-sidebar-edge: calc(var(--fd-pixel-rail-width) + 18px); --fd-sidebar-guide-x: calc(var(--fd-sidebar-edge) + 16px); --fd-sidebar-link-x: calc(var(--fd-sidebar-guide-x) + 22px); --fd-sidebar-sub-guide-x: calc(var(--fd-sidebar-link-x) + 7px); --fd-sidebar-sub-link-x: calc(var(--fd-sidebar-sub-guide-x) + 28px); --fd-sidebar-branch-gap: 0px; --fd-sidebar-nested-icon-gap: 0px; --fd-sidebar-line-color: color-mix(in srgb, var(--color-fd-border, hsl(0 0% 15%)) 88%, transparent); }\n * { box-sizing: border-box; }\n html { background: var(--color-fd-background, hsl(0 0% 2%)); scroll-padding-top: calc(var(--fd-nav-height, 44px) + 24px); }\n html[data-farm-docs-sidebar=\"open\"], html[data-farm-docs-sidebar=\"open\"] body { overflow: hidden; }\n body { margin: 0; min-height: 100vh; background: var(--color-fd-background, hsl(0 0% 2%)); color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); font-family: var(--fd-docs-font-sans); text-rendering: optimizeLegibility; }\n ::selection { background: var(--color-fd-foreground, #fff); color: var(--color-fd-background, #000); }\n a { color: inherit; }\n #nd-docs-layout { --fd-sidebar-col: var(--fd-sidebar-width); display: grid; grid-template: \"sidebar header header\" var(--fd-nav-height, 44px) \"sidebar main toc\" 1fr / var(--fd-sidebar-width) minmax(0, 1fr) var(--fd-toc-width) !important; min-height: 100vh; border-top: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: var(--color-fd-background, hsl(0 0% 2%)); }\n #nd-docs-layout.grid { grid-template: \"sidebar header header\" var(--fd-nav-height, 44px) \"sidebar main toc\" 1fr / var(--fd-sidebar-width) minmax(0, 1fr) var(--fd-toc-width) !important; }\n #nd-docs-layout, #nd-docs-layout * { border-radius: 0 !important; }\n .topbar { position: sticky; top: 0; z-index: 20; grid-area: header; height: var(--fd-nav-height, 44px); display: flex; align-items: center; justify-content: flex-end; gap: 16px; border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: color-mix(in srgb, var(--color-fd-background, hsl(0 0% 2%)) 92%, transparent); backdrop-filter: blur(12px); padding: 0; font-family: var(--fd-docs-font-mono); font-size: 12px; letter-spacing: 0.03em; text-transform: uppercase; }\n .topbar a { text-decoration: none; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); }\n .topbar a:hover { color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); }\n .topbar-actions, .mobile-topbar-actions { display: flex; height: 100%; min-width: 0; align-items: stretch; margin-left: auto; }\n .topbar-llms-link { display: inline-flex; height: 100%; align-items: center; border-left: 1px solid var(--color-fd-border, hsl(0 0% 15%)); padding: 0 22px; }\n .mobile-topbar { display: none; }\n .sidebar-backdrop { display: none; }\n .fd-mobile-nav-btn { display: inline-flex; width: var(--fd-mobile-nav-height, 56px); height: 100%; flex: 0 0 var(--fd-mobile-nav-height, 56px); align-items: center; justify-content: center; border: 0; border-right: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: transparent; color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); cursor: pointer; padding: 0; appearance: none; }\n .fd-mobile-nav-btn svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n .mobile-topbar-link { display: inline-flex; height: 100%; min-width: 0; align-items: center; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-family: var(--fd-docs-font-mono); font-size: 12px; letter-spacing: 0.03em; text-decoration: none; text-transform: uppercase; }\n .mobile-topbar-link { border-left: 1px solid var(--color-fd-border, hsl(0 0% 15%)); padding: 0 14px; }\n #nd-docs-layout .fd-toc { position: sticky; top: var(--fd-docs-row-1); grid-area: toc; display: flex; width: var(--fd-toc-width); height: calc(var(--fd-docs-height) - var(--fd-docs-row-1)); max-height: calc(100vh - var(--fd-docs-row-1)); flex-direction: column; align-self: start; overflow: hidden; padding: 48px 16px 8px 0; }\n #nd-docs-layout .fd-toc-inner { display: flex; min-width: 0; min-height: 0; flex: 1 1 auto; flex-direction: column; }\n #nd-docs-layout .fd-toc-title { display: inline-flex; align-items: center; gap: 0.375rem; margin: 0 0 1rem; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-family: var(--fd-docs-font-sans); font-size: 0.875rem; font-weight: 500; line-height: 1.4; }\n #nd-docs-layout .fd-toc-title svg { width: 1rem; height: 1rem; flex: 0 0 1rem; color: currentColor; }\n #nd-docs-layout .toc-scroll { min-height: 0; overflow: auto; padding: 0.75rem 0; scrollbar-width: none; }\n #nd-docs-layout .toc-scroll::-webkit-scrollbar { display: none; }\n #nd-docs-layout .toc-track { position: relative; min-width: 0; }\n #nd-docs-layout .toc-thumb { position: absolute; inset-block: 0; inset-inline-start: 0; width: 1px; background: var(--color-fd-primary, oklch(0.985 0.001 106.423)); transition: clip-path 150ms ease; }\n #nd-docs-layout .toc-links { display: flex; min-width: 0; flex-direction: column; border-inline-start: 1px solid color-mix(in srgb, var(--color-fd-foreground, #fff) 10%, transparent); }\n #nd-docs-layout .toc-link { display: block; min-width: 0; padding: 0.375rem 0 0.375rem 0.75rem; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-size: 0.875rem; line-height: 1.45; text-decoration: none; overflow-wrap: anywhere; transition: color 150ms ease; }\n #nd-docs-layout .toc-link:first-child { padding-top: 0; }\n #nd-docs-layout .toc-link:last-child { padding-bottom: 0; }\n #nd-docs-layout .toc-link[data-depth=\"3\"] { padding-left: 1.5rem; font-size: 0.8125rem; }\n #nd-docs-layout .toc-link[data-depth=\"4\"], #nd-docs-layout .toc-link[data-depth=\"5\"], #nd-docs-layout .toc-link[data-depth=\"6\"] { padding-left: 2rem; font-size: 0.8125rem; }\n #nd-docs-layout .toc-link[data-active=\"true\"] { color: var(--color-fd-primary, oklch(0.985 0.001 106.423)); }\n #nd-docs-layout .toc-link:hover { color: var(--color-fd-accent-foreground, oklch(0.985 0.001 106.423)); }\n #nd-docs-layout .toc-empty { margin: 0; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-size: 0.875rem; line-height: 1.5; }\n aside#nd-sidebar { position: sticky; top: 0; grid-area: sidebar; height: 100vh; overflow: auto; isolation: isolate; border-left: 1px solid var(--color-fd-border, hsl(0 0% 15%)); border-right: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background-color: var(--color-fd-background, hsl(0 0% 2%)); background-image: linear-gradient(var(--color-fd-border, hsl(0 0% 15%)), var(--color-fd-border, hsl(0 0% 15%))), linear-gradient(var(--color-fd-border, hsl(0 0% 15%)), var(--color-fd-border, hsl(0 0% 15%))), repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-fd-border, hsl(0 0% 15%)) 2%, transparent), color-mix(in srgb, var(--color-fd-foreground, #fff) 7%, transparent) 1px, transparent 1px, transparent 6px), repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-fd-border, hsl(0 0% 15%)) 2%, transparent), color-mix(in srgb, var(--color-fd-foreground, #fff) 7%, transparent) 1px, transparent 1px, transparent 6px); background-size: 1px 100%, 1px 100%, var(--fd-pixel-rail-width) 100%, var(--fd-pixel-rail-width) 100%; background-position: var(--fd-pixel-rail-width) 0, calc(100% - var(--fd-pixel-rail-width)) 0, left top, right top; background-repeat: repeat-y; padding: 0 var(--fd-sidebar-edge) 18px; }\n aside#nd-sidebar::before, aside#nd-sidebar::after { display: none; }\n aside#nd-sidebar > * { position: relative; z-index: 1; }\n .sidebar-brand { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: var(--fd-nav-height, 44px); margin: 0 calc(-1 * var(--fd-sidebar-edge)) 18px; border-top: 1px solid var(--color-fd-border, hsl(0 0% 15%)); border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: transparent; padding: 0 var(--fd-sidebar-edge); font-family: var(--fd-docs-font-mono); font-size: 12px; letter-spacing: 0.03em; text-transform: uppercase; }\n .sidebar-brand a { display: inline-flex; min-width: 0; align-items: center; gap: 8px; overflow: hidden; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }\n .sidebar-brand-logo { width: 16px; height: 16px; flex: 0 0 16px; color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); }\n .sidebar-brand-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .sidebar-brand-suffix { opacity: 0.52; }\n .sidebar-scroll { margin: 0 calc(-1 * var(--fd-sidebar-edge)); overflow: visible; }\n .sidebar-tree { margin-top: 0 !important; }\n .sidebar-tree > a[data-active], .sidebar-folder { border-top: 1px solid var(--color-fd-border, hsl(0 0% 15%)); }\n #nd-docs-layout aside#nd-sidebar .sidebar-tree > .sidebar-folder { margin-left: 0 !important; margin-right: 0 !important; padding: 0 !important; }\n .sidebar-tree > :last-child { border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); }\n #nd-docs-layout aside#nd-sidebar .sidebar-tree a[data-active] { position: relative; display: flex; width: auto !important; min-width: 0; align-items: center; gap: 8px; margin: 0 !important; padding: 6px var(--fd-sidebar-edge) 6px var(--fd-sidebar-link-x) !important; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); text-decoration: none; font-size: 13.5px !important; line-height: 1.45 !important; background: transparent !important; transition: color 150ms ease; }\n #nd-docs-layout aside#nd-sidebar .sidebar-tree > a[data-active] { padding-left: var(--fd-sidebar-edge) !important; padding-top: 12px !important; padding-bottom: 12px !important; }\n #nd-docs-layout aside#nd-sidebar .sidebar-subgroup-content a[data-active] { padding-left: var(--fd-sidebar-sub-link-x) !important; }\n .sidebar-tree a[data-active=\"true\"], .sidebar-tree a[data-active=\"true\"]:hover { color: var(--color-fd-primary, oklch(0.985 0.001 106.423)) !important; }\n .sidebar-tree a[data-active=\"false\"]:hover { color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)) !important; }\n .sidebar-icon { display: inline-flex; width: 14px; height: 14px; flex: 0 0 14px; color: currentColor; opacity: 0.72; }\n .sidebar-icon svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }\n .sidebar-icon[data-sidebar-icon^=\"brand-\"] svg { fill: currentColor; stroke: none; }\n .sidebar-icon[data-sidebar-icon^=\"brand-\"] svg * { stroke: none; }\n .sidebar-link-label, .sidebar-folder-label, .sidebar-subgroup-label { display: inline-flex; min-width: 0; align-items: center; gap: 8px; }\n .sidebar-folder-label .sidebar-icon { width: 13px; height: 13px; flex-basis: 13px; }\n .sidebar-subgroup-label .sidebar-icon { width: 14px; height: 14px; flex-basis: 14px; }\n .sidebar-label-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .sidebar-tree a[data-active=\"true\"] .sidebar-icon, .sidebar-tree a:hover .sidebar-icon { opacity: 1; }\n #nd-docs-layout aside#nd-sidebar .sidebar-folder-trigger { display: flex !important; width: 100% !important; min-width: 0; align-items: center; justify-content: flex-start; border: 0; border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)) !important; background: transparent !important; margin: 0 !important; transform: none !important; padding: 8px var(--fd-sidebar-edge) !important; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)) !important; font-family: var(--fd-docs-font-sans); font-size: 12px !important; font-weight: 600; letter-spacing: 0 !important; text-align: left; text-transform: none; cursor: default; }\n .sidebar-folder-content { position: relative; padding: 8px 0; overflow: hidden; }\n .sidebar-folder-content::before { content: \"\"; position: absolute; left: var(--fd-sidebar-guide-x); top: 0; bottom: 0; width: 1px; background: var(--fd-sidebar-line-color); pointer-events: none; }\n .sidebar-folder-content > a[data-active]::after, .sidebar-subgroup-title::after, .sidebar-subgroup-content a[data-active]::after { content: \"\"; position: absolute; top: 50%; height: 1px; background: var(--fd-sidebar-line-color); transform: translateY(-50%); pointer-events: none; transition: background-color 150ms ease; }\n .sidebar-folder-content > a[data-active]::after { left: calc(var(--fd-sidebar-guide-x) + var(--fd-sidebar-branch-gap)); width: calc(var(--fd-sidebar-link-x) - var(--fd-sidebar-guide-x) - var(--fd-sidebar-branch-gap)); }\n .sidebar-subgroup-title::after { left: calc(var(--fd-sidebar-guide-x) + var(--fd-sidebar-branch-gap)); width: calc(var(--fd-sidebar-sub-guide-x) - var(--fd-sidebar-guide-x) - var(--fd-sidebar-branch-gap)); }\n .sidebar-folder-content > a[data-active=\"true\"]::after, .sidebar-subgroup-content a[data-active=\"true\"]::after { background: var(--color-fd-primary, oklch(0.985 0.001 106.423)); }\n .sidebar-subgroup { position: relative; padding: 2px 0 4px; }\n .sidebar-subgroup::before { content: \"\"; position: absolute; left: var(--fd-sidebar-sub-guide-x); top: 17px; bottom: 19px; width: 1px; background: var(--fd-sidebar-line-color); pointer-events: none; }\n .sidebar-subgroup-title { position: relative; display: flex; min-width: 0; align-items: center; margin: 0 !important; padding: 6px var(--fd-sidebar-edge) 6px var(--fd-sidebar-link-x); color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-size: 13.5px; font-weight: 400; line-height: 1.45; }\n .sidebar-subgroup-content { position: relative; padding: 0 0 4px; }\n .sidebar-subgroup-content a[data-active]::after { left: var(--fd-sidebar-sub-guide-x); width: calc(var(--fd-sidebar-sub-link-x) - var(--fd-sidebar-sub-guide-x) - var(--fd-sidebar-nested-icon-gap)); }\n main { grid-area: main; min-width: 0; padding: 46px 40px 80px; }\n article#nd-page { width: min(100%, var(--fd-content-width)); margin: 0 auto; }\n article#nd-page .fd-breadcrumb { display: flex; min-width: 0; align-items: center; gap: 0; margin: 0 0 0.5rem; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-family: var(--fd-docs-font-mono); font-size: 0.75rem; line-height: 1.4; letter-spacing: 0.01em; text-transform: uppercase; }\n article#nd-page .fd-breadcrumb-item { display: inline-flex; min-width: 0; align-items: center; }\n article#nd-page .fd-breadcrumb-link { color: inherit; font-family: var(--fd-docs-font-mono); text-decoration: none; }\n article#nd-page .fd-breadcrumb-link:hover { color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); }\n article#nd-page .fd-breadcrumb-parent { opacity: 0.6; font-weight: 400; }\n article#nd-page .fd-breadcrumb-sep { margin: 0 0.375rem; opacity: 0.4; font-size: 0.75rem; }\n article#nd-page .fd-breadcrumb-current { color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); font-family: var(--fd-docs-font-mono); font-weight: 500; }\n .prose h1 { margin: 0 0 16px; font-size: 36px; line-height: 1.14; letter-spacing: -0.02em; }\n .prose h2 { margin: 44px 0 14px; border-top: 1px solid var(--color-fd-border, hsl(0 0% 15%)); padding-top: 26px; font-size: 24px; line-height: 1.24; letter-spacing: -0.01em; }\n .prose h3 { margin: 30px 0 12px; font-size: 20px; line-height: 1.3; letter-spacing: 0; }\n .prose h4, .prose h5, .prose h6 { margin: 24px 0 10px; letter-spacing: 0; }\n .heading-anchor { color: inherit; text-decoration: none; }\n .heading-anchor:hover { text-decoration: underline; text-underline-offset: 4px; }\n .prose p { margin: 14px 0; color: color-mix(in srgb, var(--color-fd-foreground, oklch(0.985 0.001 106.423)) 74%, transparent); font-size: 15.6px; line-height: 1.8; }\n .prose ul, .prose ol { margin: 16px 0; padding-left: 24px; color: color-mix(in srgb, var(--color-fd-foreground, oklch(0.985 0.001 106.423)) 78%, transparent); line-height: 1.75; }\n .prose li { margin: 6px 0; }\n .prose code:not(pre code) { border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: var(--color-fd-card, hsl(0 0% 4%)); padding: 1px 5px; font-family: var(--fd-docs-font-mono); font-size: 0.88em; overflow-wrap: break-word; word-break: break-word; }\n .sh-code { --sh-class: #e5c07b; --sh-identifier: #c8ccd4; --sh-string: #98c379; --sh-keyword: #c678dd; --sh-comment: #5c6370; --sh-property: #e06c75; --sh-sign: #c8ccd4; --sh-space: inherit; }\n .code-block { --fd-code-header-bg: color-mix(in srgb, var(--color-fd-foreground, #fff) 5%, var(--color-fd-background, #000)); --fd-code-body-bg: color-mix(in srgb, var(--color-fd-foreground, #fff) 8%, var(--color-fd-background, #000)); position: relative; width: 100%; min-width: 0; max-width: 100%; margin: 20px 0; overflow: hidden; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: var(--color-fd-background, hsl(0 0% 2%)); box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%)); font-family: var(--fd-docs-font-mono); }\n #nd-docs-layout figure.shiki.code-block { box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%)) !important; }\n .code-block-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; min-height: 34px; border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background-color: var(--fd-code-header-bg); background-image: repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-fd-foreground, #fff) 4%, transparent), color-mix(in srgb, var(--color-fd-foreground, #fff) 4%, transparent) 1px, transparent 1px, transparent 6px); padding: 4px 8px 4px 10px; }\n .code-block-title { overflow: hidden; color: color-mix(in srgb, var(--color-fd-foreground, #fff) 50%, transparent); font-size: 10px; line-height: 1.2; text-overflow: ellipsis; text-transform: lowercase; white-space: nowrap; }\n .code-copy { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; flex: 0 0 auto; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: color-mix(in srgb, var(--color-fd-background, #000) 80%, transparent); color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); cursor: pointer; padding: 0; }\n .code-copy-floating { position: absolute; top: 8px; right: 8px; z-index: 2; opacity: 0.72; transition: opacity 150ms ease; }\n #nd-docs-layout figure.shiki.code-block > .code-copy-floating { opacity: 0.72; }\n .code-block-plain:hover .code-copy-floating, .code-block-plain:focus-within .code-copy-floating { opacity: 1; }\n .code-copy svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n .code-copy .code-copy-check { display: none; }\n .code-copy[data-copied=\"true\"] .code-copy-icon { display: none; }\n .code-copy[data-copied=\"true\"] .code-copy-check { display: block; }\n .code-copy:hover { color: var(--color-fd-foreground, #fff); background: var(--color-fd-muted, hsl(0 0% 10%)); }\n .code-block pre { margin: 0; max-width: 100%; overflow-x: auto; border: 0; background: var(--fd-code-body-bg); padding: 18px 20px; color: var(--color-fd-foreground, #fff); font-family: var(--fd-docs-font-mono); font-size: 13px; line-height: 1.6; }\n #nd-docs-layout figure.shiki.code-block pre { padding: 18px 20px !important; }\n .code-block code { display: block; min-width: max-content; border: 0 !important; background: transparent !important; padding: 0 !important; font-family: inherit; white-space: normal; }\n .sh__line { display: block; min-height: 1.6em; white-space: pre; }\n blockquote { margin: 18px 0; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); border-left: 3px solid var(--color-fd-foreground, oklch(0.985 0.001 106.423)); background: var(--color-fd-card, hsl(0 0% 4%)); box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%)); padding: 14px 16px; color: color-mix(in srgb, var(--color-fd-foreground, oklch(0.985 0.001 106.423)) 78%, transparent); }\n .fd-table-wrapper { margin: 24px 0; overflow-x: auto; }\n .fd-table-wrapper table { width: 100%; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); border-collapse: collapse; font-size: 14px; }\n .fd-table-wrapper th, .fd-table-wrapper td { border-color: var(--color-fd-border, hsl(0 0% 15%)); border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); padding: 10px 12px; text-align: left; vertical-align: top; }\n .fd-table-wrapper th { background: var(--color-fd-muted, hsl(0 0% 10%)); color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); font-family: inherit; font-size: 13px; font-weight: 500; text-transform: none; }\n .fd-table-wrapper tr:last-child td { border-bottom: 0; }\n hr { border: 0; border-top: 1px solid var(--color-fd-border, hsl(0 0% 15%)); margin: 28px 0; }\n img { max-width: 100%; height: auto; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); }\n .fd-page-nav { display: grid; width: 100%; max-width: 100%; grid-template-columns: 1fr; gap: 16px; margin-top: 16px; border-top: 0; padding-top: 0; }\n .fd-page-nav:has(.fd-page-nav-prev):has(.fd-page-nav-next) { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n #nd-docs-layout .fd-page-nav-card { display: flex; min-width: 0; min-height: 98px; flex-direction: column; justify-content: flex-start; gap: 8px; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); border-radius: 0 !important; background: transparent; padding: 16px; color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); text-decoration: none; transition: background-color 150ms ease, border-color 150ms ease; }\n .fd-page-nav-card:hover { border-color: var(--color-fd-border, hsl(0 0% 15%)); background: color-mix(in srgb, var(--color-fd-muted, hsl(0 0% 10%)) 80%, transparent); }\n .fd-page-nav-next { align-items: flex-end; text-align: right; }\n .fd-page-nav-title { display: inline-flex; max-width: 100%; min-height: 0; align-items: center; gap: 6px; overflow: hidden; color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); font-size: 0.875rem; font-weight: 500; line-height: 1.5; overflow-wrap: anywhere; }\n .fd-page-nav-title svg { width: 1rem; height: 1rem; flex-shrink: 0; }\n .fd-page-nav-description { display: block; max-width: 100%; min-height: 0; overflow: hidden; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-size: 15.6px; font-weight: 400; line-height: 1.8; text-overflow: ellipsis; white-space: nowrap; }\n .fd-below-title-block { display: flex; flex-direction: column; align-items: flex-start; gap: 0.625rem; margin: 0 0 1.25rem; }\n .fd-page-actions { display: flex; width: 100%; align-items: center; gap: 0.5rem; }\n .fd-page-actions[data-actions-alignment=\"right\"] { justify-content: flex-end; }\n .fd-below-title-block .fd-page-actions { margin: 0; }\n .fd-page-meta { display: inline-flex; align-items: center; gap: 0.375rem; color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-size: 0.8125rem; line-height: 1.5; }\n .fd-page-meta-dot { color: color-mix(in srgb, var(--color-fd-muted-foreground, hsl(0 0% 55%)) 60%, transparent); }\n .fd-last-updated-inline, .fd-last-updated-footer { color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); font-family: var(--fd-docs-font-mono); font-size: 0.75rem; letter-spacing: 0.03em; line-height: 1.5; text-transform: uppercase; }\n #nd-docs-layout .fd-page-action-btn { display: inline-flex; min-height: 2.125rem; align-items: center; justify-content: center; gap: 0.5rem; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: color-mix(in srgb, var(--color-fd-foreground, #fff) 5%, var(--color-fd-background, #000)); color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); padding: 0 0.75rem; box-shadow: 2px 2px 0 0 var(--color-fd-border, hsl(0 0% 15%)); cursor: pointer; font-family: var(--fd-docs-font-mono) !important; font-size: 0.75rem; font-weight: 500; letter-spacing: 0.03em; line-height: 1; text-transform: uppercase; transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease; appearance: none; }\n #nd-docs-layout .fd-page-action-btn:hover { border-color: color-mix(in srgb, var(--color-fd-foreground, #fff) 22%, transparent); background: color-mix(in srgb, var(--color-fd-foreground, #fff) 8%, var(--color-fd-background, #000)); color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); }\n #nd-docs-layout .fd-page-action-btn:disabled { cursor: wait; opacity: 0.72; }\n #nd-docs-layout .fd-page-action-btn svg { width: 14px; height: 14px; flex: 0 0 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n #nd-docs-layout .fd-page-action-btn .fd-page-action-check-icon { display: none; }\n #nd-docs-layout .fd-page-action-btn[data-copied=\"true\"] .fd-page-action-copy-icon { display: none; }\n #nd-docs-layout .fd-page-action-btn[data-copied=\"true\"] .fd-page-action-check-icon { display: block; }\n .fd-page-footer { display: flex; align-items: center; gap: 0.75rem 1rem; margin-top: 2rem; border-top: 1px solid var(--color-fd-border, hsl(0 0% 15%)); padding-top: 1rem; }\n .fd-page-footer .fd-last-updated-footer { margin-left: auto; }\n @media (max-width: 1020px) {\n :root { --fd-mobile-nav-height: 56px; --fd-sidebar-edge: 20px; --fd-sidebar-guide-x: 58px; --fd-sidebar-link-x: 88px; --fd-sidebar-sub-guide-x: calc(var(--fd-sidebar-link-x) + 7px); --fd-sidebar-sub-link-x: calc(var(--fd-sidebar-sub-guide-x) + 28px); }\n html { scroll-padding-top: calc(var(--fd-mobile-nav-height, 56px) + 24px); }\n body { overflow-x: hidden; }\n #nd-docs-layout { display: block !important; min-height: 100dvh; border-top: 0; padding-top: var(--fd-mobile-nav-height, 56px); }\n .mobile-topbar { position: fixed; inset: 0 0 auto 0; z-index: 80; display: flex; height: var(--fd-mobile-nav-height, 56px); align-items: stretch; border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: color-mix(in srgb, var(--color-fd-background, hsl(0 0% 2%)) 94%, transparent); backdrop-filter: blur(12px); }\n .mobile-topbar a:hover, .fd-mobile-nav-btn:hover { color: var(--color-fd-foreground, oklch(0.985 0.001 106.423)); }\n .topbar { display: none !important; }\n .sidebar-backdrop { position: fixed; inset: 0; z-index: 70; display: block; background: color-mix(in srgb, var(--color-fd-background, #000) 72%, transparent); opacity: 0; pointer-events: none; transition: opacity 180ms ease; }\n #nd-docs-layout[data-sidebar-open=\"true\"] .sidebar-backdrop { opacity: 1; pointer-events: auto; }\n aside#nd-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 90; width: min(342px, calc(100vw - 42px)); height: 100dvh; max-height: none; overflow-y: auto; overscroll-behavior: contain; border-right: 1px solid var(--color-fd-border, hsl(0 0% 15%)); border-bottom: 0; transform: translate3d(-100%, 0, 0); transition: transform 180ms ease; will-change: transform; }\n #nd-docs-layout[data-sidebar-open=\"true\"] aside#nd-sidebar { transform: translate3d(0, 0, 0); }\n aside#nd-sidebar::before, aside#nd-sidebar::after { display: none; }\n .sidebar-brand { min-height: var(--fd-nav-height, 44px); margin-top: 0; }\n main { padding: 34px 20px 64px; }\n article#nd-page { width: 100%; margin: 0; }\n #nd-docs-layout .fd-toc { display: none !important; }\n .prose h1 { font-size: 32px; line-height: 1.16; letter-spacing: 0; }\n .prose h2 { margin-top: 34px; padding-top: 22px; font-size: 23px; }\n .code-block { margin: 16px 0; box-shadow: 2px 2px 0 0 var(--color-fd-border, hsl(0 0% 15%)); }\n #nd-docs-layout figure.shiki.code-block { box-shadow: 2px 2px 0 0 var(--color-fd-border, hsl(0 0% 15%)) !important; }\n .code-block-header { min-height: 32px; padding: 3px 7px 3px 9px; }\n .code-copy-floating { top: 6px; right: 6px; }\n #nd-docs-layout figure.shiki.code-block pre, .code-block pre { padding: 12px 11px !important; font-size: 12px; line-height: 1.5; }\n .sh__line { min-height: 1.5em; }\n .fd-page-nav { grid-template-columns: 1fr !important; }\n .fd-page-nav-next { align-items: flex-start; text-align: left; }\n .fd-page-footer { align-items: flex-start; flex-direction: column; }\n .fd-page-footer .fd-last-updated-footer { margin-left: 0; }\n }\n @media (max-width: 640px) {\n .code-block-header { min-height: 30px; padding: 3px 6px 3px 8px; }\n .code-copy-floating { top: 7px; right: 7px; }\n #nd-docs-layout figure.shiki.code-block pre, .code-block pre { padding: 12px !important; font-size: 12px; line-height: 1.6; }\n #nd-docs-layout figure.shiki.code-block-plain pre, .code-block-plain pre { padding: 16px 44px 16px 14px !important; line-height: 1.65; }\n .sh__line { min-height: 1.6em; }\n }\n${farmDocsPixelBorderCss}\n `;\n}\n\nfunction renderPixelDocsHtml(\n page: LoadedFarmDocsPage,\n pages: FarmDocsPage[],\n docs: FarmDocsResolvedConfig,\n themeCss: string,\n clientEntry: string,\n faviconHref: string,\n): string {\n const navTitle =\n typeof docs.config.nav === \"object\" && docs.config.nav && \"title\" in docs.config.nav\n ? String((docs.config.nav as { title?: unknown }).title || \"Docs\")\n : \"Docs\";\n const description = page.description || docs.config.metadata?.description || \"\";\n const tocItems = extractTocItems(page.body, getThemeTocDepth(docs));\n const themeName = getThemeName(docs);\n const searchEnabled = isFarmDocsSearchEnabled(docs);\n\n return `<!DOCTYPE html>\n<html class=\"dark\" lang=\"en\" data-docs-theme=\"${escapeAttribute(themeName)}\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <meta name=\"generator\" content=\"@farming-labs/docs via Farm.js\">\n <title>${escapeHtml(page.title)}</title>\n ${renderFarmDocsFaviconLink(faviconHref)}\n <link rel=\"preload\" href=\"${GEIST_SANS_FONT_URL}\" as=\"font\" type=\"font/woff2\" crossorigin>\n <link rel=\"preload\" href=\"${GEIST_MONO_FONT_URL}\" as=\"font\" type=\"font/woff2\" crossorigin>\n ${description ? `<meta name=\"description\" content=\"${escapeHtml(description)}\">` : \"\"}\n <style>${themeCss}\n${renderFarmDocsBridgeCss(docs)}</style>\n ${searchEnabled ? renderDocsSearchBootstrapScript() : \"\"}\n</head>\n<body>\n <div id=\"nd-docs-layout\" class=\"grid\">\n <header class=\"mobile-topbar\" aria-label=\"Mobile docs navigation\">\n <button class=\"fd-mobile-nav-btn\" type=\"button\" data-sidebar-toggle aria-controls=\"nd-sidebar\" aria-expanded=\"false\" aria-label=\"Open menu\">\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line></svg>\n </button>\n <div class=\"mobile-topbar-actions\">\n ${searchEnabled ? renderDocsSearchTrigger() : \"\"}\n <a class=\"mobile-topbar-link\" href=\"/llms.txt\">llms.txt</a>\n </div>\n </header>\n <div class=\"sidebar-backdrop\" data-sidebar-backdrop></div>\n <aside id=\"nd-sidebar\">\n <div class=\"sidebar-brand\">\n <a href=\"/\">${renderFarmDocsBrandMark()}${renderFarmDocsBrandTitle(navTitle)}</a>\n <span>/ docs</span>\n </div>\n ${renderPixelNavItems(pages, page.href, docs)}\n </aside>\n <header class=\"topbar\">\n <div class=\"topbar-actions\">\n ${searchEnabled ? renderDocsSearchTrigger(false) : \"\"}\n <a class=\"topbar-llms-link\" href=\"/llms.txt\">llms.txt</a>\n </div>\n </header>\n <main>\n <article id=\"nd-page\" class=\"prose\">\n ${renderPixelBreadcrumb(page, docs)}\n${renderMarkdownHtmlWithTitleMeta(page, docs)}\n ${renderPixelPageFooter(page, docs)}\n ${renderPixelPageNav(pages, page.href, docs)}\n </article>\n </main>\n <nav id=\"nd-toc\" class=\"fd-toc sticky top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] flex flex-col [grid-area:toc] w-(--fd-toc-width) pt-12 pe-4 pb-2 max-xl:hidden\" data-toc aria-labelledby=\"toc-title\">\n <div class=\"fd-toc-inner\">\n <h3 id=\"toc-title\" class=\"fd-toc-title inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground\"><svg class=\"size-4\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 7h16\"></path><path d=\"M4 12h16\"></path><path d=\"M4 17h16\"></path></svg>On this page</h3>\n <div class=\"toc-scroll\">\n ${renderPixelToc(tocItems)}\n </div>\n </div>\n </nav>\n </div>\n ${searchEnabled ? renderDocsSearchMount(clientEntry) : \"\"}\n ${renderDocsRuntimeScripts(docs)}\n</body>\n</html>`;\n}\n\nexport function createFarmDocsHandler(\n docs: FarmDocsResolvedConfig | undefined,\n options: FarmDocsHandlerOptions,\n) {\n const faviconHref = resolveFarmDocsFavicon(docs, options);\n\n return async function handleFarmDocsRequest(request: Request): Promise<Response | null> {\n if (!docs?.enabled || (request.method !== \"GET\" && request.method !== \"HEAD\")) return null;\n\n const contentDir = resolveFarmDocsContentDir(docs, options);\n const publicResponse = createFarmDocsPublicResponse(contentDir, docs, request);\n if (publicResponse) return publicResponse;\n\n if (!isFarmDocsRequest(docs, request)) return null;\n\n const page = loadPage(contentDir, docs, request);\n if (!page) return null;\n\n if (shouldReturnMarkdown(request)) {\n const origin = new URL(request.url).origin;\n return new Response(\n renderDocsMarkdownDocument(toFarmDocsMarkdownPage(page), {\n origin,\n llms: docs.config.llmsTxt ?? true,\n sitemap: docs.config.sitemap,\n }),\n {\n status: 200,\n headers: {\n \"Content-Type\": \"text/markdown; charset=utf-8\",\n \"Cache-Control\": \"public, max-age=60\",\n },\n },\n );\n }\n\n return new Response(\n renderPixelDocsHtml(\n page,\n discoverFarmDocsPages(contentDir, docs),\n docs,\n resolvePixelBorderThemeCss(options),\n options.clientEntry || \"/farm-client.js\",\n faviconHref,\n ),\n {\n status: 200,\n headers: {\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Cache-Control\": \"public, s-maxage=60, stale-while-revalidate=300\",\n },\n },\n );\n };\n}\n","import { execFileSync } from \"node:child_process\";\nimport { existsSync, readFileSync, readdirSync, realpathSync, statSync } from \"node:fs\";\nimport path from \"node:path\";\n\nexport const FARM_DOCS_LAST_MODIFIED_MANIFEST = \".farm-docs-last-modified.json\";\n\nexport interface FarmDocsLastModifiedManifest {\n version: 1;\n pages: Record<string, string>;\n}\n\nexport interface CreateFarmDocsLastModifiedManifestOptions {\n fallback?: \"mtime\" | \"now\";\n now?: Date;\n}\n\nconst COMMIT_MARKER = \"__FARM_DOCS_COMMIT__\";\nconst DOCS_FILE_EXTENSIONS = new Set([\".md\", \".mdx\"]);\nconst manifestCache = new Map<\n string,\n {\n signature: string;\n manifest: FarmDocsLastModifiedManifest;\n }\n>();\n\nfunction normalizeRelativePath(value: string): string {\n return value.replace(/\\\\/g, \"/\").replace(/^\\.\\/+/, \"\");\n}\n\nfunction resolveExistingPath(filePath: string): string {\n try {\n return realpathSync(filePath);\n } catch {\n return path.resolve(filePath);\n }\n}\n\nfunction isDocsSourceFile(filePath: string): boolean {\n return DOCS_FILE_EXTENSIONS.has(path.extname(filePath).toLowerCase());\n}\n\nfunction discoverDocsSourceFiles(contentDir: string): string[] {\n const files: string[] = [];\n\n const visit = (dir: string) => {\n for (const entry of readdirSync(dir, { withFileTypes: true }).sort((a, b) =>\n a.name.localeCompare(b.name),\n )) {\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n\n const absolutePath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolutePath);\n } else if (entry.isFile() && isDocsSourceFile(absolutePath)) {\n files.push(absolutePath);\n }\n }\n };\n\n if (existsSync(contentDir)) visit(contentDir);\n return files;\n}\n\nfunction getGitLastModifiedDates(contentDir: string): Record<string, string> {\n try {\n const gitRoot = execFileSync(\"git\", [\"-C\", contentDir, \"rev-parse\", \"--show-toplevel\"], {\n encoding: \"utf8\",\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }).trim();\n if (!gitRoot) return {};\n\n const contentPathspec = normalizeRelativePath(path.relative(gitRoot, contentDir)) || \".\";\n const contentPrefix = contentPathspec === \".\" ? \"\" : `${contentPathspec}/`;\n const history = execFileSync(\n \"git\",\n [\n \"-C\",\n gitRoot,\n \"-c\",\n \"core.quotePath=false\",\n \"log\",\n `--format=${COMMIT_MARKER}%cI`,\n \"--name-only\",\n \"--\",\n contentPathspec,\n ],\n {\n encoding: \"utf8\",\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n maxBuffer: 32 * 1024 * 1024,\n },\n );\n\n const pages: Record<string, string> = {};\n let commitDate: string | undefined;\n\n for (const rawLine of history.split(/\\r?\\n/)) {\n const line = normalizeRelativePath(rawLine.trim());\n if (!line) continue;\n\n if (line.startsWith(COMMIT_MARKER)) {\n commitDate = line.slice(COMMIT_MARKER.length);\n continue;\n }\n if (!commitDate || (contentPrefix && !line.startsWith(contentPrefix))) continue;\n\n const relativePath = contentPrefix ? line.slice(contentPrefix.length) : line;\n if (isDocsSourceFile(relativePath) && !pages[relativePath]) {\n pages[relativePath] = commitDate;\n }\n }\n\n return pages;\n } catch {\n return {};\n }\n}\n\nfunction readManifest(contentDir: string): FarmDocsLastModifiedManifest | null {\n const manifestPath = path.join(contentDir, FARM_DOCS_LAST_MODIFIED_MANIFEST);\n if (!existsSync(manifestPath)) return null;\n\n try {\n const parsed = JSON.parse(\n readFileSync(manifestPath, \"utf8\"),\n ) as Partial<FarmDocsLastModifiedManifest>;\n if (parsed.version !== 1 || !parsed.pages || typeof parsed.pages !== \"object\") return null;\n\n const pages = Object.fromEntries(\n Object.entries(parsed.pages).filter(\n (entry): entry is [string, string] => typeof entry[1] === \"string\" && entry[1].length > 0,\n ),\n );\n return { version: 1, pages };\n } catch {\n return null;\n }\n}\n\nexport function createFarmDocsLastModifiedManifest(\n contentDir: string,\n options: CreateFarmDocsLastModifiedManifestOptions = {},\n): FarmDocsLastModifiedManifest {\n const resolvedContentDir = resolveExistingPath(contentDir);\n const gitDates = getGitLastModifiedDates(resolvedContentDir);\n const fallbackDate = (options.now ?? new Date()).toISOString();\n const pages: Record<string, string> = {};\n\n for (const sourcePath of discoverDocsSourceFiles(resolvedContentDir)) {\n const relativePath = normalizeRelativePath(path.relative(resolvedContentDir, sourcePath));\n pages[relativePath] =\n gitDates[relativePath] ||\n (options.fallback === \"now\" ? fallbackDate : statSync(sourcePath).mtime.toISOString());\n }\n\n return { version: 1, pages };\n}\n\nfunction getLastModifiedManifest(contentDir: string): FarmDocsLastModifiedManifest {\n const resolvedContentDir = resolveExistingPath(contentDir);\n const manifestPath = path.join(resolvedContentDir, FARM_DOCS_LAST_MODIFIED_MANIFEST);\n const manifestStat = existsSync(manifestPath) ? statSync(manifestPath) : null;\n const signature = manifestStat\n ? `file:${manifestStat.mtimeMs}:${manifestStat.size}`\n : \"generated\";\n const cached = manifestCache.get(resolvedContentDir);\n if (cached?.signature === signature) return cached.manifest;\n\n const manifest =\n readManifest(resolvedContentDir) ?? createFarmDocsLastModifiedManifest(resolvedContentDir);\n manifestCache.set(resolvedContentDir, { signature, manifest });\n return manifest;\n}\n\nexport function resolveFarmDocsPageLastModified(\n contentDir: string,\n sourcePath: string,\n frontmatter: Record<string, string>,\n): string {\n const configured =\n frontmatter.lastModified ||\n frontmatter.lastmod ||\n frontmatter.lastUpdated ||\n frontmatter.updatedAt;\n if (configured) return configured;\n\n const resolvedContentDir = resolveExistingPath(contentDir);\n const resolvedSourcePath = resolveExistingPath(sourcePath);\n const relativePath = normalizeRelativePath(path.relative(resolvedContentDir, resolvedSourcePath));\n const isInsideContentDir =\n relativePath !== \"..\" && !relativePath.startsWith(\"../\") && !path.isAbsolute(relativePath);\n\n if (isInsideContentDir) {\n const generated = getLastModifiedManifest(resolvedContentDir).pages[relativePath];\n if (generated) return generated;\n }\n\n return statSync(resolvedSourcePath).mtime.toISOString();\n}\n","export const farmDocsPixelBorderCss = String.raw`\n/* Farm docs pixel-border bridge.\n * This follows the local @farming-labs/docs pixel-border theme while covering\n * the frameworkless HTML emitted by the Farm docs runtime.\n */\n\n:root {\n --color-fd-background: #000;\n --color-fd-foreground: oklch(0.985 0.001 106.423);\n --color-fd-card: hsl(0 0% 4%);\n --color-fd-card-foreground: oklch(0.985 0.001 106.423);\n --color-fd-popover: hsl(0 0% 4%);\n --color-fd-popover-foreground: oklch(0.985 0.001 106.423);\n --color-fd-primary: oklch(0.985 0.001 106.423);\n --color-fd-primary-foreground: oklch(0.216 0.006 56.043);\n --color-fd-secondary: hsl(0 0% 8%);\n --color-fd-secondary-foreground: oklch(0.985 0.001 106.423);\n --color-fd-muted: hsl(0 0% 10%);\n --color-fd-muted-foreground: hsl(0 0% 55%);\n --color-fd-accent: hsl(0 0% 10%);\n --color-fd-accent-foreground: oklch(0.985 0.001 106.423);\n --color-fd-border: hsl(0 0% 15%);\n --color-fd-ring: hsl(0 0% 30%);\n --fd-pixel-modal-border: color-mix(\n in srgb,\n var(--color-fd-foreground) 10%,\n transparent\n );\n --fd-pixel-modal-shadow: color-mix(\n in srgb,\n var(--color-fd-foreground) 8%,\n transparent\n );\n --fd-nav-height: 44px;\n --fd-banner-height: 0px;\n --fd-tocnav-height: 0px;\n --scrollbar-thumb: var(--color-fd-border);\n --scrollbar-thumb-hover: var(--color-fd-ring);\n --scrollbar-track: transparent;\n --radius: 0px;\n --font-geist-sans: \"Geist Sans\";\n --font-geist-mono: \"Geist Mono\";\n}\n\n.dark {\n --color-fd-background: #000 !important;\n}\n\nhtml,\nbody,\n#nd-docs-layout {\n background-color: var(--color-fd-background) !important;\n}\n\n@font-face {\n font-family: \"Geist Sans\";\n font-display: block;\n font-style: normal;\n font-weight: 100 900;\n src:\n local(\"Geist Sans\"),\n url(\"/assets/Geist-Variable-CrgPqtmy.woff2\") format(\"woff2\"),\n url(\"/node_modules/geist/dist/fonts/geist-sans/Geist-Variable.woff2\") format(\"woff2\");\n}\n\n@font-face {\n font-family: \"Geist Mono\";\n font-display: block;\n font-style: normal;\n font-weight: 100 900;\n src:\n local(\"Geist Mono\"),\n url(\"/assets/GeistMono-Variable-BNLlm6Cd.woff2\") format(\"woff2\"),\n url(\"/node_modules/geist/dist/fonts/geist-mono/GeistMono-Variable.woff2\") format(\"woff2\");\n}\n\n* {\n scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);\n scrollbar-width: thin;\n}\n\nhtml {\n scroll-padding-top: calc(\n var(--fd-nav-height, 56px) + var(--fd-banner-height, 0px) + var(--fd-tocnav-height, 0px) + 24px\n );\n}\n\nbody {\n overscroll-behavior: none;\n}\n\nhtml[data-farm-docs-sidebar=\"open\"],\nhtml[data-farm-docs-sidebar=\"open\"] body {\n overflow: hidden;\n}\n\ncode:not(pre code) {\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n#nd-docs-layout,\n#nd-docs-layout * {\n border-radius: 0 !important;\n}\n\n.topbar {\n grid-column: 2 / -1;\n width: 100%;\n}\n\n.topbar-actions,\n.mobile-topbar-actions {\n display: flex;\n height: 100%;\n min-width: 0;\n align-items: stretch;\n margin-left: auto;\n}\n\n.mobile-topbar {\n display: none;\n}\n\n.sidebar-backdrop {\n display: none;\n}\n\n.fd-mobile-nav-btn {\n display: inline-flex;\n width: var(--fd-mobile-nav-height, 56px);\n height: 100%;\n flex: 0 0 var(--fd-mobile-nav-height, 56px);\n align-items: center;\n justify-content: center;\n border: 0;\n border-right: 1px solid var(--color-fd-border);\n background: transparent;\n color: var(--color-fd-foreground);\n cursor: pointer;\n padding: 0;\n}\n\n.fd-mobile-nav-btn svg {\n width: 19px;\n height: 19px;\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 2;\n}\n\n.mobile-topbar-link {\n display: inline-flex;\n height: 100%;\n min-width: 0;\n align-items: center;\n color: var(--color-fd-muted-foreground);\n font-family: var(--fd-docs-font-mono);\n font-size: 12px;\n letter-spacing: 0.03em;\n text-decoration: none;\n text-transform: uppercase;\n}\n\n.mobile-topbar-link {\n border-left: 1px solid var(--color-fd-border);\n padding: 0 14px;\n}\n\n.sidebar-brand {\n justify-content: flex-start;\n}\n\n.sidebar-brand > a {\n display: inline-flex;\n min-width: 0;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n flex: 0 0 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sidebar-brand-logo {\n width: 16px;\n height: 16px;\n flex: 0 0 16px;\n color: var(--color-fd-foreground);\n}\n\n.sidebar-brand-title {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.sidebar-brand-suffix {\n opacity: 0.52;\n}\n\n.sidebar-brand > span {\n flex: 0 0 auto;\n margin-left: auto;\n}\n\n.fd-docs-search-trigger {\n display: inline-flex;\n width: auto;\n min-width: 46px;\n height: 26px;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n gap: 6px;\n overflow: hidden;\n border: 1px solid var(--color-fd-border);\n background: color-mix(in srgb, var(--color-fd-foreground) 4%, transparent);\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n padding: 0 5px 0 7px;\n font-family: var(--fd-docs-font-mono);\n font-size: 10px;\n letter-spacing: 0;\n line-height: 1;\n text-transform: uppercase;\n transition:\n border-color 150ms ease,\n background-color 150ms ease,\n color 150ms ease;\n appearance: none;\n}\n\n.fd-docs-search-trigger:hover,\n.fd-docs-search-trigger:focus-visible,\n.fd-docs-search-trigger[aria-expanded=\"true\"] {\n border-color: color-mix(in srgb, var(--color-fd-foreground) 28%, transparent);\n background: color-mix(in srgb, var(--color-fd-foreground) 8%, transparent);\n color: var(--color-fd-foreground);\n}\n\n.fd-docs-search-trigger:focus-visible {\n outline: 1px solid var(--color-fd-foreground);\n outline-offset: 2px;\n}\n\n.fd-docs-search-trigger svg {\n width: 13px;\n height: 13px;\n flex: 0 0 13px;\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 1.8;\n}\n\n.fd-docs-search-trigger kbd {\n display: inline-flex;\n min-width: 24px;\n min-height: 16px;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n gap: 2px;\n border: 1px solid var(--color-fd-border);\n background: var(--color-fd-background);\n padding: 1px 4px;\n color: currentColor;\n font-family: inherit;\n font-size: 9px;\n font-weight: 500;\n letter-spacing: 0;\n line-height: 1;\n}\n\n.topbar-actions .fd-docs-search-trigger,\n.mobile-topbar-actions .fd-docs-search-trigger {\n width: auto;\n min-width: 54px;\n height: 100%;\n flex: 0 0 auto;\n border: 0;\n border-left: 1px solid var(--color-fd-border);\n background: transparent;\n padding: 0 12px;\n}\n\n.topbar-actions .fd-docs-search-trigger:hover,\n.topbar-actions .fd-docs-search-trigger:focus-visible,\n.mobile-topbar-actions .fd-docs-search-trigger:hover,\n.mobile-topbar-actions .fd-docs-search-trigger:focus-visible {\n background: color-mix(in srgb, var(--color-fd-foreground) 6%, transparent);\n}\n\n.fd-toc {\n position: sticky;\n top: var(--fd-docs-row-1);\n grid-area: toc;\n display: flex;\n flex-direction: column;\n width: var(--fd-toc-width);\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-1));\n padding: 3rem 1rem 0.5rem 0;\n}\n\n.fd-toc-inner {\n min-width: 0;\n}\n\n.fd-toc-title {\n display: inline-flex;\n align-items: center;\n margin: 0 0 1rem;\n color: var(--color-fd-muted-foreground);\n gap: 0.375rem;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n\n.fd-toc-title svg {\n width: 1rem;\n height: 1rem;\n}\n\n.toc-scroll {\n overflow: auto;\n min-height: 0;\n padding: 0.75rem 0;\n scrollbar-width: none;\n}\n\n.toc-track {\n position: relative;\n}\n\n.toc-thumb {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n width: 1px;\n background: var(--color-fd-primary);\n transition: clip-path 150ms ease;\n}\n\n.toc-links {\n display: flex;\n flex-direction: column;\n border-inline-start: 1px solid color-mix(in srgb, var(--color-fd-foreground) 10%, transparent);\n}\n\n.toc-link {\n display: block;\n padding: 0.375rem 0 0.375rem 0.75rem;\n color: var(--color-fd-muted-foreground);\n font-size: 0.875rem;\n line-height: 1.45;\n text-decoration: none;\n overflow-wrap: anywhere;\n transition: color 150ms ease;\n}\n\n.toc-link:first-child {\n padding-top: 0;\n}\n\n.toc-link:last-child {\n padding-bottom: 0;\n}\n\n.toc-link[data-depth=\"3\"] {\n padding-left: 1.5rem;\n font-size: 0.8125rem;\n}\n\n.toc-link[data-depth=\"4\"],\n.toc-link[data-depth=\"5\"],\n.toc-link[data-depth=\"6\"] {\n padding-left: 2rem;\n font-size: 0.8125rem;\n}\n\n.toc-link[data-active=\"true\"] {\n color: var(--color-fd-primary);\n}\n\n.toc-link:hover {\n color: var(--color-fd-accent-foreground);\n}\n\n.toc-empty {\n margin: 0;\n color: var(--color-fd-muted-foreground);\n font-size: 0.875rem;\n}\n\n.code-block {\n --fd-code-header-bg: color-mix(\n in srgb,\n var(--color-fd-foreground) 5%,\n var(--color-fd-background)\n );\n --fd-code-body-bg: color-mix(in srgb, var(--color-fd-foreground) 8%, var(--color-fd-background));\n width: 100%;\n min-width: 0;\n max-width: 100%;\n border: 1px solid var(--color-fd-border) !important;\n background: var(--fd-code-body-bg);\n box-shadow: 3px 3px 0 0 var(--color-fd-border) !important;\n}\n\n.code-block-header {\n min-height: 34px;\n padding: 4px 8px 4px 10px;\n}\n\n.code-block-title {\n font-size: 10px;\n line-height: 1.2;\n text-transform: lowercase;\n}\n\n.code-block pre {\n margin: 0;\n max-width: 100%;\n background: var(--fd-code-body-bg);\n}\n\n.code-block code {\n border: 0 !important;\n background: transparent !important;\n padding: 0 !important;\n}\n\n.fd-breadcrumb {\n display: flex;\n min-width: 0;\n align-items: center;\n gap: 0;\n margin: 0 0 0.5rem;\n color: var(--color-fd-muted-foreground);\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n font-size: 0.75rem;\n letter-spacing: 0.01em;\n line-height: 1.4;\n text-transform: uppercase;\n}\n\n.fd-breadcrumb-item {\n display: inline-flex;\n min-width: 0;\n align-items: center;\n}\n\n.fd-breadcrumb-link {\n color: inherit;\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n text-decoration: none;\n}\n\n.fd-breadcrumb-link:hover {\n color: var(--color-fd-foreground);\n}\n\n.fd-breadcrumb-parent {\n opacity: 0.6;\n font-weight: 400;\n}\n\n.fd-breadcrumb-sep {\n margin: 0 0.375rem;\n opacity: 0.4;\n font-size: 0.75rem;\n}\n\n.fd-breadcrumb-current {\n color: var(--color-fd-foreground);\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n font-weight: 500;\n}\n\n.fd-last-updated-inline,\n.fd-last-updated-footer {\n color: var(--color-fd-muted-foreground);\n font-family: var(--fd-docs-font-mono);\n font-size: 0.6875rem;\n line-height: 1.5;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.fd-page-action-btn {\n border-radius: 0 !important;\n box-shadow: 2px 2px 0 0 var(--color-fd-border);\n font-family: var(--fd-docs-font-mono) !important;\n font-size: 0.75rem;\n letter-spacing: 0.03em;\n text-transform: uppercase;\n}\n\n.fd-page-action-btn .fd-page-action-check-icon {\n display: none;\n}\n\n.fd-page-action-btn[data-copied=\"true\"] .fd-page-action-copy-icon {\n display: none;\n}\n\n.fd-page-action-btn[data-copied=\"true\"] .fd-page-action-check-icon {\n display: block;\n}\n\n@media (max-width: 1020px) {\n :root {\n --fd-mobile-nav-height: 56px;\n --fd-sidebar-edge: 20px;\n --fd-sidebar-guide-x: 58px;\n --fd-sidebar-link-x: 88px;\n --fd-sidebar-sub-guide-x: calc(var(--fd-sidebar-link-x) + 7px);\n --fd-sidebar-sub-link-x: calc(var(--fd-sidebar-sub-guide-x) + 28px);\n }\n\n html {\n scroll-padding-top: calc(var(--fd-mobile-nav-height, 56px) + 24px);\n }\n\n body {\n overflow-x: hidden;\n }\n\n #nd-docs-layout {\n display: block !important;\n min-height: 100dvh;\n border-top: 0;\n padding-top: var(--fd-mobile-nav-height, 56px);\n }\n\n .mobile-topbar {\n position: fixed;\n inset: 0 0 auto;\n z-index: 80;\n display: flex;\n height: var(--fd-mobile-nav-height, 56px);\n align-items: stretch;\n border-bottom: 1px solid var(--color-fd-border);\n background: color-mix(in srgb, var(--color-fd-background) 94%, transparent);\n backdrop-filter: blur(12px);\n }\n\n .mobile-topbar a:hover,\n .fd-mobile-nav-btn:hover {\n color: var(--color-fd-foreground);\n }\n\n .topbar {\n display: none !important;\n }\n\n .omni-overlay {\n z-index: 100;\n }\n\n .omni-content {\n z-index: 101;\n }\n\n .sidebar-backdrop {\n position: fixed;\n inset: 0;\n z-index: 70;\n display: block;\n background: color-mix(in srgb, var(--color-fd-background) 72%, transparent);\n opacity: 0;\n pointer-events: none;\n transition: opacity 180ms ease;\n }\n\n #nd-docs-layout[data-sidebar-open=\"true\"] .sidebar-backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n aside#nd-sidebar {\n position: fixed;\n inset: 0 auto 0 0;\n z-index: 90;\n width: min(342px, calc(100vw - 42px));\n height: 100dvh;\n max-height: none;\n overflow-y: auto;\n overscroll-behavior: contain;\n border-right: 1px solid var(--color-fd-border);\n border-bottom: 0;\n transform: translate3d(-100%, 0, 0);\n transition: transform 180ms ease;\n will-change: transform;\n }\n\n #nd-docs-layout[data-sidebar-open=\"true\"] aside#nd-sidebar {\n transform: translate3d(0, 0, 0);\n }\n\n main {\n padding: 34px 20px 64px;\n }\n\n article#nd-page {\n width: 100%;\n margin: 0;\n }\n\n #nd-docs-layout .fd-toc {\n display: none !important;\n }\n\n .prose h1 {\n font-size: 32px;\n letter-spacing: 0;\n line-height: 1.16;\n }\n\n .code-block {\n margin: 16px 0;\n box-shadow: 2px 2px 0 0 var(--color-fd-border) !important;\n }\n\n .code-block-header {\n min-height: 32px;\n padding: 3px 7px 3px 9px;\n }\n\n .code-copy-floating {\n top: 6px;\n right: 6px;\n }\n\n #nd-docs-layout figure.shiki.code-block pre,\n .code-block pre {\n padding: 12px 11px !important;\n font-size: 12px;\n line-height: 1.5;\n }\n\n .sh__line {\n min-height: 1.5em;\n }\n\n .fd-page-nav {\n grid-template-columns: 1fr !important;\n }\n\n .fd-page-nav-next {\n align-items: flex-start;\n text-align: left;\n }\n\n .mobile-topbar-actions .fd-docs-search-trigger {\n min-width: 44px;\n padding: 0 14px;\n }\n\n .mobile-topbar-actions .fd-docs-search-trigger kbd {\n display: none;\n }\n}\n\n@media (max-width: 640px) {\n .code-block-header {\n min-height: 30px;\n padding: 3px 6px 3px 8px;\n }\n\n .code-copy-floating {\n top: 7px;\n right: 7px;\n }\n\n #nd-docs-layout figure.shiki.code-block pre,\n .code-block pre {\n padding: 12px !important;\n font-size: 12px;\n line-height: 1.6;\n }\n\n #nd-docs-layout figure.shiki.code-block-plain pre,\n .code-block-plain pre {\n padding: 16px 44px 16px 14px !important;\n line-height: 1.65;\n }\n\n .sh__line {\n min-height: 1.6em;\n }\n}\n\n/* Search styling mirrors @farming-labs/theme's shared Omni palette so Farm\n * matches the Next.js and other framework adapters pixel-for-pixel. The CSS\n * stays bundled because production adapters cannot resolve theme files from\n * node_modules at request time. */\n/* ═══════════════════════════════════════════════════════════════════\n * Omni Command Palette — core styles\n * Uses fumadocs CSS variables so it auto-adapts to every theme.\n * ═══════════════════════════════════════════════════════════════════ */\n\n@keyframes omni-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes omni-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes omni-scale-in {\n from {\n opacity: 0;\n transform: translateX(-50%) scale(0.98) translateY(-6px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) scale(1) translateY(0);\n }\n}\n@keyframes omni-scale-out {\n from {\n opacity: 1;\n transform: translateX(-50%) scale(1) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) scale(0.98) translateY(-6px);\n }\n}\n\n@keyframes omni-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.omni-spin {\n animation: omni-spin 1s linear infinite;\n}\n\n.omni-overlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(2px);\n animation: omni-fade-in 150ms ease-out;\n}\n\n.omni-content {\n --omni-content-top: clamp(5rem, 16vh, 7rem);\n position: fixed;\n z-index: 51;\n top: var(--omni-content-top);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n flex-direction: column;\n width: min(720px, calc(100% - 1rem));\n border-radius: 0.75rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border, #d4d4d4) 70%, transparent);\n background: var(--color-fd-popover, #fafafa);\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font-family: var(--font-sans, system-ui, -apple-system, BlinkMacSystemFont, \"SF Pro Text\",\n ui-sans-serif, sans-serif);\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n outline: none;\n overscroll-behavior: contain;\n animation: omni-scale-in 200ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n@media (max-width: 639px) {\n .omni-content {\n --omni-content-top: 1rem;\n top: var(--omni-content-top);\n width: calc(100% - 1rem);\n max-height: calc(100vh - 2rem);\n }\n}\n\n/* Header */\n.omni-header {\n border-bottom: 1px solid var(--color-fd-border, #262626);\n}\n.omni-search-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem;\n}\n.omni-search-icon {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n flex-shrink: 0;\n}\n.omni-search-icon svg {\n width: 1.25rem;\n height: 1.25rem;\n}\n.omni-search-input {\n width: 0;\n flex: 1;\n background: transparent;\n outline: none;\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n border: none;\n}\n.omni-search-input::placeholder {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-kbd {\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n background: transparent;\n padding: 0.375rem 0.5rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n line-height: 1rem;\n}\n.omni-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-width: 2.5rem;\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n padding: 0.375rem 0.5rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n transition:\n background 120ms,\n color 120ms;\n cursor: pointer;\n background: none;\n}\n.omni-close-btn:hover {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground, #171717));\n background: var(--color-fd-accent, #e5e5e5);\n}\n.omni-close-btn svg {\n display: none;\n}\n\n/* Body / listbox */\n.omni-body {\n flex: 1 1 auto;\n min-height: 0;\n max-height: min(540px, calc(100vh - var(--omni-content-top, 7rem) - 8rem));\n overflow: auto;\n overscroll-behavior: contain;\n padding: 0.5rem;\n}\n.omni-body::-webkit-scrollbar {\n width: 6px;\n}\n.omni-body::-webkit-scrollbar-track {\n background: transparent;\n}\n.omni-body::-webkit-scrollbar-thumb {\n background: var(--color-fd-muted, #262626);\n border-radius: 3px;\n}\n\n/* Loading */\n.omni-loading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 0.625rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-size: 0.875rem;\n}\n\n/* Groups */\n.omni-group {\n padding: 0;\n}\n.omni-group-label {\n display: none;\n}\n.omni-group-items {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n/* Items */\n.omni-item {\n position: relative;\n display: block;\n width: 100%;\n flex-shrink: 0;\n border-radius: 0.5rem;\n padding: 0.75rem 0.875rem;\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n cursor: pointer;\n border: none;\n background: transparent;\n color: var(--color-fd-foreground, #fafafa);\n transition: background 80ms;\n}\n.omni-item:hover,\n.omni-item-active {\n background: var(--color-fd-accent, rgba(209, 209, 209, 0.5));\n}\n.omni-item-active {\n color: var(--color-fd-accent-foreground, #171717);\n}\n.omni-item-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omni-item-icon {\n display: none;\n}\n.omni-item-active .omni-item-icon {\n color: var(--color-fd-accent-foreground, #fafafa);\n}\n.omni-item-text {\n min-width: 0;\n}\n.omni-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font-weight: 500;\n line-height: 1.35;\n}\n.omni-item-subtitle {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 0.75rem;\n line-height: 1rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n opacity: 1;\n}\n.omni-item-active .omni-item-subtitle {\n color: var(--color-fd-muted-foreground, #737373);\n opacity: 1;\n}\n.omni-item-description {\n min-width: 0;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n margin-top: 0.625rem;\n padding-left: 0.75rem;\n border-left: 1px solid color-mix(in srgb, var(--color-fd-border, #d4d4d4) 70%, transparent);\n color: color-mix(in srgb, var(--color-fd-popover-foreground, #272727) 82%, transparent);\n font-size: 0.875rem;\n line-height: 1.5rem;\n font-weight: 400;\n}\n.omni-item-badge {\n display: none;\n}\n.omni-item-ext {\n display: none;\n}\n.omni-item-ext:hover {\n color: var(--color-fd-foreground, #fafafa);\n background: var(--color-fd-muted, #262626);\n}\n.omni-item-shortcuts {\n display: none;\n align-items: center;\n gap: 0.25rem;\n font-size: 10px;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n@media (min-width: 640px) {\n .omni-item-shortcuts {\n display: flex;\n }\n}\n.omni-kbd-sm {\n border-radius: 0.25rem;\n background: var(--color-fd-muted, #262626);\n padding: 0.125rem 0.25rem;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n}\n.omni-item-chevron {\n display: none;\n}\n/* Highlight */\n.omni-highlight {\n border-radius: 0;\n background: transparent;\n padding: 0;\n color: var(--color-fd-primary, #ca8a04);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n/* Empty states */\n.omni-empty-group {\n padding: 0.5rem 0.75rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-empty {\n padding: 1.5rem 0.75rem;\n text-align: center;\n font-size: 0.875rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-empty-icon {\n width: 2rem;\n height: 2rem;\n margin: 0 auto 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n background: var(--color-fd-muted, #262626);\n}\n\n/* Footer */\n.omni-footer {\n border-top: 1px solid var(--color-fd-border, #262626);\n background: color-mix(in srgb, var(--color-fd-secondary, #f5f5f5) 50%, transparent);\n}\n.omni-footer-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 0.625rem 0.75rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-footer-hints {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.75rem;\n}\n.omni-footer-hint {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n white-space: nowrap;\n}\n.omni-footer-hint svg {\n box-sizing: border-box;\n width: 1.375rem;\n height: 1.375rem;\n padding: 0.25rem;\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n background: color-mix(in srgb, var(--color-fd-muted, #e5e5e5) 70%, transparent);\n color: var(--color-fd-muted-foreground, #737373);\n flex-shrink: 0;\n}\n.omni-footer-hint-desktop {\n display: none;\n}\n.omni-footer-filter {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n margin-left: auto;\n white-space: nowrap;\n}\n@media (min-width: 640px) {\n .omni-footer-hint-desktop {\n display: flex;\n }\n}\n.omni-filter-label {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-filter-value {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n}\n.omni-filter-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n border: 0;\n background: transparent;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font: inherit;\n cursor: pointer;\n padding: 0;\n}\n.omni-filter-button:hover {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground, #171717));\n}\n.omni-filter-menu {\n position: absolute;\n right: 0;\n bottom: calc(100% + 0.5rem);\n z-index: 1;\n width: 10rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n border-radius: 0.5rem;\n background: var(--color-fd-popover, #fafafa);\n padding: 0.25rem;\n box-shadow: 0 16px 32px -20px rgba(0, 0, 0, 0.45);\n}\n.omni-filter-option {\n display: flex;\n width: 100%;\n align-items: center;\n border: 0;\n border-radius: 0.375rem;\n background: transparent;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n cursor: pointer;\n font: inherit;\n padding: 0.5rem 0.625rem;\n text-align: left;\n}\n.omni-filter-option:hover,\n.omni-filter-option-active {\n background: var(--color-fd-accent, rgba(209, 209, 209, 0.5));\n}\n\n/* ─── Omni Command Palette (pixel-border theme) ─────────────────── */\n\n.omni-content {\n border-radius: 0 !important;\n border: 1px solid var(--fd-pixel-modal-border);\n box-shadow:\n 2px 2px 0 0 var(--fd-pixel-modal-shadow),\n 0 0 0 1px color-mix(in srgb, var(--color-fd-foreground) 3%, transparent);\n}\n\n.omni-item {\n border-radius: 0 !important;\n}\n\n.omni-kbd,\n.omni-kbd-sm {\n border-radius: 0 !important;\n border: 1px solid var(--color-fd-border, hsl(0 0% 15%));\n}\n\n.omni-close-btn {\n border-radius: 0 !important;\n}\n\n.omni-empty-icon {\n border-radius: 0 !important;\n}\n\n.omni-search-input {\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n.omni-group-label {\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n letter-spacing: 0.08em;\n}\n\n.omni-footer-inner {\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n.omni-footer-hint svg {\n border-radius: 0 !important;\n}\n\n.omni-filter-menu,\n.omni-filter-option {\n border-radius: 0 !important;\n}\n\n.omni-highlight {\n background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 25%, transparent);\n border-radius: 0 !important;\n}\n\n/* Farm's frameworkless topbar uses a compact search trigger. */\n.topbar-actions .fd-docs-search-trigger {\n width: 56px;\n min-width: 56px;\n justify-content: center;\n padding: 0 10px;\n}\n\n.topbar-actions .fd-docs-search-trigger kbd {\n min-width: 36px;\n height: 19px;\n min-height: 19px;\n flex: 0 0 auto;\n gap: 4px;\n border-color: color-mix(in srgb, var(--color-fd-foreground) 14%, transparent);\n background: color-mix(in srgb, var(--color-fd-foreground) 5%, transparent);\n padding: 0 5px;\n font-size: 9px;\n}\n\n/* Farm's mobile shell sits above the frameworkless docs canvas. Keep the\n * shared Omni palette above it without changing the cross-framework styling. */\n.omni-overlay {\n z-index: 100;\n}\n\n.omni-content {\n z-index: 101;\n}\n\n@media (max-width: 1023px) {\n .mobile-topbar-actions .fd-docs-search-trigger {\n width: 44px;\n min-width: 44px;\n justify-content: center;\n padding: 0;\n }\n\n .mobile-topbar-actions .fd-docs-search-trigger kbd {\n display: none;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .omni-overlay,\n .omni-content {\n animation: none;\n }\n}\n`;\n","import {\n buildDocsAgentDiscoverySpec,\n buildDocsConfigMap,\n buildDocsDiagnostics as buildFarmingDocsDiagnostics,\n buildDocsSitemapManifest,\n performDocsSearch,\n renderDocsAgentsDocument,\n renderDocsLlmsTxt,\n renderDocsMarkdownDocument,\n renderDocsRobotsTxt,\n renderDocsSitemapMarkdown,\n renderDocsSitemapXml,\n renderDocsSkillDocument,\n type DocsConfig,\n type DocsLlmsTxtPageInput,\n type DocsSearchSourcePage,\n type DocsSitemapPageInput,\n} from \"@farming-labs/docs\";\nimport { resolveDocsConfig } from \"../config\";\nimport type { FarmDocsResolvedConfig, FarmDocsUserConfig } from \"./types\";\nimport {\n discoverFarmDocsPages,\n type LoadedFarmDocsPage,\n loadFarmDocsPage,\n resolveFarmDocsContentDir,\n toFarmDocsMarkdownPage,\n} from \"./handler\";\n\nexport interface FarmDocsAPIOptions {\n rootDir?: string;\n root?: string;\n srcDir?: string;\n docs?: FarmDocsUserConfig | FarmDocsResolvedConfig;\n config?: Partial<DocsConfig>;\n configPath?: string;\n entry?: string;\n docsPath?: string;\n contentDir?: string;\n}\n\nexport interface FarmDocsCloudRouteOptions {\n locale?: string;\n publicBaseUrl?: string;\n}\n\nexport interface FarmDocsCloudServer {\n handleRequest(request: Request, options?: FarmDocsCloudRouteOptions): Promise<Response>;\n}\n\nexport type FarmDocsCloudIntegration =\n | FarmDocsCloudServer\n | (FarmDocsCloudRouteOptions & { docsCloud?: FarmDocsCloudServer });\n\nexport interface FarmDocsAPIRouteHandlers {\n GET(request: Request): Promise<Response>;\n POST(request: Request): Promise<Response>;\n}\n\nexport type FarmDocsAPIHandler = (request: Request) => Promise<Response | null>;\n\ninterface FarmDocsAPIContext {\n root: string;\n srcDir: string;\n docs: FarmDocsResolvedConfig;\n contentDir: string;\n}\n\ntype JsonRecord = Record<string, unknown>;\ntype DocsAPIPathTarget = {\n format?: string;\n slug?: string;\n};\ntype FarmDocsRuntimeConfig = {\n root?: string;\n srcDir?: string;\n docs?: FarmDocsResolvedConfig;\n};\n\ndeclare global {\n // Injected by Farm's generated server entry so route wrappers can stay zero-config.\n // eslint-disable-next-line no-var\n var __FARM_DOCS_RUNTIME_CONFIG__: FarmDocsRuntimeConfig | undefined;\n}\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isResolvedDocsConfig(value: unknown): value is FarmDocsResolvedConfig {\n return (\n isRecord(value) &&\n typeof value.enabled === \"boolean\" &&\n typeof value.entry === \"string\" &&\n isRecord(value.config)\n );\n}\n\nexport function isFarmDocsAPIRequest(requestOrPathname: Request | string): boolean {\n const pathname =\n typeof requestOrPathname === \"string\"\n ? requestOrPathname\n : new URL(requestOrPathname.url).pathname;\n\n return pathname === \"/api/docs\" || pathname.startsWith(\"/api/docs/\");\n}\n\nfunction json(data: unknown, init: ResponseInit = {}): Response {\n const headers = new Headers(init.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n return new Response(JSON.stringify(data), { ...init, headers });\n}\n\nfunction text(content: string, contentType: string, init: ResponseInit = {}): Response {\n const headers = new Headers(init.headers);\n headers.set(\"Content-Type\", contentType);\n return new Response(content, { ...init, headers });\n}\n\nfunction normalizeAction(value: string | null | undefined): string | undefined {\n return value?.trim().toLowerCase().replace(/_/g, \"-\") || undefined;\n}\n\nfunction getDocsTitle(docs: FarmDocsResolvedConfig): string {\n return typeof docs.config.nav === \"object\" && docs.config.nav && \"title\" in docs.config.nav\n ? String((docs.config.nav as { title?: unknown }).title || \"Documentation\")\n : \"Documentation\";\n}\n\nfunction isDocsCloudServer(value: unknown): value is FarmDocsCloudServer {\n return isRecord(value) && typeof value.handleRequest === \"function\";\n}\n\nfunction resolveDocsCloudIntegration(\n integration?: FarmDocsCloudIntegration,\n): { docsCloud: FarmDocsCloudServer; routeOptions: FarmDocsCloudRouteOptions } | undefined {\n if (!integration) return undefined;\n\n if (isDocsCloudServer(integration)) {\n return { docsCloud: integration, routeOptions: {} };\n }\n\n if (!integration.docsCloud) return undefined;\n\n return {\n docsCloud: integration.docsCloud,\n routeOptions: {\n locale: integration.locale,\n publicBaseUrl: integration.publicBaseUrl,\n },\n };\n}\n\nfunction isDocsCloudGetRequest(request: Request): boolean {\n const url = new URL(request.url);\n const cloud = normalizeAction(url.searchParams.get(\"cloud\"));\n const action = normalizeAction(url.searchParams.get(\"action\"));\n const format = normalizeAction(url.searchParams.get(\"format\"));\n\n return (\n cloud === \"config\" ||\n cloud === \"public-config\" ||\n action === \"cloud-config\" ||\n action === \"docs-cloud-config\" ||\n format === \"cloud-config\" ||\n format === \"docs-cloud-config\"\n );\n}\n\nfunction isDocsCloudAction(action: string | undefined): boolean {\n return Boolean(\n action &&\n [\"analytics\", \"track\", \"track-event\", \"event\", \"ask-ai\", \"ai\", \"chat\", \"docs-cloud\"].includes(\n action,\n ),\n );\n}\n\nasync function readJson(request: Request): Promise<unknown> {\n try {\n return await request.clone().json();\n } catch {\n return undefined;\n }\n}\n\nasync function isDocsCloudPostRequest(request: Request): Promise<boolean> {\n const url = new URL(request.url);\n const cloud = normalizeAction(url.searchParams.get(\"cloud\"));\n const action = normalizeAction(url.searchParams.get(\"action\"));\n\n if (isDocsCloudAction(cloud) || isDocsCloudAction(action)) return true;\n\n const body = await readJson(request);\n if (!isRecord(body)) return false;\n\n const bodyAction = normalizeAction(typeof body.action === \"string\" ? body.action : undefined);\n if (isDocsCloudAction(bodyAction)) return true;\n\n if (typeof body.type === \"string\") return true;\n if (isRecord(body.event) && typeof body.event.type === \"string\") return true;\n if (isRecord(body.payload) && typeof body.payload.type === \"string\") return true;\n\n return false;\n}\n\nfunction normalizeDocsApiSlug(\n value: string | null | undefined,\n docs: FarmDocsResolvedConfig,\n): string {\n const entry = docs.entry.replace(/^\\/+|\\/+$/g, \"\");\n let slug = (value || \"\").trim().replace(/^\\/+|\\/+$/g, \"\");\n\n if (entry && slug === entry) return \"\";\n if (entry && slug.startsWith(`${entry}/`)) {\n slug = slug.slice(entry.length + 1);\n }\n\n return decodeURIComponent(slug).replace(/\\.(mdx?|markdown)$/i, \"\");\n}\n\nfunction getDocsAPIPathTarget(request: Request): DocsAPIPathTarget {\n const pathname = new URL(request.url).pathname.replace(/\\/+$/, \"\") || \"/\";\n const prefix = \"/api/docs\";\n\n if (pathname !== prefix && !pathname.startsWith(`${prefix}/`)) return {};\n\n const rawValue = pathname === prefix ? \"\" : pathname.slice(prefix.length + 1);\n const value = rawValue.replace(/^\\/+|\\/+$/g, \"\");\n const normalizedValue = normalizeAction(value);\n\n if (!value) return {};\n if (\n normalizedValue === \"agent\" ||\n normalizedValue === \"agent.json\" ||\n normalizedValue === \"agent/spec\"\n ) {\n return { format: \"agent-spec\" };\n }\n if (\n normalizedValue === \"agents\" ||\n normalizedValue === \"agents.md\" ||\n normalizedValue === \"agent.md\"\n ) {\n return { format: \"agents\" };\n }\n if (normalizedValue === \"skill\" || normalizedValue === \"skill.md\") return { format: \"skill\" };\n if (normalizedValue === \"llms.txt\") return { format: \"llms\" };\n if (normalizedValue === \"llms-full.txt\") return { format: \"llms-full\" };\n if (normalizedValue === \"sitemap.md\") return { format: \"sitemap-md\" };\n if (normalizedValue === \"sitemap.xml\") return { format: \"sitemap-xml\" };\n if (normalizedValue === \"robots.txt\") return { format: \"robots\" };\n if (/\\.(mdx?|markdown)$/i.test(value)) return { format: \"markdown\", slug: value };\n\n return { slug: value };\n}\n\nfunction getDocsAPIFormat(request: Request): string | undefined {\n const url = new URL(request.url);\n return (\n normalizeAction(url.searchParams.get(\"format\") || url.searchParams.get(\"type\")) ||\n getDocsAPIPathTarget(request).format\n );\n}\n\nfunction getDocsDescription(docs: FarmDocsResolvedConfig): string | undefined {\n return docs.config.metadata?.description;\n}\n\nfunction getLoadedDocsPages(context: FarmDocsAPIContext): LoadedFarmDocsPage[] {\n return discoverFarmDocsPages(context.contentDir, context.docs)\n .map((page) => loadFarmDocsPage(context.contentDir, context.docs, page.slug))\n .filter((page): page is LoadedFarmDocsPage => Boolean(page));\n}\n\nfunction toDocsSourcePage(page: LoadedFarmDocsPage): DocsSearchSourcePage {\n return {\n ...toFarmDocsMarkdownPage(page),\n sourcePath: page.sourcePath,\n };\n}\n\nfunction toDocsSitemapPage(page: LoadedFarmDocsPage): DocsSitemapPageInput {\n return {\n ...toFarmDocsMarkdownPage(page),\n sourcePath: page.sourcePath,\n };\n}\n\nfunction toDocsLlmsPage(page: LoadedFarmDocsPage): DocsLlmsTxtPageInput {\n return toFarmDocsMarkdownPage(page);\n}\n\nfunction getDocsLlmsOptions(context: FarmDocsAPIContext, request: Request) {\n const configured = isRecord(context.docs.config.llmsTxt) ? context.docs.config.llmsTxt : {};\n return {\n enabled: true,\n baseUrl: new URL(request.url).origin,\n siteTitle: getDocsTitle(context.docs),\n siteDescription: getDocsDescription(context.docs),\n ...configured,\n };\n}\n\nfunction getDocsDiscoveryOptions(context: FarmDocsAPIContext, request: Request) {\n const origin = new URL(request.url).origin;\n\n return {\n origin,\n entry: context.docs.entry,\n i18n: null,\n search: context.docs.config.search ?? true,\n mcp: {\n enabled: false,\n route: \"/api/docs/mcp\",\n name: `${getDocsTitle(context.docs)} MCP`,\n version: \"1\",\n tools: {\n listDocs: false,\n listPages: false,\n readPage: false,\n searchDocs: false,\n getNavigation: false,\n getCodeExamples: false,\n getConfigSchema: false,\n },\n },\n feedback: undefined,\n llms: getDocsLlmsOptions(context, request),\n sitemap: context.docs.config.sitemap ?? true,\n robots: context.docs.config.robots ?? true,\n openapi: context.docs.config.apiReference,\n markdown: {\n acceptHeader: true,\n signatureAgentHeader: true,\n },\n };\n}\n\nfunction buildSitemapManifest(context: FarmDocsAPIContext, request: Request) {\n const origin = new URL(request.url).origin;\n return buildDocsSitemapManifest({\n pages: getLoadedDocsPages(context).map(toDocsSitemapPage),\n entry: context.docs.entry,\n siteTitle: getDocsTitle(context.docs),\n baseUrl: origin,\n });\n}\n\nfunction renderLlmsTxt(context: FarmDocsAPIContext, request: Request, full: boolean): string {\n const generated = renderDocsLlmsTxt(\n getLoadedDocsPages(context).map(toDocsLlmsPage),\n getDocsLlmsOptions(context, request),\n );\n\n return full ? generated.llmsFullTxt : generated.llmsTxt;\n}\n\nfunction renderSkillDocument(context: FarmDocsAPIContext, request: Request): string {\n const farmAliases = [\n \"## Farm API Route Aliases\",\n \"\",\n \"- Search JSON: /api/docs?query=<term>\",\n \"- Config JSON: /api/docs?format=config\",\n \"- Markdown by query: /api/docs?format=markdown&path=<slug>\",\n \"- Markdown by path: /api/docs/<slug>.md\",\n \"- LLM summary: /api/docs?format=llms\",\n \"- Full LLM document: /api/docs?format=llms-full\",\n \"- Sitemap XML: /api/docs?format=sitemap-xml\",\n \"- Agent spec JSON: /api/docs/agent/spec\",\n ].join(\"\\n\");\n\n return `${renderDocsSkillDocument(getDocsDiscoveryOptions(context, request)).trim()}\\n\\n${farmAliases}\\n`;\n}\n\nfunction renderAgentsDocument(context: FarmDocsAPIContext, request: Request): string {\n return `${renderDocsAgentsDocument(getDocsDiscoveryOptions(context, request)).trim()}\\n`;\n}\n\nfunction buildAgentSpec(context: FarmDocsAPIContext, request: Request) {\n const url = new URL(request.url);\n const origin = url.origin;\n const pages = discoverFarmDocsPages(context.contentDir, context.docs);\n const spec = buildDocsAgentDiscoverySpec(getDocsDiscoveryOptions(context, request));\n const title = getDocsTitle(context.docs);\n\n return {\n ...spec,\n name: title,\n site: {\n ...spec.site,\n title,\n description: getDocsDescription(context.docs),\n entry: context.docs.entry,\n },\n entry: context.docs.entry,\n routes: {\n docs: `${origin}${context.docs.entry}`,\n config: `${origin}/api/docs?format=config`,\n search: `${origin}/api/docs?query=<term>`,\n markdown: `${origin}/api/docs/<slug>.md`,\n markdownQuery: `${origin}/api/docs?format=markdown&path=<slug>`,\n llms: `${origin}/api/docs?format=llms`,\n llmsFull: `${origin}/api/docs?format=llms-full`,\n sitemapXml: `${origin}/api/docs?format=sitemap-xml`,\n sitemapMarkdown: `${origin}/api/docs?format=sitemap-md`,\n robots: `${origin}/api/docs?format=robots`,\n skill: `${origin}/api/docs?format=skill`,\n agents: `${origin}/api/docs?format=agents`,\n agentSpec: `${origin}/api/docs/agent/spec`,\n },\n capabilities: {\n ...spec.capabilities,\n search: spec.capabilities.search,\n markdown: spec.capabilities.markdownRoutes,\n llms: spec.capabilities.llms,\n sitemap: spec.capabilities.sitemap,\n robots: spec.capabilities.robots,\n post: false,\n },\n pages,\n };\n}\n\nfunction buildDiagnostics(context: FarmDocsAPIContext) {\n const pages = discoverFarmDocsPages(context.contentDir, context.docs);\n const diagnostics = buildFarmingDocsDiagnostics(context.docs.config, {\n entry: context.docs.entry,\n mcp: {\n enabled: false,\n route: \"/api/docs/mcp\",\n name: `${getDocsTitle(context.docs)} MCP`,\n version: \"1\",\n tools: {\n listDocs: false,\n listPages: false,\n readPage: false,\n searchDocs: false,\n getNavigation: false,\n getCodeExamples: false,\n getConfigSchema: false,\n },\n },\n });\n\n return {\n ...diagnostics,\n enabled: context.docs.enabled,\n entry: context.docs.entry,\n root: context.root,\n srcDir: context.srcDir,\n contentDir: context.contentDir,\n configPath: context.docs.configPath || null,\n pageCount: pages.length,\n pages,\n };\n}\n\nasync function searchDocs(context: FarmDocsAPIContext, request: Request, query: string) {\n const loadedPages = getLoadedDocsPages(context);\n const sourcePages = loadedPages.map(toDocsSourcePage);\n const sourcePageByUrl = new Map(sourcePages.map((page) => [page.url, page]));\n const resultLimit =\n isRecord(context.docs.config.search) &&\n typeof context.docs.config.search.maxResults === \"number\"\n ? context.docs.config.search.maxResults\n : undefined;\n\n const results = await performDocsSearch({\n pages: sourcePages,\n query,\n search: context.docs.config.search ?? true,\n pathname: new URL(request.url).pathname,\n siteTitle: getDocsTitle(context.docs),\n limit: resultLimit,\n });\n\n return results.map((result) => {\n const pageUrl = result.url.split(\"#\")[0];\n const page = sourcePageByUrl.get(pageUrl);\n return {\n ...result,\n title: page?.title || result.content,\n href: page?.url || pageUrl,\n description: result.description || page?.description,\n };\n });\n}\n\nasync function resolveAPIContext(options: FarmDocsAPIOptions): Promise<FarmDocsAPIContext> {\n const runtimeConfig = globalThis.__FARM_DOCS_RUNTIME_CONFIG__;\n const root = options.rootDir || options.root || runtimeConfig?.root || process.cwd();\n const srcDir = options.srcDir || runtimeConfig?.srcDir || \"src\";\n const canUseRuntimeDocs =\n options.docs === undefined &&\n options.config === undefined &&\n options.configPath === undefined &&\n options.entry === undefined &&\n options.docsPath === undefined &&\n options.contentDir === undefined &&\n options.root === undefined &&\n options.rootDir === undefined &&\n options.srcDir === undefined;\n const docsInput =\n options.docs ??\n (canUseRuntimeDocs ? runtimeConfig?.docs : undefined) ??\n ({\n enabled: true,\n entry: options.entry,\n docsPath: options.docsPath,\n contentDir: options.contentDir,\n config: options.config,\n configPath: options.configPath,\n } satisfies Exclude<FarmDocsUserConfig, boolean>);\n const docs = isResolvedDocsConfig(docsInput)\n ? docsInput\n : await resolveDocsConfig(docsInput, { root, srcDir });\n\n return {\n root,\n srcDir,\n docs,\n contentDir: resolveFarmDocsContentDir(docs, { root, srcDir }),\n };\n}\n\nasync function handleDocsAPIGet(request: Request, context: FarmDocsAPIContext): Promise<Response> {\n if (!context.docs.enabled) {\n return json({ error: \"Docs are disabled\" }, { status: 404 });\n }\n\n const url = new URL(request.url);\n const format = getDocsAPIFormat(request);\n const pathTarget = getDocsAPIPathTarget(request);\n\n if (format === \"config\" || format === \"docs-config\") {\n return json({\n entry: context.docs.entry,\n contentDir: context.docs.contentDir || context.docs.config.contentDir || null,\n config: context.docs.config,\n map: buildDocsConfigMap(context.docs.config, {\n file: context.docs.configPath || \"farm.config.ts\",\n }),\n });\n }\n\n if (format === \"skill\")\n return text(renderSkillDocument(context, request), \"text/markdown; charset=utf-8\");\n if (format === \"agents\")\n return text(renderAgentsDocument(context, request), \"text/markdown; charset=utf-8\");\n if (format === \"agent\" || format === \"agent-spec\") return json(buildAgentSpec(context, request));\n if (format === \"diagnostics\") return json(buildDiagnostics(context));\n if (format === \"llms\")\n return text(renderLlmsTxt(context, request, false), \"text/plain; charset=utf-8\");\n if (format === \"llms-full\")\n return text(renderLlmsTxt(context, request, true), \"text/plain; charset=utf-8\");\n if (format === \"sitemap-md\") {\n return text(\n renderDocsSitemapMarkdown(buildSitemapManifest(context, request), {\n includeDescriptions: true,\n }),\n \"text/markdown; charset=utf-8\",\n );\n }\n if (format === \"sitemap-xml\" || format === \"sitemap\") {\n const origin = new URL(request.url).origin;\n return text(\n renderDocsSitemapXml(buildSitemapManifest(context, request), {\n baseUrl: origin,\n includeLastmod: true,\n }),\n \"application/xml; charset=utf-8\",\n );\n }\n if (format === \"robots\") {\n return text(\n renderDocsRobotsTxt({\n entry: context.docs.entry,\n sitemap: context.docs.config.sitemap ?? true,\n robots: context.docs.config.robots ?? true,\n baseUrl: new URL(request.url).origin,\n }),\n \"text/plain; charset=utf-8\",\n );\n }\n\n if (format === \"markdown\" || url.pathname.endsWith(\".md\")) {\n const pathParam = url.searchParams.get(\"path\") || url.searchParams.get(\"slug\");\n const slug = normalizeDocsApiSlug(pathParam ?? pathTarget.slug ?? \"\", context.docs);\n const page = loadFarmDocsPage(context.contentDir, context.docs, slug);\n if (!page) return text(\"Docs page not found\\n\", \"text/plain; charset=utf-8\", { status: 404 });\n return text(\n renderDocsMarkdownDocument(toFarmDocsMarkdownPage(page), {\n origin: new URL(request.url).origin,\n llms: getDocsLlmsOptions(context, request),\n sitemap: context.docs.config.sitemap,\n }),\n \"text/markdown; charset=utf-8\",\n );\n }\n\n const query = url.searchParams.get(\"query\") || url.searchParams.get(\"q\") || \"\";\n if (!query.trim()) return json([]);\n return json(await searchDocs(context, request, query));\n}\n\nexport function createDocsAPI(\n options: FarmDocsAPIOptions = {},\n cloudIntegration?: FarmDocsCloudIntegration,\n): FarmDocsAPIRouteHandlers {\n let contextPromise: Promise<FarmDocsAPIContext> | undefined;\n const getContext = () => {\n contextPromise ??= resolveAPIContext(options);\n return contextPromise;\n };\n const integration = resolveDocsCloudIntegration(cloudIntegration);\n\n return {\n async GET(request: Request) {\n if (integration && isDocsCloudGetRequest(request)) {\n return integration.docsCloud.handleRequest(request, integration.routeOptions);\n }\n\n return handleDocsAPIGet(request, await getContext());\n },\n async POST(request: Request) {\n if (integration && (await isDocsCloudPostRequest(request))) {\n return integration.docsCloud.handleRequest(request, integration.routeOptions);\n }\n\n return json(\n {\n error: \"AI is not enabled for this Farm docs API route yet.\",\n },\n { status: 501 },\n );\n },\n };\n}\n\nexport function createFarmDocsAPIHandler(\n options: FarmDocsAPIOptions = {},\n cloudIntegration?: FarmDocsCloudIntegration,\n): FarmDocsAPIHandler {\n const handlers = createDocsAPI(options, cloudIntegration);\n\n return async function handleFarmDocsAPIRequest(request: Request): Promise<Response | null> {\n if (!isFarmDocsAPIRequest(request)) return null;\n\n const method = request.method.toUpperCase();\n if (method === \"GET\" || method === \"HEAD\") {\n return handlers.GET(request);\n }\n if (method === \"POST\") {\n return handlers.POST(request);\n }\n\n return json(\n {\n error: \"Method Not Allowed\",\n },\n {\n status: 405,\n headers: {\n Allow: \"GET, HEAD, POST\",\n },\n },\n );\n };\n}\n"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AFmD7C,IAAM,kBAAkB,CAAC,YAAY,WAAW,aAAa,UAAU;AACvE,IAAMC,wBAAuB,CAAC,QAAQ,KAAK;AAC3C,IAAM,6BACJ;AACF,IAAM,0BAA0B,CAAC,eAAe,eAAe,aAAa;AAE5E,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAE5B,SAAS,YAAY,OAAuB;AAC1C,SAAO,MAAM,QAAQ,cAAc,EAAE;AACvC;AAFS;AAIT,SAAS,eAAe,OAAmC;AACzD,MAAI,CAAC,SAAS,UAAU,IAAK,QAAO;AACpC,SAAO,IAAI,YAAY,KAAK,CAAC;AAC/B;AAHS;AAKT,SAAS,cAAc,OAAuB;AAC5C,SAAO,YAAY,mBAAmB,KAAK,CAAC,EAAE,QAAQ,uBAAuB,EAAE;AACjF;AAFS;AAIT,SAAS,uBACP,MACA,SACQ;AACR,QAAM,oBAAoB,MAAM,OAAO;AACvC,MAAI,OAAO,sBAAsB,YAAY,kBAAkB,KAAK,GAAG;AACrE,WAAO,kBAAkB,KAAK;AAAA,EAChC;AAEA,QAAM,YAAYC,MAAK,KAAKA,MAAK,QAAQ,QAAQ,IAAI,GAAG,QAAQ;AAEhE,aAAW,YAAY,yBAAyB;AAC9C,UAAM,cAAcA,MAAK,KAAK,WAAW,QAAQ;AACjD,QAAIC,YAAW,WAAW,KAAKC,UAAS,WAAW,EAAE,OAAO,GAAG;AAC7D,aAAO,IAAI,QAAQ;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAnBS;AAqBT,SAAS,0BAA0B,aAA6B;AAC9D,QAAM,iBAAiB,YAAY,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK;AACzE,QAAM,OACJ,eAAe,SAAS,MAAM,KAAK,YAAY,WAAW,oBAAoB,IAC1E,kBACA,eAAe,SAAS,MAAM,IAC5B,cACA,eAAe,SAAS,MAAM,IAC5B,iBACA;AACV,QAAM,WACJ,SAAS,kBAAkB,sCAAsC,OAAO,UAAU,IAAI,MAAM;AAE9F,SAAO,0BAA0B,gBAAgB,WAAW,CAAC,IAAI,QAAQ;AAC3E;AAdS;AAgBT,SAAS,0BAAkC;AACzC,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQT;AATS;AAWT,SAAS,yBAAyB,UAA0B;AAC1D,QAAM,SAAS,SAAS,MAAM,QAAQ,IAAI,CAAC;AAE3C,MAAI,CAAC,QAAQ;AACX,WAAO,qCAAqC,WAAW,QAAQ,CAAC;AAAA,EAClE;AAEA,QAAM,cAAc,SAAS,MAAM,GAAG,CAAC,OAAO,MAAM;AACpD,SAAO,qCAAqC,WAAW,WAAW,CAAC,sCAAsC,WAAW,MAAM,CAAC;AAC7H;AATS;AAWT,SAAS,cAAc,SAA0B;AAC/C,SAAO,YAAY,QAAQ,CAAC,QAAQ,SAAS,GAAG,KAAK,CAAC,QAAQ,SAAS,IAAI;AAC7E;AAFS;AAIT,SAAS,cAAc,MAAc,QAA+B;AAClE,QAAM,eAAeF,MAAK,QAAQ,IAAI;AACtC,QAAM,iBAAiBA,MAAK,QAAQ,MAAM;AAC1C,QAAM,WAAWA,MAAK,SAAS,cAAc,cAAc;AAC3D,MAAI,aAAa,MAAO,CAAC,SAAS,WAAW,IAAI,KAAK,CAACA,MAAK,WAAW,QAAQ,GAAI;AACjF,WAAO;AAAA,EACT;AACA,SAAO;AACT;AARS;AAUF,SAAS,kBAAkB,MAA0C,SAAkB;AAC5F,MAAI,CAAC,MAAM,QAAS,QAAO;AAC3B,MAAI,QAAQ,WAAW,SAAS,QAAQ,WAAW,OAAQ,QAAO;AAElE,QAAM,WAAW,IAAI,IAAI,QAAQ,GAAG,EAAE;AACtC,QAAM,QAAQ,eAAe,KAAK,KAAK;AACvC,MAAI,UAAU,IAAK,QAAO;AAE1B,SAAO,aAAa,SAAS,aAAa,GAAG,KAAK,SAAS,SAAS,WAAW,GAAG,KAAK,GAAG;AAC5F;AATgB;AAWT,SAAS,0BACd,MACA,SACQ;AACR,QAAM,OAAOA,MAAK,QAAQ,QAAQ,IAAI;AACtC,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,uBAAuB,KAAK,cAAc,KAAK,OAAO;AAE5D,MAAI,sBAAsB;AACxB,WAAOA,MAAK,WAAW,oBAAoB,IACvC,uBACAA,MAAK,KAAK,MAAM,oBAAoB;AAAA,EAC1C;AAEA,QAAM,WAAW,KAAK,OAAO,SAAS,YAAY,KAAK,KAAK,KAAK;AACjE,QAAM,aAAaA,MAAK,KAAK,MAAM,QAAQ,OAAO,QAAQ;AAC1D,MAAIC,YAAW,UAAU,EAAG,QAAO;AAEnC,SAAOD,MAAK,KAAK,MAAM,QAAQ;AACjC;AAnBgB;AAqBT,SAAS,4BAA4B,MAAoD;AAC9F,MAAI,CAAC,MAAM,QAAS,QAAO,CAAC;AAC5B,QAAM,QAAQ,eAAe,KAAK,KAAK;AACvC,MAAI,UAAU,IAAK,QAAO,CAAC,KAAK,YAAY;AAC5C,SAAO,CAAC,OAAO,GAAG,KAAK,YAAY;AACrC;AALgB;AAOT,SAAS,sCACd,MACU;AACV,MAAI,CAAC,MAAM,QAAS,QAAO,CAAC;AAC5B,QAAM,QAAQ,eAAe,KAAK,KAAK;AACvC,SAAO,CAAC,UAAU,MAAM,UAAU,GAAG,KAAK,MAAM;AAClD;AANgB;AAQhB,SAAS,eAAe,MAA8B,SAA0B;AAC9E,QAAM,WAAW,IAAI,IAAI,QAAQ,GAAG,EAAE;AACtC,QAAM,QAAQ,eAAe,KAAK,KAAK;AAEvC,MAAI,UAAU,IAAK,QAAO,cAAc,QAAQ;AAChD,MAAI,aAAa,SAAS,aAAa,GAAG,KAAK,MAAO,QAAO;AAE7D,SAAO,cAAc,SAAS,MAAM,MAAM,MAAM,CAAC;AACnD;AARS;AAUT,SAAS,iBAAiB,YAAoB,MAA6B;AACzE,QAAM,WAAW,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,IAAI,CAAC;AAC3D,MAAI,CAAC,SAAS,MAAM,aAAa,EAAG,QAAO;AAE3C,QAAM,UAAUA,MAAK,KAAK,YAAY,GAAG,QAAQ;AACjD,QAAM,aACJ,SAAS,WAAW,IAChB,gBAAgB,IAAI,CAAC,aAAaA,MAAK,KAAK,YAAY,QAAQ,CAAC,IACjE;AAAA,IACE,GAAG,gBAAgB,IAAI,CAAC,aAAaA,MAAK,KAAK,SAAS,QAAQ,CAAC;AAAA,IACjE,GAAGD,sBAAqB,IAAI,CAAC,cAAcC,MAAK,KAAK,YAAY,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;AAAA,EACzF;AAEN,aAAW,aAAa,YAAY;AAClC,UAAM,WAAW,cAAc,YAAY,SAAS;AACpD,QAAI,YAAYC,YAAW,QAAQ,KAAKC,UAAS,QAAQ,EAAE,OAAO,GAAG;AACnE,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AArBS;AAuBT,SAAS,iBAAiB,QAGxB;AACA,MAAI,CAAC,OAAO,WAAW,KAAK,GAAG;AAC7B,WAAO,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO;AAAA,EACzC;AAEA,QAAM,WAAW,OAAO,QAAQ,SAAS,CAAC;AAC1C,MAAI,aAAa,GAAI,QAAO,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO;AAE5D,QAAM,oBAAoB,OAAO,MAAM,GAAG,QAAQ,EAAE,KAAK;AACzD,QAAM,OAAO,OAAO,MAAM,OAAO,QAAQ,MAAM,WAAW,CAAC,IAAI,CAAC;AAChE,QAAM,cAAsC,CAAC;AAE7C,aAAW,QAAQ,kBAAkB,MAAM,OAAO,GAAG;AACnD,UAAM,YAAY,KAAK,QAAQ,GAAG;AAClC,QAAI,cAAc,GAAI;AACtB,UAAM,MAAM,KAAK,MAAM,GAAG,SAAS,EAAE,KAAK;AAC1C,UAAM,QAAQ,KACX,MAAM,YAAY,CAAC,EACnB,KAAK,EACL,QAAQ,gBAAgB,EAAE;AAC7B,QAAI,OAAO,MAAO,aAAY,GAAG,IAAI;AAAA,EACvC;AAEA,SAAO,EAAE,aAAa,KAAK;AAC7B;AA3BS;AA6BT,SAAS,cAAc,MAAsB;AAC3C,QAAM,cAAc,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,IAAI,KAAK;AAC7D,SAAO,YACJ,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAPS;AAST,SAAS,kBAAkB,MAAc,UAA0B;AACjE,QAAM,UAAU,KAAK,MAAM,aAAa,IAAI,CAAC,GAAG,KAAK;AACrD,SAAO,WAAW;AACpB;AAHS;AAKF,SAAS,iBACd,YACA,MACA,MAC2B;AAC3B,QAAM,aAAa,iBAAiB,YAAY,IAAI;AACpD,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,SAASC,cAAa,YAAY,MAAM;AAC9C,QAAM,EAAE,aAAa,KAAK,IAAI,iBAAiB,MAAM;AACrD,QAAM,QAAQ,YAAY,SAAS,kBAAkB,MAAM,cAAc,IAAI,CAAC;AAC9E,QAAM,OAAO,eAAe,KAAK,OAAO,IAAI;AAE5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAa,YAAY;AAAA,IACzB;AAAA,IACA;AAAA,IACA,cAAc,gCAAgC,YAAY,YAAY,WAAW;AAAA,IACjF;AAAA,IACA;AAAA,EACF;AACF;AAvBgB;AAyBhB,SAAS,eAAe,OAAe,MAAsB;AAC3D,QAAM,kBAAkB,eAAe,KAAK;AAC5C,QAAM,iBAAiB,YAAY,IAAI;AACvC,MAAI,oBAAoB,IAAK,QAAO,iBAAiB,IAAI,cAAc,KAAK;AAC5E,SAAO,iBAAiB,GAAG,eAAe,IAAI,cAAc,KAAK;AACnE;AALS;AAOT,SAAS,WAAW,YAAoB,UAAiC;AACvE,QAAM,WAAWH,MAAK,SAAS,YAAY,QAAQ,EAAE,QAAQ,OAAO,GAAG;AACvE,MAAI,SAAS,WAAW,IAAI,EAAG,QAAO;AAEtC,QAAM,YAAYA,MAAK,QAAQ,QAAQ;AACvC,MAAI,CAACD,sBAAqB,SAAS,SAAS,EAAG,QAAO;AAEtD,QAAM,mBAAmB,SAAS,MAAM,GAAG,CAAC,UAAU,MAAM;AAC5D,MAAI,qBAAqB,UAAU,qBAAqB,QAAS,QAAO;AACxE,MAAI,iBAAiB,SAAS,OAAO,KAAK,iBAAiB,SAAS,QAAQ,GAAG;AAC7E,WAAO,iBAAiB,QAAQ,mBAAmB,EAAE;AAAA,EACvD;AACA,SAAO;AACT;AAbS;AAeT,SAAS,SACP,YACA,MACA,SAC2B;AAC3B,SAAO,iBAAiB,YAAY,MAAM,eAAe,MAAM,OAAO,CAAC;AACzE;AANS;AAQF,SAAS,sBACd,YACA,MACgB;AAChB,MAAI,CAACE,YAAW,UAAU,EAAG,QAAO,CAAC;AAErC,QAAM,QAAwB,CAAC;AAC/B,QAAM,QAAQ,wBAAC,QAAgB;AAC7B,eAAW,SAASG,aAAY,KAAK,EAAE,eAAe,KAAK,CAAC,GAAG;AAC7D,UAAI,MAAM,KAAK,WAAW,GAAG,KAAK,MAAM,SAAS,eAAgB;AACjE,YAAM,eAAeJ,MAAK,KAAK,KAAK,MAAM,IAAI;AAC9C,UAAI,MAAM,YAAY,GAAG;AACvB,cAAM,YAAY;AAClB;AAAA,MACF;AACA,UAAI,CAAC,MAAM,OAAO,EAAG;AAErB,YAAM,OAAO,WAAW,YAAY,YAAY;AAChD,UAAI,SAAS,KAAM;AAEnB,YAAM,SAASG,cAAa,cAAc,MAAM;AAChD,YAAM,EAAE,aAAa,KAAK,IAAI,iBAAiB,MAAM;AACrD,YAAM,KAAK;AAAA,QACT;AAAA,QACA,OAAO,YAAY,SAAS,kBAAkB,MAAM,cAAc,IAAI,CAAC;AAAA,QACvE,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,MAAM,eAAe,KAAK,OAAO,IAAI;AAAA,QACrC,YAAY;AAAA,QACZ,cAAc,gCAAgC,YAAY,cAAc,WAAW;AAAA,MACrF,CAAC;AAAA,IACH;AAAA,EACF,GAzBc;AA2Bd,QAAM,UAAU;AAChB,SAAO,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC1D;AApCgB;AAsCT,SAAS,uBAAuB,MAA4C;AACjF,QAAM,eACJ,KAAK,gBAAgB,KAAK,YAAY,gBAAgB,KAAK,YAAY;AAEzE,SAAO;AAAA,IACL,MAAM,KAAK;AAAA,IACX,KAAK,KAAK;AAAA,IACV,OAAO,KAAK;AAAA,IACZ,aAAa,KAAK;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,IACT,SAAS,KAAK;AAAA,IACd,YAAY,KAAK;AAAA,EACnB;AACF;AAdgB;AAgBhB,SAAS,aAAa,MAAsC;AAC1D,SAAO,OAAO,KAAK,OAAO,QAAQ,YAAY,KAAK,OAAO,OAAO,WAAW,KAAK,OAAO,MACpF,OAAQ,KAAK,OAAO,IAA4B,SAAS,eAAe,IACxE;AACN;AAJS;AAMT,SAAS,mBAAmB,MAAkD;AAC5E,SAAO,KAAK,OAAO,UAAU;AAC/B;AAFS;AAIT,SAAS,mBACP,YACA,MACsB;AACtB,SAAO,sBAAsB,YAAY,IAAI,EAC1C,IAAI,CAAC,SAAS,iBAAiB,YAAY,MAAM,KAAK,IAAI,CAAC,EAC3D,OAAO,CAAC,SAAqC,QAAQ,IAAI,CAAC;AAC/D;AAPS;AAST,SAAS,eAAe,MAAgD;AACtE,SAAO,uBAAuB,IAAI;AACpC;AAFS;AAIT,SAAS,kBAAkB,MAAgD;AACzE,SAAO;AAAA,IACL,GAAG,uBAAuB,IAAI;AAAA,IAC9B,YAAY,KAAK;AAAA,EACnB;AACF;AALS;AA0BT,SAAS,yBAAyB,MAAuD;AACvF,SAAO,eAAe,KAAK,OAAO,WAAW,IAAI,KAAK,OAAO,cAAc,CAAC;AAC9E;AAFS;AAIT,SAAS,4BAA4B,MAAgD;AACnF,SAAO,yBAAyB,IAAI,EAAE,cAAc,UAAU,UAAU;AAC1E;AAFS;AAIT,SAAS,gCACP,MACiC;AACjC,QAAM,MAAM,yBAAyB,IAAI,EAAE;AAC3C,MAAI,QAAQ,UAAa,QAAQ,MAAO,QAAO;AAE/C,QAAM,UAAU,eAAe,GAAG,IAAI,MAAM,CAAC;AAC7C,MAAI,eAAe,GAAG,KAAK,IAAI,YAAY,MAAO,QAAO;AAEzD,SAAO;AAAA,IACL,QAAQ,QAAQ,WAAW,SAAS,SAAS;AAAA,IAC7C,cAAc,QAAQ,iBAAiB;AAAA,IACvC,OAAO,WAAW,QAAQ,KAAK,KAAK;AAAA,IACpC,aAAa,WAAW,QAAQ,WAAW,KAAK;AAAA,EAClD;AACF;AAfS;AAiBT,SAAS,gCAAgC,MAAwD;AAC/F,QAAM,MAAM,KAAK,OAAO;AACxB,QAAM,UAAU,eAAe,GAAG,IAAI,MAAM,CAAC;AAE7C,SAAO;AAAA,IACL,SAAS,QAAQ,UAAU,CAAC,eAAe,GAAG,KAAK,IAAI,YAAY;AAAA,IACnE,OAAO,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ;AAAA,IAC3D,UAAU,QAAQ,aAAa,gBAAgB,gBAAgB;AAAA,EACjE;AACF;AATS;AAWT,SAAS,uBAAuB,OAA+C;AAC7E,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,QAAO;AAEzC,SAAO,IAAI,KAAK,eAAe,MAAM;AAAA,IACnC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC,EAAE,OAAO,IAAI;AAChB;AAXS;AAaT,SAAS,sBACP,MACA,MACA,UACQ;AACR,QAAM,SAAS,gCAAgC,IAAI;AACnD,QAAM,YAAY,uBAAuB,KAAK,YAAY;AAC1D,MAAI,CAAC,OAAO,WAAW,OAAO,aAAa,YAAY,CAAC,UAAW,QAAO;AAE1E,QAAM,OAAO,mBAAmB,gBAAgB,KAAK,gBAAgB,EAAE,CAAC,KAAK,WAAW,SAAS,CAAC;AAClG,QAAM,QAAQ,OAAO,MAAM,KAAK;AAChC,SAAO,QAAQ,GAAG,WAAW,KAAK,CAAC,IAAI,IAAI,KAAK;AAClD;AAZS;AAcT,SAAS,gCACP,MACiC;AACjC,QAAM,MAAM,KAAK,OAAO;AACxB,MAAI,QAAQ,UAAa,QAAQ,MAAO,QAAO;AAE/C,QAAM,UAAU,eAAe,GAAG,IAAI,MAAM,CAAC;AAC7C,MAAI,eAAe,GAAG,KAAK,QAAQ,YAAY,MAAO,QAAO;AAE7D,QAAM,iBACJ,OAAO,QAAQ,mBAAmB,YAAY,QAAQ,iBAAiB,IACnE,QAAQ,iBACR;AAEN,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,QAAQ,WAAW,UAAU,UAAU;AAAA,IAC/C,aAAa,QAAQ,gBAAgB;AAAA,EACvC;AACF;AAnBS;AAqBT,SAAS,mBAAmB,MAAc,aAA8B;AACtE,QAAM,YACJ,cAAc,OAAO,KAAK,QAAQ,mBAAmB,GAAG,EAAE,QAAQ,YAAY,GAAG,GAEhF,QAAQ,wBAAwB,GAAG,EACnC,QAAQ,yBAAyB,IAAI,EACrC,QAAQ,YAAY,GAAG,EACvB,QAAQ,gBAAgB,GAAG;AAE9B,SAAO,SAAS,MAAM,oCAAoC,GAAG,UAAU;AACzE;AAVS;AAYT,SAAS,sBAAsB,MAA0B,MAAsC;AAC7F,QAAM,SAAS,gCAAgC,IAAI;AACnD,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,QAAQ,mBAAmB,KAAK,MAAM,OAAO,WAAW;AAC9D,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,KAAK,QAAQ,OAAO,cAAc,CAAC;AACpE,QAAM,QAAQ,OAAO,WAAW,UAAU,GAAG,OAAO,SAAS,GAAG,OAAO;AAEvE,SAAO;AAAA;AAAA,oCAE2B,WAAW,KAAK,CAAC;AAAA;AAErD;AAZS;AAcT,SAAS,uBAAuB,MAA0B,MAAsC;AAC9F,QAAM,eAAe,gCAAgC,IAAI;AACzD,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,cAAc,GAAG,KAAK,IAAI;AAChC,QAAM,eAAe,aAAa,eAAe,SAAS;AAE1D,SAAO,0EAA0E,4BAA4B,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAM3F,gBAAgB,WAAW,CAAC;AAAA,iCACpB,aAAa,MAAM;AAAA,wCACZ,YAAY;AAAA,uBAC7B,gBAAgB,aAAa,KAAK,CAAC;AAAA,yBACjC,gBAAgB,aAAa,WAAW,CAAC;AAAA,kBAChD,gBAAgB,aAAa,KAAK,CAAC;AAAA,aACxC,gBAAgB,aAAa,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,mCAIb,WAAW,aAAa,KAAK,CAAC;AAAA;AAAA;AAGjE;AA1BS;AA4BT,SAAS,qBAAqB,MAA0B,MAAsC;AAC5F,QAAM,cAAc,sBAAsB,MAAM,MAAM,aAAa;AACnE,QAAM,UAAU,uBAAuB,MAAM,IAAI;AACjD,QAAM,cAAc,sBAAsB,MAAM,IAAI;AACpD,MAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAa,QAAO;AAErD,SAAO;AAAA,IACL,cAAc,qCAAqC,WAAW,SAAS,EAAE;AAAA,IACzE,OAAO;AAAA,IACP,WAAW;AAAA;AAEf;AAXS;AAaT,SAAS,gCACP,MACA,MACQ;AACR,QAAM,OAAO,mBAAmB,KAAK,IAAI;AACzC,QAAM,OAAO,qBAAqB,MAAM,IAAI;AAC5C,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,gBAAgB,KAAK,QAAQ,yBAAyB;AAAA,EAAO,IAAI,EAAE;AACzE,SAAO,kBAAkB,OAAO,GAAG,IAAI;AAAA,EAAK,IAAI,KAAK;AACvD;AAVS;AAYT,SAAS,sBAAsB,MAA0B,MAAsC;AAC7F,QAAM,cAAc,sBAAsB,MAAM,MAAM,QAAQ;AAC9D,MAAI,CAAC,YAAa,QAAO;AAEzB,SAAO;AAAA,yCACgC,WAAW;AAAA;AAEpD;AAPS;AAST,SAAS,mBAAmB,MAA8B,SAAkB;AAC1E,QAAM,aACJ,OAAO,KAAK,OAAO,YAAY,YAAY,KAAK,OAAO,YAAY,OAC/D,KAAK,OAAO,UACZ,CAAC;AACP,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AAAA,IAC9B,WAAW,aAAa,IAAI;AAAA,IAC5B,iBAAiB,mBAAmB,IAAI;AAAA,IACxC,GAAG;AAAA,EACL;AACF;AAZS;AAcT,SAAS,wBAAwB,MAA8B,SAAkB;AAC/E,SAAO;AAAA,IACL,QAAQ,IAAI,IAAI,QAAQ,GAAG,EAAE;AAAA,IAC7B,OAAO,KAAK;AAAA,IACZ,MAAM;AAAA,IACN,QAAQ,KAAK,OAAO,UAAU;AAAA,IAC9B,KAAK;AAAA,MACH,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,GAAG,aAAa,IAAI,CAAC;AAAA,MAC3B,SAAS;AAAA,MACT,OAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,UAAU;AAAA,IACV,MAAM,mBAAmB,MAAM,OAAO;AAAA,IACtC,SAAS,KAAK,OAAO,WAAW;AAAA,IAChC,QAAQ,KAAK,OAAO,UAAU;AAAA,IAC9B,SAAS;AAAA,IACT,UAAU;AAAA,MACR,cAAc;AAAA,MACd,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF;AA/BS;AAiCT,SAAS,6BACP,YACA,MACA,SACiB;AACjB,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,cAAc,mBAAmB,YAAY,IAAI;AACvD,QAAM,kBAAkB,6BACtB,yBAAyB;AAAA,IACvB,OAAO,YAAY,IAAI,iBAAiB;AAAA,IACxC,OAAO,KAAK;AAAA,IACZ,WAAW,aAAa,IAAI;AAAA,IAC5B,SAAS,IAAI;AAAA,EACf,CAAC,GANqB;AAOxB,QAAM,cAAc,wBAAC,iBAAyB;AAAA,IAC5C,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,EACnB,IAHoB;AAKpB,QAAM,aAAa,yBAAyB,GAAG;AAC/C,MAAI,YAAY;AACd,UAAM,YAAY;AAAA,MAChB,YAAY,IAAI,cAAc;AAAA,MAC9B,mBAAmB,MAAM,OAAO;AAAA,IAClC;AACA,WAAO,IAAI,SAAS,eAAe,cAAc,UAAU,cAAc,UAAU,SAAS;AAAA,MAC1F,QAAQ;AAAA,MACR,SAAS,YAAY,2BAA2B;AAAA,IAClD,CAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,0BAA0B,KAAK,KAAK,OAAO,WAAW,IAAI;AAChF,MAAI,kBAAkB,OAAO;AAC3B,WAAO,IAAI;AAAA,MACT,qBAAqB,gBAAgB,GAAG;AAAA,QACtC,SAAS,IAAI;AAAA,QACb,gBAAgB;AAAA,MAClB,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,YAAY,gCAAgC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACA,MAAI,kBAAkB,YAAY;AAChC,WAAO,IAAI;AAAA,MACT,0BAA0B,gBAAgB,GAAG;AAAA,QAC3C,qBAAqB;AAAA,MACvB,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,YAAY,8BAA8B;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,yBAAyB,KAAK,KAAK,OAAO,UAAU,IAAI,GAAG;AAC7D,WAAO,IAAI;AAAA,MACT,oBAAoB;AAAA,QAClB,OAAO,KAAK;AAAA,QACZ,SAAS,KAAK,OAAO,WAAW;AAAA,QAChC,QAAQ,KAAK,OAAO,UAAU;AAAA,QAC9B,SAAS,IAAI;AAAA,MACf,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,YAAY,2BAA2B;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,4BAA4B,GAAG,GAAG;AACpC,UAAM,OAAO,4BAA4B,wBAAwB,MAAM,OAAO,CAAC;AAC/E,UAAM,QAAQ,aAAa,IAAI;AAC/B,WAAO,IAAI;AAAA,MACT,KAAK,UAAU;AAAA,QACb,GAAG;AAAA,QACH,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,GAAG,KAAK;AAAA,UACR;AAAA,UACA,aAAa,mBAAmB,IAAI;AAAA,UACpC,OAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,YAAY,iCAAiC;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,oBAAoB,GAAG,GAAG;AAC5B,WAAO,IAAI;AAAA,MACT,GAAG,yBAAyB,wBAAwB,MAAM,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA;AAAA,MAC1E;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,YAAY,8BAA8B;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAmB,GAAG,GAAG;AAC3B,WAAO,IAAI;AAAA,MACT,GAAG,wBAAwB,wBAAwB,MAAM,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA;AAAA,MACzE;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,YAAY,8BAA8B;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAjHS;AAmHT,SAAS,WAAW,OAAuB;AACzC,SAAO,MACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ;AAC3B;AANS;AAQT,SAAS,qBAAqB,SAA2B;AACvD,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,SACE,IAAI,SAAS,SAAS,KAAK,KAC3B,QAAQ,QAAQ,IAAI,QAAQ,GAAG,SAAS,eAAe,MAAM,QAC7D,QAAQ,QAAQ,IAAI,QAAQ,GAAG,SAAS,YAAY,MAAM;AAE9D;AAPS;AAST,SAAS,gBAAgB,OAAuB;AAC9C,SAAO,WAAW,KAAK,EAAE,QAAQ,MAAM,OAAO;AAChD;AAFS;AAIT,SAAS,QAAQ,OAAuB;AACtC,SAAO,MACJ,YAAY,EACZ,QAAQ,YAAY,EAAE,EACtB,QAAQ,cAAc,IAAI,EAC1B,QAAQ,eAAe,GAAG,EAC1B,QAAQ,UAAU,EAAE;AACzB;AAPS;AAST,SAAS,gBAAgB;AACvB,QAAM,OAAO,oBAAI,IAAoB;AAErC,SAAO,CAAC,UAAkB;AACxB,UAAM,OAAO,QAAQ,KAAK,KAAK;AAC/B,UAAM,QAAQ,KAAK,IAAI,IAAI,KAAK;AAChC,SAAK,IAAI,MAAM,QAAQ,CAAC;AACxB,WAAO,UAAU,IAAI,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC;AAAA,EAClD;AACF;AATS;AAWT,SAAS,UAAU,OAAuB;AACxC,SAAO,MAAM,QAAQ,YAAY,EAAE;AACrC;AAFS;AAIT,SAAS,aAAa,MAA4D;AAChF,QAAM,QAAQ,2BAA2B,KAAK,IAAI;AAClD,QAAM,QAAQ,QAAQ,CAAC;AACvB,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,EAAE,QAAQ,MAAM,CAAC,GAAgB,QAAQ,MAAM,OAAO;AAC/D;AALS;AAOT,SAAS,mBAAmB,MAAc,OAAuD;AAC/F,QAAM,UAAU,KAAK,KAAK;AAC1B,SACE,QAAQ,UAAU,MAAM,UAAU,MAAM,KAAK,OAAO,EAAE,MAAM,CAAC,SAAS,SAAS,MAAM,MAAM;AAE/F;AALS;AAOT,SAAS,sBAAsB,MAAsB;AACnD,QAAM,SAAmB,CAAC;AAC1B,MAAI,QAAsD;AAE1D,aAAW,QAAQ,KAAK,MAAM,IAAI,GAAG;AACnC,UAAM,YAAY,aAAa,IAAI;AACnC,QAAI,OAAO;AACT,aAAO,KAAK,IAAI;AAChB,UAAI,aAAa,UAAU,WAAW,MAAM,UAAU,mBAAmB,MAAM,KAAK,GAAG;AACrF,gBAAQ;AAAA,MACV;AACA;AAAA,IACF;AAEA,QAAI,WAAW;AACb,cAAQ;AACR,aAAO,KAAK,IAAI;AAChB;AAAA,IACF;AAEA,QAAI,kBAAkB,KAAK,IAAI,KAAK,oCAAoC,KAAK,IAAI,GAAG;AAClF;AAAA,IACF;AAEA,WAAO,KAAK,IAAI;AAAA,EAClB;AAEA,SAAO,OAAO,KAAK,IAAI;AACzB;AA5BS;AA8BT,SAAS,aAAa,OAAuB;AAC3C,SAAO,MACJ,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG,EACpB,QAAQ,UAAU,GAAG;AAC1B;AAPS;AAST,IAAM,uBAAuB,oBAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,+BAA+B,oBAAI,IAAI;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,gBAAgB,OAAwB;AAC/C,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,CAAC,WAAW,KAAK,KAAK,OAAO,EAAG,QAAO;AAE3C,QAAM,QAAQ,QAAQ,YAAY;AAClC,MAAI,qBAAqB,IAAI,KAAK,EAAG,QAAO;AAE5C,QAAM,WAAW,QAAQ,MAAM,OAAO,EAAE,OAAO,OAAO,EAAE,IAAI,KAAK;AACjE,QAAM,gBAAgB,SAAS,YAAY;AAC3C,MAAI,6BAA6B,IAAI,aAAa,EAAG,QAAO;AAC5D,MAAI,SAAS,WAAW,GAAG,KAAK,SAAS,SAAS,EAAG,QAAO;AAE5D,SAAO,yBAAyB,KAAK,QAAQ;AAC/C;AAbS;AAeT,SAAS,cAAc,MAIrB;AACA,QAAM,UAAU,QAAQ,IAAI,KAAK;AACjC,QAAM,WAAW,OAAO,MAAM,MAAM,IAAI,CAAC,KAAK;AAC9C,QAAM,gBAAgB,OACnB,MAAM,uDAAuD,IAAI,CAAC,GACjE,KAAK;AACT,SAAO,EAAE,UAAU,OAAO,iBAAiB,UAAU,kBAAkB,QAAQ,aAAa,EAAE;AAChG;AAXS;AAaT,SAAS,uBAAuB,MAA6B;AAC3D,QAAM,UAAU,KAAK,KAAK;AAC1B,QAAM,QAAQ,+CAA+C,KAAK,OAAO;AACzE,QAAM,QAAQ,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC;AACnD,SAAO,OAAO,KAAK,KAAK;AAC1B;AALS;AAOT,SAAS,kBAAkB,MAAuB;AAChD,SAAO,sDAAsD,KAAK,IAAI;AACxE;AAFS;AAIT,SAAS,qBAAqB,OAAuB;AACnD,SAAO,MAAM,QAAQ,MAAM,QAAQ;AACrC;AAFS;AAIT,SAAS,oBAAoB,MAAc,OAAuB;AAChE,QAAM,QAAQ,gCAAgC,KAAK,IAAI;AACvD,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,CAAC,EAAE,QAAQ,QAAQ,UAAU,IAAI;AACvC,QAAM,OAAO,WAAW,KAAK;AAC7B,MAAI,kBAAkB,IAAI,EAAG,QAAO;AACpC,QAAM,SAAS,UAAU,qBAAqB,KAAK,CAAC;AACpD,SAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,IAAI,MAAM,KAAK,QAAQ,MAAM,EAAE;AAC3E;AARS;AAUT,SAAS,sBAAsB,MAAsB;AACnD,QAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,QAAM,SAAmB,CAAC;AAC1B,MAAI,QAAsD;AAE1D,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,UAAM,YAAY,aAAa,IAAI;AAEnC,QAAI,OAAO;AACT,aAAO,KAAK,IAAI;AAChB,UAAI,aAAa,UAAU,WAAW,MAAM,UAAU,mBAAmB,MAAM,KAAK,GAAG;AACrF,gBAAQ;AAAA,MACV;AACA;AAAA,IACF;AAEA,QAAI,WAAW;AACb,cAAQ;AACR,aAAO,KAAK,IAAI;AAChB;AAAA,IACF;AAEA,UAAM,QAAQ,uBAAuB,IAAI;AACzC,QAAI,CAAC,OAAO;AACV,aAAO,KAAK,IAAI;AAChB;AAAA,IACF;AAEA,QAAI,aAAa,QAAQ;AACzB,WAAO,aAAa,MAAM,WAAW,MAAM,UAAU,KAAK,IAAI,KAAK,MAAM,IAAI;AAC3E,oBAAc;AAAA,IAChB;AAEA,UAAM,eAAe,aAAa,MAAM,UAAU,KAAK,EAAE;AACzD,QAAI,CAAC,cAAc;AACjB,aAAO,KAAK,IAAI;AAChB;AAAA,IACF;AAEA,WAAO,KAAK,oBAAoB,MAAM,UAAU,KAAK,IAAI,KAAK,CAAC;AAC/D,YAAQ;AACR,YAAQ;AAAA,EACV;AAEA,SAAO,OAAO,KAAK,IAAI;AACzB;AA9CS;AAgDT,SAAS,mBAAmB,MAAsB;AAChD,SAAO,UAAU,KAAK,QAAQ,OAAO,EAAE,CAAC,EAAE,QAAQ,oBAAoB,cAAc;AACtF;AAFS;AAIT,SAAS,qBAAqB,YAAY,aAAqB;AAC7D,SAAO,kBAAkB,SAAS;AACpC;AAFS;AAIT,SAAS,mBAAmB,MAAsB;AAChD,QAAM,OAAO,cAAc;AAC3B,QAAM,WAAW,IAAI,SAAS;AAE9B,WAAS,UAAU,CAACE,OAAM,OAAO,QAAQ;AACvC,UAAM,KAAK,KAAK,OAAO,UAAUA,KAAI,CAAC;AACtC,WAAO,KAAK,KAAK,QAAQ,gBAAgB,EAAE,CAAC,sCAAsC,gBAAgB,EAAE,CAAC,KAAKA,KAAI,UAAU,KAAK;AAAA;AAAA,EAC/H;AAEA,WAAS,OAAO,CAAC,MAAM,YAAY,YAAY;AAC7C,UAAM,EAAE,UAAU,OAAO,iBAAiB,IAAI,cAAc,UAAU;AACtE,UAAM,UAAU,UAAU,aAAa,IAAI,IAAI;AAC/C,UAAM,cAAc,mBAAmB,OAAO;AAC9C,UAAM,qBAAqB,oBAAoB,gBAAgB,KAAK;AACpE,UAAM,SAAS,qBACX;AAAA,qCAC6B,WAAW,KAAK,CAAC;AAAA,MAChD,qBAAqB,CAAC;AAAA,YAEpB,qBAAqB,8BAA8B;AAEvD,WAAO,mCAAmC,qBAAqB,sBAAsB,kBAAkB,oBAAoB,gBAAgB,QAAQ,CAAC;AAAA,IACpJ,MAAM;AAAA,uCAC6B,gBAAgB,QAAQ,CAAC,KAAK,WAAW;AAAA;AAAA;AAAA,EAE9E;AAEA,WAAS,QAAQ,CAAC,QAAQC,UACxB,sGAAsG,MAAM,kBAAkBA,KAAI;AAAA;AAEpI,WAAS,aAAa,CAAC,UAAU,eAAe,KAAK;AAAA;AACrD,WAAS,WAAW,CAAC,SAAS,SAAS,WAAW,IAAI,CAAC;AAEvD,WAAS,OAAO,CAAC,MAAM,OAAOD,UAAS;AACrC,UAAM,WAAW,QAAQ;AACzB,UAAM,iBAAiB,QAAQ,WAAW,gBAAgB,KAAK,CAAC,MAAM;AACtE,WAAO,YAAY,gBAAgB,QAAQ,CAAC,IAAI,cAAc,IAAIA,KAAI;AAAA,EACxE;AAEA,WAAS,QAAQ,CAAC,MAAM,OAAOA,UAAS;AACtC,UAAM,iBAAiB,QAAQ,WAAW,gBAAgB,KAAK,CAAC,MAAM;AACtE,WAAO,aAAa,gBAAgB,IAAI,CAAC,UAAU,gBAAgBA,KAAI,CAAC,IAAI,cAAc;AAAA,EAC5F;AAEA,QAAM,OAAO,OAAO,sBAAsB,sBAAsB,IAAI,CAAC,GAAG;AAAA,IACtE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL;AAAA,EACF,CAAC;AAED,SAAO,KAAK,KAAK;AACnB;AApDS;AA4DT,SAAS,gBAAgB,MAAc,OAA0B;AAC/D,QAAM,OAAO,cAAc;AAC3B,QAAM,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC;AAE/C,SAAO,KACJ,MAAM,OAAO,EACb,IAAI,CAAC,SAAS,KAAK,MAAM,mBAAmB,CAAC,EAC7C,OAAO,CAAC,UAAqC,QAAQ,KAAK,CAAC,EAC3D,IAAI,CAAC,WAAW;AAAA,IACf,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC;AAAA,IACxB,OAAO,MAAM,CAAC,EAAE,KAAK;AAAA,IACrB,OAAO,MAAM,CAAC,EAAE;AAAA,EAClB,EAAE,EACD,OAAO,CAAC,SAAS,KAAK,SAAS,QAAQ;AAC5C;AAdS;AAgBT,SAAS,WAAW,MAAmD;AACrE,QAAM,QAAQ,KAAK,OAAO;AAC1B,SAAO,SAAS,OAAO,UAAU,YAAY,QAAQ,SAAS,OAAO,MAAM,OAAO,WAC7E,MAAM,KACP,CAAC;AACP;AALS;AAOT,SAAS,aAAa,MAAsC;AAC1D,QAAM,QAAQ,KAAK,OAAO;AAC1B,SAAO,SAAS,OAAO,UAAU,YAAY,UAAU,QACnD,OAAQ,MAA6B,QAAQ,WAAW,IACxD;AACN;AALS;AAOT,SAAS,oBAAoB,MAA8B,KAAa,UAA0B;AAChG,QAAM,SAAS,WAAW,IAAI,EAAE;AAChC,QAAM,QACJ,UAAU,OAAO,WAAW,WAAY,OAAmC,GAAG,IAAI;AACpF,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AALS;AAOT,SAAS,iBAAiB,MAAsC;AAC9D,QAAM,MAAM,WAAW,IAAI,EAAE,QAAQ;AACrC,SAAO,OAAO,OAAO,QAAQ,YAAY,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ;AACvF;AAHS;AAKT,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,qBAAqB,IAAI;AAAA,EAC7B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,CAAC;AACtC;AAUA,SAAS,wBACP,OACgC;AAChC,SAAO,UAAU;AACnB;AAJS;AAMT,SAAS,oBAAoB,GAAiB,GAAyB;AACrE,QAAM,SAAS,mBAAmB,IAAI,EAAE,IAAI,KAAK;AACjD,QAAM,SAAS,mBAAmB,IAAI,EAAE,IAAI,KAAK;AACjD,SAAO,SAAS,UAAU,EAAE,MAAM,cAAc,EAAE,KAAK;AACzD;AAJS;AAMT,SAAS,kBAAkB,MAA4B;AACrD,MAAI,KAAK,QAAS,QAAO,KAAK;AAC9B,MAAI,KAAK,KAAK,WAAW,eAAe,EAAG,QAAO;AAClD,MAAI,KAAK,KAAK,WAAW,UAAU,EAAG,QAAO;AAC7C,SAAO;AACT;AALS;AAOT,SAAS,aAAa,SAAyB;AAC7C,SAAO,WAAW,QAAQ,OAAO,CAAC;AACpC;AAFS;AAIT,SAAS,eAAe,OAAkD;AACxE,SAAO,CAAC,CAAC,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AACrE;AAFS;AAIT,SAAS,WAAW,OAAoC;AACtD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;AACpE;AAFS;AAIT,SAAS,mBAAmB,OAAoC;AAC9D,SAAO,OAAO,UAAU,WAAW,MAAM,KAAK,IAAI;AACpD;AAFS;AAIT,SAAS,qBAAqB,OAAuB;AACnD,MAAI,UAAU,OAAO,UAAU,IAAK,QAAO;AAC3C,SAAO,YAAY,KAAK;AAC1B;AAHS;AAKT,SAAS,qBAAqB,MAAuD;AACnF,QAAM,aAAa,KAAK,OAAO;AAC/B,MAAI,CAAC,eAAe,UAAU,KAAK,CAAC,MAAM,QAAQ,WAAW,OAAO,EAAG,QAAO,CAAC;AAC/E,SAAO,WAAW,QAAQ,IAAI,8BAA8B,EAAE,OAAO,uBAAuB;AAC9F;AAJS;AAMT,SAAS,+BAA+B,OAA8C;AACpF,MAAI,CAAC,eAAe,KAAK,EAAG,QAAO;AAEnC,QAAM,QAAQ,WAAW,MAAM,KAAK,KAAK,WAAW,MAAM,KAAK;AAC/D,QAAM,OAAO,WAAW,MAAM,IAAI;AAClC,QAAM,OAAO,mBAAmB,MAAM,IAAI,KAAK,mBAAmB,MAAM,IAAI;AAC5E,QAAM,OAAO,WAAW,MAAM,IAAI,KAAK,WAAW,MAAM,GAAG;AAC3D,QAAM,cAAc,MAAM,QAAQ,MAAM,QAAQ,IAC5C,MAAM,WACN,MAAM,QAAQ,MAAM,KAAK,IACvB,MAAM,QACN,CAAC;AACP,QAAM,WAAW,YAAY,IAAI,8BAA8B,EAAE,OAAO,uBAAuB;AAE/F,MAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,SAAS,WAAW,EAAG,QAAO;AAC9D,SAAO;AAAA,IACL,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,IACzB,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,IACvB,GAAI,SAAS,SAAY,EAAE,MAAM,qBAAqB,IAAI,EAAE,IAAI,CAAC;AAAA,IACjE,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,IACvB;AAAA,EACF;AACF;AAtBS;AAwBT,SAAS,sBAAsB,OAAuB;AACpD,SAAO;AAAA,IACL,QAAQ,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,IACtD,QAAQ,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,EACxD;AACF;AALS;AAOT,SAAS,6BACP,MACA,MAC0B;AAC1B,MAAI,KAAK,SAAS,OAAW,QAAO,KAAK,OAAO,IAAI,KAAK,IAAI;AAC7D,MAAI,KAAK,KAAM,QAAO,KAAK,OAAO,IAAI,KAAK,IAAI;AAC/C,SAAO;AACT;AAPS;AAST,SAAS,uBAAuB,MAAuD;AACrF,SAAO,eAAe,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,QAAQ,CAAC;AAClE;AAFS;AAIT,SAAS,wBAAwB,OAAwB;AACvD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,OAAO,MAAM,KAAK;AACxB,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,cAAc,KAAK,IAAI,EAAG,QAAO;AACrC,MAAI,0DAA0D,KAAK,IAAI,GAAG;AACxE,WAAO,8CAA8C,IAAI;AAAA,EAC3D;AACA,SAAO;AACT;AATS;AAWT,SAAS,kBACP,MACA,MACA,YAAY,gBACJ;AACR,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,eAAe,uBAAuB,IAAI;AAChD,QAAM,iBAAiB,aAAa,IAAI,KAAK;AAC7C,QAAM,MAAM,wBAAwB,cAAc;AAClD,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,gBAAgB,SAAS,wBAAwB,gBAAgB,IAAI,CAAC,wBAAwB,GAAG;AAC1G;AAXS;AAaT,SAAS,mBACP,MACA,MACA,OACA,WACQ;AACR,SAAO,gBAAgB,SAAS,KAAK,kBAAkB,MAAM,IAAI,CAAC,oCAAoC,WAAW,KAAK,CAAC;AACzH;AAPS;AAST,SAAS,oBAAoB,MAAoB,YAA4C;AAC3F,MAAI,YAAY,MAAO,QAAO,WAAW;AACzC,MAAI,KAAK,SAAS,GAAI,QAAO;AAC7B,MAAI,KAAK,SAAS,eAAgB,QAAO;AACzC,MAAI,KAAK,SAAS,2BAA4B,QAAO;AACrD,MAAI,KAAK,SAAS,2BAA4B,QAAO;AACrD,MAAI,KAAK,KAAK,WAAW,eAAe,GAAG;AACzC,WAAO,KAAK,MAAM,QAAQ,sBAAsB,EAAE;AAAA,EACpD;AACA,SAAO,KAAK;AACd;AAVS;AAYT,SAAS,kBACP,MACA,YACA,MACA,YACQ;AACR,QAAM,SAAS,KAAK,SAAS;AAC7B,SAAO,mBAAmB,SAAS,SAAS,OAAO,WAAW,gBAAgB,KAAK,IAAI,CAAC,KAAK,mBAAmB,MAAM,YAAY,MAAM,oBAAoB,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACtM;AARS;AAUT,SAAS,8BACP,OACA,MACA,OAAO,oBAAI,IAAY,GACP;AAChB,QAAM,UAA0B,CAAC;AACjC,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,6BAA6B,MAAM,IAAI;AACpD,QAAI,QAAQ,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG;AAChC,WAAK,IAAI,KAAK,IAAI;AAClB,cAAQ,KAAK,IAAI;AAAA,IACnB;AACA,YAAQ,KAAK,GAAG,8BAA8B,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA,EAC1E;AACA,SAAO;AACT;AAfS;AAiBT,SAAS,uBACP,OACA,MACgB;AAChB,MAAI,CAAC,KAAM,QAAO,CAAC,GAAG,KAAK,EAAE,KAAK,mBAAmB;AAErD,QAAM,OAAO,sBAAsB,KAAK;AACxC,QAAM,kBAAkB,8BAA8B,qBAAqB,IAAI,GAAG,IAAI;AACtF,MAAI,gBAAgB,WAAW,EAAG,QAAO,CAAC,GAAG,KAAK,EAAE,KAAK,mBAAmB;AAE5E,QAAM,kBAAkB,IAAI,IAAI,gBAAgB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AACxE,QAAM,iBAAiB,MACpB,OAAO,CAAC,SAAS,CAAC,gBAAgB,IAAI,KAAK,IAAI,CAAC,EAChD,KAAK,mBAAmB;AAC3B,SAAO,CAAC,GAAG,iBAAiB,GAAG,cAAc;AAC/C;AAfS;AAiBT,SAAS,0BACP,MACA,YACA,MACQ;AACR,MAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,MAAO,QAAO;AACtC,QAAM,SAAS,KAAK,SAAS;AAC7B,SAAO,mBAAmB,SAAS,SAAS,OAAO,WAAW,gBAAgB,KAAK,IAAI,CAAC,KAAK,mBAAmB,MAAM,KAAK,MAAM,KAAK,OAAO,oBAAoB,CAAC;AACpK;AARS;AAUT,SAAS,gCACP,MACA,WACA,MACQ;AACR,QAAM,QAAQ,KAAK;AACnB,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,wDAAwD,gBAAgB,QAAQ,KAAK,CAAC,CAAC;AAAA,wCACxD,mBAAmB,MAAM,KAAK,MAAM,OAAO,wBAAwB,CAAC;AAAA;AAAA,EAE1G,SAAS;AAAA;AAAA;AAGX;AAbS;AAeT,SAAS,6BACP,OACA,MACA,YACA,MACQ;AACR,QAAM,gBAA0B,CAAC;AACjC,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,6BAA6B,MAAM,IAAI;AACpD,UAAM,YAAY,6BAA6B,KAAK,UAAU,MAAM,YAAY,IAAI;AAEpF,QAAI,KAAK,SAAS,SAAS,GAAG;AAC5B,oBAAc,KAAK,gCAAgC,MAAM,WAAW,IAAI,CAAC;AACzE;AAAA,IACF;AAEA,UAAM,WAAW,OACb,kBAAkB,MAAM,YAAY,MAAM,IAAI,IAC9C,0BAA0B,MAAM,YAAY,IAAI;AACpD,QAAI,SAAU,eAAc,KAAK,QAAQ;AAAA,EAC3C;AACA,SAAO,cAAc,KAAK,IAAI;AAChC;AAtBS;AAwBT,SAAS,+BACP,SACA,MACA,YACA,MACQ;AACR,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,KAAK,aAAa,KAAK;AAC7B,QAAM,QAAQ,6BAA6B,QAAQ,UAAU,MAAM,YAAY,IAAI;AACnF,SAAO;AAAA,iGACwF,gBAAgB,EAAE,CAAC,0BAA0B,mBAAmB,MAAM,QAAQ,MAAM,OAAO,sBAAsB,CAAC;AAAA,aACtM,gBAAgB,EAAE,CAAC;AAAA,EAC9B,KAAK;AAAA;AAAA;AAGP;AAfS;AAiBT,SAAS,8BACP,OACA,YACA,MACQ;AACR,SAAO,CAAC,GAAG,KAAK,EACb,KAAK,mBAAmB,EACxB,IAAI,CAAC,SAAS,kBAAkB,MAAM,YAAY,IAAI,CAAC,EACvD,KAAK,IAAI;AACd;AATS;AAWT,SAAS,oBACP,OACA,YACA,MACQ;AACR,QAAM,oBAAoB,qBAAqB,IAAI;AACnD,MAAI,kBAAkB,SAAS,GAAG;AAChC,UAAM,OAAO,sBAAsB,KAAK;AACxC,UAAME,oBAAmB,kBACtB,IAAI,CAAC,YAAY;AAChB,UAAI,QAAQ,SAAS,SAAS,GAAG;AAC/B,eAAO,+BAA+B,SAAS,MAAM,YAAY,IAAI;AAAA,MACvE;AACA,YAAM,OAAO,6BAA6B,SAAS,IAAI;AACvD,aAAO,OACH,kBAAkB,MAAM,YAAY,MAAM,OAAO,IACjD,0BAA0B,SAAS,YAAY,IAAI;AAAA,IACzD,CAAC,EACA,OAAO,OAAO,EACd,KAAK,IAAI;AAEZ,WAAO;AAAA;AAAA,EAETA,iBAAgB;AAAA;AAAA;AAAA,EAGhB;AAEA,QAAM,SAAS,oBAAI,IAA4B;AAC/C,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK,SAAS,KAAK,UAAU,kBAAkB,IAAI;AACjE,UAAM,UAAU,OAAO,IAAI,KAAK,KAAK,CAAC;AACtC,YAAQ,KAAK,IAAI;AACjB,WAAO,IAAI,OAAO,OAAO;AAAA,EAC3B;AAEA,QAAM,mBAAmB,MAAM,KAAK,OAAO,QAAQ,CAAC,EACjD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;AAClB,UAAM,SAAS,sBAAsB,QAAQ,CAAC;AAC9C,UAAM,SAAS,sBAAsB,QAAQ,CAAC;AAC9C,YAAQ,WAAW,KAAK,MAAM,WAAW,WAAW,KAAK,MAAM,WAAW,EAAE,cAAc,CAAC;AAAA,EAC7F,CAAC,EACA,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM;AACzB,UAAM,KAAK,aAAa,OAAO;AAC/B,UAAM,QAAQ,8BAA8B,OAAO,YAAY,IAAI;AACnE,WAAO;AAAA,iGACoF,gBAAgB,EAAE,CAAC,0BAA0B,mBAAmB,MAAM,QAAW,SAAS,sBAAsB,CAAC;AAAA,aACrM,gBAAgB,EAAE,CAAC;AAAA,EAC9B,KAAK;AAAA;AAAA;AAAA,EAGH,CAAC,EACA,KAAK,IAAI;AAEZ,SAAO;AAAA;AAAA,EAEP,gBAAgB;AAAA;AAAA;AAGlB;AA3DS;AA6DT,SAAS,mBACP,OACA,YACA,MACQ;AACR,QAAM,eAAe,uBAAuB,OAAO,IAAI;AACvD,QAAM,cAAc,aAAa,UAAU,CAAC,SAAS,KAAK,SAAS,UAAU;AAC7E,MAAI,gBAAgB,GAAI,QAAO;AAE/B,QAAM,WAAW,aAAa,cAAc,CAAC;AAC7C,QAAM,OAAO,aAAa,cAAc,CAAC;AACzC,MAAI,CAAC,YAAY,CAAC,KAAM,QAAO;AAE/B,QAAM,gBAAgB,wBAAC,cACrB,0LAA0L,cAAc,SAAS,oBAAoB,gBAAgB,cADjO;AAEtB,QAAM,aAAa,wBAAC,MAAoB,cACtC,0CAA0C,SAAS,WAAW,gBAAgB,KAAK,IAAI,CAAC;AAAA,qDACvC,SAAS,KAAK,cAAc,SAAS,GAAG,cAAc,SAAS,CAAC,GAAG,WAAW,KAAK,KAAK,CAAC,KAAK,GAAG,WAAW,KAAK,KAAK,CAAC,GAAG,cAAc,SAAS,CAAC,EAAE;AAAA,0CAC/J,cAAc,SAAS,kBAAkB,WAAW;AAAA,OAHzE;AAMnB,SAAO;AAAA,IACL,WAAW,WAAW,UAAU,MAAM,IAAI,EAAE;AAAA,IAC5C,OAAO,WAAW,MAAM,MAAM,IAAI,EAAE;AAAA;AAExC;AAzBS;AA2BT,SAAS,oBAAoB,OAAuB;AAClD,SAAO,MAAM,QAAQ,UAAU,GAAG,EAAE,QAAQ,SAAS,CAAC,cAAc,UAAU,YAAY,CAAC;AAC7F;AAFS;AAIT,SAAS,oBAAoB,MAAuC;AAClE,QAAM,aAAa,KAAK,OAAO;AAC/B,MAAI,eAAe,MAAO,QAAO;AACjC,MAAI,cAAc,OAAO,eAAe,YAAY,aAAa,YAAY;AAC3E,WAAQ,WAAqC,YAAY;AAAA,EAC3D;AACA,SAAO;AACT;AAPS;AAST,SAAS,sBAAsB,MAA0B,MAAsC;AAC7F,MAAI,CAAC,oBAAoB,IAAI,EAAG,QAAO;AAEvC,QAAM,WAAW,YAAY,KAAK,IAAI,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AACjE,MAAI,SAAS,SAAS,EAAG,QAAO;AAEhC,QAAM,iBAAiB,SAAS,MAAM,GAAG,EAAE;AAC3C,QAAM,gBAAgB,eAAe,eAAe,SAAS,CAAC;AAC9D,QAAM,iBAAiB,SAAS,SAAS,SAAS,CAAC;AACnD,QAAM,QAAQ,eAAe,KAAK,KAAK;AACvC,QAAM,aAAa,eAAe,KAAK,GAAG;AAC1C,QAAM,aAAa,UAAU,MAAM,IAAI,UAAU,KAAK,GAAG,KAAK,IAAI,UAAU;AAE5E,SAAO;AAAA;AAAA,+DAEsD,gBAAgB,UAAU,CAAC,KAAK,WAAW,oBAAoB,aAAa,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,0CAInG,WAAW,oBAAoB,cAAc,CAAC,CAAC;AAAA;AAAA;AAGzF;AAtBS;AAwBT,SAAS,wBAAwB,WAAW,MAAc;AACxD,SAAO;AAAA,IACL,WAAW,4IAA4I,EAAE;AAAA;AAAA;AAG7J;AALS;AAOT,SAAS,sBAAsB,aAA6B;AAC1D,SAAO;AAAA,+BACsB,gBAAgB,WAAW,CAAC;AAC3D;AAHS;AAKT,SAAS,kCAA0C;AACjD,SAAO,WAAW,uCAAuC,CAAC;AAC5D;AAFS;AAIT,SAAS,eAAe,OAA0B;AAChD,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,SAAO;AAAA;AAAA;AAAA,EAGP,MACC;AAAA,IACC,CAAC,SACC,oCAAoC,MAAM,CAAC,MAAM,OAAO,SAAS,OAAO,+BAA+B,KAAK,KAAK,YAAY,gBAAgB,KAAK,EAAE,CAAC,KAAK,WAAW,KAAK,KAAK,CAAC;AAAA,EACpL,EACC,KAAK,IAAI,CAAC;AAAA;AAAA;AAGb;AAbS;AAeT,SAAS,wBAAwB,MAAsC;AACrE,QAAM,YAAY,KAAK,UAAU,eAAe,KAAK,KAAK,CAAC;AAC3D,SAAO,iPAAiP,SAAS;AACnQ;AAHS;AAKT,SAAS,qCAA6C;AACpD,SAAO;AACT;AAFS;AAIT,SAAS,8BAAsC;AAC7C,SAAO;AACT;AAFS;AAIT,SAAS,yBAAyB,MAAsC;AACtE,SAAO,GAAG,wBAAwB,IAAI,CAAC;AAAA,EACvC,4BAA4B,CAAC;AAAA,EAC7B,mCAAmC,CAAC;AACtC;AAJS;AAMT,IAAM,gBAAgB,oBAAI,IAAoB;AAE9C,SAAS,mBAAmB,UAAkB,OAAO,oBAAI,IAAY,GAAW;AAC9E,QAAM,WAAWP,MAAK,QAAQ,QAAQ;AACtC,MAAI,KAAK,IAAI,QAAQ,EAAG,QAAO;AAC/B,OAAK,IAAI,QAAQ;AAEjB,QAAM,SAASG,cAAa,UAAU,MAAM;AAC5C,SAAO,OAAO,QAAQ,iCAAiC,CAAC,QAAQ,eAAuB;AACrF,QAAI;AACF,YAAM,eAAe,WAAW,WAAW,GAAG,IAC1CH,MAAK,QAAQA,MAAK,QAAQ,QAAQ,GAAG,UAAU,IAC/C,cAAc,QAAQ,EAAE,QAAQ,UAAU;AAC9C,aAAO,mBAAmB,cAAc,IAAI;AAAA,IAC9C,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAhBS;AAkBT,SAAS,2BAA2B,SAAyC;AAC3E,QAAM,WAAWA,MAAK,QAAQ,QAAQ,IAAI;AAC1C,QAAM,SAAS,cAAc,IAAI,QAAQ;AACzC,MAAI,WAAW,OAAW,QAAO;AAEjC,MAAI;AACF,UAAM,iBAAiB,cAAcA,MAAK,KAAK,UAAU,cAAc,CAAC;AACxE,UAAM,eAAe,eAAe,QAAQ,sCAAsC;AAClF,UAAM,mBAAmB,cAAc,YAAY;AACnD,UAAM,kBAAkB,iBAAiB,QAAQ,uBAAuB;AACxE,UAAM,MAAM,GAAG,mBAAmB,eAAe,CAAC;AAAA,EAAK,mBAAmB,YAAY,CAAC;AACvF,kBAAc,IAAI,UAAU,GAAG;AAC/B,WAAO;AAAA,EACT,QAAQ;AACN,kBAAc,IAAI,UAAU,EAAE;AAC9B,WAAO;AAAA,EACT;AACF;AAjBS;AAmBT,SAAS,wBAAwB,MAAsC;AACrE,QAAM,eAAe,oBAAoB,MAAM,gBAAgB,GAAG;AAClE,QAAM,eAAe,oBAAoB,MAAM,gBAAgB,GAAG;AAElE,SAAO;AAAA,6EACoE,mBAAmB;AAAA,6EACnB,mBAAmB;AAAA,wHACwB,YAAY,2BAA2B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuLzK,sBAAsB;AAAA;AAExB;AAhMS;AAkMT,SAAS,oBACP,MACA,OACA,MACA,UACA,aACA,aACQ;AACR,QAAM,WACJ,OAAO,KAAK,OAAO,QAAQ,YAAY,KAAK,OAAO,OAAO,WAAW,KAAK,OAAO,MAC7E,OAAQ,KAAK,OAAO,IAA4B,SAAS,MAAM,IAC/D;AACN,QAAM,cAAc,KAAK,eAAe,KAAK,OAAO,UAAU,eAAe;AAC7E,QAAM,WAAW,gBAAgB,KAAK,MAAM,iBAAiB,IAAI,CAAC;AAClE,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,gBAAgB,wBAAwB,IAAI;AAElD,SAAO;AAAA,gDACuC,gBAAgB,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,WAK/D,WAAW,KAAK,KAAK,CAAC;AAAA,IAC7B,0BAA0B,WAAW,CAAC;AAAA,8BACZ,mBAAmB;AAAA,8BACnB,mBAAmB;AAAA,IAC7C,cAAc,qCAAqC,WAAW,WAAW,CAAC,OAAO,EAAE;AAAA,WAC5E,QAAQ;AAAA,EACjB,wBAAwB,IAAI,CAAC;AAAA,IAC3B,gBAAgB,gCAAgC,IAAI,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAShD,gBAAgB,wBAAwB,IAAI,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOlC,wBAAwB,CAAC,GAAG,yBAAyB,QAAQ,CAAC;AAAA;AAAA;AAAA,QAG5E,oBAAoB,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,UAIzC,gBAAgB,wBAAwB,KAAK,IAAI,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMnD,sBAAsB,MAAM,IAAI,CAAC;AAAA,EACzC,gCAAgC,MAAM,IAAI,CAAC;AAAA,UACnC,sBAAsB,MAAM,IAAI,CAAC;AAAA,UACjC,mBAAmB,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOxC,eAAe,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhC,gBAAgB,sBAAsB,WAAW,IAAI,EAAE;AAAA,IACvD,yBAAyB,IAAI,CAAC;AAAA;AAAA;AAGlC;AA9ES;AAgFF,SAAS,sBACd,MACA,SACA;AACA,QAAM,cAAc,uBAAuB,MAAM,OAAO;AAExD,SAAO,sCAAe,sBAAsB,SAA4C;AACtF,QAAI,CAAC,MAAM,WAAY,QAAQ,WAAW,SAAS,QAAQ,WAAW,OAAS,QAAO;AAEtF,UAAM,aAAa,0BAA0B,MAAM,OAAO;AAC1D,UAAM,iBAAiB,6BAA6B,YAAY,MAAM,OAAO;AAC7E,QAAI,eAAgB,QAAO;AAE3B,QAAI,CAAC,kBAAkB,MAAM,OAAO,EAAG,QAAO;AAE9C,UAAM,OAAO,SAAS,YAAY,MAAM,OAAO;AAC/C,QAAI,CAAC,KAAM,QAAO;AAElB,QAAI,qBAAqB,OAAO,GAAG;AACjC,YAAM,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AACpC,aAAO,IAAI;AAAA,QACT,2BAA2B,uBAAuB,IAAI,GAAG;AAAA,UACvD;AAAA,UACA,MAAM,KAAK,OAAO,WAAW;AAAA,UAC7B,SAAS,KAAK,OAAO;AAAA,QACvB,CAAC;AAAA,QACD;AAAA,UACE,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAI;AAAA,MACT;AAAA,QACE;AAAA,QACA,sBAAsB,YAAY,IAAI;AAAA,QACtC;AAAA,QACA,2BAA2B,OAAO;AAAA,QAClC,QAAQ,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF,GA/CO;AAgDT;AAtDgB;;;AGj3DhB;AAAA,EACE,+BAAAQ;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB,4BAAAC;AAAA,EACA;AAAA,EACA,4BAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,2BAAAC;AAAA,OAKK;AAmEP,SAAS,SAAS,OAAqC;AACrD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAFS;AAIT,SAAS,qBAAqB,OAAiD;AAC7E,SACE,SAAS,KAAK,KACd,OAAO,MAAM,YAAY,aACzB,OAAO,MAAM,UAAU,YACvB,SAAS,MAAM,MAAM;AAEzB;AAPS;AASF,SAAS,qBAAqB,mBAA8C;AACjF,QAAM,WACJ,OAAO,sBAAsB,WACzB,oBACA,IAAI,IAAI,kBAAkB,GAAG,EAAE;AAErC,SAAO,aAAa,eAAe,SAAS,WAAW,YAAY;AACrE;AAPgB;AAShB,SAAS,KAAK,MAAe,OAAqB,CAAC,GAAa;AAC9D,QAAM,UAAU,IAAI,QAAQ,KAAK,OAAO;AACxC,MAAI,CAAC,QAAQ,IAAI,cAAc,GAAG;AAChC,YAAQ,IAAI,gBAAgB,kBAAkB;AAAA,EAChD;AACA,SAAO,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC;AAChE;AANS;AAQT,SAAS,KAAK,SAAiB,aAAqB,OAAqB,CAAC,GAAa;AACrF,QAAM,UAAU,IAAI,QAAQ,KAAK,OAAO;AACxC,UAAQ,IAAI,gBAAgB,WAAW;AACvC,SAAO,IAAI,SAAS,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC;AACnD;AAJS;AAMT,SAAS,gBAAgB,OAAsD;AAC7E,SAAO,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,MAAM,GAAG,KAAK;AAC3D;AAFS;AAIT,SAASC,cAAa,MAAsC;AAC1D,SAAO,OAAO,KAAK,OAAO,QAAQ,YAAY,KAAK,OAAO,OAAO,WAAW,KAAK,OAAO,MACpF,OAAQ,KAAK,OAAO,IAA4B,SAAS,eAAe,IACxE;AACN;AAJS,OAAAA,eAAA;AAMT,SAAS,kBAAkB,OAA8C;AACvE,SAAO,SAAS,KAAK,KAAK,OAAO,MAAM,kBAAkB;AAC3D;AAFS;AAIT,SAAS,4BACP,aACyF;AACzF,MAAI,CAAC,YAAa,QAAO;AAEzB,MAAI,kBAAkB,WAAW,GAAG;AAClC,WAAO,EAAE,WAAW,aAAa,cAAc,CAAC,EAAE;AAAA,EACpD;AAEA,MAAI,CAAC,YAAY,UAAW,QAAO;AAEnC,SAAO;AAAA,IACL,WAAW,YAAY;AAAA,IACvB,cAAc;AAAA,MACZ,QAAQ,YAAY;AAAA,MACpB,eAAe,YAAY;AAAA,IAC7B;AAAA,EACF;AACF;AAlBS;AAoBT,SAAS,sBAAsB,SAA2B;AACxD,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,QAAQ,gBAAgB,IAAI,aAAa,IAAI,OAAO,CAAC;AAC3D,QAAM,SAAS,gBAAgB,IAAI,aAAa,IAAI,QAAQ,CAAC;AAC7D,QAAM,SAAS,gBAAgB,IAAI,aAAa,IAAI,QAAQ,CAAC;AAE7D,SACE,UAAU,YACV,UAAU,mBACV,WAAW,kBACX,WAAW,uBACX,WAAW,kBACX,WAAW;AAEf;AAdS;AAgBT,SAAS,kBAAkB,QAAqC;AAC9D,SAAO;AAAA,IACL,UACA,CAAC,aAAa,SAAS,eAAe,SAAS,UAAU,MAAM,QAAQ,YAAY,EAAE;AAAA,MACnF;AAAA,IACF;AAAA,EACF;AACF;AAPS;AAST,eAAe,SAAS,SAAoC;AAC1D,MAAI;AACF,WAAO,MAAM,QAAQ,MAAM,EAAE,KAAK;AAAA,EACpC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AANe;AAQf,eAAe,uBAAuB,SAAoC;AACxE,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,QAAQ,gBAAgB,IAAI,aAAa,IAAI,OAAO,CAAC;AAC3D,QAAM,SAAS,gBAAgB,IAAI,aAAa,IAAI,QAAQ,CAAC;AAE7D,MAAI,kBAAkB,KAAK,KAAK,kBAAkB,MAAM,EAAG,QAAO;AAElE,QAAM,OAAO,MAAM,SAAS,OAAO;AACnC,MAAI,CAAC,SAAS,IAAI,EAAG,QAAO;AAE5B,QAAM,aAAa,gBAAgB,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS,MAAS;AAC5F,MAAI,kBAAkB,UAAU,EAAG,QAAO;AAE1C,MAAI,OAAO,KAAK,SAAS,SAAU,QAAO;AAC1C,MAAI,SAAS,KAAK,KAAK,KAAK,OAAO,KAAK,MAAM,SAAS,SAAU,QAAO;AACxE,MAAI,SAAS,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,SAAS,SAAU,QAAO;AAE5E,SAAO;AACT;AAlBe;AAoBf,SAAS,qBACP,OACA,MACQ;AACR,QAAM,QAAQ,KAAK,MAAM,QAAQ,cAAc,EAAE;AACjD,MAAI,QAAQ,SAAS,IAAI,KAAK,EAAE,QAAQ,cAAc,EAAE;AAExD,MAAI,SAAS,SAAS,MAAO,QAAO;AACpC,MAAI,SAAS,KAAK,WAAW,GAAG,KAAK,GAAG,GAAG;AACzC,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACpC;AAEA,SAAO,mBAAmB,IAAI,EAAE,QAAQ,uBAAuB,EAAE;AACnE;AAbS;AAeT,SAAS,qBAAqB,SAAqC;AACjE,QAAM,WAAW,IAAI,IAAI,QAAQ,GAAG,EAAE,SAAS,QAAQ,QAAQ,EAAE,KAAK;AACtE,QAAM,SAAS;AAEf,MAAI,aAAa,UAAU,CAAC,SAAS,WAAW,GAAG,MAAM,GAAG,EAAG,QAAO,CAAC;AAEvE,QAAM,WAAW,aAAa,SAAS,KAAK,SAAS,MAAM,OAAO,SAAS,CAAC;AAC5E,QAAM,QAAQ,SAAS,QAAQ,cAAc,EAAE;AAC/C,QAAM,kBAAkB,gBAAgB,KAAK;AAE7C,MAAI,CAAC,MAAO,QAAO,CAAC;AACpB,MACE,oBAAoB,WACpB,oBAAoB,gBACpB,oBAAoB,cACpB;AACA,WAAO,EAAE,QAAQ,aAAa;AAAA,EAChC;AACA,MACE,oBAAoB,YACpB,oBAAoB,eACpB,oBAAoB,YACpB;AACA,WAAO,EAAE,QAAQ,SAAS;AAAA,EAC5B;AACA,MAAI,oBAAoB,WAAW,oBAAoB,WAAY,QAAO,EAAE,QAAQ,QAAQ;AAC5F,MAAI,oBAAoB,WAAY,QAAO,EAAE,QAAQ,OAAO;AAC5D,MAAI,oBAAoB,gBAAiB,QAAO,EAAE,QAAQ,YAAY;AACtE,MAAI,oBAAoB,aAAc,QAAO,EAAE,QAAQ,aAAa;AACpE,MAAI,oBAAoB,cAAe,QAAO,EAAE,QAAQ,cAAc;AACtE,MAAI,oBAAoB,aAAc,QAAO,EAAE,QAAQ,SAAS;AAChE,MAAI,sBAAsB,KAAK,KAAK,EAAG,QAAO,EAAE,QAAQ,YAAY,MAAM,MAAM;AAEhF,SAAO,EAAE,MAAM,MAAM;AACvB;AAlCS;AAoCT,SAAS,iBAAiB,SAAsC;AAC9D,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,SACE,gBAAgB,IAAI,aAAa,IAAI,QAAQ,KAAK,IAAI,aAAa,IAAI,MAAM,CAAC,KAC9E,qBAAqB,OAAO,EAAE;AAElC;AANS;AAQT,SAASC,oBAAmB,MAAkD;AAC5E,SAAO,KAAK,OAAO,UAAU;AAC/B;AAFS,OAAAA,qBAAA;AAIT,SAASC,oBAAmB,SAAmD;AAC7E,SAAO,sBAAsB,QAAQ,YAAY,QAAQ,IAAI,EAC1D,IAAI,CAAC,SAAS,iBAAiB,QAAQ,YAAY,QAAQ,MAAM,KAAK,IAAI,CAAC,EAC3E,OAAO,CAAC,SAAqC,QAAQ,IAAI,CAAC;AAC/D;AAJS,OAAAA,qBAAA;AAMT,SAAS,iBAAiB,MAAgD;AACxE,SAAO;AAAA,IACL,GAAG,uBAAuB,IAAI;AAAA,IAC9B,YAAY,KAAK;AAAA,EACnB;AACF;AALS;AAOT,SAASC,mBAAkB,MAAgD;AACzE,SAAO;AAAA,IACL,GAAG,uBAAuB,IAAI;AAAA,IAC9B,YAAY,KAAK;AAAA,EACnB;AACF;AALS,OAAAA,oBAAA;AAOT,SAASC,gBAAe,MAAgD;AACtE,SAAO,uBAAuB,IAAI;AACpC;AAFS,OAAAA,iBAAA;AAIT,SAASC,oBAAmB,SAA6B,SAAkB;AACzE,QAAM,aAAa,SAAS,QAAQ,KAAK,OAAO,OAAO,IAAI,QAAQ,KAAK,OAAO,UAAU,CAAC;AAC1F,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AAAA,IAC9B,WAAWL,cAAa,QAAQ,IAAI;AAAA,IACpC,iBAAiBC,oBAAmB,QAAQ,IAAI;AAAA,IAChD,GAAG;AAAA,EACL;AACF;AATS,OAAAI,qBAAA;AAWT,SAASC,yBAAwB,SAA6B,SAAkB;AAC9E,QAAM,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AAEpC,SAAO;AAAA,IACL;AAAA,IACA,OAAO,QAAQ,KAAK;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ,QAAQ,KAAK,OAAO,UAAU;AAAA,IACtC,KAAK;AAAA,MACH,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,GAAGN,cAAa,QAAQ,IAAI,CAAC;AAAA,MACnC,SAAS;AAAA,MACT,OAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,UAAU;AAAA,IACV,MAAMK,oBAAmB,SAAS,OAAO;AAAA,IACzC,SAAS,QAAQ,KAAK,OAAO,WAAW;AAAA,IACxC,QAAQ,QAAQ,KAAK,OAAO,UAAU;AAAA,IACtC,SAAS,QAAQ,KAAK,OAAO;AAAA,IAC7B,UAAU;AAAA,MACR,cAAc;AAAA,MACd,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF;AAjCS,OAAAC,0BAAA;AAmCT,SAAS,qBAAqB,SAA6B,SAAkB;AAC3E,QAAM,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AACpC,SAAOC,0BAAyB;AAAA,IAC9B,OAAOL,oBAAmB,OAAO,EAAE,IAAIC,kBAAiB;AAAA,IACxD,OAAO,QAAQ,KAAK;AAAA,IACpB,WAAWH,cAAa,QAAQ,IAAI;AAAA,IACpC,SAAS;AAAA,EACX,CAAC;AACH;AARS;AAUT,SAAS,cAAc,SAA6B,SAAkB,MAAuB;AAC3F,QAAM,YAAYQ;AAAA,IAChBN,oBAAmB,OAAO,EAAE,IAAIE,eAAc;AAAA,IAC9CC,oBAAmB,SAAS,OAAO;AAAA,EACrC;AAEA,SAAO,OAAO,UAAU,cAAc,UAAU;AAClD;AAPS;AAST,SAAS,oBAAoB,SAA6B,SAA0B;AAClF,QAAM,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AAEX,SAAO,GAAGI,yBAAwBH,yBAAwB,SAAS,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA;AAAA,EAAO,WAAW;AAAA;AACvG;AAfS;AAiBT,SAAS,qBAAqB,SAA6B,SAA0B;AACnF,SAAO,GAAGI,0BAAyBJ,yBAAwB,SAAS,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA;AACtF;AAFS;AAIT,SAAS,eAAe,SAA6B,SAAkB;AACrE,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,SAAS,IAAI;AACnB,QAAM,QAAQ,sBAAsB,QAAQ,YAAY,QAAQ,IAAI;AACpE,QAAM,OAAOK,6BAA4BL,yBAAwB,SAAS,OAAO,CAAC;AAClF,QAAM,QAAQN,cAAa,QAAQ,IAAI;AAEvC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,GAAG,KAAK;AAAA,MACR;AAAA,MACA,aAAaC,oBAAmB,QAAQ,IAAI;AAAA,MAC5C,OAAO,QAAQ,KAAK;AAAA,IACtB;AAAA,IACA,OAAO,QAAQ,KAAK;AAAA,IACpB,QAAQ;AAAA,MACN,MAAM,GAAG,MAAM,GAAG,QAAQ,KAAK,KAAK;AAAA,MACpC,QAAQ,GAAG,MAAM;AAAA,MACjB,QAAQ,GAAG,MAAM;AAAA,MACjB,UAAU,GAAG,MAAM;AAAA,MACnB,eAAe,GAAG,MAAM;AAAA,MACxB,MAAM,GAAG,MAAM;AAAA,MACf,UAAU,GAAG,MAAM;AAAA,MACnB,YAAY,GAAG,MAAM;AAAA,MACrB,iBAAiB,GAAG,MAAM;AAAA,MAC1B,QAAQ,GAAG,MAAM;AAAA,MACjB,OAAO,GAAG,MAAM;AAAA,MAChB,QAAQ,GAAG,MAAM;AAAA,MACjB,WAAW,GAAG,MAAM;AAAA,IACtB;AAAA,IACA,cAAc;AAAA,MACZ,GAAG,KAAK;AAAA,MACR,QAAQ,KAAK,aAAa;AAAA,MAC1B,UAAU,KAAK,aAAa;AAAA,MAC5B,MAAM,KAAK,aAAa;AAAA,MACxB,SAAS,KAAK,aAAa;AAAA,MAC3B,QAAQ,KAAK,aAAa;AAAA,MAC1B,MAAM;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACF;AA3CS;AA6CT,SAAS,iBAAiB,SAA6B;AACrD,QAAM,QAAQ,sBAAsB,QAAQ,YAAY,QAAQ,IAAI;AACpE,QAAM,cAAc,4BAA4B,QAAQ,KAAK,QAAQ;AAAA,IACnE,OAAO,QAAQ,KAAK;AAAA,IACpB,KAAK;AAAA,MACH,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,GAAGD,cAAa,QAAQ,IAAI,CAAC;AAAA,MACnC,SAAS;AAAA,MACT,OAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,QAAQ,KAAK;AAAA,IACtB,OAAO,QAAQ,KAAK;AAAA,IACpB,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,YAAY,QAAQ;AAAA,IACpB,YAAY,QAAQ,KAAK,cAAc;AAAA,IACvC,WAAW,MAAM;AAAA,IACjB;AAAA,EACF;AACF;AAhCS;AAkCT,eAAe,WAAW,SAA6B,SAAkB,OAAe;AACtF,QAAM,cAAcE,oBAAmB,OAAO;AAC9C,QAAM,cAAc,YAAY,IAAI,gBAAgB;AACpD,QAAM,kBAAkB,IAAI,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAC3E,QAAM,cACJ,SAAS,QAAQ,KAAK,OAAO,MAAM,KACnC,OAAO,QAAQ,KAAK,OAAO,OAAO,eAAe,WAC7C,QAAQ,KAAK,OAAO,OAAO,aAC3B;AAEN,QAAM,UAAU,MAAM,kBAAkB;AAAA,IACtC,OAAO;AAAA,IACP;AAAA,IACA,QAAQ,QAAQ,KAAK,OAAO,UAAU;AAAA,IACtC,UAAU,IAAI,IAAI,QAAQ,GAAG,EAAE;AAAA,IAC/B,WAAWF,cAAa,QAAQ,IAAI;AAAA,IACpC,OAAO;AAAA,EACT,CAAC;AAED,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC7B,UAAM,UAAU,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC;AACvC,UAAM,OAAO,gBAAgB,IAAI,OAAO;AACxC,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,MAAM,SAAS,OAAO;AAAA,MAC7B,MAAM,MAAM,OAAO;AAAA,MACnB,aAAa,OAAO,eAAe,MAAM;AAAA,IAC3C;AAAA,EACF,CAAC;AACH;AA7Be;AA+Bf,eAAe,kBAAkB,SAA0D;AACzF,QAAM,gBAAgB,WAAW;AACjC,QAAM,OAAO,QAAQ,WAAW,QAAQ,QAAQ,eAAe,QAAQ,QAAQ,IAAI;AACnF,QAAM,SAAS,QAAQ,UAAU,eAAe,UAAU;AAC1D,QAAM,oBACJ,QAAQ,SAAS,UACjB,QAAQ,WAAW,UACnB,QAAQ,eAAe,UACvB,QAAQ,UAAU,UAClB,QAAQ,aAAa,UACrB,QAAQ,eAAe,UACvB,QAAQ,SAAS,UACjB,QAAQ,YAAY,UACpB,QAAQ,WAAW;AACrB,QAAM,YACJ,QAAQ,SACP,oBAAoB,eAAe,OAAO,WAC1C;AAAA,IACC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,IACf,UAAU,QAAQ;AAAA,IAClB,YAAY,QAAQ;AAAA,IACpB,QAAQ,QAAQ;AAAA,IAChB,YAAY,QAAQ;AAAA,EACtB;AACF,QAAM,OAAO,qBAAqB,SAAS,IACvC,YACA,MAAM,kBAAkB,WAAW,EAAE,MAAM,OAAO,CAAC;AAEvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,0BAA0B,MAAM,EAAE,MAAM,OAAO,CAAC;AAAA,EAC9D;AACF;AAnCe;AAqCf,eAAe,iBAAiB,SAAkB,SAAgD;AAChG,MAAI,CAAC,QAAQ,KAAK,SAAS;AACzB,WAAO,KAAK,EAAE,OAAO,oBAAoB,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC7D;AAEA,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,SAAS,iBAAiB,OAAO;AACvC,QAAM,aAAa,qBAAqB,OAAO;AAE/C,MAAI,WAAW,YAAY,WAAW,eAAe;AACnD,WAAO,KAAK;AAAA,MACV,OAAO,QAAQ,KAAK;AAAA,MACpB,YAAY,QAAQ,KAAK,cAAc,QAAQ,KAAK,OAAO,cAAc;AAAA,MACzE,QAAQ,QAAQ,KAAK;AAAA,MACrB,KAAK,mBAAmB,QAAQ,KAAK,QAAQ;AAAA,QAC3C,MAAM,QAAQ,KAAK,cAAc;AAAA,MACnC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,MAAI,WAAW;AACb,WAAO,KAAK,oBAAoB,SAAS,OAAO,GAAG,8BAA8B;AACnF,MAAI,WAAW;AACb,WAAO,KAAK,qBAAqB,SAAS,OAAO,GAAG,8BAA8B;AACpF,MAAI,WAAW,WAAW,WAAW,aAAc,QAAO,KAAK,eAAe,SAAS,OAAO,CAAC;AAC/F,MAAI,WAAW,cAAe,QAAO,KAAK,iBAAiB,OAAO,CAAC;AACnE,MAAI,WAAW;AACb,WAAO,KAAK,cAAc,SAAS,SAAS,KAAK,GAAG,2BAA2B;AACjF,MAAI,WAAW;AACb,WAAO,KAAK,cAAc,SAAS,SAAS,IAAI,GAAG,2BAA2B;AAChF,MAAI,WAAW,cAAc;AAC3B,WAAO;AAAA,MACLY,2BAA0B,qBAAqB,SAAS,OAAO,GAAG;AAAA,QAChE,qBAAqB;AAAA,MACvB,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,iBAAiB,WAAW,WAAW;AACpD,UAAM,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AACpC,WAAO;AAAA,MACLC,sBAAqB,qBAAqB,SAAS,OAAO,GAAG;AAAA,QAC3D,SAAS;AAAA,QACT,gBAAgB;AAAA,MAClB,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,UAAU;AACvB,WAAO;AAAA,MACLC,qBAAoB;AAAA,QAClB,OAAO,QAAQ,KAAK;AAAA,QACpB,SAAS,QAAQ,KAAK,OAAO,WAAW;AAAA,QACxC,QAAQ,QAAQ,KAAK,OAAO,UAAU;AAAA,QACtC,SAAS,IAAI,IAAI,QAAQ,GAAG,EAAE;AAAA,MAChC,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW,cAAc,IAAI,SAAS,SAAS,KAAK,GAAG;AACzD,UAAM,YAAY,IAAI,aAAa,IAAI,MAAM,KAAK,IAAI,aAAa,IAAI,MAAM;AAC7E,UAAM,OAAO,qBAAqB,aAAa,WAAW,QAAQ,IAAI,QAAQ,IAAI;AAClF,UAAM,OAAO,iBAAiB,QAAQ,YAAY,QAAQ,MAAM,IAAI;AACpE,QAAI,CAAC,KAAM,QAAO,KAAK,yBAAyB,6BAA6B,EAAE,QAAQ,IAAI,CAAC;AAC5F,WAAO;AAAA,MACLC,4BAA2B,uBAAuB,IAAI,GAAG;AAAA,QACvD,QAAQ,IAAI,IAAI,QAAQ,GAAG,EAAE;AAAA,QAC7B,MAAMV,oBAAmB,SAAS,OAAO;AAAA,QACzC,SAAS,QAAQ,KAAK,OAAO;AAAA,MAC/B,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,IAAI,aAAa,IAAI,OAAO,KAAK,IAAI,aAAa,IAAI,GAAG,KAAK;AAC5E,MAAI,CAAC,MAAM,KAAK,EAAG,QAAO,KAAK,CAAC,CAAC;AACjC,SAAO,KAAK,MAAM,WAAW,SAAS,SAAS,KAAK,CAAC;AACvD;AA9Ee;AAgFR,SAAS,cACd,UAA8B,CAAC,GAC/B,kBAC0B;AAC1B,MAAI;AACJ,QAAM,aAAa,6BAAM;AACvB,wCAAmB,kBAAkB,OAAO;AAC5C,WAAO;AAAA,EACT,GAHmB;AAInB,QAAM,cAAc,4BAA4B,gBAAgB;AAEhE,SAAO;AAAA,IACL,MAAM,IAAI,SAAkB;AAC1B,UAAI,eAAe,sBAAsB,OAAO,GAAG;AACjD,eAAO,YAAY,UAAU,cAAc,SAAS,YAAY,YAAY;AAAA,MAC9E;AAEA,aAAO,iBAAiB,SAAS,MAAM,WAAW,CAAC;AAAA,IACrD;AAAA,IACA,MAAM,KAAK,SAAkB;AAC3B,UAAI,eAAgB,MAAM,uBAAuB,OAAO,GAAI;AAC1D,eAAO,YAAY,UAAU,cAAc,SAAS,YAAY,YAAY;AAAA,MAC9E;AAEA,aAAO;AAAA,QACL;AAAA,UACE,OAAO;AAAA,QACT;AAAA,QACA,EAAE,QAAQ,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF;AAhCgB;AAkCT,SAAS,yBACd,UAA8B,CAAC,GAC/B,kBACoB;AACpB,QAAM,WAAW,cAAc,SAAS,gBAAgB;AAExD,SAAO,sCAAe,yBAAyB,SAA4C;AACzF,QAAI,CAAC,qBAAqB,OAAO,EAAG,QAAO;AAE3C,UAAM,SAAS,QAAQ,OAAO,YAAY;AAC1C,QAAI,WAAW,SAAS,WAAW,QAAQ;AACzC,aAAO,SAAS,IAAI,OAAO;AAAA,IAC7B;AACA,QAAI,WAAW,QAAQ;AACrB,aAAO,SAAS,KAAK,OAAO;AAAA,IAC9B;AAEA,WAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAtBO;AAuBT;AA7BgB;","names":["existsSync","readdirSync","readFileSync","statSync","path","DOCS_FILE_EXTENSIONS","path","existsSync","statSync","readFileSync","readdirSync","text","body","renderedSections","buildDocsAgentDiscoverySpec","buildDocsSitemapManifest","renderDocsAgentsDocument","renderDocsLlmsTxt","renderDocsMarkdownDocument","renderDocsRobotsTxt","renderDocsSitemapMarkdown","renderDocsSitemapXml","renderDocsSkillDocument","getDocsTitle","getDocsDescription","getLoadedDocsPages","toDocsSitemapPage","toDocsLlmsPage","getDocsLlmsOptions","getDocsDiscoveryOptions","buildDocsSitemapManifest","renderDocsLlmsTxt","renderDocsSkillDocument","renderDocsAgentsDocument","buildDocsAgentDiscoverySpec","renderDocsSitemapMarkdown","renderDocsSitemapXml","renderDocsRobotsTxt","renderDocsMarkdownDocument"]}