@elaraai/east 0.0.1-beta.8 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/LICENSE.md +15 -666
  2. package/README.md +113 -88
  3. package/dist/src/analyze.d.ts +3 -0
  4. package/dist/src/analyze.d.ts.map +1 -1
  5. package/dist/src/analyze.js +223 -111
  6. package/dist/src/analyze.js.map +1 -1
  7. package/dist/src/analyze.spec.d.ts +2 -0
  8. package/dist/src/analyze.spec.d.ts.map +1 -0
  9. package/dist/src/analyze.spec.js +445 -0
  10. package/dist/src/analyze.spec.js.map +1 -0
  11. package/dist/src/ast.d.ts +54 -35
  12. package/dist/src/ast.d.ts.map +1 -1
  13. package/dist/src/ast_to_ir.coerce_to.spec.d.ts +15 -0
  14. package/dist/src/ast_to_ir.coerce_to.spec.d.ts.map +1 -0
  15. package/dist/src/ast_to_ir.coerce_to.spec.js +420 -0
  16. package/dist/src/ast_to_ir.coerce_to.spec.js.map +1 -0
  17. package/dist/src/ast_to_ir.d.ts +18 -4
  18. package/dist/src/ast_to_ir.d.ts.map +1 -1
  19. package/dist/src/ast_to_ir.js +233 -178
  20. package/dist/src/ast_to_ir.js.map +1 -1
  21. package/dist/src/builtins.d.ts +1 -1
  22. package/dist/src/builtins.d.ts.map +1 -1
  23. package/dist/src/builtins.js +194 -2
  24. package/dist/src/builtins.js.map +1 -1
  25. package/dist/src/comparison.d.ts +2 -2
  26. package/dist/src/comparison.d.ts.map +1 -1
  27. package/dist/src/comparison.js +115 -40
  28. package/dist/src/comparison.js.map +1 -1
  29. package/dist/src/comparison.spec.d.ts +2 -0
  30. package/dist/src/comparison.spec.d.ts.map +1 -0
  31. package/dist/src/comparison.spec.js +1200 -0
  32. package/dist/src/comparison.spec.js.map +1 -0
  33. package/dist/src/compile.d.ts +31 -9
  34. package/dist/src/compile.d.ts.map +1 -1
  35. package/dist/src/compile.js +1048 -548
  36. package/dist/src/compile.js.map +1 -1
  37. package/dist/src/containers/matrix.d.ts +15 -0
  38. package/dist/src/containers/matrix.d.ts.map +1 -0
  39. package/dist/src/containers/matrix.js +15 -0
  40. package/dist/src/containers/matrix.js.map +1 -0
  41. package/dist/src/containers/ref.d.ts.map +1 -1
  42. package/dist/src/containers/ref.js +1 -1
  43. package/dist/src/containers/ref.js.map +1 -1
  44. package/dist/src/containers/sortedmap.spec.d.ts +2 -0
  45. package/dist/src/containers/sortedmap.spec.d.ts.map +1 -0
  46. package/dist/src/containers/sortedmap.spec.js +180 -0
  47. package/dist/src/containers/sortedmap.spec.js.map +1 -0
  48. package/dist/src/containers/sortedset.spec.d.ts +2 -0
  49. package/dist/src/containers/sortedset.spec.d.ts.map +1 -0
  50. package/dist/src/containers/sortedset.spec.js +228 -0
  51. package/dist/src/containers/sortedset.spec.js.map +1 -0
  52. package/dist/src/containers/variant.d.ts.map +1 -1
  53. package/dist/src/containers/variant.js +1 -1
  54. package/dist/src/containers/variant.js.map +1 -1
  55. package/dist/src/containers/variant.spec.d.ts +2 -0
  56. package/dist/src/containers/variant.spec.d.ts.map +1 -0
  57. package/dist/src/containers/variant.spec.js +217 -0
  58. package/dist/src/containers/variant.spec.js.map +1 -0
  59. package/dist/src/datetime_format/parse.spec.d.ts +6 -0
  60. package/dist/src/datetime_format/parse.spec.d.ts.map +1 -0
  61. package/dist/src/datetime_format/parse.spec.js +379 -0
  62. package/dist/src/datetime_format/parse.spec.js.map +1 -0
  63. package/dist/src/datetime_format/print.spec.d.ts +6 -0
  64. package/dist/src/datetime_format/print.spec.d.ts.map +1 -0
  65. package/dist/src/datetime_format/print.spec.js +257 -0
  66. package/dist/src/datetime_format/print.spec.js.map +1 -0
  67. package/dist/src/datetime_format/tokenize.spec.d.ts +2 -0
  68. package/dist/src/datetime_format/tokenize.spec.d.ts.map +1 -0
  69. package/dist/src/datetime_format/tokenize.spec.js +508 -0
  70. package/dist/src/datetime_format/tokenize.spec.js.map +1 -0
  71. package/dist/src/datetime_format/types.d.ts +23 -23
  72. package/dist/src/default.d.ts.map +1 -1
  73. package/dist/src/default.js +33 -0
  74. package/dist/src/default.js.map +1 -1
  75. package/dist/src/default.spec.d.ts +2 -0
  76. package/dist/src/default.spec.d.ts.map +1 -0
  77. package/dist/src/default.spec.js +178 -0
  78. package/dist/src/default.spec.js.map +1 -0
  79. package/dist/src/eastir.d.ts +7 -0
  80. package/dist/src/eastir.d.ts.map +1 -1
  81. package/dist/src/eastir.js +55 -7
  82. package/dist/src/eastir.js.map +1 -1
  83. package/dist/src/error.d.ts +14 -4
  84. package/dist/src/error.d.ts.map +1 -1
  85. package/dist/src/error.js +28 -3
  86. package/dist/src/error.js.map +1 -1
  87. package/dist/src/example.d.ts +87 -0
  88. package/dist/src/example.d.ts.map +1 -0
  89. package/dist/src/example.js +18 -0
  90. package/dist/src/example.js.map +1 -0
  91. package/dist/src/expr/array.d.ts +43 -1
  92. package/dist/src/expr/array.d.ts.map +1 -1
  93. package/dist/src/expr/array.js +103 -53
  94. package/dist/src/expr/array.js.map +1 -1
  95. package/dist/src/expr/ast.d.ts +1 -1
  96. package/dist/src/expr/ast.d.ts.map +1 -1
  97. package/dist/src/expr/ast.js +112 -54
  98. package/dist/src/expr/ast.js.map +1 -1
  99. package/dist/src/expr/asyncfunction.d.ts.map +1 -1
  100. package/dist/src/expr/asyncfunction.js +6 -4
  101. package/dist/src/expr/asyncfunction.js.map +1 -1
  102. package/dist/src/expr/blob.d.ts +48 -0
  103. package/dist/src/expr/blob.d.ts.map +1 -1
  104. package/dist/src/expr/blob.js +63 -8
  105. package/dist/src/expr/blob.js.map +1 -1
  106. package/dist/src/expr/block.d.ts +213 -12
  107. package/dist/src/expr/block.d.ts.map +1 -1
  108. package/dist/src/expr/block.js +796 -293
  109. package/dist/src/expr/block.js.map +1 -1
  110. package/dist/src/expr/boolean.d.ts +44 -0
  111. package/dist/src/expr/boolean.d.ts.map +1 -1
  112. package/dist/src/expr/boolean.js +58 -6
  113. package/dist/src/expr/boolean.js.map +1 -1
  114. package/dist/src/expr/datetime.d.ts +135 -0
  115. package/dist/src/expr/datetime.d.ts.map +1 -1
  116. package/dist/src/expr/datetime.js +184 -34
  117. package/dist/src/expr/datetime.js.map +1 -1
  118. package/dist/src/expr/dict.d.ts +47 -2
  119. package/dist/src/expr/dict.d.ts.map +1 -1
  120. package/dist/src/expr/dict.js +122 -61
  121. package/dist/src/expr/dict.js.map +1 -1
  122. package/dist/src/expr/expr.d.ts +3 -1
  123. package/dist/src/expr/expr.d.ts.map +1 -1
  124. package/dist/src/expr/expr.js +4 -3
  125. package/dist/src/expr/expr.js.map +1 -1
  126. package/dist/src/expr/float.d.ts +153 -0
  127. package/dist/src/expr/float.d.ts.map +1 -1
  128. package/dist/src/expr/float.js +191 -17
  129. package/dist/src/expr/float.js.map +1 -1
  130. package/dist/src/expr/function.d.ts +7 -2
  131. package/dist/src/expr/function.d.ts.map +1 -1
  132. package/dist/src/expr/function.js +6 -4
  133. package/dist/src/expr/function.js.map +1 -1
  134. package/dist/src/expr/index.d.ts +186 -2
  135. package/dist/src/expr/index.d.ts.map +1 -1
  136. package/dist/src/expr/index.js +183 -2
  137. package/dist/src/expr/index.js.map +1 -1
  138. package/dist/src/expr/integer.d.ts +180 -0
  139. package/dist/src/expr/integer.d.ts.map +1 -1
  140. package/dist/src/expr/integer.js +189 -18
  141. package/dist/src/expr/integer.js.map +1 -1
  142. package/dist/src/expr/libs/array.js +3 -3
  143. package/dist/src/expr/libs/array.js.map +1 -1
  144. package/dist/src/expr/libs/blob.js +3 -3
  145. package/dist/src/expr/libs/blob.js.map +1 -1
  146. package/dist/src/expr/libs/dict.js +1 -1
  147. package/dist/src/expr/libs/dict.js.map +1 -1
  148. package/dist/src/expr/libs/matrix.d.ts +17 -0
  149. package/dist/src/expr/libs/matrix.d.ts.map +1 -0
  150. package/dist/src/expr/libs/matrix.js +60 -0
  151. package/dist/src/expr/libs/matrix.js.map +1 -0
  152. package/dist/src/expr/libs/set.js +1 -1
  153. package/dist/src/expr/libs/set.js.map +1 -1
  154. package/dist/src/expr/libs/string.d.ts.map +1 -1
  155. package/dist/src/expr/libs/string.js +2 -1
  156. package/dist/src/expr/libs/string.js.map +1 -1
  157. package/dist/src/expr/libs/vector.d.ts +16 -0
  158. package/dist/src/expr/libs/vector.d.ts.map +1 -0
  159. package/dist/src/expr/libs/vector.js +44 -0
  160. package/dist/src/expr/libs/vector.js.map +1 -0
  161. package/dist/src/expr/matrix.d.ts +109 -0
  162. package/dist/src/expr/matrix.d.ts.map +1 -0
  163. package/dist/src/expr/matrix.js +224 -0
  164. package/dist/src/expr/matrix.js.map +1 -0
  165. package/dist/src/expr/recursive.d.ts +83 -0
  166. package/dist/src/expr/recursive.d.ts.map +1 -0
  167. package/dist/src/expr/recursive.js +99 -0
  168. package/dist/src/expr/recursive.js.map +1 -0
  169. package/dist/src/expr/ref.js +5 -5
  170. package/dist/src/expr/ref.js.map +1 -1
  171. package/dist/src/expr/set.d.ts +44 -2
  172. package/dist/src/expr/set.d.ts.map +1 -1
  173. package/dist/src/expr/set.js +102 -52
  174. package/dist/src/expr/set.js.map +1 -1
  175. package/dist/src/expr/string.d.ts +134 -0
  176. package/dist/src/expr/string.d.ts.map +1 -1
  177. package/dist/src/expr/string.js +173 -23
  178. package/dist/src/expr/string.js.map +1 -1
  179. package/dist/src/expr/struct.d.ts +1 -1
  180. package/dist/src/expr/struct.d.ts.map +1 -1
  181. package/dist/src/expr/struct.js +2 -2
  182. package/dist/src/expr/struct.js.map +1 -1
  183. package/dist/src/expr/types.d.ts +12 -9
  184. package/dist/src/expr/types.d.ts.map +1 -1
  185. package/dist/src/expr/variant.d.ts +108 -11
  186. package/dist/src/expr/variant.d.ts.map +1 -1
  187. package/dist/src/expr/variant.js +76 -38
  188. package/dist/src/expr/variant.js.map +1 -1
  189. package/dist/src/expr/vector.d.ts +102 -0
  190. package/dist/src/expr/vector.d.ts.map +1 -0
  191. package/dist/src/expr/vector.js +202 -0
  192. package/dist/src/expr/vector.js.map +1 -0
  193. package/dist/src/fuzz.d.ts +36 -2
  194. package/dist/src/fuzz.d.ts.map +1 -1
  195. package/dist/src/fuzz.js +409 -77
  196. package/dist/src/fuzz.js.map +1 -1
  197. package/dist/src/index.d.ts +4 -0
  198. package/dist/src/index.d.ts.map +1 -1
  199. package/dist/src/index.js +4 -0
  200. package/dist/src/index.js.map +1 -1
  201. package/dist/src/internal.d.ts +12 -2
  202. package/dist/src/internal.d.ts.map +1 -1
  203. package/dist/src/internal.js +13 -2
  204. package/dist/src/internal.js.map +1 -1
  205. package/dist/src/ir.d.ts +1754 -1484
  206. package/dist/src/ir.d.ts.map +1 -1
  207. package/dist/src/ir.js +51 -34
  208. package/dist/src/ir.js.map +1 -1
  209. package/dist/src/ir.spec.d.ts +2 -0
  210. package/dist/src/ir.spec.d.ts.map +1 -0
  211. package/dist/src/ir.spec.js +35 -0
  212. package/dist/src/ir.spec.js.map +1 -0
  213. package/dist/src/location.d.ts +56 -17
  214. package/dist/src/location.d.ts.map +1 -1
  215. package/dist/src/location.js +226 -29
  216. package/dist/src/location.js.map +1 -1
  217. package/dist/src/location.spec.d.ts +2 -0
  218. package/dist/src/location.spec.d.ts.map +1 -0
  219. package/dist/src/location.spec.js +102 -0
  220. package/dist/src/location.spec.js.map +1 -0
  221. package/dist/src/patch/apply.d.ts +15 -0
  222. package/dist/src/patch/apply.d.ts.map +1 -0
  223. package/dist/src/patch/apply.js +352 -0
  224. package/dist/src/patch/apply.js.map +1 -0
  225. package/dist/src/patch/compose.d.ts +15 -0
  226. package/dist/src/patch/compose.d.ts.map +1 -0
  227. package/dist/src/patch/compose.js +448 -0
  228. package/dist/src/patch/compose.js.map +1 -0
  229. package/dist/src/patch/diff.d.ts +15 -0
  230. package/dist/src/patch/diff.d.ts.map +1 -0
  231. package/dist/src/patch/diff.js +347 -0
  232. package/dist/src/patch/diff.js.map +1 -0
  233. package/dist/src/patch/fuzz.d.ts +73 -0
  234. package/dist/src/patch/fuzz.d.ts.map +1 -0
  235. package/dist/src/patch/fuzz.js +159 -0
  236. package/dist/src/patch/fuzz.js.map +1 -0
  237. package/dist/src/patch/index.d.ts +32 -0
  238. package/dist/src/patch/index.d.ts.map +1 -0
  239. package/dist/src/patch/index.js +48 -0
  240. package/dist/src/patch/index.js.map +1 -0
  241. package/dist/src/patch/invert.d.ts +15 -0
  242. package/dist/src/patch/invert.d.ts.map +1 -0
  243. package/dist/src/patch/invert.js +284 -0
  244. package/dist/src/patch/invert.js.map +1 -0
  245. package/dist/src/patch/merge.d.ts +56 -0
  246. package/dist/src/patch/merge.d.ts.map +1 -0
  247. package/dist/src/patch/merge.js +586 -0
  248. package/dist/src/patch/merge.js.map +1 -0
  249. package/dist/src/patch/merge.spec.d.ts +2 -0
  250. package/dist/src/patch/merge.spec.d.ts.map +1 -0
  251. package/dist/src/patch/merge.spec.js +1139 -0
  252. package/dist/src/patch/merge.spec.js.map +1 -0
  253. package/dist/src/patch/patch.spec.d.ts +2 -0
  254. package/dist/src/patch/patch.spec.d.ts.map +1 -0
  255. package/dist/src/patch/patch.spec.js +452 -0
  256. package/dist/src/patch/patch.spec.js.map +1 -0
  257. package/dist/src/patch/path.d.ts +115 -0
  258. package/dist/src/patch/path.d.ts.map +1 -0
  259. package/dist/src/patch/path.js +192 -0
  260. package/dist/src/patch/path.js.map +1 -0
  261. package/dist/src/patch/path.spec.d.ts +6 -0
  262. package/dist/src/patch/path.spec.d.ts.map +1 -0
  263. package/dist/src/patch/path.spec.js +322 -0
  264. package/dist/src/patch/path.spec.js.map +1 -0
  265. package/dist/src/patch/prune.d.ts +77 -0
  266. package/dist/src/patch/prune.d.ts.map +1 -0
  267. package/dist/src/patch/prune.js +115 -0
  268. package/dist/src/patch/prune.js.map +1 -0
  269. package/dist/src/patch/prune.spec.d.ts +6 -0
  270. package/dist/src/patch/prune.spec.d.ts.map +1 -0
  271. package/dist/src/patch/prune.spec.js +473 -0
  272. package/dist/src/patch/prune.spec.js.map +1 -0
  273. package/dist/src/patch/type_of_patch.d.ts +25 -0
  274. package/dist/src/patch/type_of_patch.d.ts.map +1 -0
  275. package/dist/src/patch/type_of_patch.js +144 -0
  276. package/dist/src/patch/type_of_patch.js.map +1 -0
  277. package/dist/src/patch/types.d.ts +220 -0
  278. package/dist/src/patch/types.d.ts.map +1 -0
  279. package/dist/src/patch/types.js +62 -0
  280. package/dist/src/patch/types.js.map +1 -0
  281. package/dist/src/patch/validate.d.ts +44 -0
  282. package/dist/src/patch/validate.d.ts.map +1 -0
  283. package/dist/src/patch/validate.js +190 -0
  284. package/dist/src/patch/validate.js.map +1 -0
  285. package/dist/src/patch/validate.spec.d.ts +6 -0
  286. package/dist/src/patch/validate.spec.d.ts.map +1 -0
  287. package/dist/src/patch/validate.spec.js +225 -0
  288. package/dist/src/patch/validate.spec.js.map +1 -0
  289. package/dist/src/patch/walk.d.ts +121 -0
  290. package/dist/src/patch/walk.d.ts.map +1 -0
  291. package/dist/src/patch/walk.js +385 -0
  292. package/dist/src/patch/walk.js.map +1 -0
  293. package/dist/src/patch/walk.spec.d.ts +6 -0
  294. package/dist/src/patch/walk.spec.d.ts.map +1 -0
  295. package/dist/src/patch/walk.spec.js +621 -0
  296. package/dist/src/patch/walk.spec.js.map +1 -0
  297. package/dist/src/platform.d.ts +6 -0
  298. package/dist/src/platform.d.ts.map +1 -1
  299. package/dist/src/platform.spec.d.ts +2 -0
  300. package/dist/src/platform.spec.d.ts.map +1 -0
  301. package/dist/src/platform.spec.js +330 -0
  302. package/dist/src/platform.spec.js.map +1 -0
  303. package/dist/src/serialization/beast.d.ts.map +1 -1
  304. package/dist/src/serialization/beast.js +12 -0
  305. package/dist/src/serialization/beast.js.map +1 -1
  306. package/dist/src/serialization/beast.spec.d.ts +6 -0
  307. package/dist/src/serialization/beast.spec.d.ts.map +1 -0
  308. package/dist/src/serialization/beast.spec.js +406 -0
  309. package/dist/src/serialization/beast.spec.js.map +1 -0
  310. package/dist/src/serialization/beast2/index.d.ts +50 -0
  311. package/dist/src/serialization/beast2/index.d.ts.map +1 -0
  312. package/dist/src/serialization/beast2/index.js +756 -0
  313. package/dist/src/serialization/beast2/index.js.map +1 -0
  314. package/dist/src/serialization/beast2/index.spec.d.ts +6 -0
  315. package/dist/src/serialization/beast2/index.spec.d.ts.map +1 -0
  316. package/dist/src/serialization/beast2/index.spec.js +528 -0
  317. package/dist/src/serialization/beast2/index.spec.js.map +1 -0
  318. package/dist/src/serialization/beast2/sourcemap-table.d.ts +29 -0
  319. package/dist/src/serialization/beast2/sourcemap-table.d.ts.map +1 -0
  320. package/dist/src/serialization/beast2/sourcemap-table.js +82 -0
  321. package/dist/src/serialization/beast2/sourcemap-table.js.map +1 -0
  322. package/dist/src/serialization/beast2/string-table.d.ts +16 -0
  323. package/dist/src/serialization/beast2/string-table.d.ts.map +1 -0
  324. package/dist/src/serialization/beast2/string-table.js +38 -0
  325. package/dist/src/serialization/beast2/string-table.js.map +1 -0
  326. package/dist/src/serialization/beast2/type-table.d.ts +86 -0
  327. package/dist/src/serialization/beast2/type-table.d.ts.map +1 -0
  328. package/dist/src/serialization/beast2/type-table.js +618 -0
  329. package/dist/src/serialization/beast2/type-table.js.map +1 -0
  330. package/dist/src/serialization/beast2/value-table.d.ts +40 -0
  331. package/dist/src/serialization/beast2/value-table.d.ts.map +1 -0
  332. package/dist/src/serialization/beast2/value-table.js +157 -0
  333. package/dist/src/serialization/beast2/value-table.js.map +1 -0
  334. package/dist/src/serialization/binary-utils.d.ts +33 -0
  335. package/dist/src/serialization/binary-utils.d.ts.map +1 -1
  336. package/dist/src/serialization/binary-utils.js +157 -0
  337. package/dist/src/serialization/binary-utils.js.map +1 -1
  338. package/dist/src/serialization/csv.d.ts +17 -17
  339. package/dist/src/serialization/csv.d.ts.map +1 -1
  340. package/dist/src/serialization/csv.js +10 -8
  341. package/dist/src/serialization/csv.js.map +1 -1
  342. package/dist/src/serialization/csv.spec.d.ts +2 -0
  343. package/dist/src/serialization/csv.spec.d.ts.map +1 -0
  344. package/dist/src/serialization/csv.spec.js +556 -0
  345. package/dist/src/serialization/csv.spec.js.map +1 -0
  346. package/dist/src/serialization/east-inferred.spec.d.ts +2 -0
  347. package/dist/src/serialization/east-inferred.spec.d.ts.map +1 -0
  348. package/dist/src/serialization/east-inferred.spec.js +322 -0
  349. package/dist/src/serialization/east-inferred.spec.js.map +1 -0
  350. package/dist/src/serialization/east.d.ts +1 -1
  351. package/dist/src/serialization/east.d.ts.map +1 -1
  352. package/dist/src/serialization/east.js +178 -26
  353. package/dist/src/serialization/east.js.map +1 -1
  354. package/dist/src/serialization/east.spec.d.ts +2 -0
  355. package/dist/src/serialization/east.spec.d.ts.map +1 -0
  356. package/dist/src/serialization/east.spec.js +1548 -0
  357. package/dist/src/serialization/east.spec.js.map +1 -0
  358. package/dist/src/serialization/index.d.ts +1 -2
  359. package/dist/src/serialization/index.d.ts.map +1 -1
  360. package/dist/src/serialization/index.js +1 -2
  361. package/dist/src/serialization/index.js.map +1 -1
  362. package/dist/src/serialization/json.d.ts +1 -1
  363. package/dist/src/serialization/json.d.ts.map +1 -1
  364. package/dist/src/serialization/json.js +123 -24
  365. package/dist/src/serialization/json.js.map +1 -1
  366. package/dist/src/serialization/json.spec.d.ts +2 -0
  367. package/dist/src/serialization/json.spec.d.ts.map +1 -0
  368. package/dist/src/serialization/json.spec.js +1297 -0
  369. package/dist/src/serialization/json.spec.js.map +1 -0
  370. package/dist/src/type_of_type.d.ts +72 -35
  371. package/dist/src/type_of_type.d.ts.map +1 -1
  372. package/dist/src/type_of_type.is_data.spec.d.ts +6 -0
  373. package/dist/src/type_of_type.is_data.spec.d.ts.map +1 -0
  374. package/dist/src/type_of_type.is_data.spec.js +221 -0
  375. package/dist/src/type_of_type.is_data.spec.js.map +1 -0
  376. package/dist/src/type_of_type.js +355 -80
  377. package/dist/src/type_of_type.js.map +1 -1
  378. package/dist/src/type_of_type.to_etv.spec.d.ts +6 -0
  379. package/dist/src/type_of_type.to_etv.spec.d.ts.map +1 -0
  380. package/dist/src/type_of_type.to_etv.spec.js +263 -0
  381. package/dist/src/type_of_type.to_etv.spec.js.map +1 -0
  382. package/dist/src/types.d.ts +82 -12
  383. package/dist/src/types.d.ts.map +1 -1
  384. package/dist/src/types.error.spec.d.ts +2 -0
  385. package/dist/src/types.error.spec.d.ts.map +1 -0
  386. package/dist/src/types.error.spec.js +665 -0
  387. package/dist/src/types.error.spec.js.map +1 -0
  388. package/dist/src/types.js +663 -156
  389. package/dist/src/types.js.map +1 -1
  390. package/dist/src/types.spec.d.ts +2 -0
  391. package/dist/src/types.spec.d.ts.map +1 -0
  392. package/dist/src/types.spec.js +946 -0
  393. package/dist/src/types.spec.js.map +1 -0
  394. package/dist/src/walker.d.ts +65 -0
  395. package/dist/src/walker.d.ts.map +1 -0
  396. package/dist/src/walker.js +165 -0
  397. package/dist/src/walker.js.map +1 -0
  398. package/dist/src/walker.spec.d.ts +6 -0
  399. package/dist/src/walker.spec.d.ts.map +1 -0
  400. package/dist/src/walker.spec.js +109 -0
  401. package/dist/src/walker.spec.js.map +1 -0
  402. package/package.json +16 -38
  403. package/dist/src/serialization/beast2-stream.d.ts +0 -38
  404. package/dist/src/serialization/beast2-stream.d.ts.map +0 -1
  405. package/dist/src/serialization/beast2-stream.js +0 -670
  406. package/dist/src/serialization/beast2-stream.js.map +0 -1
  407. package/dist/src/serialization/beast2.d.ts +0 -41
  408. package/dist/src/serialization/beast2.d.ts.map +0 -1
  409. package/dist/src/serialization/beast2.js +0 -495
  410. package/dist/src/serialization/beast2.js.map +0 -1
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Patch system for computing and applying differences between East values.
7
+ *
8
+ * Provides core operations:
9
+ * - `diffFor(type)` — Compute the difference between two values
10
+ * - `applyFor(type)` — Apply a patch to a value
11
+ * - `composeFor(type)` — Combine two sequential patches
12
+ * - `invertFor(type)` — Invert a patch
13
+ *
14
+ * Plus 3-way merge primitives:
15
+ * - `detectConflictsFor(type)` — Identify overlapping leaves between two patches
16
+ * - `mergePatchFor(type)` — Merge two patches; throws on conflict
17
+ * - `mergeWithResolutionsFor(type)` — Merge with caller-supplied conflict resolutions
18
+ *
19
+ * @module
20
+ */
21
+ // Re-export types for public API
22
+ export { ConflictError, } from "./types.js";
23
+ // Re-export PatchType constructor
24
+ export { PatchType } from "./type_of_patch.js";
25
+ // Re-export merge primitives
26
+ export { mergeFor, detectConflictsFor, mergeWithResolutionsFor, } from "./merge.js";
27
+ // Re-export path utilities — typed segments + bidirectional string conversion
28
+ // for the documented `Conflict.path` format.
29
+ export { field, index, dictKey, variantTag, pathToString, pathFromString, pathDisplay, } from "./path.js";
30
+ // Re-export walk visitor — type-driven traversal of a PatchTypeOf<T> tree
31
+ // with re-diffing of container `replace` ops so consumers see leaf-level
32
+ // changes everywhere.
33
+ export { walkPatch, } from "./walk.js";
34
+ // Re-export prune utility — drop leaves from a patch by path predicate,
35
+ // cascading empty-container collapse up the tree.
36
+ export { prunePatchFor, } from "./prune.js";
37
+ // Promote core patch operations to public — long available via
38
+ // `@elaraai/east/internal`, the diff/apply/compose/invert primitives are
39
+ // stable and useful directly (e.g. for building diff-review UIs).
40
+ export { diffFor } from "./diff.js";
41
+ export { applyFor } from "./apply.js";
42
+ export { composeFor } from "./compose.js";
43
+ export { invertFor } from "./invert.js";
44
+ // `validatePatchFor` — non-throwing variant of apply that returns per-leaf
45
+ // disagreements as data. Sits beside `applyFor` (strict, throws) for UI
46
+ // flows that need to preview a patch's compatibility before commit.
47
+ export { validatePatchFor } from "./validate.js";
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patch/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,iCAAiC;AACjC,OAAO,EAIL,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,6BAA6B;AAC7B,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,8EAA8E;AAC9E,6CAA6C;AAC7C,OAAO,EAGL,KAAK,EACL,KAAK,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,0EAA0E;AAC1E,yEAAyE;AACzE,sBAAsB;AACtB,OAAO,EAIL,SAAS,GACV,MAAM,WAAW,CAAC;AAEnB,wEAAwE;AACxE,kDAAkD;AAClD,OAAO,EAEL,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,+DAA+D;AAC/D,yEAAyE;AACzE,kEAAkE;AAClE,OAAO,EAAE,OAAO,EAAE,MAAS,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAQ,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAO,aAAa,CAAC;AAEzC,2EAA2E;AAC3E,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * invertFor - Invert a patch.
7
+ *
8
+ * @module
9
+ */
10
+ import { type EastTypeValue } from "../type_of_type.js";
11
+ import type { EastType } from "../types.js";
12
+ import { type InvertContext } from "./types.js";
13
+ export declare function invertFor(type: EastTypeValue, ctx?: InvertContext): (patch: any) => any;
14
+ export declare function invertFor<T extends EastType>(type: T): (patch: any) => any;
15
+ //# sourceMappingURL=invert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../../src/patch/invert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AACzF,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * invertFor - Invert a patch.
7
+ *
8
+ * @module
9
+ */
10
+ import { toEastTypeValue } from "../type_of_type.js";
11
+ import { isVariant, variant } from "../containers/variant.js";
12
+ import { compareFor } from "../comparison.js";
13
+ import { SortedMap } from "../containers/sortedmap.js";
14
+ import {} from "./types.js";
15
+ export function invertFor(type, ctx = { invert: [], types: [], equal: new Map() }) {
16
+ // Convert to EastTypeValue and use a properly typed variable
17
+ const t = isVariant(type) ? type : toEastTypeValue(type);
18
+ if (t.type === "Never") {
19
+ return (_patch) => {
20
+ throw new Error("Cannot invert patches for type Never");
21
+ };
22
+ }
23
+ else if (t.type === "Null" ||
24
+ t.type === "Boolean" ||
25
+ t.type === "Integer" ||
26
+ t.type === "Float" ||
27
+ t.type === "String" ||
28
+ t.type === "DateTime" ||
29
+ t.type === "Blob" ||
30
+ t.type === "Vector" ||
31
+ t.type === "Matrix") {
32
+ return (patch) => {
33
+ if (patch.type === "unchanged") {
34
+ return patch;
35
+ }
36
+ else if (patch.type === "replace") {
37
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
38
+ }
39
+ else {
40
+ throw new Error(`Invalid patch type for primitive inversion: ${patch.type}`);
41
+ }
42
+ };
43
+ }
44
+ else if (t.type === "Array") {
45
+ let elementInvert;
46
+ const ret = (patch) => {
47
+ if (patch.type === "unchanged") {
48
+ return patch;
49
+ }
50
+ else if (patch.type === "replace") {
51
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
52
+ }
53
+ else if (patch.type === "patch") {
54
+ const operations = patch.value;
55
+ const inverted = [];
56
+ for (let i = operations.length - 1; i >= 0; i--) {
57
+ const op = operations[i];
58
+ if (op.operation.type === "delete") {
59
+ // Delete becomes insert at same position
60
+ inverted.push({
61
+ key: op.key,
62
+ offset: 0n,
63
+ operation: variant("insert", op.operation.value),
64
+ });
65
+ }
66
+ else if (op.operation.type === "insert") {
67
+ // Insert becomes delete at same position
68
+ inverted.push({
69
+ key: op.key,
70
+ offset: 0n,
71
+ operation: variant("delete", op.operation.value),
72
+ });
73
+ }
74
+ else if (op.operation.type === "update") {
75
+ inverted.push({
76
+ key: op.key,
77
+ offset: 0n,
78
+ operation: variant("update", elementInvert(op.operation.value)),
79
+ });
80
+ }
81
+ }
82
+ return variant("patch", inverted);
83
+ }
84
+ else {
85
+ throw new Error(`Invalid patch type for array inversion: ${patch.type}`);
86
+ }
87
+ };
88
+ ctx.invert.push(ret);
89
+ ctx.types.push(t);
90
+ elementInvert = invertFor(t.value, ctx);
91
+ ctx.invert.pop();
92
+ ctx.types.pop();
93
+ return ret;
94
+ }
95
+ else if (t.type === "Set") {
96
+ const keyCompare = compareFor(t.value);
97
+ return (patch) => {
98
+ if (patch.type === "unchanged") {
99
+ return patch;
100
+ }
101
+ else if (patch.type === "replace") {
102
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
103
+ }
104
+ else if (patch.type === "patch") {
105
+ const operations = patch.value;
106
+ const inverted = new SortedMap(undefined, keyCompare);
107
+ for (const [key, op] of operations) {
108
+ if (op.type === "delete") {
109
+ inverted.set(key, variant("insert", null));
110
+ }
111
+ else if (op.type === "insert") {
112
+ inverted.set(key, variant("delete", null));
113
+ }
114
+ }
115
+ return variant("patch", inverted);
116
+ }
117
+ else {
118
+ throw new Error(`Invalid patch type for set inversion: ${patch.type}`);
119
+ }
120
+ };
121
+ }
122
+ else if (t.type === "Dict") {
123
+ let valueInvert;
124
+ const keyCompare = compareFor(t.value.key);
125
+ const ret = (patch) => {
126
+ if (patch.type === "unchanged") {
127
+ return patch;
128
+ }
129
+ else if (patch.type === "replace") {
130
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
131
+ }
132
+ else if (patch.type === "patch") {
133
+ const operations = patch.value;
134
+ const inverted = new SortedMap(undefined, keyCompare);
135
+ for (const [key, op] of operations) {
136
+ if (op.type === "delete") {
137
+ inverted.set(key, variant("insert", op.value));
138
+ }
139
+ else if (op.type === "insert") {
140
+ inverted.set(key, variant("delete", op.value));
141
+ }
142
+ else if (op.type === "update") {
143
+ inverted.set(key, variant("update", valueInvert(op.value)));
144
+ }
145
+ }
146
+ return variant("patch", inverted);
147
+ }
148
+ else {
149
+ throw new Error(`Invalid patch type for dict inversion: ${patch.type}`);
150
+ }
151
+ };
152
+ ctx.invert.push(ret);
153
+ ctx.types.push(t);
154
+ valueInvert = invertFor(t.value.value, ctx);
155
+ ctx.invert.pop();
156
+ ctx.types.pop();
157
+ return ret;
158
+ }
159
+ else if (t.type === "Struct") {
160
+ const fieldInverts = {};
161
+ const ret = (patch) => {
162
+ if (patch.type === "unchanged") {
163
+ return patch;
164
+ }
165
+ else if (patch.type === "replace") {
166
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
167
+ }
168
+ else if (patch.type === "patch") {
169
+ const result = {};
170
+ let allUnchanged = true;
171
+ for (const { name } of t.value) {
172
+ const inverted = fieldInverts[name](patch.value[name]);
173
+ result[name] = inverted;
174
+ if (inverted.type !== "unchanged") {
175
+ allUnchanged = false;
176
+ }
177
+ }
178
+ if (allUnchanged) {
179
+ return variant("unchanged", null);
180
+ }
181
+ return variant("patch", result);
182
+ }
183
+ else {
184
+ throw new Error(`Invalid patch type for struct inversion: ${patch.type}`);
185
+ }
186
+ };
187
+ ctx.invert.push(ret);
188
+ ctx.types.push(t);
189
+ for (const { name, type: fieldType } of t.value) {
190
+ fieldInverts[name] = invertFor(fieldType, ctx);
191
+ }
192
+ ctx.invert.pop();
193
+ ctx.types.pop();
194
+ return ret;
195
+ }
196
+ else if (t.type === "Variant") {
197
+ const caseInverts = {};
198
+ const ret = (patch) => {
199
+ if (patch.type === "unchanged") {
200
+ return patch;
201
+ }
202
+ else if (patch.type === "replace") {
203
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
204
+ }
205
+ else if (patch.type === "patch") {
206
+ const caseName = patch.value.type;
207
+ const inverted = caseInverts[caseName](patch.value.value);
208
+ if (inverted.type === "unchanged") {
209
+ return variant("unchanged", null);
210
+ }
211
+ return variant("patch", variant(caseName, inverted));
212
+ }
213
+ else {
214
+ throw new Error(`Invalid patch type for variant inversion: ${patch.type}`);
215
+ }
216
+ };
217
+ ctx.invert.push(ret);
218
+ ctx.types.push(t);
219
+ for (const { name, type: caseType } of t.value) {
220
+ caseInverts[name] = invertFor(caseType, ctx);
221
+ }
222
+ ctx.invert.pop();
223
+ ctx.types.pop();
224
+ return ret;
225
+ }
226
+ else if (t.type === "Ref") {
227
+ let innerInvert;
228
+ const ret = (patch) => {
229
+ if (patch.type === "unchanged") {
230
+ return patch;
231
+ }
232
+ else if (patch.type === "replace") {
233
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
234
+ }
235
+ else if (patch.type === "patch") {
236
+ const inverted = innerInvert(patch.value);
237
+ if (inverted.type === "unchanged") {
238
+ return variant("unchanged", null);
239
+ }
240
+ return variant("patch", inverted);
241
+ }
242
+ else {
243
+ throw new Error(`Invalid patch type for ref inversion: ${patch.type}`);
244
+ }
245
+ };
246
+ ctx.invert.push(ret);
247
+ ctx.types.push(t);
248
+ innerInvert = invertFor(t.value, ctx);
249
+ ctx.invert.pop();
250
+ ctx.types.pop();
251
+ return ret;
252
+ }
253
+ else if (t.type === "Recursive") {
254
+ // Recursive types use replace-only semantics - only unchanged and replace patches
255
+ return (patch) => {
256
+ if (patch.type === "unchanged") {
257
+ return patch;
258
+ }
259
+ else if (patch.type === "replace") {
260
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
261
+ }
262
+ else {
263
+ throw new Error(`Invalid patch type for recursive type inversion: ${patch.type}`);
264
+ }
265
+ };
266
+ }
267
+ else if (t.type === "Function" || t.type === "AsyncFunction") {
268
+ return (patch) => {
269
+ if (patch.type === "unchanged") {
270
+ return patch;
271
+ }
272
+ else if (patch.type === "replace") {
273
+ return variant("replace", { before: patch.value.after, after: patch.value.before });
274
+ }
275
+ else {
276
+ throw new Error(`Invalid patch type for function inversion: ${patch.type}`);
277
+ }
278
+ };
279
+ }
280
+ else {
281
+ throw new Error(`Unhandled type in invertFor: ${t.type}`);
282
+ }
283
+ }
284
+ //# sourceMappingURL=invert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invert.js","sourceRoot":"","sources":["../../../src/patch/invert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Patch merge — 3-way merge of two patches against the same base.
7
+ *
8
+ * Given a snapshot S and two patches P_A, P_B both diffed against S, produce
9
+ * a single patch P_merged that captures the intent of both A and B. Where the
10
+ * two patches touch the same leaf with different intents, that is a conflict.
11
+ *
12
+ * Three operation modes:
13
+ * - {@link mergeFor} — throws ConflictError on any conflict
14
+ * - {@link detectConflictsFor} — returns the list of conflicts (no throw)
15
+ * - {@link mergeWithResolutionsFor} — applies caller-supplied per-path
16
+ * resolutions (`keepA` / `keepB` / `manual`); throws if any unresolved
17
+ *
18
+ * @module
19
+ */
20
+ import { type EastTypeValue } from "../type_of_type.js";
21
+ import type { EastType } from "../types.js";
22
+ import { type MergeContext, type Conflict, type Resolution } from "./types.js";
23
+ /**
24
+ * Build a merge function for a given East type. Returns a closure
25
+ * `(patchA, patchB) => merged`. Throws {@link ConflictError} if any leaf in
26
+ * the two patches conflicts (i.e. both patches touch the same leaf with
27
+ * incompatible operations).
28
+ *
29
+ * For conflict-tolerant merging, use {@link detectConflictsFor} or
30
+ * {@link mergeWithResolutionsFor}.
31
+ */
32
+ export declare function mergeFor(type: EastTypeValue, ctx?: MergeContext): (a: any, b: any) => any;
33
+ export declare function mergeFor<T extends EastType>(type: T): (a: any, b: any) => any;
34
+ /**
35
+ * Build a function that detects conflicts between two patches without
36
+ * attempting to merge. Pure observation — never throws.
37
+ *
38
+ * Returns the list of {@link Conflict} descriptors, each carrying the
39
+ * dot/bracket-encoded `path` to the conflicting leaf and both `valueA` /
40
+ * `valueB` patch arms at that path.
41
+ */
42
+ export declare function detectConflictsFor(type: EastTypeValue, ctx?: MergeContext): (a: any, b: any) => Conflict[];
43
+ export declare function detectConflictsFor<T extends EastType>(type: T): (a: any, b: any) => Conflict[];
44
+ /**
45
+ * Build a merge function that consumes caller-supplied per-conflict
46
+ * resolutions. The `resolutions` map is keyed on `Conflict.path` strings; for
47
+ * each conflict, the corresponding {@link Resolution} dictates whether
48
+ * patchA's value, patchB's value, or a manual replacement is used.
49
+ *
50
+ * Throws {@link ConflictError} if any conflict has no matching resolution
51
+ * (or if a `manual` resolution targets a non-leaf where no `before` is
52
+ * available — see `applyResolution` JSDoc in the source).
53
+ */
54
+ export declare function mergeWithResolutionsFor(type: EastTypeValue, ctx?: MergeContext): (a: any, b: any, resolutions: Map<string, Resolution>) => any;
55
+ export declare function mergeWithResolutionsFor<T extends EastType>(type: T): (a: any, b: any, resolutions: Map<string, Resolution>) => any;
56
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/patch/merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAiB,MAAM,YAAY,CAAC;AAiiB9F;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;AAC3F,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;AAiB/E;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC;AAC5G,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC;AAchG;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,GAAG,CAAC,EAAE,YAAY,GACjB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC;AACjE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EACxD,IAAI,EAAE,CAAC,GACN,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC"}