@field/cascade 0.2.22

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 (319) hide show
  1. package/AGENTS.md +168 -0
  2. package/ARCHITECTURE.md +137 -0
  3. package/DESIGN.md +161 -0
  4. package/LICENSE +21 -0
  5. package/README.md +229 -0
  6. package/dist/assets/CodeEditor-DR7u0q7p.css +1 -0
  7. package/dist/assets/CodeEditor-DoaNEUaM.js +641 -0
  8. package/dist/assets/CodePanel-B0_2XJ-t.js +2 -0
  9. package/dist/assets/CodePanel-IT1secyI.css +1 -0
  10. package/dist/assets/CustomNodeDialog-026lzecD.js +1 -0
  11. package/dist/assets/CustomNodeDialog-JGYnWY6m.css +1 -0
  12. package/dist/assets/ExportDialog-DOq0flMV.css +1 -0
  13. package/dist/assets/ExportDialog-DWN4nhXI.js +358 -0
  14. package/dist/assets/ProjectSettings-BzT164Yx.js +2 -0
  15. package/dist/assets/ProjectSettings-DdO9xoQz.css +1 -0
  16. package/dist/assets/SettingsDialog-CeK7ytpY.css +1 -0
  17. package/dist/assets/SettingsDialog-DmHb1V0r.js +1 -0
  18. package/dist/assets/VersionHistoryDialog-CWNmHQ-P.css +1 -0
  19. package/dist/assets/VersionHistoryDialog-hH6VsXLX.js +3 -0
  20. package/dist/assets/abap-08VXUWAP.js +1 -0
  21. package/dist/assets/apex-BWPQTe0t.js +1 -0
  22. package/dist/assets/azcli-Bc_sGQ0U.js +1 -0
  23. package/dist/assets/bat-i0X4ZdIN.js +1 -0
  24. package/dist/assets/bicep-B5-_aFwp.js +2 -0
  25. package/dist/assets/cameligo-DMUM7wLl.js +1 -0
  26. package/dist/assets/cascade.jpg +0 -0
  27. package/dist/assets/clojure-Cm7r79vr.js +1 -0
  28. package/dist/assets/codicon-Brq4_Ui5.ttf +0 -0
  29. package/dist/assets/coffee-Ba7i2nA0.js +1 -0
  30. package/dist/assets/core-Bji4aZUU.js +965 -0
  31. package/dist/assets/cpp-C7h46wYY.js +1 -0
  32. package/dist/assets/csharp-BKxtCVv1.js +1 -0
  33. package/dist/assets/csp-bTuwJoIa.js +1 -0
  34. package/dist/assets/css-DIMkf-bt.js +3 -0
  35. package/dist/assets/css.worker-B3ciXF_0.js +93 -0
  36. package/dist/assets/cssMode-B6Z_Q1Kh.js +1 -0
  37. package/dist/assets/cypher-CVaqCwHa.js +1 -0
  38. package/dist/assets/dart-onAF5SnQ.js +1 -0
  39. package/dist/assets/dockerfile-DZFCIeNp.js +1 -0
  40. package/dist/assets/ecl-D05T4iGw.js +1 -0
  41. package/dist/assets/editor-1FQrmyyI.css +1 -0
  42. package/dist/assets/editor.api-jMoW_43X.js +847 -0
  43. package/dist/assets/editor.worker-q-txB4vs.js +30 -0
  44. package/dist/assets/elixir-6RTg0lbw.js +1 -0
  45. package/dist/assets/flow9-C5_-GSwl.js +1 -0
  46. package/dist/assets/freemarker2-DvvPV6m5.js +3 -0
  47. package/dist/assets/fsharp-C8Ef5oNN.js +1 -0
  48. package/dist/assets/geo-CXmCtzMM.js +2 -0
  49. package/dist/assets/go-C-y9NEjX.js +1 -0
  50. package/dist/assets/graphql-fmXr3nnJ.js +1 -0
  51. package/dist/assets/handlebars-B8rfuSIa.js +1 -0
  52. package/dist/assets/hcl-CpzslTdj.js +1 -0
  53. package/dist/assets/html-DyHm6JCp.js +1 -0
  54. package/dist/assets/html.worker-C93Ht9o9.js +506 -0
  55. package/dist/assets/htmlMode-E9XLWE5u.js +1 -0
  56. package/dist/assets/image-BUcQC7PG.js +2076 -0
  57. package/dist/assets/index-BXYXSdgh.js +224 -0
  58. package/dist/assets/index-CrNke7SW.css +1 -0
  59. package/dist/assets/index-client-DN_FvjN8.js +1 -0
  60. package/dist/assets/ini-sBoK_t0W.js +1 -0
  61. package/dist/assets/java-BEtHBSE6.js +1 -0
  62. package/dist/assets/javascript-C_bM5PCN.js +1 -0
  63. package/dist/assets/json.worker-B2V3pomh.js +62 -0
  64. package/dist/assets/jsonMode-BdyVS7G4.js +7 -0
  65. package/dist/assets/julia-Bri6UV-V.js +1 -0
  66. package/dist/assets/kotlin-BOotOW0E.js +1 -0
  67. package/dist/assets/legacy-DIu3XRwl.js +2 -0
  68. package/dist/assets/less-B9JPFI3C.js +2 -0
  69. package/dist/assets/lexon-CfSJPG6W.js +1 -0
  70. package/dist/assets/liquid-CDkn3spA.js +1 -0
  71. package/dist/assets/lspLanguageFeatures-AB5DMAsr.js +4 -0
  72. package/dist/assets/lua-CsQS60Ue.js +1 -0
  73. package/dist/assets/m3-D-oSqn_W.js +1 -0
  74. package/dist/assets/markdown-Cimd5fb3.js +1 -0
  75. package/dist/assets/mdx-BvH_NjDN.js +1 -0
  76. package/dist/assets/mips-CIPQ_RoX.js +1 -0
  77. package/dist/assets/msdax-DauUninz.js +1 -0
  78. package/dist/assets/mysql-SOo6toE5.js +1 -0
  79. package/dist/assets/nodeTypeUtils-CweA3NHd.js +1 -0
  80. package/dist/assets/objective-c-FvmIjYaQ.js +1 -0
  81. package/dist/assets/pascal-DrH0SRf2.js +1 -0
  82. package/dist/assets/pascaligo-D-ptJ9y-.js +1 -0
  83. package/dist/assets/perl-oz_6vUea.js +1 -0
  84. package/dist/assets/pgsql-DTj74zXo.js +1 -0
  85. package/dist/assets/php-nr791fC2.js +1 -0
  86. package/dist/assets/pla-CopQ2nXW.js +1 -0
  87. package/dist/assets/postiats-43DmfD33.js +1 -0
  88. package/dist/assets/powerquery-D3hlyOfw.js +1 -0
  89. package/dist/assets/powershell-DmHpPYUd.js +1 -0
  90. package/dist/assets/projectSettingsApi-C1WvIwfP.js +1 -0
  91. package/dist/assets/protobuf-C531GsRP.js +2 -0
  92. package/dist/assets/pug-Z5eAx3Zn.js +1 -0
  93. package/dist/assets/python-B7uii4fi.js +1 -0
  94. package/dist/assets/qsharp-DkqhCAOL.js +1 -0
  95. package/dist/assets/quill-DjZ69wL_.js +121 -0
  96. package/dist/assets/r-BwWrilGY.js +1 -0
  97. package/dist/assets/razor-Z48fWdJc.js +1 -0
  98. package/dist/assets/redis-ClamHrr6.js +1 -0
  99. package/dist/assets/redshift-DT7zqm-g.js +1 -0
  100. package/dist/assets/restructuredtext-BYgofb2h.js +1 -0
  101. package/dist/assets/ruby-DezsRK8O.js +1 -0
  102. package/dist/assets/rust-DdL9SqIa.js +1 -0
  103. package/dist/assets/sb-CcwsVR0C.js +1 -0
  104. package/dist/assets/scala-DHpiXF5c.js +1 -0
  105. package/dist/assets/scheme-BeGwcela.js +1 -0
  106. package/dist/assets/scss-gp-XZpBa.js +3 -0
  107. package/dist/assets/shell-CC2rA5mh.js +1 -0
  108. package/dist/assets/solidity-BEEn4gHE.js +1 -0
  109. package/dist/assets/sophia-CRfGWb83.js +1 -0
  110. package/dist/assets/sparql-D_Lu-MrJ.js +1 -0
  111. package/dist/assets/sql-NEE52Syq.js +1 -0
  112. package/dist/assets/st-DbInun42.js +1 -0
  113. package/dist/assets/swift-Bxkupp3x.js +1 -0
  114. package/dist/assets/systemverilog-Bz4Y3fRF.js +1 -0
  115. package/dist/assets/tcl-DISqw1ZD.js +1 -0
  116. package/dist/assets/ts.worker-D7T1-Ig5.js +67738 -0
  117. package/dist/assets/tsMode-BDgacVG4.js +11 -0
  118. package/dist/assets/twig-De2hgUGE.js +1 -0
  119. package/dist/assets/typescript-Derb6Oqa.js +1 -0
  120. package/dist/assets/typespec-B8J7ngcE.js +1 -0
  121. package/dist/assets/vb-DV3o63ZY.js +1 -0
  122. package/dist/assets/wgsl-DpFanUEy.js +298 -0
  123. package/dist/assets/workers-BtoMX_pm.js +1 -0
  124. package/dist/assets/xml-B1CaFSrG.js +1 -0
  125. package/dist/assets/yaml-HmIeA0KH.js +1 -0
  126. package/dist/cli/index.js +11377 -0
  127. package/dist/cli/index.js.map +7 -0
  128. package/dist/cli/runtime/io.ts +445 -0
  129. package/dist/cli/runtime/net.ts +19 -0
  130. package/dist/cli/runtime/shell.ts +46 -0
  131. package/dist/cli/runtime/stage.ts +132 -0
  132. package/dist/contracts/capabilities.d.ts +109 -0
  133. package/dist/contracts/capabilities.d.ts.map +1 -0
  134. package/dist/contracts/capabilities.js +11 -0
  135. package/dist/contracts/capabilities.js.map +1 -0
  136. package/dist/contracts/color.d.ts +67 -0
  137. package/dist/contracts/color.d.ts.map +1 -0
  138. package/dist/contracts/color.js +83 -0
  139. package/dist/contracts/color.js.map +1 -0
  140. package/dist/contracts/definition.d.ts +118 -0
  141. package/dist/contracts/definition.d.ts.map +1 -0
  142. package/dist/contracts/definition.js +2 -0
  143. package/dist/contracts/definition.js.map +1 -0
  144. package/dist/contracts/document.d.ts +50 -0
  145. package/dist/contracts/document.d.ts.map +1 -0
  146. package/dist/contracts/document.js +2 -0
  147. package/dist/contracts/document.js.map +1 -0
  148. package/dist/contracts/geometry.d.ts +301 -0
  149. package/dist/contracts/geometry.d.ts.map +1 -0
  150. package/dist/contracts/geometry.js +604 -0
  151. package/dist/contracts/geometry.js.map +1 -0
  152. package/dist/contracts/index.d.ts +8 -0
  153. package/dist/contracts/index.d.ts.map +1 -0
  154. package/dist/contracts/index.js +8 -0
  155. package/dist/contracts/index.js.map +1 -0
  156. package/dist/contracts/schema.d.ts +6 -0
  157. package/dist/contracts/schema.d.ts.map +1 -0
  158. package/dist/contracts/schema.js +85 -0
  159. package/dist/contracts/schema.js.map +1 -0
  160. package/dist/contracts/validate.d.ts +13 -0
  161. package/dist/contracts/validate.d.ts.map +1 -0
  162. package/dist/contracts/validate.js +202 -0
  163. package/dist/contracts/validate.js.map +1 -0
  164. package/dist/contracts/values.d.ts +100 -0
  165. package/dist/contracts/values.d.ts.map +1 -0
  166. package/dist/contracts/values.js +59 -0
  167. package/dist/contracts/values.js.map +1 -0
  168. package/dist/graphs/default-orig.cascade +128 -0
  169. package/dist/graphs/default.cascade +21 -0
  170. package/dist/index.html +19 -0
  171. package/dist/runtime/browser.d.ts +3 -0
  172. package/dist/runtime/browser.d.ts.map +1 -0
  173. package/dist/runtime/browser.js +12 -0
  174. package/dist/runtime/browser.js.map +1 -0
  175. package/dist/runtime/builtins/core/index.d.ts +9 -0
  176. package/dist/runtime/builtins/core/index.d.ts.map +1 -0
  177. package/dist/runtime/builtins/core/index.js +21 -0
  178. package/dist/runtime/builtins/core/index.js.map +1 -0
  179. package/dist/runtime/builtins/core/random.d.ts +66 -0
  180. package/dist/runtime/builtins/core/random.d.ts.map +1 -0
  181. package/dist/runtime/builtins/core/random.js +46 -0
  182. package/dist/runtime/builtins/core/random.js.map +1 -0
  183. package/dist/runtime/builtins/core/remap.d.ts +105 -0
  184. package/dist/runtime/builtins/core/remap.d.ts.map +1 -0
  185. package/dist/runtime/builtins/core/remap.js +43 -0
  186. package/dist/runtime/builtins/core/remap.js.map +1 -0
  187. package/dist/runtime/builtins/core/routing.d.ts +117 -0
  188. package/dist/runtime/builtins/core/routing.d.ts.map +1 -0
  189. package/dist/runtime/builtins/core/routing.js +114 -0
  190. package/dist/runtime/builtins/core/routing.js.map +1 -0
  191. package/dist/runtime/builtins/core/structural.d.ts +86 -0
  192. package/dist/runtime/builtins/core/structural.d.ts.map +1 -0
  193. package/dist/runtime/builtins/core/structural.js +63 -0
  194. package/dist/runtime/builtins/core/structural.js.map +1 -0
  195. package/dist/runtime/builtins/geo/copyToPoints.d.ts +58 -0
  196. package/dist/runtime/builtins/geo/copyToPoints.d.ts.map +1 -0
  197. package/dist/runtime/builtins/geo/copyToPoints.js +35 -0
  198. package/dist/runtime/builtins/geo/copyToPoints.js.map +1 -0
  199. package/dist/runtime/builtins/geo/definitions.d.ts +526 -0
  200. package/dist/runtime/builtins/geo/definitions.d.ts.map +1 -0
  201. package/dist/runtime/builtins/geo/definitions.js +182 -0
  202. package/dist/runtime/builtins/geo/definitions.js.map +1 -0
  203. package/dist/runtime/builtins/geo/generators.d.ts +94 -0
  204. package/dist/runtime/builtins/geo/generators.d.ts.map +1 -0
  205. package/dist/runtime/builtins/geo/generators.js +41 -0
  206. package/dist/runtime/builtins/geo/generators.js.map +1 -0
  207. package/dist/runtime/builtins/geo/index.d.ts +23 -0
  208. package/dist/runtime/builtins/geo/index.d.ts.map +1 -0
  209. package/dist/runtime/builtins/geo/index.js +35 -0
  210. package/dist/runtime/builtins/geo/index.js.map +1 -0
  211. package/dist/runtime/builtins/geo/merge.d.ts +40 -0
  212. package/dist/runtime/builtins/geo/merge.d.ts.map +1 -0
  213. package/dist/runtime/builtins/geo/merge.js +24 -0
  214. package/dist/runtime/builtins/geo/merge.js.map +1 -0
  215. package/dist/runtime/builtins/geo/namespace.d.ts +15 -0
  216. package/dist/runtime/builtins/geo/namespace.d.ts.map +1 -0
  217. package/dist/runtime/builtins/geo/namespace.js +17 -0
  218. package/dist/runtime/builtins/geo/namespace.js.map +1 -0
  219. package/dist/runtime/builtins/geo/svgExport.d.ts +130 -0
  220. package/dist/runtime/builtins/geo/svgExport.d.ts.map +1 -0
  221. package/dist/runtime/builtins/geo/svgExport.js +50 -0
  222. package/dist/runtime/builtins/geo/svgExport.js.map +1 -0
  223. package/dist/runtime/builtins/geo/transform.d.ts +60 -0
  224. package/dist/runtime/builtins/geo/transform.d.ts.map +1 -0
  225. package/dist/runtime/builtins/geo/transform.js +32 -0
  226. package/dist/runtime/builtins/geo/transform.js.map +1 -0
  227. package/dist/runtime/builtins/index.d.ts +9 -0
  228. package/dist/runtime/builtins/index.d.ts.map +1 -0
  229. package/dist/runtime/builtins/index.js +16 -0
  230. package/dist/runtime/builtins/index.js.map +1 -0
  231. package/dist/runtime/definition/architecture.d.ts +8 -0
  232. package/dist/runtime/definition/architecture.d.ts.map +1 -0
  233. package/dist/runtime/definition/architecture.js +112 -0
  234. package/dist/runtime/definition/architecture.js.map +1 -0
  235. package/dist/runtime/definition/extract.d.ts +12 -0
  236. package/dist/runtime/definition/extract.d.ts.map +1 -0
  237. package/dist/runtime/definition/extract.js +151 -0
  238. package/dist/runtime/definition/extract.js.map +1 -0
  239. package/dist/runtime/error.d.ts +8 -0
  240. package/dist/runtime/error.d.ts.map +1 -0
  241. package/dist/runtime/error.js +11 -0
  242. package/dist/runtime/error.js.map +1 -0
  243. package/dist/runtime/geometry/attributes.d.ts +65 -0
  244. package/dist/runtime/geometry/attributes.d.ts.map +1 -0
  245. package/dist/runtime/geometry/attributes.js +201 -0
  246. package/dist/runtime/geometry/attributes.js.map +1 -0
  247. package/dist/runtime/geometry/builder.d.ts +57 -0
  248. package/dist/runtime/geometry/builder.d.ts.map +1 -0
  249. package/dist/runtime/geometry/builder.js +153 -0
  250. package/dist/runtime/geometry/builder.js.map +1 -0
  251. package/dist/runtime/geometry/copy.d.ts +36 -0
  252. package/dist/runtime/geometry/copy.d.ts.map +1 -0
  253. package/dist/runtime/geometry/copy.js +68 -0
  254. package/dist/runtime/geometry/copy.js.map +1 -0
  255. package/dist/runtime/geometry/generate.d.ts +43 -0
  256. package/dist/runtime/geometry/generate.d.ts.map +1 -0
  257. package/dist/runtime/geometry/generate.js +76 -0
  258. package/dist/runtime/geometry/generate.js.map +1 -0
  259. package/dist/runtime/geometry/groups.d.ts +18 -0
  260. package/dist/runtime/geometry/groups.d.ts.map +1 -0
  261. package/dist/runtime/geometry/groups.js +69 -0
  262. package/dist/runtime/geometry/groups.js.map +1 -0
  263. package/dist/runtime/geometry/index.d.ts +23 -0
  264. package/dist/runtime/geometry/index.d.ts.map +1 -0
  265. package/dist/runtime/geometry/index.js +23 -0
  266. package/dist/runtime/geometry/index.js.map +1 -0
  267. package/dist/runtime/geometry/matrix.d.ts +26 -0
  268. package/dist/runtime/geometry/matrix.d.ts.map +1 -0
  269. package/dist/runtime/geometry/matrix.js +27 -0
  270. package/dist/runtime/geometry/matrix.js.map +1 -0
  271. package/dist/runtime/geometry/merge.d.ts +33 -0
  272. package/dist/runtime/geometry/merge.d.ts.map +1 -0
  273. package/dist/runtime/geometry/merge.js +185 -0
  274. package/dist/runtime/geometry/merge.js.map +1 -0
  275. package/dist/runtime/geometry/primitives.d.ts +41 -0
  276. package/dist/runtime/geometry/primitives.d.ts.map +1 -0
  277. package/dist/runtime/geometry/primitives.js +131 -0
  278. package/dist/runtime/geometry/primitives.js.map +1 -0
  279. package/dist/runtime/geometry/promote.d.ts +44 -0
  280. package/dist/runtime/geometry/promote.d.ts.map +1 -0
  281. package/dist/runtime/geometry/promote.js +203 -0
  282. package/dist/runtime/geometry/promote.js.map +1 -0
  283. package/dist/runtime/geometry/resample.d.ts +29 -0
  284. package/dist/runtime/geometry/resample.d.ts.map +1 -0
  285. package/dist/runtime/geometry/resample.js +165 -0
  286. package/dist/runtime/geometry/resample.js.map +1 -0
  287. package/dist/runtime/geometry/svg.d.ts +91 -0
  288. package/dist/runtime/geometry/svg.d.ts.map +1 -0
  289. package/dist/runtime/geometry/svg.js +216 -0
  290. package/dist/runtime/geometry/svg.js.map +1 -0
  291. package/dist/runtime/geometry/transform.d.ts +18 -0
  292. package/dist/runtime/geometry/transform.d.ts.map +1 -0
  293. package/dist/runtime/geometry/transform.js +56 -0
  294. package/dist/runtime/geometry/transform.js.map +1 -0
  295. package/dist/runtime/index.d.ts +5 -0
  296. package/dist/runtime/index.d.ts.map +1 -0
  297. package/dist/runtime/index.js +4 -0
  298. package/dist/runtime/index.js.map +1 -0
  299. package/dist/runtime/node.d.ts +4 -0
  300. package/dist/runtime/node.d.ts.map +1 -0
  301. package/dist/runtime/node.js +12 -0
  302. package/dist/runtime/node.js.map +1 -0
  303. package/dist/runtime/runtime.d.ts +3 -0
  304. package/dist/runtime/runtime.d.ts.map +1 -0
  305. package/dist/runtime/runtime.js +1198 -0
  306. package/dist/runtime/runtime.js.map +1 -0
  307. package/dist/runtime/types.d.ts +241 -0
  308. package/dist/runtime/types.d.ts.map +1 -0
  309. package/dist/runtime/types.js +2 -0
  310. package/dist/runtime/types.js.map +1 -0
  311. package/dist/shell.d.ts +8 -0
  312. package/dist/shell.js +54 -0
  313. package/dist/shell.js.map +7 -0
  314. package/dist/stage.d.ts +7 -0
  315. package/dist/stage.js +84 -0
  316. package/dist/stage.js.map +7 -0
  317. package/dist/studio/panel.d.ts +48 -0
  318. package/doc/PROJECT_AUTHORING.md +360 -0
  319. package/package.json +126 -0
@@ -0,0 +1,301 @@
1
+ /**
2
+ * The `geometry` core type: one attribute table with four addressing levels.
3
+ *
4
+ * Houdini's model without the pointers. A geometry holds points, vertices,
5
+ * primitives and one detail record, and every named attribute lives at one of
6
+ * those levels as a flat parallel array. The value of the type is the number of
7
+ * operations that understand it, so it is deliberately one type rather than a
8
+ * family of them: a point cloud is a geometry whose primitive count is zero,
9
+ * and a bundle of strokes is a geometry whose points are covered by primitives.
10
+ * There is nothing to convert between the two.
11
+ *
12
+ * Three forms live here:
13
+ *
14
+ * `Geometry` is the in-memory form over typed arrays. Struct-of-arrays rather
15
+ * than array-of-structs, because the runtime's clone path copies nested plain
16
+ * arrays element by element and passes typed arrays through by reference, and
17
+ * because copy-on-write needs a granularity to share at.
18
+ *
19
+ * `GeometryJson` is the plain-array interchange form, for `.cascade` document
20
+ * literals and the Python bridge. Verbose on purpose and JSON-safe. It is
21
+ * lossless in both directions, including f64 precision, because JSON numbers
22
+ * are doubles and JavaScript prints the shortest round-trippable form.
23
+ *
24
+ * `GeometryFileRef` is the out-of-band form, following `ImageRef`: a path plus
25
+ * the metadata a consumer needs before it opens the file. It exists from day
26
+ * one because it is already in production and undeclared, as the Python
27
+ * stipple stage returns an `.npy` path on a `points`-typed port and the next
28
+ * stage reads it back. Resolving a ref into a `Geometry` needs host IO and so
29
+ * belongs to a host capability, exactly as reading `ImageRef` pixels does;
30
+ * neither contracts nor the runtime does it.
31
+ *
32
+ * ## Immutability
33
+ *
34
+ * A `Geometry` is frozen and every operation returns a new one, sharing the
35
+ * typed arrays it did not touch. `freezeGeometry` freezes the plain objects
36
+ * that hold the structure, and it cannot freeze the arrays themselves:
37
+ * `Object.freeze` on a non-empty typed array throws, because a typed array's
38
+ * elements are not configurable properties.
39
+ *
40
+ * So the copy-on-write guarantee is a convention this module keeps and the
41
+ * language cannot enforce, and there is one live interaction worth knowing
42
+ * about. `cloneValue` in `packages/runtime/src/runtime.ts`, the deep clone
43
+ * behind `snapshot`, returns any non-array object whose prototype is neither
44
+ * `Object.prototype` nor `null` by reference, uncloned and unfrozen. A
45
+ * `Geometry` is a plain object, so a snapshot of one is a fresh outer graph
46
+ * whose typed arrays are still the originals, shared with the value the node
47
+ * emitted. That makes emitting a geometry very cheap and it means the
48
+ * "inspection and output values are immutable snapshots" guarantee in
49
+ * ARCHITECTURE.md holds for the structure and not for the sample data. Nothing
50
+ * here relies on the runtime changing: operations never write into an input's
51
+ * array, and node code should reach for the read helpers and the builder rather
52
+ * than an attribute's `data` directly. Do not write into an array you did not
53
+ * allocate.
54
+ */
55
+ /** Position attribute name, by convention rather than by privilege. */
56
+ export declare const POSITION_ATTRIBUTE = "P";
57
+ export declare const ATTRIBUTE_LEVELS: readonly ["point", "vertex", "primitive", "detail"];
58
+ /** Where an attribute lives. `detail` holds one value per name, not an array. */
59
+ export type AttributeLevel = (typeof ATTRIBUTE_LEVELS)[number];
60
+ /** The three levels that are indexed by element number. */
61
+ export type ElementLevel = "point" | "vertex" | "primitive";
62
+ /**
63
+ * How an attribute's values are stored. `f64` is the default for positions,
64
+ * because the existing Python bridge already writes points as float64 `.npy`
65
+ * and emits full-precision doubles in JSON, while it explicitly casts raster
66
+ * fields to float32. Narrowing positions to f32 would save 1.4 MB on a
67
+ * 170,000-vertex cook and add a lossy step to a boundary that is lossless
68
+ * today.
69
+ */
70
+ export type AttributeStorage = "f32" | "f64" | "i32" | "u8";
71
+ export type AttributeArray = Float64Array | Float32Array | Int32Array | Uint8Array;
72
+ /**
73
+ * One numeric attribute: a component count and a flat parallel array of
74
+ * `size * elementCount` values, indexed by element number at its level.
75
+ */
76
+ export interface Attribute {
77
+ readonly storage: AttributeStorage;
78
+ /** Components per element. `P` is 2 or 3, `Cd` is 4, `width` is 1. */
79
+ readonly size: number;
80
+ readonly data: AttributeArray;
81
+ }
82
+ /**
83
+ * String attributes are a separate shape because a typed array cannot hold
84
+ * strings, and because Houdini's string attributes are indices into a table
85
+ * rather than per-element strings. The table is usually tiny: `cloud-plots`
86
+ * carries tags like `FORM_04` that repeat across a whole set.
87
+ */
88
+ export interface StringAttribute {
89
+ readonly storage: "string";
90
+ readonly size: 1;
91
+ readonly table: readonly string[];
92
+ /** Index into `table`, or -1 for the empty string. */
93
+ readonly data: Int32Array;
94
+ }
95
+ export type AnyAttribute = Attribute | StringAttribute;
96
+ export type AttributeSet = Readonly<Record<string, AnyAttribute>>;
97
+ /** A detail value. One per name, for bounds, a seed, a page size, a name. */
98
+ export type DetailValue = number | string | readonly number[];
99
+ export type DetailSet = Readonly<Record<string, DetailValue>>;
100
+ export declare const PRIMITIVE_KINDS: readonly ["poly", "bezier", "mesh", "packed"];
101
+ /**
102
+ * Primitive kinds. A kind does not change what a primitive is made of: every
103
+ * primitive is a run of vertices over the same point list. It selects **how
104
+ * that run is interpolated**, which is why curves need no second geometry type
105
+ * and no parallel container, and why an operation that only reads positions
106
+ * keeps working when a curve arrives.
107
+ *
108
+ * Marcus, 2026-09-04, ruling on the plan's open question about curves:
109
+ * *"No, we want curves + polylines; very similar but different
110
+ * interpolations."*
111
+ *
112
+ * `poly` — the run is interpolated linearly. Vertex count is the point count of
113
+ * the outline, and `closed` adds the segment from the last vertex back to the
114
+ * first without repeating a vertex.
115
+ *
116
+ * `bezier` — the run is a chain of cubic Bézier segments in SVG's own order:
117
+ * anchor, handle, handle, anchor, handle, handle, anchor, and so on. An open
118
+ * primitive therefore has `3n + 1` vertices for `n` segments; a closed one has
119
+ * `3n`, its final two handles belonging to the segment that returns to the
120
+ * first anchor. This is the form a print or plotter pipeline actually wants,
121
+ * and it is affine-invariant, so `Transform` and `CopyToPoints` are exactly
122
+ * right on a curve without knowing it is one.
123
+ *
124
+ * `mesh` and `packed` are declared and unused, so that adding them later is a
125
+ * new case in a switch rather than a change to the document format. The list is
126
+ * deliberately open-ended rather than a closed pair: a volume is a primitive
127
+ * kind in Houdini and will be one here, which is the direction the plan records.
128
+ *
129
+ * Operations that measure along a primitive (arc length, resampling) are
130
+ * linear-only today and must refuse a `bezier` rather than read its handles as
131
+ * vertices, which would produce a subtly wrong shape instead of an error.
132
+ */
133
+ export type PrimitiveKind = (typeof PRIMITIVE_KINDS)[number];
134
+ /** Vertices per cubic Bézier segment after the first anchor. */
135
+ export declare const BEZIER_STRIDE = 3;
136
+ /**
137
+ * Primitive topology, CSR-style: `vertexPoints` is the flat vertex-to-point
138
+ * table and `offsets` slices it per primitive. Vertex `v` of primitive `i` is
139
+ * `vertexPoints[offsets[i] + v]`, and `offsets` has `primitiveCount + 1`
140
+ * entries so the last primitive's extent needs no special case. A geometry
141
+ * with no primitives still has a one-entry `offsets` of `[0]`.
142
+ *
143
+ * Keeping vertices as their own addressable level is what makes a per-corner
144
+ * value possible at all: two primitives meeting at a corner share one point and
145
+ * have two vertices, so a discontinuity across the seam is a vertex attribute
146
+ * while the shared position stays a point attribute.
147
+ */
148
+ export interface Topology {
149
+ readonly vertexPoints: Int32Array;
150
+ readonly offsets: Int32Array;
151
+ /** Index into `PRIMITIVE_KINDS`, one per primitive. */
152
+ readonly kinds: Uint8Array;
153
+ /**
154
+ * 1 when the primitive's last vertex connects back to its first. Separate
155
+ * from `kinds` because open and closed polygons are the same kind of thing
156
+ * and every 2D operation cares about the difference.
157
+ */
158
+ readonly closed: Uint8Array;
159
+ }
160
+ /**
161
+ * A named subset at one level, as a bitmask rather than an index list because
162
+ * membership is tested far more often than it is enumerated.
163
+ */
164
+ export type Groups = Readonly<Record<string, Uint8Array>>;
165
+ export interface Geometry {
166
+ readonly kind: "geometry";
167
+ readonly pointCount: number;
168
+ readonly vertexCount: number;
169
+ readonly primitiveCount: number;
170
+ readonly topology: Topology;
171
+ /** Always contains `P` with a `size` of 2 or 3. */
172
+ readonly point: AttributeSet;
173
+ readonly vertex: AttributeSet;
174
+ readonly primitive: AttributeSet;
175
+ readonly detail: DetailSet;
176
+ readonly pointGroups: Groups;
177
+ readonly primitiveGroups: Groups;
178
+ }
179
+ /** The plain-array attribute forms used by `GeometryJson`. */
180
+ export interface NumericAttributeJson {
181
+ readonly storage: AttributeStorage;
182
+ readonly size: number;
183
+ readonly data: readonly number[];
184
+ }
185
+ export interface StringAttributeJson {
186
+ readonly storage: "string";
187
+ readonly size?: 1;
188
+ readonly table: readonly string[];
189
+ readonly data: readonly number[];
190
+ }
191
+ export type AttributeJson = NumericAttributeJson | StringAttributeJson;
192
+ export type AttributeSetJson = Readonly<Record<string, AttributeJson>>;
193
+ export interface TopologyJson {
194
+ readonly vertexPoints: readonly number[];
195
+ readonly offsets: readonly number[];
196
+ /** Omitted when every primitive is a `poly`. */
197
+ readonly kinds?: readonly number[];
198
+ /** Omitted when no primitive is closed. */
199
+ readonly closed?: readonly number[];
200
+ }
201
+ /**
202
+ * The wire and document form. Plain arrays, JSON-safe, lossless. Verbose by
203
+ * design: a `.cascade` literal is authored by hand or by a small generator, and
204
+ * human-readable beats compact at that size. Groups are index lists here rather
205
+ * than masks, because a mask spelled out as JSON is mostly zeroes. Bulk
206
+ * geometry belongs in a `GeometryFileRef` instead.
207
+ */
208
+ export interface GeometryJson {
209
+ readonly kind: "geometry";
210
+ /** Required, because a geometry may carry points that no attribute sizes. */
211
+ readonly pointCount: number;
212
+ readonly point?: AttributeSetJson;
213
+ readonly vertex?: AttributeSetJson;
214
+ readonly primitive?: AttributeSetJson;
215
+ readonly detail?: Readonly<Record<string, DetailValue>>;
216
+ readonly topology?: TopologyJson;
217
+ readonly pointGroups?: Readonly<Record<string, readonly number[]>>;
218
+ readonly primitiveGroups?: Readonly<Record<string, readonly number[]>>;
219
+ }
220
+ /**
221
+ * An out-of-band geometry, referenced the way `ImageRef` references pixels.
222
+ * `attribute` describes what a bare array file carries, and it is never
223
+ * inferred: a three-component `.npy` means `(x, y, radius)` in `cloud-plots`
224
+ * and would mean `(x, y, z)` under a 3D reading, and nothing in the file
225
+ * distinguishes them.
226
+ */
227
+ export interface GeometryFileRef {
228
+ readonly kind: "geometry-file";
229
+ readonly path: string;
230
+ readonly format: "npy" | "json";
231
+ readonly attribute?: {
232
+ readonly level: ElementLevel;
233
+ readonly name: string;
234
+ readonly size: number;
235
+ readonly storage: AttributeStorage;
236
+ };
237
+ readonly pointCount?: number;
238
+ readonly primitiveCount?: number;
239
+ }
240
+ /** What a `geometry`-typed default, document literal, or bridge value may be. */
241
+ export type GeometrySerialized = GeometryJson | GeometryFileRef;
242
+ /** Allocate a zeroed array for a storage kind. */
243
+ export declare function attributeArray(storage: AttributeStorage, length: number): AttributeArray;
244
+ /** Copy values into a fresh array of a storage kind. */
245
+ export declare function attributeArrayFrom(storage: AttributeStorage, values: ArrayLike<number>): AttributeArray;
246
+ /** A plain-number copy of an attribute array, for the interchange form. */
247
+ export declare function attributeNumbers(data: AttributeArray): number[];
248
+ export declare function isStringAttribute(attribute: AnyAttribute): attribute is StringAttribute;
249
+ /** How many elements an attribute covers, from its own arrays alone. */
250
+ export declare function attributeElementCount(attribute: AnyAttribute): number;
251
+ /** The number of elements at a level, or 1 for `detail`. */
252
+ export declare function levelCount(geometry: Geometry, level: AttributeLevel): number;
253
+ export interface GeometryParts {
254
+ readonly pointCount: number;
255
+ readonly point: AttributeSet;
256
+ readonly vertex?: AttributeSet;
257
+ readonly primitive?: AttributeSet;
258
+ readonly detail?: DetailSet;
259
+ readonly topology?: Topology;
260
+ readonly pointGroups?: Groups;
261
+ readonly primitiveGroups?: Groups;
262
+ }
263
+ /**
264
+ * The validating constructor. Every invariant the operations rely on is checked
265
+ * here once, so that no operation has to defend against a malformed input, and
266
+ * the result is frozen.
267
+ *
268
+ * This is the one piece of logic contracts owns for this type, because the
269
+ * codec below has to build a `Geometry` and a type whose invariants are
270
+ * enforced somewhere else is a type whose invariants are optional.
271
+ */
272
+ export declare function createGeometry(parts: GeometryParts): Geometry;
273
+ /**
274
+ * Freeze the plain objects that describe a geometry. The typed arrays are left
275
+ * alone because `Object.freeze` throws on a non-empty array buffer view, which
276
+ * is why the copy-on-write rule above is a convention rather than a guarantee.
277
+ */
278
+ export declare function freezeGeometry(geometry: Geometry): Geometry;
279
+ /** An empty geometry with a declared position width and no points. */
280
+ export declare function emptyGeometry(positionSize?: 2 | 3): Geometry;
281
+ /** In-memory to interchange. Lossless, and JSON-safe. */
282
+ export declare function geometryToJson(geometry: Geometry): GeometryJson;
283
+ /** Interchange to in-memory. Throws a `geometry/*` TypeError on bad input. */
284
+ export declare function geometryFromJson(value: GeometryJson): Geometry;
285
+ /**
286
+ * Validate an interchange value against the same constructor used to decode it.
287
+ * Keeping a second structural validator here previously accepted bad attribute
288
+ * lengths, fractional topology indices and out-of-range groups.
289
+ */
290
+ export declare function isGeometryJson(value: unknown): value is GeometryJson;
291
+ export declare function isGeometryFileRef(value: unknown): value is GeometryFileRef;
292
+ /** Either serialized form is a valid `geometry` document value or default. */
293
+ export declare function isGeometrySerialized(value: unknown): value is GeometrySerialized;
294
+ /**
295
+ * Lift a bare path into a declared reference. The Python bridge returns a path
296
+ * string today, and this is the one place that knows how to read an extension;
297
+ * `attribute` is never guessed, because the third component of a points file
298
+ * means radius in one project and z in another.
299
+ */
300
+ export declare function geometryFileRefFromPath(path: string, options?: Omit<GeometryFileRef, "kind" | "path" | "format">): GeometryFileRef;
301
+ //# sourceMappingURL=geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../src/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,gBAAgB,qDAKnB,CAAC;AAEX,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,2DAA2D;AAC3D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAE5D,MAAM,MAAM,cAAc,GACxB,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,eAAe,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAElE,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,eAAe,+CAAgD,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,gEAAgE;AAChE,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AACD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AACD,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AACvE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gDAAgD;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,eAAe,CAAC;AAkChE,kDAAkD;AAClD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,GACb,cAAc,CAOhB;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GACxB,cAAc,CAchB;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAK/D;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,YAAY,GACtB,SAAS,IAAI,eAAe,CAE9B;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,YAAY,GAAG,MAAM,CAIrE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAK5E;AAuED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,CAsG7D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAgB3D;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,YAAY,GAAE,CAAC,GAAG,CAAK,GAAG,QAAQ,CAW/D;AAoDD,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CA6C/D;AA0ED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CA+D9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAyC1E;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAE7B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAM,GAC9D,eAAe,CAWjB"}