@cortex-js/compute-engine 0.60.0 → 0.61.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 (292) hide show
  1. package/dist/compile.esm.js +1270 -25
  2. package/dist/compile.min.esm.js +324 -78
  3. package/dist/compile.min.umd.cjs +324 -78
  4. package/dist/compile.umd.cjs +1270 -25
  5. package/dist/compute-engine.esm.js +867 -26
  6. package/dist/compute-engine.min.esm.js +329 -83
  7. package/dist/compute-engine.min.umd.cjs +329 -83
  8. package/dist/compute-engine.umd.cjs +867 -26
  9. package/dist/core.esm.js +855 -24
  10. package/dist/core.min.esm.js +330 -84
  11. package/dist/core.min.umd.cjs +330 -84
  12. package/dist/core.umd.cjs +855 -24
  13. package/dist/identities.esm.js +2 -2
  14. package/dist/identities.min.esm.js +2 -2
  15. package/dist/identities.min.umd.cjs +2 -2
  16. package/dist/identities.umd.cjs +2 -2
  17. package/dist/integration-rules.esm.js +2 -2
  18. package/dist/integration-rules.min.esm.js +2 -2
  19. package/dist/integration-rules.min.umd.cjs +2 -2
  20. package/dist/integration-rules.umd.cjs +2 -2
  21. package/dist/interval.esm.js +2 -2
  22. package/dist/interval.min.esm.js +2 -2
  23. package/dist/interval.min.umd.cjs +2 -2
  24. package/dist/interval.umd.cjs +2 -2
  25. package/dist/latex-syntax.esm.js +2 -2
  26. package/dist/latex-syntax.min.esm.js +2 -2
  27. package/dist/latex-syntax.min.umd.cjs +2 -2
  28. package/dist/latex-syntax.umd.cjs +2 -2
  29. package/dist/math-json.esm.js +2 -2
  30. package/dist/math-json.min.esm.js +2 -2
  31. package/dist/math-json.min.umd.cjs +2 -2
  32. package/dist/math-json.umd.cjs +2 -2
  33. package/dist/numerics.esm.js +2 -2
  34. package/dist/numerics.min.esm.js +2 -2
  35. package/dist/numerics.min.umd.cjs +2 -2
  36. package/dist/numerics.umd.cjs +2 -2
  37. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  38. package/dist/types/big-decimal/index.d.ts +1 -1
  39. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  40. package/dist/types/big-decimal/utils.d.ts +1 -1
  41. package/dist/types/common/ansi-codes.d.ts +1 -1
  42. package/dist/types/common/configuration-change.d.ts +1 -1
  43. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  44. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  45. package/dist/types/common/interruptible.d.ts +1 -1
  46. package/dist/types/common/one-of.d.ts +1 -1
  47. package/dist/types/common/signals.d.ts +1 -1
  48. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  49. package/dist/types/common/type/boxed-type.d.ts +1 -1
  50. package/dist/types/common/type/lexer.d.ts +1 -1
  51. package/dist/types/common/type/parse.d.ts +1 -1
  52. package/dist/types/common/type/parser.d.ts +1 -1
  53. package/dist/types/common/type/primitive.d.ts +1 -1
  54. package/dist/types/common/type/reduce.d.ts +1 -1
  55. package/dist/types/common/type/serialize.d.ts +1 -1
  56. package/dist/types/common/type/subtype.d.ts +1 -1
  57. package/dist/types/common/type/type-builder.d.ts +1 -1
  58. package/dist/types/common/type/types.d.ts +1 -1
  59. package/dist/types/common/type/utils.d.ts +1 -1
  60. package/dist/types/common/utils.d.ts +1 -1
  61. package/dist/types/compile.d.ts +2 -1
  62. package/dist/types/compute-engine/assume.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  82. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/exp-to-trig.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  88. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/multivariate-gcd.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/multivariate-poly.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  99. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  100. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  103. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  104. package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +1 -1
  105. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  106. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  107. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  108. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  109. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  110. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  111. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  112. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  113. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  114. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  115. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  116. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  117. package/dist/types/compute-engine/compilation/base-compiler.d.ts +79 -1
  118. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  119. package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
  120. package/dist/types/compute-engine/compilation/glsl-target.d.ts +2 -2
  121. package/dist/types/compute-engine/compilation/gpu-target.d.ts +7 -1
  122. package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +49 -0
  123. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  124. package/dist/types/compute-engine/compilation/javascript-target.d.ts +30 -2
  125. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  126. package/dist/types/compute-engine/compilation/types.d.ts +54 -2
  127. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  128. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  133. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  134. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  135. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  136. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  137. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  138. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  139. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  140. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  141. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  142. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  143. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  144. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  145. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  146. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  147. package/dist/types/compute-engine/function-properties/index.d.ts +1 -1
  148. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  149. package/dist/types/compute-engine/fungrim/loader.d.ts +1 -1
  150. package/dist/types/compute-engine/fungrim/types.d.ts +1 -1
  151. package/dist/types/compute-engine/global-types.d.ts +1 -1
  152. package/dist/types/compute-engine/index.d.ts +10 -1
  153. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  154. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  155. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  156. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  157. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  158. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  159. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  170. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  172. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  173. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  174. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  175. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  176. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  177. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  178. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  179. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  180. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  181. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  182. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  183. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  184. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  185. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  186. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  187. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  188. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  189. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  190. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  191. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  192. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  193. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  194. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  195. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  196. package/dist/types/compute-engine/library/core.d.ts +1 -1
  197. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  198. package/dist/types/compute-engine/library/library.d.ts +1 -1
  199. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  200. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  201. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  202. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  203. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  204. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  205. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  206. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  207. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  208. package/dist/types/compute-engine/library/special-functions.d.ts +1 -1
  209. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  210. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  211. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  212. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  213. package/dist/types/compute-engine/library/units.d.ts +1 -1
  214. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  215. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  216. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  217. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  218. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  219. package/dist/types/compute-engine/numerics/bernoulli.d.ts +1 -1
  220. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  221. package/dist/types/compute-engine/numerics/complex-esm-augment.d.ts +1 -1
  222. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  223. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  224. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  225. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  226. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  227. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  228. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  229. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  230. package/dist/types/compute-engine/numerics/oscillatory-quadrature.d.ts +1 -1
  231. package/dist/types/compute-engine/numerics/polynomial-roots.d.ts +1 -1
  232. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  233. package/dist/types/compute-engine/numerics/random.d.ts +1 -1
  234. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  235. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  236. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  237. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  238. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  239. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  240. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  241. package/dist/types/compute-engine/oeis.d.ts +1 -1
  242. package/dist/types/compute-engine/rubi/compile.d.ts +1 -1
  243. package/dist/types/compute-engine/rubi/driver.d.ts +1 -1
  244. package/dist/types/compute-engine/rubi/loader.d.ts +1 -1
  245. package/dist/types/compute-engine/rubi/match.d.ts +1 -1
  246. package/dist/types/compute-engine/rubi/normal-form.d.ts +1 -1
  247. package/dist/types/compute-engine/rubi/rubi-utils.d.ts +1 -1
  248. package/dist/types/compute-engine/rubi/types.d.ts +1 -1
  249. package/dist/types/compute-engine/sequence.d.ts +1 -1
  250. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  251. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  252. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  253. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  254. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  255. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  256. package/dist/types/compute-engine/symbolic/limit.d.ts +1 -1
  257. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  258. package/dist/types/compute-engine/symbolic/residue.d.ts +1 -1
  259. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  260. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  261. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  262. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  263. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  264. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  265. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  266. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  267. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  268. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  269. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  270. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  271. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  272. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  273. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  274. package/dist/types/compute-engine/types-engine.d.ts +11 -1
  275. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  276. package/dist/types/compute-engine/types-expression.d.ts +1 -1
  277. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
  278. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  279. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  280. package/dist/types/compute-engine/types.d.ts +1 -1
  281. package/dist/types/compute-engine.d.ts +1 -1
  282. package/dist/types/core.d.ts +1 -1
  283. package/dist/types/identities.d.ts +1 -1
  284. package/dist/types/integration-rules.d.ts +1 -1
  285. package/dist/types/interval.d.ts +1 -1
  286. package/dist/types/latex-syntax.d.ts +2 -2
  287. package/dist/types/math-json/symbols.d.ts +1 -1
  288. package/dist/types/math-json/types.d.ts +1 -1
  289. package/dist/types/math-json/utils.d.ts +1 -1
  290. package/dist/types/math-json.d.ts +2 -2
  291. package/dist/types/numerics.d.ts +1 -1
  292. package/package.json +1 -1
@@ -1,60 +1,60 @@
1
- /** Compile 0.60.0 */
1
+ /** Compile 0.61.0 */
2
2
  (function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Compile = {}));})(this, (function (exports) { 'use strict';
3
- "use strict";var Compile=(()=>{var Wi=Object.defineProperty;var uc=Object.getOwnPropertyDescriptor;var lc=Object.getOwnPropertyNames;var cc=Object.prototype.hasOwnProperty;var fc=(e,n)=>{for(var t in n)Wi(e,t,{get:n[t],enumerable:!0})},pc=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of lc(n))!cc.call(e,r)&&r!==t&&Wi(e,r,{get:()=>n[r],enumerable:!(i=uc(n,r))||i.enumerable});return e};var mc=e=>pc(Wi({},"__esModule",{value:!0}),e);var kd={};fc(kd,{BaseCompiler:()=>y,GLSLTarget:()=>Di,GPUShaderTarget:()=>fn,IntervalJavaScriptTarget:()=>Yi,JavaScriptTarget:()=>Ri,PythonTarget:()=>Oi,WGSLTarget:()=>Fi,compile:()=>Lu,version:()=>Sd});var Ge=class extends Error{cause;value;constructor({message:n,value:t,cause:i}={}){super(n??"Operation canceled"),t&&(this.value=t),this.cause=i,this.name="CancellationError"}};function Xn(e){if(e!==void 0&&Date.now()>=e)throw new Ge({cause:"timeout",message:"Timeout exceeded"})}var Dt;function Ft(){return Dt}function Ot(e,n){let t=Dt;Dt=e;try{return n()}finally{Dt=t}}function Xi(e,n){let t=Date.now();for(;;){let{done:i,value:r}=e.next();if(i)return r;if(Date.now()-t>=n)throw new Ge({value:r,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}}function Qi(e,n,t={}){let{contract:i=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2,deadline:c=Ft()}=t;return isFinite(n)?Ot(c,()=>{let f=r,m=Math.pow(1/i,s),h=e(n+f),b=[h],v=1/0,E=1;for(;E<u;){Xn(c),E+=1,f*=i,b.push(e(n+f));let I=m,w=1/0;for(let O=b.length-2;O>=0;O--){let z=b[O];b[O]=b[O+1]+(b[O+1]-b[O])/(I-1);let D=Math.abs(b[O]-z);w=Math.min(w,D),D<v&&(h=b[O],v=D),I*=m}if(w>l*v||!isFinite(w)||v<=Math.max(a*Math.abs(h),o))break}return[h,v]}):Qi(f=>e(1/f),1/n,{rtol:a,atol:o,maxeval:u,contract:Math.abs(i)>1?1/i:i,step:1/r,power:s,deadline:c})}var Ao=new Map,dc=1e5;function V(e){if(e<=dc){let n=Ao.get(e);return n===void 0&&(n=10n**BigInt(e),Ao.set(e,n)),n}return 10n**BigInt(e)}function je(e){if(e<0n&&(e=-e),e===0n)return 0;let n=0,t=1;for(;e>>BigInt(t)>0n;)t*=2;for(let i=t>>1;i>=1;i>>=1)e>>BigInt(i)>0n&&(n+=i,e>>=BigInt(i));return n+1}function Ro(e,n,t){return e*n>>BigInt(t)}function Po(e,n,t){return(e<<BigInt(t))/n}function Kn(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t=e<<BigInt(n),i;if(n<hc){i=nr(t);let a;do a=i,i=(i+t/i)/2n;while(ge(i-a)>1n)}else i=tr(t,je(t));let r=(i+t/i)/2n,s=ge(i*i-t);return ge(r*r-t)<s?r:i}function nr(e){let n=je(e);if(n<=1023){let o=Math.sqrt(Number(e));if(Number.isFinite(o)&&o>=1)return BigInt(Math.floor(o))}let t=n-52,i=Number(e>>BigInt(t)),r=Math.sqrt(i);t&1&&(r*=Math.SQRT2);let s=BigInt(Math.round(r))<<BigInt(t>>1);return s>0n?s:1n}var Do=1024,hc=640;function tr(e,n){if(n<Do){let s=nr(e),o;do o=s,s=(s+e/s)/2n;while(ge(s-o)>1n);for(;s*s>e;)s-=1n;for(;(s+1n)*(s+1n)<=e;)s+=1n;return s}let t=n>>2<<1,i=tr(e>>BigInt(t),n-t)<<BigInt(t>>1),r;do r=i,i=(i+e/i)/2n;while(ge(i-r)>1n);for(;i*i>e;)i-=1n;for(;(i+1n)*(i+1n)<=e;)i+=1n;return i}function ge(e){return e<0n?-e:e}function ue(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n)return Math.floor(Math.log10(Number(e)))+1;let n=0,t=e,i=1;for(;t>>BigInt(i)>0n;)i*=2;for(let s=i>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(n+=s,t>>=BigInt(s));n+=1;let r=Math.ceil(n*.30102999566398);return e<V(r-1)?r-1:e>=V(r)?r+1:r}function Bt(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return i;let r=0,s=e,o=i>>1n;for(;ge(s)>o;)s=s/2n,r++;let a=i,u=s;a+=u;for(let l=2;u=(u*s>>t)/BigInt(l),u!==0n;l++)a+=u;for(let l=0;l<r;l++)a=a*a>>t;return a}var gc=2300;function ir(e,n){let t=1n<<BigInt(n);if(e<=0n)throw new RangeError("fpln: input must be positive");return e===t?0n:n>=gc?xc(e,n):bc(e,n)}function bc(e,n){let t=BigInt(n),i=1n<<t,r=Number(e),s=Number(i),o,a=e,u=0,l=2;if(Number.isFinite(r)&&Number.isFinite(s)&&r>0&&s>0){let f=r/s;if(Number.isFinite(f)&&f>0){let m=Math.log(f);Number.isFinite(m)?(o=BigInt(Math.round(m*s)),l=48):o=Ki(e,n)}else o=Ki(e,n)}else{a=e;let f=i<<1n,m=i>>1n;for(;a>f||a<m;)a=Kn(a,n),u++;o=Ki(a,n)}for(let f=Math.min(n,Math.max(8,2*l));f<n;){let m=BigInt(f),h=BigInt(n-f),b=o>>h,v=Bt(b,f);if(v===0n){o=o/2n;continue}let E=a>>h;o=b+(E<<m)/v-(1n<<m)<<h,f=Math.min(n,2*f)}let c=0n;for(let f=0;f<100;f++){let m=Bt(o,n);if(m===0n){o=o/2n;continue}let h=o+(a<<t)/m-i,b=ge(h-o);if(b<=1n||b<100000n&&c>0n&&c<100000n&&b*4n>=c)break;c=b,o=h}for(let f=0;f<u;f++)o=2n*o;return o}var dn=null;function yc(e){if(dn!==null){if(dn.bits===e)return dn.value;if(dn.bits>e)return dn.value>>BigInt(dn.bits-e)}let n=Math.ceil(e*qt)+12,t;if(n<=$o.length){let i=$o.slice(0,n);t=(BigInt(i)<<BigInt(e))/V(i.length)}else t=_c(e);return dn={bits:e,value:t},t}function xc(e,n){let t=BigInt(n),i=je(e)-n,r=Math.max(2,Math.ceil(n/2+4-i)),s=e<<BigInt(r-2),o=1n<<t,a=s;for(;ge(o-a)>1n;){let l=o+a>>1n;a=et(o*a),o=l}return Vt(n)*s/(2n*o)-BigInt(r)*yc(n)}var Co=6243314768165359n;function Ki(e,n){let t=BigInt(je(e)-n);return n>=53?t*Co<<BigInt(n-53):t*Co>>BigInt(53-n)}var $n="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",qt=Math.log10(2),$o="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",vc=13591409n,Ec=545140134n,Nc=10939058860032000n,Tc=47.11;function Lt(e,n){if(n-e===1){let l,c;if(e===0)l=1n,c=1n;else{l=BigInt(6*e-5)*BigInt(2*e-1)*BigInt(6*e-1);let m=BigInt(e);c=m*m*m*Nc}let f=l*(vc+Ec*BigInt(e));return e&1&&(f=-f),[l,c,f]}let t=e+n>>1,[i,r,s]=Lt(e,t),[o,a,u]=Lt(t,n);return[i*o,r*a,a*s+i*u]}function Fo(e){return Math.max(2,Math.floor(e/Tc)+3)}function Ic(e){let[,n,t]=Lt(0,Fo(e)),i=1n<<BigInt(e),r=et(10005n*i*i);return n*426880n*r/t}function Oo(e){let[,n,t]=Lt(0,Fo(Math.ceil(e/qt))),i=V(e),r=et(10005n*i*i);return n*426880n*r/t}function er(e,n){if(n-e===1){let l=e===0?1n:BigInt(2*e-1),c=e===0?1n:9n*BigInt(2*e+1);return[l,c,l]}let t=e+n>>1,[i,r,s]=er(e,t),[o,a,u]=er(t,n);return[i*o,r*a,a*s+i*u]}function _c(e){let n=Math.max(2,Math.ceil(e/3.169925)+5),[,t,i]=er(0,n);return(i<<BigInt(e+1))/(3n*t)}function et(e){if(e<0n)throw new RangeError("bigintSqrt: negative input");if(e===0n)return 0n;let n=je(e);if(n>=Do)return tr(e,n);let t=nr(e),i;do i=t,t=(t+e/t)/2n;while(ge(t-i)>1n);for(;t*t>e;)t-=1n;for(;(t+1n)*(t+1n)<=e;)t+=1n;return t}var hn=null;function Vt(e){if(hn!==null){if(hn.bits===e)return hn.value;if(hn.bits>e)return hn.value>>BigInt(hn.bits-e)}let n=Sc(e);return hn={bits:e,value:n},n}function Sc(e){let n=Math.ceil(e*qt)+12;if(n+1<=$n.length){let t=$n.slice(0,n+1);return(BigInt(t)<<BigInt(e))/V(t.length-1)}return Ic(e)}function Jt(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return[0n,i];let r=Vt(n),s=2n*r,o=r/2n,a,u=ge(e);if(u>i<<30n){let D=je(u)-n+64,F=n+D,oe=e<<BigInt(D),K=2n*Vt(F),Q=oe%K;Q<0n&&(Q+=K),a=Q>>BigInt(D)}else a=e%s;a<0n&&(a+=s);let l=1n,c=1n;a>3n*o?(a=s-a,l=-1n):a>r?(a=a-r,l=-1n,c=-1n):a>o&&(a=r-a,c=-1n);let f=Math.round(n*qt),m=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(f)))),h=0,b=i>>BigInt(m);for(;a>b;)a=a/2n,h++;let v=a,E=i,I=a,w=i,O=a*a,z=2n*t;for(let D=2;;D+=2){if(w=(w*O>>z)/(BigInt(D)*BigInt(D-1)),w===0n){I=(I*O>>z)/(BigInt(D+1)*BigInt(D)),I!==0n&&(D%4===2?(E-=w,v-=I):(E+=w,v+=I));break}if(I=(I*O>>z)/(BigInt(D+1)*BigInt(D)),D%4===2?(E-=w,v-=I):(E+=w,v+=I),I===0n)break}for(let D=0;D<h;D++){let F=2n*v*E>>t,oe=(2n*E*E>>t)-i;v=F,E=oe}return[l*v,c*E]}function Qn(e,n){if(e===0n)return 0n;if(e<0n)return-Qn(-e,n);let t=BigInt(n),i=1n<<t,s=Vt(n)/2n;if(e>i){let h=(i<<t)/e;return s-Qn(h,n)}let o=4n*i/10n,a=0,u=e;for(;u>o;){let h=u*u,b=(i<<t)+h>>t,v=Kn(b,n);u=(u<<t)/(i+v),a++}let l=u,c=u,f=u*u,m=2n*t;for(let h=3;c=c*f>>m,c!==0n;h+=2)h%4===3?l-=c/BigInt(h):l+=c/BigInt(h);for(let h=0;h<a;h++)l=2n*l;return l}var rr=NaN,d=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let n=e.precision;if(e._piCache!==null&&e._piCachePrecision===n)return e._piCache;let t=n+4,i;if(t+1<=$n.length)e._piFullPrecision===null&&(e._piFullPrecision=new e($n[0]+"."+$n.slice(1))),i=e._piFullPrecision.toPrecision(t);else{let r=t+4;i=L(Oo(r),-r).toPrecision(t)}return e._piCache=i,e._piCachePrecision=n,i}static get EULER_GAMMA(){let n=e.precision;if(e._eulerGammaCache!==null&&e._eulerGammaCachePrecision>=n)return e._eulerGammaCache.toPrecision(n);let t=wc(n);return e._eulerGammaCache=t,e._eulerGammaCachePrecision=n,t}significand;exponent;constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=zt(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=Ac(n);return}[this.significand,this.exponent]=qo(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return rr;let h=this.exponent;if(Number.isNaN(h))return rr;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(h))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&h>=0&&h<=15){let b=this.significand*V(h),v=BigInt(n);return b<v?-1:b>v?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(t!==t||i!==i)return rr;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===i)return r<s?-1:r>s?1:0;let o=ue(r),a=ue(s),u=o+t,l=a+i;if(u!==l){let h=r>0n?1:-1;return u>l?h:-h}let c=r,f=s,m=Math.abs(t-i);if(m>1e3){let h=o,b=a,v=Math.max(h,b)+1;h<v&&(c=c*V(v-h)),b<v&&(f=f*V(v-b))}else t<i?f=f*V(m):c=c*V(m);return c<f?-1:c>f?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*V(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return L(this.significand+n.significand,t);let o=t-i;return o>0?L(this.significand*V(o)+n.significand,i):L(this.significand+n.significand*V(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return L(this.significand-n.significand,t);let o=t-i;return o>0?L(this.significand*V(o)-n.significand,i):L(this.significand-n.significand*V(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return L(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,s=n.significand>0n?1n:-1n;return r*s>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?L(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?L(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(L(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(L(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=L(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/V(-n);return L(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(s===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return L(0n,0);let u=e.precision,l=10,c=r<0n?-r:r,f=s<0n?-s:s,m=ue(c),h=ue(f),b=u+l+Math.max(0,h-m),v=V(b),E=r*v/s,I=t-i-b;return L(E,I).toPrecision(u)}if(t!==t||i!==i)return e.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(i);if(o&&a)return e.NAN;if(o){let u=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return u*l>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return L(0n,0)}inv(){return L(1n,0).div(this)}divToward(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,s=this.significand,o=n.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||o===0n||s===0n)return this.div(n);let a=s<0n!=o<0n,u=s<0n?-s:s,l=o<0n?-o:o,c=e.precision,m=c+10+Math.max(0,ue(l)-ue(u)),h=u*V(m),b=h/l,v=h%l!==0n,E=i-r-m,I=a?t==="floor":t==="ceiling",[w,O]=Bo(b,v,E,c,I);return L(a?-w:w,O)}sqrtToward(n){if(this.significand===0n)return this.exponent!==this.exponent?this:e.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?e.POSITIVE_INFINITY:e.NAN;if(this.significand<0n)return e.NAN;let t=e.precision,i=4,r=this.significand,s=this.exponent,o=s+ue(r)-1,a=Math.floor(o/2),u=t+i-a;s+2*u<0&&(u=Math.ceil(-s/2)+1);let l=s+2*u,c=l>=0?r*V(l):r/V(-l),f=et(c),m=f*f!==c,[h,b]=Bo(f,m,-u,t,n==="ceiling");return L(h,b)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(n.significand===0n)return e.NAN;if(this.significand===0n)return L(0n,0);let r=t-i,s=r>=0?this.significand*V(r):this.significand,o=r>=0?n.significand:n.significand*V(-r),a=s/o;return this.sub(L(a,0).mul(n))}return t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let l=n.toBigInt();if(l===0n)return L(1n,0);if(!this.isFinite())return l>0n?this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:L(0n,0);if(this.isZero())return l>0n?L(0n,0):e.POSITIVE_INFINITY;if(l<0n)return this.pow(n.neg()).inv();let c=this.significand<0n?-this.significand:this.significand,f=ue(c),m=f>15?f-15:0,h=m>0?Number(c/10n**BigInt(m)):Number(c),b=Math.log10(h)+m+this.exponent,v=Number(l)*b;if(v>9e15)return this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(v<-9e15)return L(0n,0);let E=e.precision,I=L(1n,0),w=this,O=l;for(;O>0n;)O&1n&&(I=I.mul(w).toPrecision(E)),O>>=1n,O>0n&&(w=w.mul(w).toPrecision(E));return I}if(!this.isFinite())return this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO;if(this.isZero())return n.significand>0n?e.ZERO:e.POSITIVE_INFINITY;if(this.significand<0n)return e.NAN;let t=this.significand,i=this.exponent+ue(t)-1,r=n.significand<0n?-n.significand:n.significand,o=n.exponent+ue(r)-1+Math.log10(Math.abs(i)*2.303+3)+1,a=Math.min(20,Math.max(2,Math.ceil(o)+2)),u=e.precision;e.precision=u+a;try{let l=Mc(this,u+a);return n.mul(l).exp().toPrecision(u)}finally{e.precision=u}}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,s=n?"-":"";if(r>20||r<-6){let u=i===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${u}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let u=t.slice(0,i-o),l=t.slice(i-o);return`${s}${u}.${l}`}let a=o-i;return`${s}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*V(s);else{let f=V(-s),m=r/f,h=r%f,b=f/2n;h>b?o=m+1n:h<b||f%2n!==0n||m%2n===0n?o=m:o=m+1n}let a=i&&o!==0n?"-":"",u=o.toString();if(t===0)return`${a}${u}`;if(u.length<=t){let f=u.padStart(t,"0");return`${a}0.${f}`}let l=u.slice(0,u.length-t),c=u.slice(u.length-t);return`${a}${l}.${c}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,i=ue(t);if(i<=n)return this;let r=i-n,s=V(r),o=t/s,a=t-o*s,u=s/2n;(a>u||a===u&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return L(l,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*V(this.exponent);let n=V(-this.exponent);return this.significand/n}},kc=8,nt=[];function Mc(e,n){let t=e.significand,i=e.exponent;for(let s=nt.length-1;s>=0;s--){let o=nt[s];if(o.prec===n&&o.exp===i&&o.sig===t)return o.ln}let r=e.ln();return nt.push({sig:t,exp:i,prec:n,ln:r}),nt.length>kc&&nt.shift(),r}function wc(e){let n=e+20+Math.ceil(Math.log10(e+10)),t=d.precision;d.precision=n;try{let i=Math.ceil(n*Math.LN10/4)+5,r=new d(i),s=r.mul(r),o=d.ONE,a=d.ONE,u=d.ZERO,l=d.ZERO,c=d.ONE.div(new d(10).pow(n)),f=6*i+100;for(let m=1;m<=f;m++){let h=new d(m).mul(m);if(o=o.mul(s).div(h).toPrecision(n),l=l.add(d.ONE.div(m)).toPrecision(n),a=a.add(o).toPrecision(n),u=u.add(o.mul(l)).toPrecision(n),m>i&&o.lt(a.mul(c)))break}return u.div(a).sub(r.ln()).toPrecision(e)}finally{d.precision=t}}function L(e,n){let[t,i]=zt(e,n),r=Object.create(d.prototype);return r.significand=t,r.exponent=i,r}function Bo(e,n,t,i,r){if(e===0n)return[r&&n?1n:0n,t];let s=ue(e);if(s<=i)return[r&&n?e+1n:e,t];let o=s-i,a=V(o),u=e/a,l=n||e%a!==0n;return r&&l&&(u+=1n),[u,t+o]}var Lo=1000000000n,Vo=1000n;function zt(e,n){if(e===0n)return[0n,0];for(;e%Lo===0n;)e/=Lo,n+=9;for(;e%Vo===0n;)e/=Vo,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function Ac(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?zt(BigInt(e),0):qo(e.toString())}function qo(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let s=n.indexOf("."),o,a;s===-1?(o=n,a=""):(o=n.slice(0,s),a=n.slice(s+1)),o=o.replace(/^0+/,"")||"0";let u=o+a;if(u.length===0||!/^\d+$/.test(u))return[0n,NaN];let l=BigInt(u);r&&(l=-l);let c=-a.length;return zt(l,c+t)}var Cc=Math.log2(10),$c=Math.log10(2),Rc=16,sr=1e6;function He(e,n){let t=Math.ceil(n*Cc)+Rc,i=BigInt(t);return e.exponent>=0?[e.significand*V(e.exponent)<<i,t]:[(e.significand<<i)/V(-e.exponent),t]}function Ue(e,n,t){if(e===0n)return d.ZERO;let i=e<0n,r=i?-e:e,s=BigInt(n),o=je(r)-n,a=Math.floor(o*$c),u=t+4-a,l,c;if(u>=0)l=r*V(u)+(1n<<s-1n)>>s,c=-u;else{let m=V(-u)<<s;l=(r+m/2n)/m,c=-u}if(l===0n)return d.ZERO;let f=ue(l);if(f>t){let m=f-t,h=V(m),b=h/2n,v=l%h;l=l/h,v>=b&&(l+=1n),c+=m}return L(i?-l:l,c)}function be(e){let n=e.significand<0n?-e.significand:e.significand;return e.exponent+ue(n)-1}var Jo=BigInt(Number.MAX_SAFE_INTEGER),gn=null;function Go(e){if(gn!==null){if(gn.bits===e)return gn.value;if(gn.bits>e)return gn.value>>BigInt(gn.bits-e)}let n=ir(10n<<BigInt(e),e);return gn={bits:e,value:n},n}d.prototype.sqrt=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ZERO;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NAN;if(this.significand<0n)return d.NAN;let e=d.precision,n=e+10,t=be(this),i=Math.floor(t/2),r=L(this.significand,this.exponent-2*i),[s,o]=He(r,n),a=Kn(s,o),u=Ue(a,o,e);return L(u.significand,u.exponent+i)};d.prototype.cbrt=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ZERO;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=d.precision,n=e+10,t=be(this),i=Math.floor(t/3),r=L(this.significand,this.exponent-3*i),[s,o]=He(r,n),a=s<<BigInt(2*o),u,l=r.toNumber();if(o<=1e3&&Number.isFinite(l)&&l>0){let m=Number(1n<<BigInt(o)),h=Math.cbrt(l);Number.isFinite(h)&&h>0?(u=BigInt(Math.floor(h*m)),u===0n&&(u=1n)):u=zo(a)}else u=zo(a);let c;do{c=u;let m=u*u;if(m===0n){u=1n;break}u=(2n*u+a/m)/3n}while(ge(u-c)>1n);{let m=(2n*u+a/(u*u))/3n,h=ge(u*u*u-a);ge(m*m*m-a)<h&&(u=m)}let f=Ue(u,o,e);return L(f.significand,f.exponent+i)};d.sqrt=function(e){return e.sqrt()};d.cbrt=function(e){return e.cbrt()};d.prototype.exp=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.ZERO;if(this.isZero())return d.ONE;if(be(this)>=17)return this.significand>0n?d.POSITIVE_INFINITY:d.ZERO;let e=d.precision,n=this.significand<0n?-this.significand:this.significand,t=Math.max(0,this.exponent+ue(n)),i=e+20+t,[r,s]=He(this,i),o=Go(s),a=r/o,u=r-a*o;if(u<0n&&(a-=1n,u+=o),a>Jo||a<-Jo)return a>0n?d.POSITIVE_INFINITY:d.ZERO;let l=Ue(Bt(u,s),s,e),c=l.exponent+Number(a);return Number.isSafeInteger(c)?L(l.significand,c):a>0n?d.POSITIVE_INFINITY:d.ZERO};d.prototype.ln=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NAN;if(this.isZero())return d.NEGATIVE_INFINITY;if(this.significand<0n)return d.NAN;if(this.eq(1))return d.ZERO;let e=d.precision,n=this.significand,t=ue(n),i=this.exponent+t-1,r=L(n,-(t-1)),s=Math.abs(i).toString().length,o=e+20+s,[a,u]=He(r,o),l=Go(u),c=ir(a,u)+BigInt(i)*l;return Ue(c,u,e)};d.prototype.log=function(e){let n=e instanceof d?e:new d(e);return this.ln().div(n.ln())};d.exp=function(e){return e.exp()};d.ln=function(e){return e.ln()};d.log10=function(e){return e.log(10)};d.log2=function(e){return e.log(2)};d.prototype.sin=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return d.NAN;if(this.isZero())return d.ZERO;let e=d.precision,n=be(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>sr)return d.NAN;let[i,r]=He(this,t),[s]=Jt(i,r);return Ue(s,r,e)};d.prototype.cos=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return d.NAN;if(this.isZero())return d.ONE;let e=d.precision,n=e+15;if(be(this)+n+30>sr)return d.NAN;let[i,r]=He(this,n),[,s]=Jt(i,r);return Ue(s,r,e)};d.prototype.tan=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return d.NAN;if(this.isZero())return d.ZERO;let e=d.precision,n=be(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>sr)return d.NAN;let[i,r]=He(this,t),[s,o]=Jt(i,r);if(o===0n)return s>0n?d.POSITIVE_INFINITY:d.NEGATIVE_INFINITY;let a=(s<<BigInt(r))/o;return Ue(a,r,e)};d.prototype.atan=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ZERO;if(!this.isFinite()){let o=d.PI.div(d.TWO);return this.significand>0n?o:o.neg()}let e=d.precision,n=be(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0),[i,r]=He(this,t),s=Qn(i,r);return Ue(s,r,e)};d.prototype.asin=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return d.NAN;if(this.isZero())return d.ZERO;let e=this.abs(),n=d.ONE;if(e.gt(n))return d.NAN;if(e.eq(n)){let h=d.PI.div(d.TWO);return this.significand>0n?h:h.neg()}let t=d.precision,i=be(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=t+20+(i<0?-i:0),[s,o]=He(this,r),a=1n<<BigInt(o),u=Ro(s,s,o),l=a-u,c=Kn(l,o),f=Po(s,c,o),m=Qn(f,o);return Ue(m,o,t)};d.prototype.acos=function(){return this.isNaN()?d.NAN:this.isFinite()?this.abs().gt(d.ONE)?d.NAN:this.eq(1)?d.ZERO:this.eq(-1)?d.PI:d.PI.div(d.TWO).sub(this.asin()):d.NAN};d.sin=function(e){return e.sin()};d.cos=function(e){return e.cos()};d.tan=function(e){return e.tan()};d.asin=function(e){return e.asin()};d.acos=function(e){return e.acos()};d.atan=function(e){return e.atan()};d.atan2=function(e,n){let t=e instanceof d?e:new d(e);if(t.isNaN()||n.isNaN())return d.NAN;let i=d.PI,r=i.div(d.TWO);if(n.isZero())return t.isZero()?d.ZERO:t.significand>0n?r:r.neg();let s=t.div(n);return n.significand>0n?s.atan():t.significand>=0n?s.atan().add(i):s.atan().sub(i)};d.prototype.sinh=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ZERO;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NEGATIVE_INFINITY;let e=d.precision,n=be(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let r=d.precision;d.precision=e-n+5;try{let s=this.exp();return s.sub(s.inv()).div(d.TWO).toPrecision(e)}finally{d.precision=r}}if(Math.abs(this.toNumber())>1.16*(e+3)){let r=this.abs().exp().div(d.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),i=t.inv();return t.sub(i).div(d.TWO)};d.prototype.cosh=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ONE;if(!this.isFinite())return d.POSITIVE_INFINITY;let e=d.precision;if(Math.abs(this.toNumber())>1.16*(e+3))return this.abs().exp().div(d.TWO);let n=this.exp(),t=n.inv();return n.add(t).div(d.TWO)};d.prototype.tanh=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ZERO;if(!this.isFinite())return this.significand>0n?d.ONE:d.NEGATIVE_ONE;let e=d.precision,n=be(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let i=d.precision;d.precision=e-n+5;try{let r=this.mul(d.TWO).exp();return r.sub(d.ONE).div(r.add(d.ONE)).toPrecision(e)}finally{d.precision=i}}if(Math.abs(this.toNumber())>1.16*(e+3))return this.significand>0n?d.ONE:d.NEGATIVE_ONE;let t=this.mul(d.TWO).exp();return t.sub(d.ONE).div(t.add(d.ONE))};d.sinh=function(e){return e.sinh()};d.cosh=function(e){return e.cosh()};d.tanh=function(e){return e.tanh()};d.prototype.expm1=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NEGATIVE_ONE;if(this.isZero())return d.ZERO;let e=d.precision,n=be(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let t=d.precision;d.precision=e-n+5;try{return this.exp().sub(d.ONE).toPrecision(e)}finally{d.precision=t}}return this.exp().sub(d.ONE)};d.prototype.log1p=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NAN;if(this.isZero())return d.ZERO;let e=d.ONE.add(this);if(e.isZero())return d.NEGATIVE_INFINITY;if(e.significand<0n)return d.NAN;let n=d.precision,t=be(this);if(t<0&&-t>=n+2)return this.toPrecision(n);if(t<0){let i=d.precision;d.precision=n-t+5;try{return d.ONE.add(this).ln().toPrecision(n)}finally{d.precision=i}}return d.ONE.add(this).ln()};d.prototype.asinh=function(){if(this.isNaN())return d.NAN;if(this.isZero())return d.ZERO;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NEGATIVE_INFINITY;let e=this.significand<0n,n=this.abs(),t=d.precision,i=be(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=()=>n.add(n.mul(n).add(d.ONE).sqrt()).ln(),s;if(i<0){let o=d.precision;d.precision=t-i+5;try{s=r().toPrecision(t)}finally{d.precision=o}}else s=r();return e?s.neg():s};d.prototype.acosh=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:d.NAN;if(this.lt(d.ONE))return d.NAN;if(this.eq(1))return d.ZERO;let e=this.sub(d.ONE).div(d.TWO).sqrt();return d.TWO.mul(e.asinh())};d.prototype.atanh=function(){if(this.isNaN())return d.NAN;if(!this.isFinite())return d.NAN;if(this.isZero())return d.ZERO;let e=this.abs();if(e.eq(1))return this.significand>0n?d.POSITIVE_INFINITY:d.NEGATIVE_INFINITY;if(e.gt(d.ONE))return d.NAN;let n=d.precision,t=be(this);if(-2*t>=n+4)return this.toPrecision(n);let i=d.precision;d.precision=n-t+5;try{return d.ONE.add(this).div(d.ONE.sub(this)).ln().div(d.TWO).toPrecision(n)}finally{d.precision=i}};d.prototype.nthRoot=function(e){if(this.isNaN()||!Number.isInteger(e)||e===0)return d.NAN;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.cbrt();if(e<0)return this.nthRoot(-e).inv();if(this.isZero())return d.ZERO;if(!this.isFinite())return this.significand>0n?d.POSITIVE_INFINITY:e%2===0?d.NAN:d.NEGATIVE_INFINITY;if(this.significand<0n)return e%2===0?d.NAN:this.neg().nthRoot(e).neg();let n=d.precision,t=d.precision;d.precision=n+8;try{return d.exp(this.ln().div(new d(e))).toPrecision(n)}finally{d.precision=t}};d.asinh=function(e){return e.asinh()};d.acosh=function(e){return e.acosh()};d.atanh=function(e){return e.atanh()};d.expm1=function(e){return e.expm1()};d.log1p=function(e){return e.log1p()};d.nthRoot=function(e,n){return e.nthRoot(n)};function zo(e){let n=je(e);if(n<=1023){let u=Math.cbrt(Number(e));if(Number.isFinite(u)&&u>=1)return BigInt(Math.floor(u))}let t=n-51,i=Number(e>>BigInt(t)),r=Math.cbrt(i),s=Math.floor(t/3),o=t%3;o===1&&(r*=1.2599210498948732),o===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(s);return a>0n?a:1n}var zd=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var Pc=53,jo=Math.floor(Math.log10(Math.pow(2,Pc))),Dc=1e-10,we=1e6;var Rn=1e4;function bn(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function it(e,n){if(e===0||n===0)return 0;let t=BigInt(e)*BigInt(n)/BigInt(bn(e,n));return t<0n&&(t=-t),Number(t)}function rt(e){if(!Number.isInteger(e)||e<0)return NaN;if(e>=170)return 1/0;let n=1;for(let t=2;t<=e;t++)n=n*t;return n}function st(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}function ot(e,n=Dc){return typeof e=="number"&&Math.abs(e)<=n?0:e}function Fc(e,n,t){let s=!Number.isFinite(n),o=h=>s?1/h:n+h,a=(h,b,v)=>{let E=.01*Math.max(1,Math.abs(v));for(let I=1;I<=5;I++){let w=e(o(h*Math.pow(b/h,I/6)));if(!Number.isFinite(w)||Math.abs(w-v)>E)return!1}return!0},u=s?1/t:t,l=0,c=!1,f=NaN,m=NaN;for(let h=1;h<=60;h++){let b=e(o(u));if(!Number.isFinite(b))return h-1;let v=Math.abs(b);if(h===1){l=v,f=v,m=u,u*=.125;continue}if(Math.abs(v-f)<=1e-10*Math.max(1,v))return a(m,u,b)?1/0:0;if(c&&l>1e-6&&v<1e-8*l)return h-1;v>l&&(c=!0,l=v),f=v,m=u,u*=.125}return 1/0}function Gt(e,n,t=1,i){if(t===0){let u=Gt(e,n,-1,i),l=Gt(e,n,1,i);return u===void 0||l===void 0?NaN:Math.abs(u-l)>1e-5?NaN:(u+l)/2}let r=t>0?1:-1,s=Fc(e,n,r);if(s===0)return NaN;let[o,a]=Qi(e,n,{step:r,deadline:i,...Number.isFinite(s)?{maxeval:s}:{}});return Number.isFinite(o)&&a>1e-6*Math.max(1,Math.abs(o))?NaN:o}var jt=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],or=["indexed_collection","list","tuple"],Ht=[...or,"collection","set","record","dictionary"],Ut=["scalar",...jt,"boolean","string"],ar=["value","color",...Ht,...Ut],ur=["expression","symbol","function",...ar],lr=["any","unknown","nothing","never","error",...ur],Zt=new Set(jt),Ho=new Set(Ht),Uo=new Set(Ut),yn=new Set(lr);function Zo(e){return typeof e!="string"?!1:yn.has(e)}function Yt(e){return typeof e=="string"?yn.has(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="value"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="symbol"||e.kind==="expression"||e.kind==="numeric"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var Wt=class{input;pos=0;line=1;column=1;tokens=[];constructor(n){this.input=n}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
4
- `?(this.line++,this.column=1):this.column++,n}match(n){if(this.input.slice(this.pos,this.pos+n.length)===n){for(let t=0;t<n.length;t++)this.advance();return!0}return!1}isEOF(){return this.pos>=this.input.length}skipWhitespace(){for(;!this.isEOF()&&/\s/.test(this.peek());)this.advance()}readIdentifier(){let n="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)n+=this.advance();return n}readVerbatimString(){if(!this.match("`"))return"";let n="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?n+="`":this.match("\\\\")?n+="\\":n+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),n}readStringLiteral(){let n=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==n;)this.match("\\"+n)?t+=n:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let n="";if((this.peek()==="-"||this.peek()==="+")&&(n+=this.advance()),this.match("0x")||this.match("0X")){for(n+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)n+=this.advance();return"0"+n}if(this.match("0b")||this.match("0B")){for(n+="b";!this.isEOF()&&/[01]/.test(this.peek());)n+=this.advance();return"0"+n}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(n+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();return n}createToken(n,t){return{type:n,value:t,position:this.pos-t.length,line:this.line,column:this.column-t.length}}nextToken(){if(this.skipWhitespace(),this.isEOF())return this.createToken("EOF","");let n=this.pos,t=this.peek();if(this.match("->"))return this.createToken("->","->");if(this.match(".."))return this.createToken("..","..");if(this.match("+\u221E")||this.match("+oo"))return this.createToken("PLUS_INFINITY",this.input.slice(n,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(n,this.pos));if(this.match("+infinity"))return this.createToken("PLUS_INFINITY","+infinity");if(this.match("-infinity"))return this.createToken("MINUS_INFINITY","-infinity");if(/[a-zA-Z_]/.test(t)){let i=this.readIdentifier();switch(i){case"true":return this.createToken("TRUE",i);case"false":return this.createToken("FALSE",i);case"nan":return this.createToken("NAN",i);case"infinity":return this.createToken("INFINITY",i);case"oo":return this.createToken("INFINITY",i);default:return this.createToken("IDENTIFIER",i)}}switch(t){case"|":return this.advance(),this.createToken("|","|");case"&":return this.advance(),this.createToken("&","&");case"!":return this.advance(),this.createToken("!","!");case"^":return this.advance(),this.createToken("^","^");case"(":return this.advance(),this.createToken("(","(");case")":return this.advance(),this.createToken(")",")");case"<":return this.advance(),this.createToken("<","<");case">":return this.advance(),this.createToken(">",">");case"[":return this.advance(),this.createToken("[","[");case"]":return this.advance(),this.createToken("]","]");case",":return this.advance(),this.createToken(",",",");case":":return this.advance(),this.createToken(":",":");case"?":return this.advance(),this.createToken("?","?");case"*":return this.advance(),this.createToken("*","*");case"+":return/[0-9]/.test(this.peek(1))?this.createToken("NUMBER_LITERAL",this.readNumber()):(this.advance(),this.createToken("+","+"));case"x":return/[0-9]/.test(this.peek(1))?(this.advance(),this.createToken("x","x")):(this.advance(),this.createToken("x","x"))}if(t==='"'||t==="'")return this.createToken("STRING_LITERAL",this.readStringLiteral());if(t==="`")return this.createToken("VERBATIM_STRING",this.readVerbatimString());if(/[0-9]/.test(t)||t==="-"&&/[0-9]/.test(this.peek(1))){let i=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",i)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let n=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(n.push(t),t.type==="EOF"))break}return n}peekToken(){if(this.tokens.length===0){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let n=this.nextToken();if(n)return n}return this.tokens.shift()||this.createToken("EOF","")}matchToken(n){return this.peekToken().type===n?(this.consumeToken(),!0):!1}expectToken(n){let t=this.consumeToken();return t.type!==n&&this.error(`Expected ${n}, got ${t.type}`),t}};var Xt=class{lexer;typeResolver;current;constructor(n,t){this.lexer=new Wt(n),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(n,t){this.errorAtToken(this.current,n,t)}errorAtToken(n,t,i){let r=this.lexer.input,o=r.split(`
3
+ "use strict";var Compile=(()=>{var rr=Object.defineProperty;var Oc=Object.getOwnPropertyDescriptor;var Lc=Object.getOwnPropertyNames;var Bc=Object.prototype.hasOwnProperty;var Vc=(e,n)=>{for(var t in n)rr(e,t,{get:n[t],enumerable:!0})},qc=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Lc(n))!Bc.call(e,r)&&r!==t&&rr(e,r,{get:()=>n[r],enumerable:!(i=Oc(n,r))||i.enumerable});return e};var Jc=e=>qc(rr({},"__esModule",{value:!0}),e);var sh={};Vc(sh,{BaseCompiler:()=>x,GLSLTarget:()=>Xn,GPUShaderTarget:()=>mn,IntervalGLSLTarget:()=>ir,IntervalJavaScriptTarget:()=>nr,JavaScriptTarget:()=>Vi,PythonTarget:()=>zi,WGSLTarget:()=>Ji,compile:()=>rl,version:()=>rh});var je=class extends Error{cause;value;constructor({message:n,value:t,cause:i}={}){super(n??"Operation canceled"),t&&(this.value=t),this.cause=i,this.name="CancellationError"}};function nt(e){if(e!==void 0&&Date.now()>=e)throw new je({cause:"timeout",message:"Timeout exceeded"})}var qt;function Jt(){return qt}function zt(e,n){let t=qt;qt=e;try{return n()}finally{qt=t}}function sr(e,n){let t=Date.now();for(;;){let{done:i,value:r}=e.next();if(i)return r;if(Date.now()-t>=n)throw new je({value:r,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}}function or(e,n,t={}){let{contract:i=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2,deadline:c=Jt()}=t;return isFinite(n)?zt(c,()=>{let f=r,p=Math.pow(1/i,s),d=e(n+f),b=[d],y=1/0,v=1;for(;v<u;){nt(c),v+=1,f*=i,b.push(e(n+f));let N=p,M=1/0;for(let $=b.length-2;$>=0;$--){let L=b[$];b[$]=b[$+1]+(b[$+1]-b[$])/(N-1);let F=Math.abs(b[$]-L);M=Math.min(M,F),F<y&&(d=b[$],y=F),N*=p}if(M>l*y||!isFinite(M)||y<=Math.max(a*Math.abs(d),o))break}return[d,y]}):or(f=>e(1/f),1/n,{rtol:a,atol:o,maxeval:u,contract:Math.abs(i)>1?1/i:i,step:1/r,power:s,deadline:c})}var Yo=new Map,zc=1e5;function G(e){if(e<=zc){let n=Yo.get(e);return n===void 0&&(n=10n**BigInt(e),Yo.set(e,n)),n}return 10n**BigInt(e)}function He(e){if(e<0n&&(e=-e),e===0n)return 0;let n=0,t=1;for(;e>>BigInt(t)>0n;)t*=2;for(let i=t>>1;i>=1;i>>=1)e>>BigInt(i)>0n&&(n+=i,e>>=BigInt(i));return n+1}function Qo(e,n,t){return e*n>>BigInt(t)}function Ko(e,n,t){return(e<<BigInt(t))/n}function it(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t=e<<BigInt(n),i;if(n<Gc){i=lr(t);let a;do a=i,i=(i+t/i)/2n;while(ye(i-a)>1n)}else i=cr(t,He(t));let r=(i+t/i)/2n,s=ye(i*i-t);return ye(r*r-t)<s?r:i}function lr(e){let n=He(e);if(n<=1023){let o=Math.sqrt(Number(e));if(Number.isFinite(o)&&o>=1)return BigInt(Math.floor(o))}let t=n-52,i=Number(e>>BigInt(t)),r=Math.sqrt(i);t&1&&(r*=Math.SQRT2);let s=BigInt(Math.round(r))<<BigInt(t>>1);return s>0n?s:1n}var ea=1024,Gc=640;function cr(e,n){if(n<ea){let s=lr(e),o;do o=s,s=(s+e/s)/2n;while(ye(s-o)>1n);for(;s*s>e;)s-=1n;for(;(s+1n)*(s+1n)<=e;)s+=1n;return s}let t=n>>2<<1,i=cr(e>>BigInt(t),n-t)<<BigInt(t>>1),r;do r=i,i=(i+e/i)/2n;while(ye(i-r)>1n);for(;i*i>e;)i-=1n;for(;(i+1n)*(i+1n)<=e;)i+=1n;return i}function ye(e){return e<0n?-e:e}function ce(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n)return Math.floor(Math.log10(Number(e)))+1;let n=0,t=e,i=1;for(;t>>BigInt(i)>0n;)i*=2;for(let s=i>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(n+=s,t>>=BigInt(s));n+=1;let r=Math.ceil(n*.30102999566398);return e<G(r-1)?r-1:e>=G(r)?r+1:r}function Gt(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return i;let r=0,s=e,o=i>>1n;for(;ye(s)>o;)s=s/2n,r++;let a=i,u=s;a+=u;for(let l=2;u=(u*s>>t)/BigInt(l),u!==0n;l++)a+=u;for(let l=0;l<r;l++)a=a*a>>t;return a}var jc=2300;function fr(e,n){let t=1n<<BigInt(n);if(e<=0n)throw new RangeError("fpln: input must be positive");return e===t?0n:n>=jc?Zc(e,n):Hc(e,n)}function Hc(e,n){let t=BigInt(n),i=1n<<t,r=Number(e),s=Number(i),o,a=e,u=0,l=2;if(Number.isFinite(r)&&Number.isFinite(s)&&r>0&&s>0){let f=r/s;if(Number.isFinite(f)&&f>0){let p=Math.log(f);Number.isFinite(p)?(o=BigInt(Math.round(p*s)),l=48):o=ar(e,n)}else o=ar(e,n)}else{a=e;let f=i<<1n,p=i>>1n;for(;a>f||a<p;)a=it(a,n),u++;o=ar(a,n)}for(let f=Math.min(n,Math.max(8,2*l));f<n;){let p=BigInt(f),d=BigInt(n-f),b=o>>d,y=Gt(b,f);if(y===0n){o=o/2n;continue}let v=a>>d;o=b+(v<<p)/y-(1n<<p)<<d,f=Math.min(n,2*f)}let c=0n;for(let f=0;f<100;f++){let p=Gt(o,n);if(p===0n){o=o/2n;continue}let d=o+(a<<t)/p-i,b=ye(d-o);if(b<=1n||b<100000n&&c>0n&&c<100000n&&b*4n>=c)break;c=b,o=d}for(let f=0;f<u;f++)o=2n*o;return o}var gn=null;function Uc(e){if(gn!==null){if(gn.bits===e)return gn.value;if(gn.bits>e)return gn.value>>BigInt(gn.bits-e)}let n=Math.ceil(e*Ut)+12,t;if(n<=Xo.length){let i=Xo.slice(0,n);t=(BigInt(i)<<BigInt(e))/G(i.length)}else t=ef(e);return gn={bits:e,value:t},t}function Zc(e,n){let t=BigInt(n),i=He(e)-n,r=Math.max(2,Math.ceil(n/2+4-i)),s=e<<BigInt(r-2),o=1n<<t,a=s;for(;ye(o-a)>1n;){let l=o+a>>1n;a=rt(o*a),o=l}return Ht(n)*s/(2n*o)-BigInt(r)*Uc(n)}var Wo=6243314768165359n;function ar(e,n){let t=BigInt(He(e)-n);return n>=53?t*Wo<<BigInt(n-53):t*Wo>>BigInt(53-n)}var Rn="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",Ut=Math.log10(2),Xo="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",Yc=13591409n,Wc=545140134n,Xc=10939058860032000n,Qc=47.11;function jt(e,n){if(n-e===1){let l,c;if(e===0)l=1n,c=1n;else{l=BigInt(6*e-5)*BigInt(2*e-1)*BigInt(6*e-1);let p=BigInt(e);c=p*p*p*Xc}let f=l*(Yc+Wc*BigInt(e));return e&1&&(f=-f),[l,c,f]}let t=e+n>>1,[i,r,s]=jt(e,t),[o,a,u]=jt(t,n);return[i*o,r*a,a*s+i*u]}function na(e){return Math.max(2,Math.floor(e/Qc)+3)}function Kc(e){let[,n,t]=jt(0,na(e)),i=1n<<BigInt(e),r=rt(10005n*i*i);return n*426880n*r/t}function ta(e){let[,n,t]=jt(0,na(Math.ceil(e/Ut))),i=G(e),r=rt(10005n*i*i);return n*426880n*r/t}function ur(e,n){if(n-e===1){let l=e===0?1n:BigInt(2*e-1),c=e===0?1n:9n*BigInt(2*e+1);return[l,c,l]}let t=e+n>>1,[i,r,s]=ur(e,t),[o,a,u]=ur(t,n);return[i*o,r*a,a*s+i*u]}function ef(e){let n=Math.max(2,Math.ceil(e/3.169925)+5),[,t,i]=ur(0,n);return(i<<BigInt(e+1))/(3n*t)}function rt(e){if(e<0n)throw new RangeError("bigintSqrt: negative input");if(e===0n)return 0n;let n=He(e);if(n>=ea)return cr(e,n);let t=lr(e),i;do i=t,t=(t+e/t)/2n;while(ye(t-i)>1n);for(;t*t>e;)t-=1n;for(;(t+1n)*(t+1n)<=e;)t+=1n;return t}var bn=null;function Ht(e){if(bn!==null){if(bn.bits===e)return bn.value;if(bn.bits>e)return bn.value>>BigInt(bn.bits-e)}let n=nf(e);return bn={bits:e,value:n},n}function nf(e){let n=Math.ceil(e*Ut)+12;if(n+1<=Rn.length){let t=Rn.slice(0,n+1);return(BigInt(t)<<BigInt(e))/G(t.length-1)}return Kc(e)}function Zt(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return[0n,i];let r=Ht(n),s=2n*r,o=r/2n,a,u=ye(e);if(u>i<<30n){let F=He(u)-n+64,P=n+F,Q=e<<BigInt(F),q=2n*Ht(P),z=Q%q;z<0n&&(z+=q),a=z>>BigInt(F)}else a=e%s;a<0n&&(a+=s);let l=1n,c=1n;a>3n*o?(a=s-a,l=-1n):a>r?(a=a-r,l=-1n,c=-1n):a>o&&(a=r-a,c=-1n);let f=Math.round(n*Ut),p=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(f)))),d=0,b=i>>BigInt(p);for(;a>b;)a=a/2n,d++;let y=a,v=i,N=a,M=i,$=a*a,L=2n*t;for(let F=2;;F+=2){if(M=(M*$>>L)/(BigInt(F)*BigInt(F-1)),M===0n){N=(N*$>>L)/(BigInt(F+1)*BigInt(F)),N!==0n&&(F%4===2?(v-=M,y-=N):(v+=M,y+=N));break}if(N=(N*$>>L)/(BigInt(F+1)*BigInt(F)),F%4===2?(v-=M,y-=N):(v+=M,y+=N),N===0n)break}for(let F=0;F<d;F++){let P=2n*y*v>>t,Q=(2n*v*v>>t)-i;y=P,v=Q}return[l*y,c*v]}function tt(e,n){if(e===0n)return 0n;if(e<0n)return-tt(-e,n);let t=BigInt(n),i=1n<<t,s=Ht(n)/2n;if(e>i){let d=(i<<t)/e;return s-tt(d,n)}let o=4n*i/10n,a=0,u=e;for(;u>o;){let d=u*u,b=(i<<t)+d>>t,y=it(b,n);u=(u<<t)/(i+y),a++}let l=u,c=u,f=u*u,p=2n*t;for(let d=3;c=c*f>>p,c!==0n;d+=2)d%4===3?l-=c/BigInt(d):l+=c/BigInt(d);for(let d=0;d<a;d++)l=2n*l;return l}var pr=NaN,h=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let n=e.precision;if(e._piCache!==null&&e._piCachePrecision===n)return e._piCache;let t=n+4,i;if(t+1<=Rn.length)e._piFullPrecision===null&&(e._piFullPrecision=new e(Rn[0]+"."+Rn.slice(1))),i=e._piFullPrecision.toPrecision(t);else{let r=t+4;i=J(ta(r),-r).toPrecision(t)}return e._piCache=i,e._piCachePrecision=n,i}static get EULER_GAMMA(){let n=e.precision;if(e._eulerGammaCache!==null&&e._eulerGammaCachePrecision>=n)return e._eulerGammaCache.toPrecision(n);let t=sf(n);return e._eulerGammaCache=t,e._eulerGammaCachePrecision=n,t}significand;exponent;constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=Yt(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=of(n);return}[this.significand,this.exponent]=oa(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return pr;let d=this.exponent;if(Number.isNaN(d))return pr;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(d))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&d>=0&&d<=15){let b=this.significand*G(d),y=BigInt(n);return b<y?-1:b>y?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(t!==t||i!==i)return pr;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===i)return r<s?-1:r>s?1:0;let o=ce(r),a=ce(s),u=o+t,l=a+i;if(u!==l){let d=r>0n?1:-1;return u>l?d:-d}let c=r,f=s,p=Math.abs(t-i);if(p>1e3){let d=o,b=a,y=Math.max(d,b)+1;d<y&&(c=c*G(y-d)),b<y&&(f=f*G(y-b))}else t<i?f=f*G(p):c=c*G(p);return c<f?-1:c>f?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*G(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return J(this.significand+n.significand,t);let o=t-i;return o>0?J(this.significand*G(o)+n.significand,i):J(this.significand+n.significand*G(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return J(this.significand-n.significand,t);let o=t-i;return o>0?J(this.significand*G(o)-n.significand,i):J(this.significand-n.significand*G(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return J(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,s=n.significand>0n?1n:-1n;return r*s>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?J(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?J(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(J(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(J(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=J(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/G(-n);return J(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(s===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return J(0n,0);let u=e.precision,l=10,c=r<0n?-r:r,f=s<0n?-s:s,p=ce(c),d=ce(f),b=u+l+Math.max(0,d-p),y=G(b),v=r*y/s,N=t-i-b;return J(v,N).toPrecision(u)}if(t!==t||i!==i)return e.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(i);if(o&&a)return e.NAN;if(o){let u=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return u*l>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return J(0n,0)}inv(){return J(1n,0).div(this)}divToward(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,s=this.significand,o=n.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||o===0n||s===0n)return this.div(n);let a=s<0n!=o<0n,u=s<0n?-s:s,l=o<0n?-o:o,c=e.precision,p=c+10+Math.max(0,ce(l)-ce(u)),d=u*G(p),b=d/l,y=d%l!==0n,v=i-r-p,N=a?t==="floor":t==="ceiling",[M,$]=ia(b,y,v,c,N);return J(a?-M:M,$)}sqrtToward(n){if(this.significand===0n)return this.exponent!==this.exponent?this:e.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?e.POSITIVE_INFINITY:e.NAN;if(this.significand<0n)return e.NAN;let t=e.precision,i=4,r=this.significand,s=this.exponent,o=s+ce(r)-1,a=Math.floor(o/2),u=t+i-a;s+2*u<0&&(u=Math.ceil(-s/2)+1);let l=s+2*u,c=l>=0?r*G(l):r/G(-l),f=rt(c),p=f*f!==c,[d,b]=ia(f,p,-u,t,n==="ceiling");return J(d,b)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(n.significand===0n)return e.NAN;if(this.significand===0n)return J(0n,0);let r=t-i,s=r>=0?this.significand*G(r):this.significand,o=r>=0?n.significand:n.significand*G(-r),a=s/o;return this.sub(J(a,0).mul(n))}return t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let l=n.toBigInt();if(l===0n)return J(1n,0);if(!this.isFinite())return l>0n?this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:J(0n,0);if(this.isZero())return l>0n?J(0n,0):e.POSITIVE_INFINITY;if(l<0n)return this.pow(n.neg()).inv();let c=this.significand<0n?-this.significand:this.significand,f=ce(c),p=f>15?f-15:0,d=p>0?Number(c/10n**BigInt(p)):Number(c),b=Math.log10(d)+p+this.exponent,y=Number(l)*b;if(y>9e15)return this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(y<-9e15)return J(0n,0);let v=e.precision,N=J(1n,0),M=this,$=l;for(;$>0n;)$&1n&&(N=N.mul(M).toPrecision(v)),$>>=1n,$>0n&&(M=M.mul(M).toPrecision(v));return N}if(!this.isFinite())return this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO;if(this.isZero())return n.significand>0n?e.ZERO:e.POSITIVE_INFINITY;if(this.significand<0n)return e.NAN;let t=this.significand,i=this.exponent+ce(t)-1,r=n.significand<0n?-n.significand:n.significand,o=n.exponent+ce(r)-1+Math.log10(Math.abs(i)*2.303+3)+1,a=Math.min(20,Math.max(2,Math.ceil(o)+2)),u=e.precision;e.precision=u+a;try{let l=rf(this,u+a);return n.mul(l).exp().toPrecision(u)}finally{e.precision=u}}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,s=n?"-":"";if(r>20||r<-6){let u=i===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${u}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let u=t.slice(0,i-o),l=t.slice(i-o);return`${s}${u}.${l}`}let a=o-i;return`${s}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*G(s);else{let f=G(-s),p=r/f,d=r%f,b=f/2n;d>b?o=p+1n:d<b||f%2n!==0n||p%2n===0n?o=p:o=p+1n}let a=i&&o!==0n?"-":"",u=o.toString();if(t===0)return`${a}${u}`;if(u.length<=t){let f=u.padStart(t,"0");return`${a}0.${f}`}let l=u.slice(0,u.length-t),c=u.slice(u.length-t);return`${a}${l}.${c}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,i=ce(t);if(i<=n)return this;let r=i-n,s=G(r),o=t/s,a=t-o*s,u=s/2n;(a>u||a===u&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return J(l,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*G(this.exponent);let n=G(-this.exponent);return this.significand/n}},tf=8,st=[];function rf(e,n){let t=e.significand,i=e.exponent;for(let s=st.length-1;s>=0;s--){let o=st[s];if(o.prec===n&&o.exp===i&&o.sig===t)return o.ln}let r=e.ln();return st.push({sig:t,exp:i,prec:n,ln:r}),st.length>tf&&st.shift(),r}function sf(e){let n=e+20+Math.ceil(Math.log10(e+10)),t=h.precision;h.precision=n;try{let i=Math.ceil(n*Math.LN10/4)+5,r=new h(i),s=r.mul(r),o=h.ONE,a=h.ONE,u=h.ZERO,l=h.ZERO,c=h.ONE.div(new h(10).pow(n)),f=6*i+100;for(let p=1;p<=f;p++){let d=new h(p).mul(p);if(o=o.mul(s).div(d).toPrecision(n),l=l.add(h.ONE.div(p)).toPrecision(n),a=a.add(o).toPrecision(n),u=u.add(o.mul(l)).toPrecision(n),p>i&&o.lt(a.mul(c)))break}return u.div(a).sub(r.ln()).toPrecision(e)}finally{h.precision=t}}function J(e,n){let[t,i]=Yt(e,n),r=Object.create(h.prototype);return r.significand=t,r.exponent=i,r}function ia(e,n,t,i,r){if(e===0n)return[r&&n?1n:0n,t];let s=ce(e);if(s<=i)return[r&&n?e+1n:e,t];let o=s-i,a=G(o),u=e/a,l=n||e%a!==0n;return r&&l&&(u+=1n),[u,t+o]}var ra=1000000000n,sa=1000n;function Yt(e,n){if(e===0n)return[0n,0];for(;e%ra===0n;)e/=ra,n+=9;for(;e%sa===0n;)e/=sa,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function of(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?Yt(BigInt(e),0):oa(e.toString())}function oa(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let s=n.indexOf("."),o,a;s===-1?(o=n,a=""):(o=n.slice(0,s),a=n.slice(s+1)),o=o.replace(/^0+/,"")||"0";let u=o+a;if(u.length===0||!/^\d+$/.test(u))return[0n,NaN];let l=BigInt(u);r&&(l=-l);let c=-a.length;return Yt(l,c+t)}var af=Math.log2(10),uf=Math.log10(2),lf=16,mr=1e6;function Ue(e,n){let t=Math.ceil(n*af)+lf,i=BigInt(t);return e.exponent>=0?[e.significand*G(e.exponent)<<i,t]:[(e.significand<<i)/G(-e.exponent),t]}function Ze(e,n,t){if(e===0n)return h.ZERO;let i=e<0n,r=i?-e:e,s=BigInt(n),o=He(r)-n,a=Math.floor(o*uf),u=t+4-a,l,c;if(u>=0)l=r*G(u)+(1n<<s-1n)>>s,c=-u;else{let p=G(-u)<<s;l=(r+p/2n)/p,c=-u}if(l===0n)return h.ZERO;let f=ce(l);if(f>t){let p=f-t,d=G(p),b=d/2n,y=l%d;l=l/d,y>=b&&(l+=1n),c+=p}return J(i?-l:l,c)}function xe(e){let n=e.significand<0n?-e.significand:e.significand;return e.exponent+ce(n)-1}var aa=BigInt(Number.MAX_SAFE_INTEGER),yn=null;function la(e){if(yn!==null){if(yn.bits===e)return yn.value;if(yn.bits>e)return yn.value>>BigInt(yn.bits-e)}let n=fr(10n<<BigInt(e),e);return yn={bits:e,value:n},n}h.prototype.sqrt=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.significand<0n)return h.NAN;let e=h.precision,n=e+10,t=xe(this),i=Math.floor(t/2),r=J(this.significand,this.exponent-2*i),[s,o]=Ue(r,n),a=it(s,o),u=Ze(a,o,e);return J(u.significand,u.exponent+i)};h.prototype.cbrt=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=h.precision,n=e+10,t=xe(this),i=Math.floor(t/3),r=J(this.significand,this.exponent-3*i),[s,o]=Ue(r,n),a=s<<BigInt(2*o),u,l=r.toNumber();if(o<=1e3&&Number.isFinite(l)&&l>0){let p=Number(1n<<BigInt(o)),d=Math.cbrt(l);Number.isFinite(d)&&d>0?(u=BigInt(Math.floor(d*p)),u===0n&&(u=1n)):u=ua(a)}else u=ua(a);let c;do{c=u;let p=u*u;if(p===0n){u=1n;break}u=(2n*u+a/p)/3n}while(ye(u-c)>1n);{let p=(2n*u+a/(u*u))/3n,d=ye(u*u*u-a);ye(p*p*p-a)<d&&(u=p)}let f=Ze(u,o,e);return J(f.significand,f.exponent+i)};h.sqrt=function(e){return e.sqrt()};h.cbrt=function(e){return e.cbrt()};h.prototype.exp=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.ZERO;if(this.isZero())return h.ONE;if(xe(this)>=17)return this.significand>0n?h.POSITIVE_INFINITY:h.ZERO;let e=h.precision,n=this.significand<0n?-this.significand:this.significand,t=Math.max(0,this.exponent+ce(n)),i=e+20+t,[r,s]=Ue(this,i),o=la(s),a=r/o,u=r-a*o;if(u<0n&&(a-=1n,u+=o),a>aa||a<-aa)return a>0n?h.POSITIVE_INFINITY:h.ZERO;let l=Ze(Gt(u,s),s,e),c=l.exponent+Number(a);return Number.isSafeInteger(c)?J(l.significand,c):a>0n?h.POSITIVE_INFINITY:h.ZERO};h.prototype.ln=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.isZero())return h.NEGATIVE_INFINITY;if(this.significand<0n)return h.NAN;if(this.eq(1))return h.ZERO;let e=h.precision,n=this.significand,t=ce(n),i=this.exponent+t-1,r=J(n,-(t-1)),s=Math.abs(i).toString().length,o=e+20+s,[a,u]=Ue(r,o),l=la(u),c=fr(a,u)+BigInt(i)*l;return Ze(c,u,e)};h.prototype.log=function(e){let n=e instanceof h?e:new h(e);return this.ln().div(n.ln())};h.exp=function(e){return e.exp()};h.ln=function(e){return e.ln()};h.log10=function(e){return e.log(10)};h.log2=function(e){return e.log(2)};h.prototype.sin=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=h.precision,n=xe(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>mr)return h.NAN;let[i,r]=Ue(this,t),[s]=Zt(i,r);return Ze(s,r,e)};h.prototype.cos=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ONE;let e=h.precision,n=e+15;if(xe(this)+n+30>mr)return h.NAN;let[i,r]=Ue(this,n),[,s]=Zt(i,r);return Ze(s,r,e)};h.prototype.tan=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=h.precision,n=xe(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>mr)return h.NAN;let[i,r]=Ue(this,t),[s,o]=Zt(i,r);if(o===0n)return s>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let a=(s<<BigInt(r))/o;return Ze(a,r,e)};h.prototype.atan=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite()){let o=h.PI.div(h.TWO);return this.significand>0n?o:o.neg()}let e=h.precision,n=xe(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0),[i,r]=Ue(this,t),s=tt(i,r);return Ze(s,r,e)};h.prototype.asin=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=this.abs(),n=h.ONE;if(e.gt(n))return h.NAN;if(e.eq(n)){let d=h.PI.div(h.TWO);return this.significand>0n?d:d.neg()}let t=h.precision,i=xe(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=t+20+(i<0?-i:0),[s,o]=Ue(this,r),a=1n<<BigInt(o),u=Qo(s,s,o),l=a-u,c=it(l,o),f=Ko(s,c,o),p=tt(f,o);return Ze(p,o,t)};h.prototype.acos=function(){return this.isNaN()?h.NAN:this.isFinite()?this.abs().gt(h.ONE)?h.NAN:this.eq(1)?h.ZERO:this.eq(-1)?h.PI:h.PI.div(h.TWO).sub(this.asin()):h.NAN};h.sin=function(e){return e.sin()};h.cos=function(e){return e.cos()};h.tan=function(e){return e.tan()};h.asin=function(e){return e.asin()};h.acos=function(e){return e.acos()};h.atan=function(e){return e.atan()};h.atan2=function(e,n){let t=e instanceof h?e:new h(e);if(t.isNaN()||n.isNaN())return h.NAN;let i=h.PI,r=i.div(h.TWO);if(n.isZero())return t.isZero()?h.ZERO:t.significand>0n?r:r.neg();let s=t.div(n);return n.significand>0n?s.atan():t.significand>=0n?s.atan().add(i):s.atan().sub(i)};h.prototype.sinh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let e=h.precision,n=xe(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let r=h.precision;h.precision=e-n+5;try{let s=this.exp();return s.sub(s.inv()).div(h.TWO).toPrecision(e)}finally{h.precision=r}}if(Math.abs(this.toNumber())>1.16*(e+3)){let r=this.abs().exp().div(h.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),i=t.inv();return t.sub(i).div(h.TWO)};h.prototype.cosh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ONE;if(!this.isFinite())return h.POSITIVE_INFINITY;let e=h.precision;if(Math.abs(this.toNumber())>1.16*(e+3))return this.abs().exp().div(h.TWO);let n=this.exp(),t=n.inv();return n.add(t).div(h.TWO)};h.prototype.tanh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.ONE:h.NEGATIVE_ONE;let e=h.precision,n=xe(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let i=h.precision;h.precision=e-n+5;try{let r=this.mul(h.TWO).exp();return r.sub(h.ONE).div(r.add(h.ONE)).toPrecision(e)}finally{h.precision=i}}if(Math.abs(this.toNumber())>1.16*(e+3))return this.significand>0n?h.ONE:h.NEGATIVE_ONE;let t=this.mul(h.TWO).exp();return t.sub(h.ONE).div(t.add(h.ONE))};h.sinh=function(e){return e.sinh()};h.cosh=function(e){return e.cosh()};h.tanh=function(e){return e.tanh()};h.prototype.expm1=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_ONE;if(this.isZero())return h.ZERO;let e=h.precision,n=xe(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let t=h.precision;h.precision=e-n+5;try{return this.exp().sub(h.ONE).toPrecision(e)}finally{h.precision=t}}return this.exp().sub(h.ONE)};h.prototype.log1p=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.isZero())return h.ZERO;let e=h.ONE.add(this);if(e.isZero())return h.NEGATIVE_INFINITY;if(e.significand<0n)return h.NAN;let n=h.precision,t=xe(this);if(t<0&&-t>=n+2)return this.toPrecision(n);if(t<0){let i=h.precision;h.precision=n-t+5;try{return h.ONE.add(this).ln().toPrecision(n)}finally{h.precision=i}}return h.ONE.add(this).ln()};h.prototype.asinh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let e=this.significand<0n,n=this.abs(),t=h.precision,i=xe(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=()=>n.add(n.mul(n).add(h.ONE).sqrt()).ln(),s;if(i<0){let o=h.precision;h.precision=t-i+5;try{s=r().toPrecision(t)}finally{h.precision=o}}else s=r();return e?s.neg():s};h.prototype.acosh=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.lt(h.ONE))return h.NAN;if(this.eq(1))return h.ZERO;let e=this.sub(h.ONE).div(h.TWO).sqrt();return h.TWO.mul(e.asinh())};h.prototype.atanh=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=this.abs();if(e.eq(1))return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;if(e.gt(h.ONE))return h.NAN;let n=h.precision,t=xe(this);if(-2*t>=n+4)return this.toPrecision(n);let i=h.precision;h.precision=n-t+5;try{return h.ONE.add(this).div(h.ONE.sub(this)).ln().div(h.TWO).toPrecision(n)}finally{h.precision=i}};h.prototype.nthRoot=function(e){if(this.isNaN()||!Number.isInteger(e)||e===0)return h.NAN;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.cbrt();if(e<0)return this.nthRoot(-e).inv();if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:e%2===0?h.NAN:h.NEGATIVE_INFINITY;if(this.significand<0n)return e%2===0?h.NAN:this.neg().nthRoot(e).neg();let n=h.precision,t=h.precision;h.precision=n+8;try{return h.exp(this.ln().div(new h(e))).toPrecision(n)}finally{h.precision=t}};h.asinh=function(e){return e.asinh()};h.acosh=function(e){return e.acosh()};h.atanh=function(e){return e.atanh()};h.expm1=function(e){return e.expm1()};h.log1p=function(e){return e.log1p()};h.nthRoot=function(e,n){return e.nthRoot(n)};function ua(e){let n=He(e);if(n<=1023){let u=Math.cbrt(Number(e));if(Number.isFinite(u)&&u>=1)return BigInt(Math.floor(u))}let t=n-51,i=Number(e>>BigInt(t)),r=Math.cbrt(i),s=Math.floor(t/3),o=t%3;o===1&&(r*=1.2599210498948732),o===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(s);return a>0n?a:1n}var Eh=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var cf=53,ca=Math.floor(Math.log10(Math.pow(2,cf))),ff=1e-10,$e=1e6;var Pn=1e4;function xn(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function at(e,n){if(e===0||n===0)return 0;let t=BigInt(e)*BigInt(n)/BigInt(xn(e,n));return t<0n&&(t=-t),Number(t)}function ut(e){if(!Number.isInteger(e)||e<0)return NaN;if(e>=170)return 1/0;let n=1;for(let t=2;t<=e;t++)n=n*t;return n}function lt(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}function ct(e,n=ff){return typeof e=="number"&&Math.abs(e)<=n?0:e}function pf(e,n,t){let s=!Number.isFinite(n),o=d=>s?1/d:n+d,a=(d,b,y)=>{let v=.01*Math.max(1,Math.abs(y));for(let N=1;N<=5;N++){let M=e(o(d*Math.pow(b/d,N/6)));if(!Number.isFinite(M)||Math.abs(M-y)>v)return!1}return!0},u=s?1/t:t,l=0,c=!1,f=NaN,p=NaN;for(let d=1;d<=60;d++){let b=e(o(u));if(!Number.isFinite(b))return d-1;let y=Math.abs(b);if(d===1){l=y,f=y,p=u,u*=.125;continue}if(Math.abs(y-f)<=1e-10*Math.max(1,y))return a(p,u,b)?1/0:0;if(c&&l>1e-6&&y<1e-8*l)return d-1;y>l&&(c=!0,l=y),f=y,p=u,u*=.125}return 1/0}function Wt(e,n,t=1,i){if(t===0){let u=Wt(e,n,-1,i),l=Wt(e,n,1,i);return u===void 0||l===void 0?NaN:Math.abs(u-l)>1e-5?NaN:(u+l)/2}let r=t>0?1:-1,s=pf(e,n,r);if(s===0)return NaN;let[o,a]=or(e,n,{step:r,deadline:i,...Number.isFinite(s)?{maxeval:s}:{}});return Number.isFinite(o)&&a>1e-6*Math.max(1,Math.abs(o))?NaN:o}var Xt=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],dr=["indexed_collection","list","tuple"],Qt=[...dr,"collection","set","record","dictionary"],Kt=["scalar",...Xt,"boolean","string"],hr=["value","color",...Qt,...Kt],gr=["expression","symbol","function",...hr],br=["any","unknown","nothing","never","error",...gr],ei=new Set(Xt),fa=new Set(Qt),pa=new Set(Kt),vn=new Set(br);function ma(e){return typeof e!="string"?!1:vn.has(e)}function ni(e){return typeof e=="string"?vn.has(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="value"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="symbol"||e.kind==="expression"||e.kind==="numeric"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var ti=class{input;pos=0;line=1;column=1;tokens=[];constructor(n){this.input=n}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
4
+ `?(this.line++,this.column=1):this.column++,n}match(n){if(this.input.slice(this.pos,this.pos+n.length)===n){for(let t=0;t<n.length;t++)this.advance();return!0}return!1}isEOF(){return this.pos>=this.input.length}skipWhitespace(){for(;!this.isEOF()&&/\s/.test(this.peek());)this.advance()}readIdentifier(){let n="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)n+=this.advance();return n}readVerbatimString(){if(!this.match("`"))return"";let n="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?n+="`":this.match("\\\\")?n+="\\":n+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),n}readStringLiteral(){let n=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==n;)this.match("\\"+n)?t+=n:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let n="";if((this.peek()==="-"||this.peek()==="+")&&(n+=this.advance()),this.match("0x")||this.match("0X")){for(n+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)n+=this.advance();return"0"+n}if(this.match("0b")||this.match("0B")){for(n+="b";!this.isEOF()&&/[01]/.test(this.peek());)n+=this.advance();return"0"+n}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(n+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();return n}createToken(n,t){return{type:n,value:t,position:this.pos-t.length,line:this.line,column:this.column-t.length}}nextToken(){if(this.skipWhitespace(),this.isEOF())return this.createToken("EOF","");let n=this.pos,t=this.peek();if(this.match("->"))return this.createToken("->","->");if(this.match(".."))return this.createToken("..","..");if(this.match("+\u221E")||this.match("+oo"))return this.createToken("PLUS_INFINITY",this.input.slice(n,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(n,this.pos));if(this.match("+infinity"))return this.createToken("PLUS_INFINITY","+infinity");if(this.match("-infinity"))return this.createToken("MINUS_INFINITY","-infinity");if(/[a-zA-Z_]/.test(t)){let i=this.readIdentifier();switch(i){case"true":return this.createToken("TRUE",i);case"false":return this.createToken("FALSE",i);case"nan":return this.createToken("NAN",i);case"infinity":return this.createToken("INFINITY",i);case"oo":return this.createToken("INFINITY",i);default:return this.createToken("IDENTIFIER",i)}}switch(t){case"|":return this.advance(),this.createToken("|","|");case"&":return this.advance(),this.createToken("&","&");case"!":return this.advance(),this.createToken("!","!");case"^":return this.advance(),this.createToken("^","^");case"(":return this.advance(),this.createToken("(","(");case")":return this.advance(),this.createToken(")",")");case"<":return this.advance(),this.createToken("<","<");case">":return this.advance(),this.createToken(">",">");case"[":return this.advance(),this.createToken("[","[");case"]":return this.advance(),this.createToken("]","]");case",":return this.advance(),this.createToken(",",",");case":":return this.advance(),this.createToken(":",":");case"?":return this.advance(),this.createToken("?","?");case"*":return this.advance(),this.createToken("*","*");case"+":return/[0-9]/.test(this.peek(1))?this.createToken("NUMBER_LITERAL",this.readNumber()):(this.advance(),this.createToken("+","+"));case"x":return/[0-9]/.test(this.peek(1))?(this.advance(),this.createToken("x","x")):(this.advance(),this.createToken("x","x"))}if(t==='"'||t==="'")return this.createToken("STRING_LITERAL",this.readStringLiteral());if(t==="`")return this.createToken("VERBATIM_STRING",this.readVerbatimString());if(/[0-9]/.test(t)||t==="-"&&/[0-9]/.test(this.peek(1))){let i=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",i)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let n=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(n.push(t),t.type==="EOF"))break}return n}peekToken(){if(this.tokens.length===0){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let n=this.nextToken();if(n)return n}return this.tokens.shift()||this.createToken("EOF","")}matchToken(n){return this.peekToken().type===n?(this.consumeToken(),!0):!1}expectToken(n){let t=this.consumeToken();return t.type!==n&&this.error(`Expected ${n}, got ${t.type}`),t}};var ii=class{lexer;typeResolver;current;constructor(n,t){this.lexer=new ti(n),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(n,t){this.errorAtToken(this.current,n,t)}errorAtToken(n,t,i){let r=this.lexer.input,o=r.split(`
5
5
  `)[n.line-1]||r,a=n.column,u=" ".repeat(Math.max(0,a-1))+"^",l=["","Invalid type",`| ${o}`,`| ${u}`,"|",`| ${t}`];throw i&&l.push(`| ${i}`),l.push(""),new Error(l.join(`
6
- `))}advance(){let n=this.current;return this.current=this.lexer.consumeToken(),n}match(n){return this.current.type===n?(this.advance(),!0):!1}expect(n){return this.current.type!==n&&this.error(`Expected ${n}, got ${this.current.type}`),this.advance()}createNode(n,t={}){return{kind:n,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();if(n||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return n}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let n=this.lexer.saveState(),t=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(n),this.current=t,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(n),this.current=t}catch(i){if(this.lexer.restoreState(n),this.current=t,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let n=this.parseIntersectionType();if(!n)return;let t=[n];for(;this.match("|");){let i=this.parseIntersectionType();i||this.error("Expected type after |"),t.push(i)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let n=this.parsePrimaryType();if(!n)return;let t=[n];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),t.push(i)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let n=this.parsePrimaryType();return n||this.error("Expected type after !"),this.createNode("negation",{type:n})}if(this.current.type==="("){let n=this.parseFunctionSignature();if(n)return n;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let n=this.lexer.saveState(),t=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(n),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let n=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),n.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(o=>o.modifier==="optional"),r=n.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=n.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:n,returnType:t})}parseArgument(){let n=this.parseNamedElement();if(!n)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:n,modifier:t})}parseNamedElement(){let n;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){n=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:n,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let n=this.current,i=this.lexer.peekToken().type==="<";switch(n.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let n=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}return this.createNode("list",{elementType:n,dimensions:t})}parseVectorType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(n=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:n,size:t})}parseMatrixType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:n,dimensions:t})}parseTensorType(){let n=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("tensor",{elementType:n})}parseDimensions(){let n=this.parseDimension();if(!n)return;let t=[n];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),t.push(this.parseDimension())}else break}return t}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let n=parseInt(this.advance().value);return this.createNode("dimension",{size:n})}}parseCaretDimensions(){let n=this.match("("),t=this.parseDimensions();return n&&this.expect(")"),t}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),t.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let n=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),n.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:n})}}parseRecordEntry(){let n;if(this.current.type==="IDENTIFIER")n=this.advance().value;else if(this.current.type==="VERBATIM_STRING")n=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:n,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("dictionary",{valueType:n})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("set",{elementType:n})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value==="indexed_collection",t=this.current.value==="collection";if(n||t){this.advance();let i=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:n})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let i=this.parseValue();this.expect("..");let r=this.parseValue();this.expect(">");let s=i?.value??-1/0,o=r?.value??1/0;return(Number.isNaN(s)||Number.isNaN(o))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),s>o&&this.error(`Invalid range: ${s}..${o}`,"The lower bound must be less than the upper bound"),this.createNode("numeric",{baseType:t,lowerBound:i,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value;if(yn.has(n))return this.advance(),this.createNode("primitive",{name:n})}}parseValue(){let n,t;switch(this.current.type){case"STRING_LITERAL":n=this.advance().value,t="string";break;case"NUMBER_LITERAL":n=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),n=!0,t="boolean";break;case"FALSE":this.advance(),n=!1,t="boolean";break;case"NAN":this.advance(),n=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),n=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),n=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:n,valueType:t})}parseTypeReference(){let n=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(n&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,i=this.advance().value;return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:n}):n&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0}):(n||this.errorAtToken(t,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:n}))}}};function Yo(e,n){switch(e.kind){case"function_signature":return n.visitFunctionSignature(e);case"union":return n.visitUnionType(e);case"intersection":return n.visitIntersectionType(e);case"negation":return n.visitNegationType(e);case"group":return n.visitGroupType(e);case"list":return n.visitListType(e);case"vector":return n.visitVectorType(e);case"matrix":return n.visitMatrixType(e);case"tensor":return n.visitTensorType(e);case"tuple":return n.visitTupleType(e);case"record":return n.visitRecordType(e);case"dictionary":return n.visitDictionaryType(e);case"set":return n.visitSetType(e);case"collection":return n.visitCollectionType(e);case"expression":return n.visitExpressionType(e);case"symbol":return n.visitSymbolType(e);case"numeric":return n.visitNumericType(e);case"primitive":return n.visitPrimitiveType(e);case"type_reference":return n.visitTypeReference(e);case"value":return n.visitValue(e);default:throw new Error(`Unknown node kind: ${e.kind}`)}}var cr=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return Yo(n,this)}visitFunctionSignature(n){let t=[],i=[],r,s;for(let u of n.arguments){let l=this.buildNamedElement(u.element);switch(u.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,s=0;break;case"variadic_one":r=l,s=1;break;default:t.push(l);break}}let o=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(n){return{kind:"union",types:n.types.map(i=>this.buildType(i))}}visitIntersectionType(n){return{kind:"intersection",types:n.types.map(i=>this.buildType(i))}}visitNegationType(n){return{kind:"negation",type:this.buildType(n.type)}}visitGroupType(n){return this.buildType(n.type)}visitListType(n){let t=this.buildType(n.elementType),i=n.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}visitVectorType(n){let t=this.buildType(n.elementType);return n.size!==void 0?{kind:"list",elements:t,dimensions:[n.size]}:{kind:"list",elements:t}}visitMatrixType(n){let t=this.buildType(n.elementType);if(n.dimensions){let i=n.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(n){return{kind:"list",elements:this.buildType(n.elementType)}}visitTupleType(n){return{kind:"tuple",elements:n.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(n){if(n.entries.length===0)return"record";let t={};for(let i of n.entries)t[i.key]=this.buildType(i.valueType);return{kind:"record",elements:t}}visitDictionaryType(n){let t=this.buildType(n.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(n){let t=this.buildType(n.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(n){let t=this.buildType(n.elementType);return n.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(n){return{kind:"expression",operator:n.operator}}visitSymbolType(n){return{kind:"symbol",name:n.name}}visitNumericType(n){if(!n.lowerBound&&!n.upperBound)return n.baseType;let t=n.lowerBound?this.buildValue(n.lowerBound):-1/0,i=n.upperBound?this.buildValue(n.upperBound):1/0;return t===-1/0&&i===1/0?n.baseType:{kind:"numeric",type:n.baseType,lower:t,upper:i}}visitPrimitiveType(n){return n.name}visitTypeReference(n){let t=this.typeResolver.resolve(n.name);if(t)return t;if(n.isForward){let i=this.typeResolver.forward(n.name);if(i)return i}return n.name}visitValue(n){return{kind:"value",value:n.value}}buildNamedElement(n){let t=this.buildType(n.type);return n.name?{name:n.name,type:t}:{type:t}}buildDimension(n){return n.size??-1}buildValue(n){return n.value}isAnyType(n){return n==="any"||typeof n=="object"&&"kind"in n&&n.kind==="primitive"&&"name"in n&&n.name==="any"}};function Wo(e,n){return new cr(n).buildType(e)}var Qt=new Map,Oc=2048;function Xo(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;Object.freeze(e);for(let n of Object.values(e))Xo(n);return e}function U(e,n){if(e===void 0)return;if(Yt(e))return e;if(typeof e!="string")return;let t=n===void 0;if(t){let i=Qt.get(e);if(i!==void 0)return i}try{let r=new Xt(e,{typeResolver:n}).parseType(),s=Wo(r,n);return t&&(Qt.size>=Oc&&Qt.clear(),Qt.set(e,Xo(s))),s}catch(i){throw new Error(`Failed to parse type "${e}": ${i instanceof Error?i.message:String(i)}`)}}var Qo={number:jt,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:lr,unknown:[],nothing:[],never:[],error:[],value:ar,scalar:Ut,collection:Ht,indexed_collection:or,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:ur},ut=(()=>{let e={},n=t=>{if(e[t])return e[t];let i=new Set([t]);e[t]=i;for(let r of Qo[t])if(r!==t)for(let s of n(r))i.add(s);return i};for(let t of Object.keys(Qo))n(t);return e})();function at(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:ut[n].has(e)}function ta(e,n){if(e===n)return[e];let t=ut[e],i=ut[n];if(t.has(n))return[n];if(i.has(e))return[e];let r=e<n?`${e}|${n}`:`${n}|${e}`,s=Ko.get(r);if(s)return s;let o=[];for(let u of t)i.has(u)&&o.push(u);let a=o.filter(u=>!o.some(l=>l!==u&&ut[l].has(u)));return Ko.set(r,a),a}var Ko=new Map;function A(e,n){if(typeof e=="string"&&!yn.has(e)&&(e=U(e)),typeof n=="string"&&!yn.has(n)&&(n=U(n)),n==="any"||e==="never")return!0;if(n==="never")return!1;if(n==="error")return e==="error";if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?at(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?at("integer",n):at("real",n):typeof e.value=="boolean"?at("boolean",n):typeof e.value=="string"?at("string",n):!1:e.kind==="union"?e.types.every(t=>A(t,n)):e.kind==="intersection"?e.types.some(t=>A(t,n)):e.kind==="negation"?!A(e.type,n):e.kind==="numeric"?!!A(e.type,n):n==="number"?ia(e):n==="symbol"?fr(e):n==="expression"?Bc(e):n==="function"?ua(e):n==="scalar"?ra(e):n==="value"?aa(e):n==="indexed_collection"?oa(e):n==="collection"?sa(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="record"?e.kind==="record":n==="dictionary"?e.kind==="dictionary":!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(t=>n.types.some(i=>A(t,i))):n.types.some(t=>A(e,t));if(n.kind==="expression"){if(e==="symbol")return!0;if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?fr(e):e.operator===n.operator;if(e.kind==="symbol")return!0}if(typeof e=="string")return!1;if(n.kind==="reference"){if(e.kind==="reference")return e.name===n.name;if(n.alias===!0&&n.def)return A(e,n.def)}if(e.kind==="union")return e.types.some(t=>A(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>A(i,t)));if(e.kind==="intersection")return e.types.every(t=>A(t,n));if(n.kind==="intersection")return n.types.every(t=>A(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!A(e.result,n.result))return!1;if(e.optArgs||e.variadicArg){if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let t=0;t<n.args.length;t++)if(!A(n.args[t].type,e.args[t].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let t=0;t<e.optArgs.length;t++)if(!A(n.optArgs[t].type,e.optArgs[t].type))return!1}else if(e.optArgs)return!1;if(n.variadicArg){if(!e.variadicArg||e.variadicMin!=n.variadicMin||!A(n.variadicArg.type,e.variadicArg.type))return!1}else if(e.variadicArg)return!1}else{if(n.args&&!e.args)return!1;let t=0;if(n.args){if(e.args.length<n.args.length)return!1;for(;t<n.args.length;){if(!A(n.args[t].type,e.args[t].type))return!1;t+=1}}if(n.optArgs){if(t>=e.args.length)return!0;for(let i=0;i<n.optArgs.length;i++){if(!A(n.optArgs[i].type,e.args[t].type))return!1;if(t+=1,t>=e.args.length)return!0}}if(n.variadicArg){if(t>=e.args.length&&n.variadicMin===0)return!0;if(n.variadicMin>0&&t+n.variadicMin>e.args.length)return!1;for(;t<e.args.length;){if(!A(n.variadicArg.type,e.args[t].type))return!1;t+=1}}}return!0}if(e.kind==="record"&&n.kind==="record"){for(let t of Object.keys(n.elements))if(!(t in e.elements)||!A(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return A(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?A(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>A(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return A(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>A(t.type,n.elements));if(e.kind==="set")return A(e.elements,n.elements);if(e.kind==="dictionary")return A({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return A({kind:"tuple",elements:[{type:"string"},{type:ye(...Object.values(e.elements))}]},n.elements)}if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let t=0;t<e.elements.length;t++){let i=e.elements[t],r=n.elements[t];if(!A(i.type,r.type)||i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!A(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let t=0;t<e.dimensions.length;t++)if(n.dimensions[t]!==-1&&e.dimensions[t]!==n.dimensions[t])return!1}return!0}if(e.kind==="symbol"&&n.kind==="symbol")return e.name===n.name;if(e.kind==="numeric"&&n.kind==="numeric")return!(!A(e.type,n.type)||(e.lower??-1/0)<(n.lower??-1/0)||(e.upper??1/0)>(n.upper??1/0));if(n.kind==="set"&&e.kind==="set")return!!A(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return A(e.type,n.type);if(n.kind==="negation")return!A(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return A("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?A("integer",n):A("real",n);if(typeof e.value=="string")return A("string",n)}return!1}function ia(e){return typeof e=="string"?Zt.has(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function ra(e){return ia(e)?!0:typeof e=="string"?Uo.has(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function sa(e){return oa(e)?!0:typeof e=="string"?Ho.has(e):["collection","set","record","dictionary"].includes(e.kind)}function oa(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function aa(e){return ra(e)||sa(e)}function ua(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function Bc(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||aa(e)||ua(e)||fr(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function fr(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function Lc(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||A(e,n)?e:A(n,e)?n:"never"}function Vc(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(A(e,n))return n;if(A(n,e))return e;let t=zc(e,n);return qc.has(t)?Jc(e,n):t}var qc=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function Jc(e,n){let t=[],i=new Set,r=s=>{if(typeof s=="object"&&s.kind==="union"){for(let a of s.types)r(a);return}let o=typeof s=="string"?s:JSON.stringify(s);i.has(o)||(i.add(o),t.push(s))};return r(e),r(n),t.length===1?t[0]:{kind:"union",types:t}}function pr(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>Lc(n,t))}function ye(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>Vc(n,t))}var ea=["non_finite_number","finite_integer","integer","finite_rational","rational","finite_real","real","imaginary","finite_complex","complex","finite_number","number","list","record","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],na=new Map;function zc(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(typeof e=="string"&&typeof n=="string"){let t=e<n?`${e}|${n}`:`${n}|${e}`,i=na.get(t);if(i===void 0){i="any";for(let r of ea){let s=ut[r];if(s.has(e)&&s.has(n)){i=r;break}}na.set(t,i)}return i}for(let t of ea)if(A(e,t)&&A(n,t))return t;return"any"}var ca=3,fa=1,pa=2,Gc=4,jc=5,Hc=6,Uc=7,Zc=8,Yc=9,Wc=10,Xc=11;function q(e,n=0){if(typeof e=="string")return e;let t="";switch(e.kind){case"value":typeof e.value=="string"?t=`"${e.value}"`:typeof e.value=="boolean"?t=e.value?"true":"false":t=e.value.toString();break;case"reference":t=e.name;break;case"negation":t=`!${q(e.type,ca)}`;break;case"union":t=e.types.map(u=>q(u,fa)).join(" | ");break;case"intersection":t=e.types.map(u=>q(u,pa)).join(" & ");break;case"expression":t=`expression<${la(e.operator)}>`;break;case"symbol":t=`symbol<${la(e.name)}>`;break;case"numeric":Number.isFinite(e.lower)&&Number.isFinite(e.upper)?t=`${e.type}<${e.lower}..${e.upper}>`:Number.isFinite(e.lower)?t=`${e.type}<${e.lower}..>`:Number.isFinite(e.upper)?t=`${e.type}<..${e.upper}>`:t=`${e.type}`;break;case"list":if(e.dimensions&&typeof e.elements=="string"&&Zt.has(e.elements)){if(e.dimensions===void 0)e.elements==="number"&&(t="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?t="vector":t=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?t=`vector<${q(e.elements)}>`:t=`vector<${q(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${q(e.elements)}>`:t=`matrix<${q(e.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${q(e.elements)}${u}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([u,l])=>`${u}: ${q(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${q(e.values)}>`;break;case"set":t=`set<${q(e.elements)}>`;break;case"collection":t=`collection<${q(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${q(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[u]=e.elements;t=`tuple<${Pn(u)}>`}else t="tuple<"+e.elements.map(u=>Pn(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>Pn(u)).join(", "):"",s=e.optArgs?e.optArgs.map(u=>Pn(u)+"?").join(", "):"",o=e.variadicArg?e.variadicMin===0?`${Pn(e.variadicArg)}*`:`${Pn(e.variadicArg)}+`:"";t=`(${[r,s,o].filter(u=>u).join(", ")}) -> ${q(e.result)}`;break;default:t="error"}return n>0&&n>Qc(e.kind)?`(${t})`:t}function Pn(e){return e.name?`${e.name}: ${q(e.type)}`:q(e.type)}function la(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function Qc(e){switch(e){case"negation":return ca;case"union":return fa;case"intersection":return pa;case"list":return Gc;case"record":return jc;case"dictionary":return Hc;case"set":return Uc;case"collection":case"indexed_collection":return Zc;case"tuple":return Yc;case"signature":return Wc;case"value":return Xc;default:return 0}}function mr(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function $e(e){if(e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="dictionary"||e==="record")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list"||e.kind==="set")return e.elements;if(e.kind==="tuple")return ye(...e.elements.map(n=>n.type));if(e.kind==="dictionary")return U(`tuple<string, ${q(e.values)}>`);if(e.kind==="record")return U(`tuple<string, ${q(ye(...Object.values(e.elements)))}>`)}}var pe=class e{static unknown=new e("unknown");static number=new e("number");static non_finite_number=new e("non_finite_number");static finite_number=new e("finite_number");static finite_integer=new e("finite_integer");static finite_real=new e("finite_real");static string=new e("string");static dictionary=new e("dictionary");static setNumber=new e("set<number>");static setComplex=new e("set<complex>");static setImaginary=new e("set<imaginary>");static setReal=new e("set<real>");static setRational=new e("set<rational>");static setFiniteInteger=new e("set<finite_integer>");static setInteger=new e("set<integer>");type;static widen(...n){return new e(ye(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(pr(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=U(n,t):this.type=n}matches(n){return n instanceof e?A(this.type,n.type):A(this.type,n)}is(n){return A(this.type,n)&&A(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return q(this.type)}toJSON(){return q(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return q(this.type)}};function R(e){return e?._kind==="number"}function T(e,n){return e?._kind==="symbol"&&(n===void 0||e.symbol===n)}function g(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function le(e){return e?._kind==="string"}function ee(e){return e?._kind==="symbol"?e.symbol:void 0}var Xh=Object.freeze({bySubject:new Map,membership:new Map});var ig=[0,-1,1,Math.PI,Math.E,-Math.PI,-Math.E,.5,-.5];function Ze(e){if(!e)return;if(e.operator==="Function"&&e.isCanonical||T(e))return e;if(g(e,"BuiltinFunction"))return e.op1;if(g(e,"Delimiter")){let s=e.op1;if(g(s,"Sequence"))if(s.nops===1)e=s;else return Ze(e.engine._fn("Block",s.ops,{canonical:!1}));return Ze(g(e)?e.op1:void 0)}if(g(e,"Function"))return ma(e.engine,e.ops);e.operator;let n=e.engine,t=e.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=n.function("Block",[t]):t=t.canonical;let s=t.unknowns;s.length>0&&(r=s.map(o=>n.symbol(o,{canonical:!1})))}return ma(n,[t,...r])}function ma(e,n){if(n.length===0)return;let t=n[0].operator==="Block"?n[0].canonical:e.function("Block",[n[0]]),i=n.slice(1).map(r=>T(r)?r:e.error("expected-a-symbol",r.toString()));t.isScoped;for(let r of i)T(r)&&!t.localScope.bindings.has(r.symbol)&&e.declare(r.symbol,{inferred:!0,type:"unknown"},t.localScope);return e._fn("Function",[t,...i])}function da(e,n){let t=e.Nothing;for(let i of n){let r=i.operator;if(r==="Return"&&g(i)){t=i.op1.evaluate();break}if((r==="Break"||r==="Continue")&&g(i)){t=e.expr([r,i.op1.evaluate()]);break}t=i.evaluate()}return t}function ha(e,n){let t=[];for(let i of n){if(!i)continue;let r=e.bindings.get(i);r&&(t.push([i,r]),e.bindings.delete(i))}return t}function ga(e,n){for(let[t,i]of n)e.bindings.set(t,i)}function ba(e,n,t){if(n.operator==="Function"&&g(n)){let i=n.op1;if(i&&g(i)&&i.localScope){let r=new Set(n.ops.slice(1).map(u=>T(u)?u.symbol:"").filter(u=>u)),s=new Map;for(let[u,l]of i.localScope.bindings)r.has(u)&&s.set(u,l);let o={parent:t,bindings:s},a=e._fn("Block",i.ops,{scope:o});return e._fn("Function",[a,...n.ops.slice(1)])}return n}if(g(n)&&n.ops.length>0){let i=!1,r=n.ops.map(s=>{let o=ba(e,s,t);return o!==s&&(i=!0),o});if(i)return e._fn(n.operator,r)}return n}function tf(e){let n=e.engine;if(T(e)){let a=e.symbol;return u=>n.function(a,u).evaluate()}let t=Ze(e);if(!t)throw new Error("Invalid function literal");e=t,e.operator,e.isCanonical;let i=e;if(i.ops.length===1)return i.ops[0],()=>i.ops[0].evaluate();let[r,...s]=i.ops;if(r.isScoped,!r.localScope)throw new Error("Function body must be a scoped Block expression");let o=r;return a=>{if(a.length>s.length)throw new Error(`Too many arguments for function "${e.toString()}": expected ${s.length}, got ${a.length}`);if(n.strict&&!a.every(E=>E.isValid))return;if(a.length<s.length){let E=new Set([...r.symbols,...s.map(ie=>T(ie)?ie.symbol:"")]),I=s.slice(a.length).map((ie,Je)=>{let ze=`_${Je+1}`,Pt=0;for(;E.has(ze);)ze=`_${Je+1}_${Pt++}`;return E.add(ze),n.symbol(ze,{canonical:!1})}),w=Object.fromEntries(s.slice(a.length).map((ie,Je)=>[T(ie)?ie.symbol:"",I[Je]])),O=a.map(ie=>ie.evaluate()),D={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map};for(let ie=0;ie<a.length;ie++){let Je=s[ie],ze=T(Je)?Je.symbol:"";ze&&n.declare(ze,{value:O[ie],inferred:!0},D)}let F=o.localScope,oe=F.parent;F.parent=D;let X=s.slice(0,a.length).map(ie=>T(ie)?ie.symbol:""),K=ha(F,X);n.pushScope(D);let Q;try{Q=da(n,o.ops)}finally{n.popScope(),F.parent=oe,ga(F,K)}return n.function("Function",[Q.subs(w),...I])}let u=a.map(E=>E.evaluate()),c={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map},f=s.map(E=>T(E)?E.symbol:"");for(let E=0;E<s.length;E++)f[E]&&n.declare(f[E],{value:u[E],inferred:!0},c);let m=o.localScope,h=m.parent;m.parent=c;let b=ha(m,f);n.pushScope(c);let v;try{v=da(n,o.ops),v=ba(n,v,c)}finally{n.popScope(),m.parent=h,ga(m,b)}return v.isValid?v:void 0}}function re(e){return tf(e)??(n=>e.engine.function("Apply",[e,...n]).evaluate())}var dr=100;function Kt(e){return(e.isFiniteCollection??!1)&&e.isIndexedCollection}function rf(e,n,t){if(!(e.isFiniteCollection!==!0||n.isFiniteCollection!==!0)){for(let i of e.each())if(n.contains(i)!==!0)return!1;if(t){let i=e.count;if(i===void 0)return!1;let r=n.count;if(r===void 0||i===r)return!1}return!0}}function sf(e,n){if(g(e)){for(let t=0;t!==e.nops;t+=1)if(n(e.ops[t]))return t+1}}function ei(){return{isLazy:e=>!1,count:e=>g(e)?e.nops:0,isEmpty:e=>!g(e)||e.nops===0,isFinite:e=>!0,contains:(e,n)=>g(e)?e.ops.some(t=>t.isSame(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.nops;return{next:()=>n===t+1?{value:void 0,done:!0}:(n+=1,{value:e.ops[n-1-1],done:!1})}},subsetOf:rf,at:(e,n)=>{if(!(typeof n!="number"||!g(e))&&(n<0&&(n=e.nops+n+1),!(n<1||n>e.nops)))return e.ops[n-1]},indexWhere:sf,eltsgn:e=>{},elttype:e=>!g(e)||e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:ye(...e.ops.map(n=>n.type.type))}}function _(e){let n="",t="";for(let i of e)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=n),/\\[a-zA-Z]+\*?$/.test(i)?n=" ":n=""),t+=i.toString());return t}function lt(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}var B=245,ct=260,Ye=270,ne=275,xe=390,Ie=600;var ft=700,hr=810;var xn=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:B+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:B},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:B},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:B+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:B+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:B,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:B},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:B},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:B},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:B+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:B},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:B},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:B},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{latexTrigger:["\\neq"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:B},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:B+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:B},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:B},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:B},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:B},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:B+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:B+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:B},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:B},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:B},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:B},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:B},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:B},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:B},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:B+5}];function gr(e){return typeof e!="string"?!1:xn.some(n=>n.name===e)}function br(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function yr(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}var Dn=["Error","'missing'"];function vn(e){return!!(typeof e=="number"||Fn(e)||typeof e=="string"&&ri(e))}function Fn(e){return e!==null&&typeof e=="object"&&"num"in e}function ni(e){return e!==null&&typeof e=="object"&&"sym"in e}function va(e){return e!==null&&typeof e=="object"&&"str"in e}function Ea(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function On(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function J(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"?null:e.length>=2&&e.at(0)==="'"&&e.at(-1)==="'"?e.substring(1,e.length-1):ri(e)||Nr(e)?null:e}function vr(e){if(e==null||J(e)!==null)return null;let n=x(e);return n?[n,...S(e).map(t=>vr(t)).filter(t=>t!==null)]:e}function x(e){return Array.isArray(e)?e[0]:e==null?"":On(e)?e.fn[0]:""}function S(e){return Array.isArray(e)?e.slice(1):e!==void 0&&On(e)?e.fn.slice(1):[]}function p(e,n){return Array.isArray(e)?e[n]??null:e===null||!On(e)?null:e.fn[n]??null}function Y(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):On(e)?Math.max(0,e.fn.length-1):0}function Er(e){return e==null?null:x(e)==="Hold"?p(e,1):e}function M(e){return typeof e=="string"&&Nr(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:ni(e)?e.sym:null}function ya(e){let n=x(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=S(e),r=J(t);return r?[r,i??"Nothing"]:null}return null}function Na(e){if(e===null)return null;if(Ea(e))return e;let n=ya(e);if(n)return{dict:{[n[0]]:xa(n[1])??"Nothing"}};if(x(e)==="Dictionary"){let t={};for(let i of S(e)){let r=ya(i);r&&(t[r[0]]=xa(r[1])??"Nothing")}return{dict:t}}return null}function ti(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,xr(i)??"Nothing"]))}}function lf(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(e))return 1/0;if(/^(-infinity|-oo)$/.test(e))return-1/0;if(/\([0-9]+\)/.test(e)){let[n,t,i,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(e)}function P(e){return typeof e=="number"?e:typeof e=="string"&&ri(e)?lf(e):e!==void 0&&Fn(e)?P(e.num):null}function Bn(e){if(e==null)return null;if(M(e)==="Half")return[1,2];let n=x(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=Bn(S(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=S(e);t=P(r)??NaN,i=P(s)??NaN}if(n==="Power"){let[r,s]=S(e),o=P(s);o===1?(t=P(r),i=1):o===-1&&(t=1,i=P(r))}if(n==="Multiply"){let[r,s]=S(e);if(x(s)==="Power"){let[o,a]=S(s);P(a)===-1&&(t=P(r),i=P(o))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function ii(e,n){let t=null;if(Array.isArray(e)&&(t=e),On(e)&&(t=e.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(n(t[i])),i+=1;return r}function Ln(e,n,t){let i=x(n),r=x(t);return i===e&&r===e?[e,...S(n),...S(t)]:i===e?[e,...S(n),t]:r===e?[e,n,...S(t)]:[e,n,t]}function En(e){if(e==null)return null;let n=x(e);if(n==="Delimiter"){if(e=p(e,1),e===null)return[];if(n=x(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:S(e)}function j(e){return e==null||e==="Nothing"?!0:x(e)==="Sequence"&&Y(e)===0}function H(e){return j(e)?Dn:e}function ri(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(e)}function Nr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function xr(e){if(typeof e=="string")return{str:e};if(typeof e=="number")return{num:e.toString()};if(typeof e=="boolean")return e?"True":"False";if(Array.isArray(e))return["List",...e.map(n=>xr(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=xr(e[t])??"Nothing";return{dict:n}}return On(e)||ni(e)||Fn(e)||va(e)||Ea(e)?e:null}function xa(e){return e==null?null:va(e)?e.str:Fn(e)?parseFloat(e.num):ni(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}var Ia=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:235},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:235},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:230},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:230},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:232},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:232},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:232},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\Longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["=",">"],kind:"infix",precedence:220,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:220});return i===null?null:["Implies",n,i]}},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\Longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["<","=",">"],kind:"infix",precedence:219,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:219});return i===null?null:["Equivalent",n,i]}},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:219}),r=e.index,s=e.parseExpression({...t,minPrec:219});return s!==null&&x(s)==="Mod"?["Congruent",n,i,H(p(s,1))]:(e.index=r,["Equivalent",n,H(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:pt("\\forall"),parse:rn("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:pt("\\exists"),parse:rn("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:pt("\\exists!"),parse:rn("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:pt("\\lnot\\forall"),parse:rn("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:pt("\\lnot\\exists"),parse:rn("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=S(n);return t.length===0?"\\delta":t.every(i=>M(i))?`\\delta_{${t.map(i=>e.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>e.serialize(i)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let i=e.parseToken();return i?["KroneckerDelta",i]:null}let t=En(n);return t&&t.length<=2?["KroneckerDelta",...t]:x(n)==="InvisibleOperator"?["KroneckerDelta",...S(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=x(n);return!t||!xn.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=x(n);return!t||!xn.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=t[0],r=typeof i=="string"?i:e.serialize(i);if(t.length===1)return r;let s=t.slice(1).map(o=>e.serialize(o));return`${r}(${s.join(", ")})`}}];function pt(e){return(n,t)=>{let i=S(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),s=n.serialize(i[1]);return`${e} ${r}, ${s}`}}function Ta(e,n){return e.peek==="\\to"||e.peek==="\\rightarrow"||e.peek==="\\implies"||e.peek==="\\Rightarrow"||e.peek==="\\iff"||e.peek==="\\Leftrightarrow"||e.peek==="\\land"||e.peek==="\\wedge"||e.peek==="\\lor"||e.peek==="\\vee"||(n?.condition?.(e)??!1)}function rn(e){return(n,t)=>{let i=n.index,r=n.options.quantifierScope!=="loose",s=n.parseSymbol(t);if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let l=r?{...t,condition:f=>Ta(f,t)}:t;n.enterQuantifierScope();let c=n.parseExpression(l);return n.exitQuantifierScope(),[e,s,H(c)]}n.enterQuantifierScope();let u=n.parseEnclosure();if(n.exitQuantifierScope(),u)return[e,s,H(u)]}n.index=i;let o={...t,condition:u=>u.peek===":"||u.peek==="\\colon"||(t?.condition?.(u)??!1)},a=n.parseExpression(o);if(a===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let u=r?{...t,condition:c=>Ta(c,t)}:t;n.enterQuantifierScope();let l=n.parseExpression(u);return n.exitQuantifierScope(),[e,a,H(l)]}if(n.match("(")){n.enterQuantifierScope();let u=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,a,H(u)]:null}return null}}var cf={x:"First",y:"Second",z:"Third",real:"Real",re:"Real",imag:"Imaginary",im:"Imaginary",count:"Length",total:"Sum",max:"Max",min:"Min"};function Tr(e){return cf[e]??null}function ff(e,n){if(e.skipVisualSpace(),e.match("\\operatorname")){let i=e.parseStringGroup();if(i===null)return null;let r=Tr(i.trim());return r===null?null:[r,n]}let t=e.peek;if(typeof t=="string"&&t.startsWith("\\")){let i=t.slice(1),r=Tr(i);return r!==null?(e.nextToken(),[r,n]):null}if(typeof t=="string"&&/^[a-zA-Z]$/.test(t)){let i=Tr(t);return i===null?null:(e.nextToken(),[i,n])}return null}function _a(e,n,t){e.addBoundary(t),e.skipVisualSpace();let i=e.parseExpression({minPrec:0});return i===null||(e.skipVisualSpace(),!e.matchBoundary())?(e.removeBoundary(),null):["When",n,i]}function Ir(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let s=t?[t]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:i});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r),o||e.skipVisualSpace())}return s}function Pe(e=""){return(n,t)=>{if(!t)return"";let i=S(t);if(i.length===0)return"";if(i.length===1)return n.serialize(i[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=i.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),_(r)}}var Ca=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:Ye,parse:(e,n,t)=>{let i=[];if(x(n)==="Delimiter"&&(n=p(n,1)??"Nothing"),x(n)==="Sequence")for(let s of S(n)){if(!M(s))return null;i.push(M(s))}else{if(!M(n))return null;i=[M(n)]}let r=e.parseExpression({minPrec:Ye})??"Nothing";return x(r)==="Delimiter"&&(r=p(r,1)??"Nothing"),x(r)==="Sequence"&&(r=["Block",...S(r)]),["Function",r,...i]},serialize:(e,n)=>{let t=S(n);return t.length<1?"()\\mapsto()":t.length===1?_(["()","\\mapsto",e.serialize(p(n,1))]):t.length===2?_([e.serialize(p(n,2)),"\\mapsto",e.serialize(p(n,1))]):_([e.wrapString(S(n)?.slice(1).map(i=>e.serialize(i)).join(", "),"normal"),"\\mapsto",e.serialize(p(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=p(n,1),i=x(t);if(i==="InverseFunction"||i==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=S(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),o)}let r=p(n,2);if(typeof t=="string"||!r){let o=S(n).slice(1);return e.serialize(o)}if(Y(n)===2)return _([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return _(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...S(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n,t)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=p(n,1);if(!t)return"";let i=S(n).slice(1);if(x(t)==="Function"){let r=S(t).slice(1),s=p(t,1);if(x(s)==="Block"&&Y(s)===1&&(s=p(s,1)),r.length>0)return`\\left.\\left(${e.serialize(s)}\\right)\\right|_{${r.map((o,a)=>`${e.serialize(o)}=${e.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${e.serialize(t)}\\right)\\right|_{${i.map(r=>e.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:ct,serialize:(e,n)=>{let t=Er(p(n,1));if(x(p(n,2))==="Function"){let i=p(n,2),r=Er(p(i,1)),s=S(i).slice(1);return _([e.serialize(t),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return _([e.serialize(t),"\\coloneq",e.serialize(p(n,2))])},parse:oi},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:ct,parse:oi},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:ct,parse:oi},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:ct,parse:oi},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:240,serialize:(e,n)=>_([e.serialize(p(n,1)),"\\colon",e.serialize(p(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:240,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=P(p(n,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=P(p(n,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),s=0;if(t===2||t===10?s=4:t===16?s=2:t>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(p(n,1))+", "+e.serialize(p(n,2))+")"}},{name:"Sequence",serialize:Pe(" ")},{name:"InvisibleOperator",serialize:Pe("")},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=p(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[x(i)],s=r?i:["Sequence",i];if(r??="(,)",Y(n)>1){let c=J(p(n,2));typeof c=="string"&&c.length<=3&&(r=c)}let[o,a,u]=["","",""];r.length===3?[o,a,u]=r:r.length===2?[o,u]=r:r.length===1&&(a=r);let l=i?s?Pe(a)(e,s):e.serialize(i):"";return e.wrapString(l,t,o+u)}},{name:"Tuple",serialize:(e,n)=>_(["(",Pe(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>_(["(",Pe(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>_(["(",Pe(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>_(["(",Pe(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>x(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(p(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let t=p(n,1);if(J(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=mf(e,n)||"\\blacksquare",r=x(t)==="ErrorCode"?J(p(t,1)):J(t);return r==="incompatible-type"?M(p(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(p(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(p(t,3))}\\notin ${e.serialize(p(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=J(p(n,1));return t==="missing"?e.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${Sa(J(p(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":_(ii(n,t=>J(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":_(ii(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:pf},{kind:"postfix",precedence:850,latexTrigger:["."],parse:ff},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:Sr("]"),serialize:(e,n)=>_(["\\lbrack",Pe(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:Sr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:Sr("\\right","\\rbrack")},{name:"When",kind:"postfix",precedence:800,latexTrigger:["\\left","\\{"],parse:(e,n)=>_a(e,n,["\\right","\\}"]),serialize:(e,n)=>{let t=p(n,1),i=p(n,2);if(!t||!i)return"";let s=(x(i)==="And"?S(i)??[]:[i]).map(o=>`\\left\\{${e.serialize(o)}\\right\\}`).join("");return`${e.serialize(t)}${s}`}},{kind:"postfix",precedence:800,latexTrigger:["\\{"],parse:(e,n)=>_a(e,n,["\\}"])},{kind:"postfix",latexTrigger:["_"],parse:(e,n,t)=>{let i=e.parseGroup()??e.parseToken();i===null&&e.options.strict===!1&&e.peek==="("&&(i=e.parseEnclosure());let r=M(n);return i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||x(n)==="List")?(x(i)==="Delimiter"&&(i=p(i,1)??"Nothing"),x(i)==="Sequence"?["At",n,...S(i)]:["At",n,i]):["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:$a,serialize:hf},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:df},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Ir(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Ir(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:si,serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(p(n,1));if(t.length===2)return e.wrap(p(n,1),10)+".."+e.wrap(p(n,2),10);if(t.length===3){let i=P(p(n,3)),r=P(p(n,1));return i!==null&&r!==null?e.wrap(p(n,1),10)+".."+e.wrap(r+i,10)+".."+e.wrap(p(n,2),10):e.wrap(p(n,1),10)+"..("+(e.wrap(p(n,1),ne)+"+"+e.wrap(p(n,3),ne))+").."+e.wrap(p(n,2),10)}return""}},{latexTrigger:[".",".","."],kind:"infix",precedence:800,parse:si},{latexTrigger:["\\ldots"],kind:"infix",precedence:800,parse:si},{latexTrigger:["\\dots"],kind:"infix",precedence:800,parse:si},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Ir(e,t,n,19,";");return i===null?null:i.some(r=>x(r)==="Assign")?gf(i):["Delimiter",["Sequence",...i],"';'"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>{let i=e.index;return ve(e,"where")?Aa(e,n,t):(e.index=i,null)}},{symbolTrigger:"where",kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>Aa(e,n,t)},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:235,parse:(e,n,t)=>{let i=e.index;if(!ve(e,"and"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:235});return["And",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:230,parse:(e,n,t)=>{let i=e.index;if(!ve(e,"or"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:230});return["Or",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!ve(e,"iff"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!ve(e,"if and only if"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:21,parse:(e,n,t)=>{let i=e.index;if(!ve(e,"such that"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:21});return["Colon",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return ve(e,"for all")?rn("ForAll")(e,n):(e.index=t,null)}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return ve(e,"there exists")?rn("Exists")(e,n):(e.index=t,null)}},{name:"Block",serialize:(e,n)=>{let t=S(n);return!t||t.length===0?"":t.filter(r=>x(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=S(n);return!t||t.length<3?"":_(["\\text{if }",e.serialize(t[0]),"\\text{ then }",e.serialize(t[1]),"\\text{ else }",e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=S(n);if(!t||t.length<2)return"";let i=t[0],r=t.slice(1);if(!r.every(a=>x(a)==="Element"))return _(["\\operatorname{Loop}(",e.serialize(i),", ",e.serialize(r[0]),")"]);if(r.length===1){let a=r[0],u=p(a,1),l=p(a,2);if(x(l)==="Range"){let c=p(l,1),f=p(l,2);return _(["\\text{for }",e.serialize(u),"\\text{ from }",e.serialize(c),"\\text{ to }",e.serialize(f),"\\text{ do }",e.serialize(i)])}return _([e.serialize(i)," \\operatorname{for} ",e.serialize(u)," = ",e.serialize(l)])}let o=r.map(a=>{let u=p(a,1),l=p(a,2);return _([e.serialize(u)," = ",e.serialize(l)])}).join(", ");return _([e.serialize(i)," \\operatorname{for} ",o])}},{name:"Break",serialize:()=>"\\text{break}"},{name:"Continue",serialize:()=>"\\text{continue}"},{name:"Return",serialize:(e,n)=>{let t=p(n,1);return!t||M(t)==="Nothing"?"\\text{return}":_(["\\text{return }",e.serialize(t)])}},{symbolTrigger:"if",kind:"prefix",precedence:245,parse:(e,n)=>Ma(e,n)},{symbolTrigger:"for",kind:"prefix",precedence:245,parse:(e,n)=>wa(e,n)},{symbolTrigger:"for",kind:"infix",associativity:"none",precedence:19,parse:(e,n,t)=>Ra(e,n,t)},{symbolTrigger:"break",kind:"prefix",precedence:245,parse:()=>["Break"]},{symbolTrigger:"continue",kind:"prefix",precedence:245,parse:()=>["Continue"]},{symbolTrigger:"return",kind:"prefix",precedence:245,parse:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{name:"Text",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)J(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return _(t.map(a=>e.serialize(a)));let s=[];for(let a=0;a<i;a++)s.push(e.serialize(t[a]));let o="";for(let a=i;a<=r;a++){let u=J(t[a]);u!==null?o+=Sa(u):x(t[a])==="Annotated"||x(t[a])==="Text"?o+=e.serialize(t[a]):o+="$"+e.serialize(t[a])+"$"}s.push("\\text{"+o+"}");for(let a=r+1;a<t.length;a++)s.push(e.serialize(t[a]));return _(s)}},{name:"String",latexTrigger:["\\text"],parse:(e,n)=>{let t=e.index;return ve(e,"if")?Ma(e,n):(e.index=t,ve(e,"for")?wa(e,n):(e.index=t,ve(e,"break")?["Break"]:(e.index=t,ve(e,"continue")?["Continue"]:(e.index=t,ve(e,"return")?["Return",e.parseExpression(n)??"Nothing"]:(e.index=t,Re(e))))))},serialize:(e,n)=>{let t=S(n);return t.length===0?"\\text{}":_(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>Y(n)===2?e.serialize(p(n,1))+"_{"+e.serialize(p(n,2))+"}":"_{"+e.serialize(p(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix",parse:(e,n)=>e.options.strict===!1&&/^[0-9]$/.test(e.peek)?null:["Superminus",n]},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>We(e,n,1),serialize:(e,n)=>{let t=P(p(n,2))??1,i=e.serialize(p(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(p(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>We(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>We(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>We(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>We(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>We(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>We(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>We(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>We(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=M(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return e.matchBoundary()?e.match("<}>")?["Derivative",n,r]:null:(e.removeBoundary(),null)}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(x(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=M(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new pe("matrix")))return e.match("<}>"),["Inverse",n];if(!i.matches("function"))return null;let r=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))r++;else if(e.match("\\prime"))r++;else if(e.match("\\doubleprime"))r+=2;else if(e.match("\\tripleprime"))r+=3;else return null;return r===1?["Derivative",["InverseFunction",n]]:r>0?["Derivative",["InverseFunction",n],r]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(p(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=P(p(n,2))??1,i=e.serialize(p(n,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+e.serialize(p(n,2))+")}"}},{name:"D",serialize:(e,n)=>{if(x(n)!=="D")return"D";let t=p(n,1),i=p(n,2);if(!t||!i)return"D";let r=1,s=t;for(;x(s)==="D";){let l=p(s,2);if(M(l)===M(i))r++,s=p(s,1);else break}let o=s;x(s)==="Function"&&(o=p(s,1)??s);let a=e.serialize(o),u=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${u}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${u}^{${r}}}${a}`}},{name:"NewtonDerivative1",latexTrigger:["\\dot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",n,t]}},{name:"NewtonDerivative2",latexTrigger:["\\ddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",n,t],t]}},{name:"NewtonDerivative3",latexTrigger:["\\dddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",n,t],t],t]}},{name:"NewtonDerivative4",latexTrigger:["\\ddddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",["D",n,t],t],t],t]}},{name:"EulerDerivative",latexTrigger:["D"],kind:"expression",parse:e=>{let n=1,t=null,i=!1;for(;!i;)if(e.match("_")){if(t=e.parseGroup()??e.parseToken(),!t)return null}else if(e.match("^")){let o=e.parseGroup()??e.parseToken();n=P(o)??1}else i=!0;if(!t||M(t)===null)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let s=r;for(let o=0;o<n;o++)s=["D",s,t];return s}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:_r,serialize:(e,n)=>{let t=[],i=S(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let s=[];s.push(e.serialize(i[r+1])),s.push(e.serialize(i[r])),t.push(s.join("&"))}return _(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:_r},{kind:"environment",symbolTrigger:"rcases",parse:_r}];function Re(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,s=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,ti(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")s(),t.push(Re(e));else if(e.match("\\textbf"))s(),t.push(Re(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))s(),t.push(Re(e,{fontStyle:"normal"}));else if(e.match("\\textup"))s(),t.push(Re(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))s(),t.push(Re(e,{fontStyle:"italic"}));else if(e.match("\\textit"))s(),t.push(Re(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))s(),t.push(Re(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))s(),t.push(Re(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,u=e.parseStringGroup();if(u!==null){s();let l=Re(e);t.push(["Annotated",l,ti({color:u})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(s(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(s(),t.push(u)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(s(),t.push(u)):(i+="$$",e.index=a)}else{let a=e.parseChar()??e.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}s();let o;return t.length===1?o=t[0]:t.every(a=>J(a)!==null)?o="'"+t.map(a=>J(a)).join("")+"'":o=["Text",...t],n?["Annotated",o,ti(n)]:o}function pf(e,n){return n===null?"":_(ii(n,t=>{let i=J(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Sa(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function mf(e,n){let t=p(n,2);return t?x(t)==="LatexString"?J(p(t,1))??"":x(t)==="Hold"?e.serialize(p(t,1)):e.serialize(t):""}function We(e,n,t){for(;!e.atEnd;)if(e.match("'")||e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else break;let i=x(n);if(i==="Derivative"||i==="Prime"){let a=P(p(n,2))??1;return[i,H(p(n,1)),a+t]}let r=M(n),s=r&&e.getSymbolType(r).matches("function")||x(n);e.skipSpace();let o=e.parseArguments("enclosure");if(o&&o.length>0){let a=o[0],u=M(a)??"x",c=typeof n=="string"?[n,...o]:["Apply",n,...o];for(let f=0;f<t;f++)c=["D",c,u];return c}return s?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",H(n)]:["Prime",H(n),t]}function df(e,n){if(j(n))return["Delimiter"];let t=x(n);if(t==="Delimiter"&&p(n,2)!==null){let i=J(p(n,2));if(i?.length===1)return["Delimiter",p(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(J(p(n,2))??"..")===".."?["Matrix",p(n,1)]:["Delimiter",n]}function $a(e,n){if(j(n))return["List"];let t=x(n);if(t==="Range"||t==="Linspace")return n;if(t==="Sequence"){let i=S(n),r=ka(i,e);return r||["List",...i]}if(t==="Delimiter"){let i=J(p(n,2))??"...";if(i===";"||i===".;.")return["List",...(S(p(n,1))??[]).map(r=>$a(e,r))];if(i===","||i===".,."){if(n=p(n,1),x(n)==="Sequence"){let r=S(n),s=ka(r,e);return s||["List",...r]}return["List",n??"Nothing"]}}return["List",n]}function ka(e,n){if(e.length<4)return null;let t=e[e.length-2];if(M(t)!=="ContinuationPlaceholder")return null;let i=e.slice(0,-2),r=e[e.length-1];if(i.length<2)return null;let s=i.map(P);if(s.some(l=>l===null))return null;let o=s,a=o[o.length-1]-o[o.length-2],u=n.options.tolerance;if(Math.abs(a)<u)return n.error("degenerate-range-step",n.index);for(let l=1;l<o.length;l++)if(Math.abs(o[l]-o[l-1]-a)>u)return n.error("inconsistent-range-samples",n.index);return["Range",o[0],r,a]}function hf(e,n){return Y(n)>1&&S(n).every(t=>{let i=x(t);return yr(i)||br(i)})?_(["\\begin{cases}",Pe("\\\\")(e,n),"\\end{cases}"]):_(["\\bigl\\lbrack",Pe(", ")(e,n),"\\bigr\\rbrack"])}function si(e,n){if(n===null)return null;let t=e.parseExpression({minPrec:270});if(t===null)return null;if(x(t)==="Range"){let i=p(t,1),r=p(t,2);return i&&r?["Range",n,r,["Subtract",i,n]]:null}return["Range",n,t]}var ai={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function oi(e,n,t){let i=(t?.minPrec??0)>=19,r=M(n);if(r&&r.includes("_")){let a=r.indexOf("_"),u=r.substring(0,a),l=r.substring(a+1),c=parseInt(l,10),f=!isNaN(c)&&String(c)===l?c:l,m=f!==""&&(typeof f=="number"||typeof f=="string"&&f.length===1);(e.getSymbolType(u).matches("indexed_collection")||!i&&m)&&(n=["Subscript",u,f])}if(x(n)==="InvisibleOperator"&&Y(n)===2&&x(p(n,2))==="Delimiter"){let a=M(p(n,1));if(!a)return null;let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=p(p(n,2),1),c=[];return x(l)==="Sequence"?c=[...S(l)]:l&&(c=[l]),["Assign",a,["Function",u,...c??[]]]}if(x(n)==="Subscript"&&M(p(n,1))){let a=M(p(n,1));if(!e.getSymbolType(a).matches("indexed_collection")){let c=p(n,2),f=(c!==null&&typeof c=="string"?c:void 0)??(c!==null&&typeof c=="number"?String(c):void 0);if(f&&i){let m=e.parseExpression({...t??{},minPrec:20});return m===null?null:["Assign",a+"_"+f,m]}}let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=p(n,2);return J(l)!==null?["Assign",n,u]:M(l)?["Assign",n,u]:["Assign",n,u]}let s=x(n);if(s){let a=S(n),u=e.parseExpression({...t??{},minPrec:20});return u===null?null:["Assign",s,["Function",u,...a]]}if(!M(n))return null;let o=e.parseExpression({...t??{},minPrec:20});return o===null?null:["Assign",n,o]}function _r(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=x(i[0]);return br(r)||yr(r)}))return["List",...n.map(i=>i[0])];let t=[];for(let i of n)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=J(i[1]);t.push(r?"True":vr(i[1])??"True"),t.push(i[0])}return["Which",...t]}function ve(e,n){let t=e.index;if(!e.match("<{>"))return e.index=t,!1;for(;e.match("<space>"););for(let i=0;i<n.length;i++)if(n[i]===" "){if(!e.match("<space>"))return e.index=t,!1;for(;e.match("<space>"););}else{if(e.peek!==n[i])return e.index=t,!1;e.nextToken()}for(;e.match("<space>"););return e.match("<}>")?!0:(e.index=t,!1)}function Nn(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("\\text")){if(ve(e,n))return!0;e.index=t}let i=e.index,r=e.parseSymbol();return r!==null&&M(r)===n?!0:(e.index=i,!1)}function Tn(e,n){let t=e.index,i=Nn(e,n);return e.index=t,i}function Ma(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:s=>Tn(s,"then")});if(t===null||!Nn(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:s=>Tn(s,"else")});if(i===null||!Nn(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function wa(e,n){let t=e.parseExpression({minPrec:0,condition:a=>Tn(a,"from")}),i=t?M(t):null;if(!i||!Nn(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>Tn(a,"to")});if(r===null||!Nn(e,"to"))return null;let s=e.parseExpression({minPrec:0,condition:a=>Tn(a,"do")});return s===null||!Nn(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,s]]]}function Ra(e,n,t){let i={minPrec:21,condition:s=>{if(t?.condition?.(s))return!0;let o=s.index;s.skipVisualSpace();let a=s.peek===",";return s.index=o,!!(a||Tn(s,"where")||Tn(s,"with"))}},r=[];do{e.skipVisualSpace();let s=e.parseExpression(i);if(s===null)break;let o=x(s);if(o!=="Equal"&&o!=="Assign")return null;let a=p(s,1),u=p(s,2);if(!a||!u)return null;r.push(["Element",a,u]),e.skipVisualSpace()}while(e.match(","));return r.length===0?null:["Loop",n,...r]}function Aa(e,n,t){let i={minPrec:21,condition:a=>{if(t?.condition?.(a))return!0;let u=a.index;a.skipVisualSpace();let l=a.peek===",";return a.index=u,l}},r=[];do{e.skipVisualSpace();let a=e.parseExpression(i);if(!a)break;r.push(a),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let s=e.index;if(Nn(e,"for")){let a=Ra(e,n,t);if(a){let u=[];for(let l of r){let c=kr(l);x(c)==="Assign"&&u.push(["Declare",p(c,1)]),u.push(c)}return u.push(a),["Block",...u]}e.index=s}let o=[];for(let a of r){let u=kr(a);x(u)==="Assign"&&o.push(["Declare",p(u,1)]),o.push(u)}return o.push(n),["Block",...o]}function gf(e){let n=[];for(let t of e){let i=kr(t);x(i)==="Assign"&&n.push(["Declare",p(i,1)]),n.push(i)}return["Block",...n]}function kr(e){if(x(e)!=="Assign")return e;let n=p(e,1);if(x(n)!=="Subscript")return e;let t=M(p(n,1));if(!t)return e;let i=p(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,p(e,2)??"Nothing"]:e}function Sr(...e){return(n,t)=>{if(!M(t)&&x(t)!=="List")return null;let i=null;return e.length===0&&(i=n.parseGroup()),i??=n.parseExpression({minPrec:0}),i===null||e.length>0&&!n.matchAll(e)||J(i)!==null?null:(x(i)==="Delimiter"&&(i=p(i,1)??"Nothing"),x(i)==="Sequence"?["At",t,...S(i)]:["At",t,i])}}var mt=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Pa=[...mt.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...mt.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var Da=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["-",">"],kind:"infix",precedence:270,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:270});return i===null?null:["To",n,i]}}];function De(e,n,t){if(j(e))return null;let i,r=x(e);if(r==="Delimiter"){let l=J(p(e,2));if(l!==","&&l!=="(,)"&&l!=="[,]")return null;let c=p(e,1);x(c)==="Sequence"?i=[...S(c)]:i=c?[c]:[]}else if(r==="Sequence")i=[...S(e)];else return null;if(i.length!==2)return null;let[s,o]=i;return["Interval",n?["Open",s]:s,t?["Open",o]:o]}var Fa=new Set(["Less","LessEqual","Greater","GreaterEqual","Equal","NotEqual","And","Or","Not"]),Ba=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"UpperHalfPlane",latexTrigger:"\\mathbb{C}^+"},{latexTrigger:"\\mathbb{C}^{+}",parse:"UpperHalfPlane"},{latexTrigger:"\\C^+",parse:"UpperHalfPlane"},{latexTrigger:"\\C^{+}",parse:"UpperHalfPlane"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix",serialize:(e,n)=>_([e.serialize(p(n,1)),"^\\complement"])},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:Oa},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>De(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>De(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>De(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>De(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>De(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>De(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>De(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>De(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>De(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>De(n,!0,!0)},{name:"Multiple",serialize:Oa},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Divides",latexTrigger:["\\mid"],kind:"infix",precedence:160},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>{if(j(n))return"EmptySet";x(n)=="Delimiter"&&J(p(n,2))===","&&(n=p(n,1));let t=x(n);if(t==="Divides"){let i=p(n,1),r=p(n,2);if(i!==null&&r!==null)return["Set",i,["Condition",r]]}if(t==="Colon"){let i=p(n,1),r=p(n,2);if(i!==null&&r!==null){let s=x(i);return s!==null&&Fa.has(s)?["Which",i,r]:["Set",i,["Condition",r]]}}if(t==="Sequence"){let i=S(n),r=i.filter(o=>x(o)==="Colon");if(r.length>0&&r.every(o=>{let a=p(o,1),u=a!==null?x(a):null;return u!==null&&Fa.has(u)})){let o=[];for(let a=0;a<i.length;a++){let u=i[a];if(x(u)==="Colon"){let l=p(u,1),c=p(u,2);if(l===null||c===null)return["Set",...i];o.push(l,c)}else{if(a!==i.length-1)return["Set",...i];o.push("True",u)}}return["Which",...o]}return["Set",...i]}return["Set",n]},serialize:(e,n)=>{if(Y(n)===2&&x(p(n,2))==="Condition"){let t=p(n,2);return _(["\\lbrace",e.serialize(p(n,1)),"\\mid",e.serialize(p(t,1)),"\\rbrace"])}return _(["\\lbrace",S(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])}},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:B},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function Oa(e,n){if(n===null)return"";let t=x(n);if(!t)return"";if(t==="Range")return _(["\\mathopen\\lbrack",e.serialize(p(n,1)),", ",e.serialize(p(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=p(n,1),s=p(n,2),o=!1,a=!1;return x(r)==="Open"&&(r=p(r,1),o=!0),x(s)==="Open"&&(s=p(s,1),a=!0),_([o?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(s),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function In(e,n,t){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let i=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return _(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function ui(e,n){if(n==="none")return e;if(n==="0...360"){let t=e%360;return(t<0?t+360:t)||0}if(n==="-180...180"){let t=e%360;return t>180&&(t-=360),t<-180&&(t+=360),t||0}return e}function bf(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,s=Math.floor(r),o=(r-s)*60,a=Math.round(o*1e3)/1e3,u=s,l=i;return a>=60&&(a=0,u++),u>=60&&(u=0,l++),{deg:n*l||0,min:n*u||0,sec:a===0?0:n*a}}function li(e){let{deg:n,min:t,sec:i}=bf(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let s=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(s))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function yf(e){if(x(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of S(e))if(x(i)==="Power"){let r=p(i,1),s=p(i,2);if(x(s)==="Negate"){let o=p(s,1);r&&o&&t.push(["Power",r,o])}else{let o=P(s)??NaN;o===-1?r&&t.push(r):o<0?r&&t.push(["Power",r,-o]):n.push(i)}}else if(x(i)==="Rational"&&Y(i)===2||x(i)==="Divide"){let r=p(i,1),s=p(i,2);P(r)!==1&&n.push(r),P(s)!==1&&t.push(s)}else{let r=Bn(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function xf(e){let n=e.parseOptionalGroup(),t=e.parseGroup()??e.parseToken();return j(t)?n!==null?["Root",Dn,H(n)]:["Sqrt",Dn]:n!==null?["Root",t,n]:["Sqrt",t]}function vf(e){if(typeof e=="number")return-e;if(typeof e=="string")return e.startsWith("-")?e.slice(1):e.startsWith("+")?"-"+e.slice(1):"-"+e;let n=e.num;return n.startsWith("-")?{num:n.slice(1)}:n.startsWith("+")?{num:"-"+n.slice(1)}:{num:"-"+n}}function ht(e,n,t,i){return t==null?"\\sqrt{}":(i=i??2,n==="solidus"?e.wrapShort(t)+"^{1/"+e.serialize(i)+"}":n==="quotient"?e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(i)+"}}":P(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}function Ef(e,n){e.level-=1;let t=x(n),i="",r=p(n,1);if(t==="Negate")i="-"+e.wrap(r,ne+1);else if(t==="Subtract"){i=e.wrap(r,ne);let s=p(n,2);if(s!==null){let o=e.wrap(s,ne);o[0]==="-"?i+="+"+o.slice(1):o[0]==="+"?i+="-"+o.slice(1):i=i+"-"+o}}else if(t==="Add"){if(e.options.prettify&&Y(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[p(n,1),p(n,2)],[l,c]=[a,u],f=P(l),m=Bn(c);if((f===null||m===null)&&([l,c]=[u,a],f=P(l),m=Bn(c)),f!==null&&m!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(m[0])&&isFinite(m[1])&&m[0]>0&&m[0]<=100&&m[1]<=100)return i=In(e.options.invisiblePlus,e.serialize(l),e.serialize(c)),e.level+=1,i}if(e.options.prettify&&Y(n)===2){let[a,u]=gt(r),[l,c]=gt(p(n,2));if(u<0&&c>0)return i=e.wrap(l,ne)+"-"+e.wrap(a,ne),e.level+=1,i}i=e.serialize(r);let s=Y(n)+1,o=S(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[u,l]=gt(r),c=e.wrap(u,ne);l>0?c.startsWith("+")||c.startsWith("-")?i+=c:i+="+"+c:c.startsWith("+")?i+="-"+c.slice(1):c.startsWith("-")?i+="+"+c.slice(1):i+="-"+c}else{let u=e.wrap(r,ne);u[0]==="-"||u[0]==="+"?i+=u:i+="+"+u}}return e.level+=1,i}function ja(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[u,l]=yf(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?t="1":u.length===1?t=e.serialize(u[0]):t=ja(e,["Multiply",...u]):t=e.serialize(["Divide",u.length===1?u[0]:["Multiply",...u],l.length===1?l[0]:["Multiply",...l]]))}if(t)return e.level+=1,t;let i=!1,r=null,s=Y(n)+1,o=S(n);e.options.prettify===!0&&o.length===2&&vn(o[1])&&!vn(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let u=1;u<s;u++){if(r=o[u-1],r===null)continue;let l;if(vn(r)){l=e.serialize(r),l==="-1"&&!t?(t="",i=!i):(l[0]==="-"&&(l=l.slice(1),i=!i),t?t=In(e.options.multiply,t,l):t=l),a=!0;continue}if(x(r)==="Power"){let c=Bn(p(r,2));if(c!=null){let[f,m]=c;if(f===1&&m!==null){t+=ht(e,e.rootStyle(r,e.level),p(r,1),m),a=!1;continue}}}if(x(r)==="Power"&&!isNaN(P(p(r,1))??NaN)){l=e.serialize(r),t?t=In(e.options.multiply,t,l):t=l,a=!0;continue}if(x(r)==="Negate"&&(r=p(r,1),i=!i),l=e.wrap(r,xe),!t)t=l;else{let c=x(r);a&&(c==="Divide"||c==="Rational")?t=In(e.options.multiply,t,l):/^\d/.test(l)?t=In(e.options.multiply,t,l):e.options.invisibleMultiply?t=In(e.options.invisibleMultiply,t,l):t=_([t,l])}a=!1}return e.level+=1,i?"-"+t:t}function ci(e){let n=e.parseGroup(),t=null;if(n===null?(n=e.parseToken(),t=e.parseToken()):t=e.parseGroup(),n=H(n),t=H(t),x(n)==="PartialDerivative"&&(x(t)==="PartialDerivative"||x(t)==="Multiply"&&x(p(t,1))==="PartialDerivative")){let s=p(n,3)??null,o=p(n,1);o==null&&(o=H(e.parseExpression()));let a=[];if(x(t)==="Multiply"){for(let u of S(t))if(x(u)==="PartialDerivative"){let l=p(u,2);l&&a.push(l)}}else{let u=p(t,2);u&&a.push(u)}return a.length>1&&(a=["List",...a]),["PartialDerivative",o,...a,s===null?1:s]}let i=M(n);if(i==="d"||i==="d_upright"||i==="differentialD"){let s=[],o=a=>{if(!a)return;let u=M(a);if(u&&u!=="d"&&u!=="d_upright"&&u!=="differentialD"){s.push(a);return}let l=x(a);if(l==="Sequence"||l==="Multiply"||l==="InvisibleOperator")for(let c of S(a))o(c)};if(o(t),s.length===0){let a=M(t);a&&a.length>1&&a[0]==="d"&&s.push(a.slice(1))}if(s.length>0)return["D",H(e.parseExpression()),...s]}return["Divide",n,t]}function La(e,n){if(n===null)return"";let t=H(p(n,1)),i=H(p(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(t),l=e.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return P(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return P(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(t),a=e.serialize(i);return`${s}{${o}}{${a}}`}function Mr(e,n){if(!n)return"";let t=x(n),i=H(p(n,1));if(t==="Sqrt")return ht(e,e.rootStyle(n,e.level-1),i,2);let r=H(p(n,2));if(t==="Root")return ht(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let o=P(r)??1;if(o===-1)return e.serialize(["Divide","1",i]);if(o<0)return e.serialize(["Divide","1",["Power",i,-o]]);if(x(r)==="Divide"||x(r)==="Rational"){let a=P(p(r,1)),u=P(p(r,2));if(a===1){let l=e.rootStyle(n,e.level);return ht(e,l,i,p(r,2))}if(a===-1)return u===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,p(r,2)??Dn]]);if(u===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(p(r,1))}}`}else if(x(r)==="Power"&&P(p(r,2))===-1){let a=e.rootStyle(n,e.level);return ht(e,a,i,p(r,1))}}return lt("^",(o=>o.startsWith("-")?e.wrapString(o,"normal"):o)(e.wrapShort(i)),e.serialize(r))}function dt(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,s=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=P(i),e.skipSpace();let u=e.index,l=e.parseNumber();l!==null&&(e.match('"')||e.match("\\doubleprime"))?s=P(l):e.index=u}else return e.index=t,["Degrees",n];let o=P(n);if(o!==null&&r!==null){let u=o+r/60;return s!==null&&(u+=s/3600),["Degrees",u]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),s!==null&&a.push(["Quantity",s,"arcsec"]),["Add",...a]}var Ha=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>dt(e,n),serialize:(e,n)=>{let t=e.options,i=p(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=P(i);if(r!==null){let s=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(s=ui(s,t.angleNormalization)),t.dmsFormat?li(s):`${s}\xB0`}}return _([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>dt(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>dt(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>dt(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>dt(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=P(p(n,1)),i=P(p(n,2)),r=P(p(n,3));if(t!==null){let o=i??0,a=r??0,u=`${t}\xB0`;return(o!==0||a!==0)&&(u+=`${o}'`),a!==0&&(u+=`${a}"`),u}let s=[];for(let o of[1,2,3]){let a=p(n,o);a!==null&&s.push(e.serialize(a))}return`\\operatorname{DMS}(${s.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{latexTrigger:"\\exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>j(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>j(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:ne,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:ne});if(i===null)return null;if(x(i)==="Negate"){let r=p(i,1);if(vn(r))return Ln("Add",n,vf(r))}return Ln("Add",n,i)},serialize:Ef},{kind:"prefix",latexTrigger:["+"],precedence:ne,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>j(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>j(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:ne-1,serialize:(e,n)=>{let t=e.serialize(p(n,1)),i=P(p(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":_([e.serialize(p(n,2)),"\\imaginaryI"]);return P(p(n,1))===0?r:i!==null&&i<0?_([t,r]):_([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Ie,parse:ci,serialize:La},{latexTrigger:"\\dfrac",precedence:Ie,parse:ci},{latexTrigger:"\\tfrac",precedence:Ie,parse:ci},{latexTrigger:"\\cfrac",precedence:Ie,parse:ci},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Ie,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Ie,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Ie,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Ie,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=p(n,1);return M(t)||P(t)!==null?_(["\\exponentialE^{",e.serialize(t),"}"]):_(["\\exp",e.wrap(H(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:hr},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:hr},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>j(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>j(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{latexTrigger:["\\zeta"],kind:"function",parse:"Zeta"},{latexTrigger:["\\Beta"],kind:"function",parse:"Beta"},{name:"LambertW",latexTrigger:["\\operatorname{W}"],kind:"function",serialize:(e,n)=>"\\operatorname{W}"+e.wrapArguments(n)},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",serialize:(e,n)=>{let t=p(n,1),i=p(n,2);return t!==null&&i!==null?"\\operatorname{J}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselJ",i]):"\\operatorname{J}"+e.wrapArguments(n)}},{name:"BesselY",latexTrigger:["\\operatorname{Y}"],kind:"function",serialize:(e,n)=>{let t=p(n,1),i=p(n,2);return t!==null&&i!==null?"\\operatorname{Y}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselY",i]):"\\operatorname{Y}"+e.wrapArguments(n)}},{name:"BesselI",latexTrigger:["\\operatorname{I}"],kind:"function",serialize:(e,n)=>{let t=p(n,1),i=p(n,2);return t!==null&&i!==null?"\\operatorname{I}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselI",i]):"\\operatorname{I}"+e.wrapArguments(n)}},{name:"BesselK",latexTrigger:["\\operatorname{K}"],kind:"function",serialize:(e,n)=>{let t=p(n,1),i=p(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"AiryAi",latexTrigger:["\\operatorname{Ai}"],kind:"function",serialize:(e,n)=>"\\operatorname{Ai}"+e.wrapArguments(n)},{name:"AiryBi",latexTrigger:["\\operatorname{Bi}"],kind:"function",serialize:(e,n)=>"\\operatorname{Bi}"+e.wrapArguments(n)},{name:"GCD",latexTrigger:["\\gcd"],kind:"function"},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>Ga("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>Ga("Log",e),serialize:(e,n)=>{let[t,i]=S(n);return i?_(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",latexTrigger:["\\lcm"],kind:"function"},{symbolTrigger:"lcm",kind:"function",parse:"LCM"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max",arguments:"implicit"},{symbolTrigger:"min",kind:"function",parse:"Min",arguments:"implicit"},{name:"Max",latexTrigger:"\\max",kind:"function",arguments:"implicit"},{name:"Min",latexTrigger:"\\min",kind:"function",arguments:"implicit"},{name:"Supremum",latexTrigger:"\\sup",kind:"function",arguments:"implicit"},{name:"Infimum",latexTrigger:"\\inf",kind:"function",arguments:"implicit"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(x(n)!=="To")return null;let t=e.parseExpression({minPrec:xe});return t?["Limit",["Function",t,p(n,1)],p(n,2)]:null},serialize:(e,n)=>{let t=p(n,1),i=p(t,2),r=p(n,2);return _(["\\lim_{",e.serialize(i),"\\to",e.serialize(r),"}",e.serialize(p(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:Ye},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:xe,serialize:ja},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:xe,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:xe+2});return i===null?null:Ln("Multiply",n,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:xe,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:xe+2});return i===null?["Multiply",n,Dn]:Ln("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Ie,serialize:(e,n)=>{if(Y(n)!==2)return"";let t=e.serialize(p(n,1)),i=e.serialize(p(n,2));return _([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:Ie,parse:"Mod"},{latexTrigger:"\\operatorname{mod}",parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:B,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",H(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(p(n,1)),i=e.serialize(p(n,2));if(p(n,3)===null)return _([t,"\\equiv",i]);let r=e.serialize(p(n,3));return _([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:ft+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:ft+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>j(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>j(n)?null:["Norm",n],serialize:(e,n)=>{let t=p(n,1);if(x(t)==="Matrix"){let i=p(t,1),r=p(t,2),s=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(s)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:Ye,serialize:(e,n)=>{let t=p(n,1);if(t===null)return"\\pm";if(Y(n)===1)return _(["\\pm",e.serialize(t)]);let i=p(n,2);return _([e.serialize(t),"\\pm",e.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:Ye,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,H(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:Ye,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["PlusMinus",n,H(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:Ye,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",H(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Mr},{latexTrigger:"\\prod",precedence:xe,name:"Product",parse:qa("Product","Multiply",xe),serialize:za("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:ft,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:ft});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:Ie,serialize:(e,n)=>n&&Y(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):La(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=p(n,1);if(!t)return"";let i=p(n,2);return M(i)==="Add"?`\\sum ${e.serialize(t)}`:M(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(p(n,2))}\\right)`}},{name:"Root",serialize:Mr},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(p(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:ne,name:"Sum",parse:qa("Sum","Add",xe),serialize:za("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:xf,serialize:Mr},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:ne+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:ne+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(p(n,1),ne+2),i=e.wrap(p(n,2),ne+3);return _([t,"-",i])}},{name:"Distance",latexTrigger:["\\operatorname{distance}"],kind:"function",serialize:(e,n)=>"\\operatorname{distance}"+e.wrapArguments(n)}];function Nf(e,n){if(e!==null){if(M(e))return{index:M(e)??"Nothing",upper:n};if(x(e)==="GreaterEqual"){let t=M(p(e,1))??"Nothing",i=p(e,2)??1;return{index:t,lower:i,upper:n}}if(x(e)==="Equal"){let t=M(p(e,1))??"Nothing",i=p(e,2);if(x(i)==="Range"){let s=p(i,1)??1,o=p(i,2)??void 0;return{index:t,lower:s,upper:o}}return{index:t,lower:i??1,upper:n}}if(x(e)==="Element")return{index:M(p(e,1))??"Nothing",element:e}}}function Tf(e){let n=x(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function Va(e){if(e===null)return[];let n=En(e);if(n)return[...n];if(x(e)==="Tuple"){let t=S(e);return t?[...t]:[e]}return[e]}function If(e,n){j(e)&&(e=null),j(n)&&(n=null);let t=Va(e),i=Va(n),r=[],s=0;for(;s<t.length;){let o=t[s],a=Nf(o,i[s]);if(a){if(a.element&&s+1<t.length){let u=t[s+1];if(Tf(u)&&x(u)!=="Element"&&x(u)!=="Equal"){let l=a.element;if(Array.isArray(l)&&l.length>=3){let c=[l[0],...l.slice(1),u];a.element=c}s++}}r.push(a)}s++}return r}function qa(e,n,t){return i=>{i.skipSpace(),i.pushSymbolTable();let r=null,s=null;for(;!(s&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?s=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!s){let l=i.parseExpression({minPrec:t});return i.popSymbolTable(),l?["Reduce",l,n]:null}let o=If(s,r),a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[e];let u=[];for(let l of o){if(l.element){u.push(l.element);continue}let c=l.lower,f=l.upper,m=l.index??"Nothing";f!=null?u.push(["Tuple",m,c??1,f]):c!=null?u.push(["Tuple",m,c]):u.push(["Tuple",m])}return[e,a,...u]}}var _f=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function Ja(e){return e==null||M(e)==="Nothing"?null:e}function Sf(e){let n=[],t=S(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=x(i);if(r&&_f.has(r)){n.push(i);continue}break}return n}function kf(e,n){if(x(n)==="Element"){let l=e.serialize(p(n,1)),c=e.serialize(p(n,2));return{sub:`${l}\\in ${c}`}}let t=p(n,1);t!==null&&x(t)==="Hold"&&(t=p(t,1));let i=Ja(p(n,2)),r=Ja(p(n,3)),s={},o=t?M(t):null,a=o!==null&&o!=="Nothing",u=a&&t?e.serialize(t):void 0;return a&&i!==null&&u?s.sub=`${u}=${e.serialize(i)}`:a&&u?s.sub=u:i!==null&&(s.sub=e.serialize(i)),r!==null&&(s.sup=e.serialize(r)),s}function za(e){return(n,t)=>{let i=p(t,1);if(!i)return e;let r=Sf(t),s=e;if(r.length>0){let o=[],a=[];for(let u of r){let l=kf(n,u);l.sub&&o.push(l.sub),l.sup&&a.push(l.sup)}o.length>0&&(s=lt("_",s,o.join(", "))),a.length>0&&(s=lt("^",s,a.join(", ")))}return _([s,n.serialize(i)])}}function Ga(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=n.parseArguments("implicit");return i===null&&t===null?[e]:i===null?[e,t]:t===null?[e,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function gt(e){let n=1,t=e;do{e=t;let i=x(e);if(i==="Negate")n*=-1,t=p(e,1);else if(i==="Multiply"){let[r,s]=gt(p(e,1));s<0&&(n*=-1,r===1?t=["Multiply",...S(e).slice(1)]:t=["Multiply",r,...S(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,s]=gt(p(e,1));s<0&&(n*=-1,t=[i,r,p(e,2)])}else{let r=P(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var Ua=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function C(e){return(n,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcsinh":"Arsinh","\\arcosh":"Arcosh","\\arccosh":"Arcosh","\\artanh":"Artanh","\\arctanh":"Artanh","\\arsech":"Arsech","\\arcsech":"Arsech","\\arcsch":"Arcsch","\\arccsch":"Arcsch","\\arcoth":"Arcoth","\\arccoth":"Arcoth","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Cosh","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[e??""]??e??"";if(n.atTerminator(t))return r;let s=r;do{let f=n.parsePostfixOperator(s,t);if(f===null)break;s=f}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:xe,condition:f=>i[f.peek]!==void 0||(t?.condition?.(f)??!1)}),l=a?.length===2&&(s==="Arctan"||Array.isArray(s)&&s[0]==="InverseFunction"&&s[1]==="Tan")?"Arctan2":s,c=a===null?s:typeof l=="string"?[l,...a]:["Apply",l,...a];return o===null?c:["Power",c,o]}}var Za=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:C("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:C("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:C("Arctan")},{latexTrigger:["\\arctg"],parse:C("Arctan")},{symbolTrigger:"arctg",parse:C("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:C("Arccot")},{latexTrigger:["\\arcctg"],parse:C("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:C("Arcoth")},{symbolTrigger:"arccoth",parse:C("Arcoth")},{latexTrigger:["\\arcoth"],parse:C("Arcoth")},{latexTrigger:["\\arccoth"],parse:C("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:C("Arcsec")},{latexTrigger:["\\arcsec"],parse:C("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:C("Arccsc")},{latexTrigger:["\\arccsc"],parse:C("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:C("Arsinh")},{symbolTrigger:"arcsinh",parse:C("Arsinh")},{latexTrigger:["\\arsinh"],parse:C("Arsinh")},{latexTrigger:["\\arcsinh"],parse:C("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:C("Arcosh")},{symbolTrigger:"arccosh",parse:C("Arcosh")},{latexTrigger:"\\arcosh",parse:C("Arcosh")},{latexTrigger:"\\arccosh",parse:C("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:C("Artanh")},{symbolTrigger:"arctanh",parse:C("Artanh")},{latexTrigger:"\\artanh",parse:C("Artanh")},{latexTrigger:["\\arctanh"],parse:C("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:C("Arsech")},{symbolTrigger:"arcsech",parse:C("Arsech")},{latexTrigger:["\\arsech"],parse:C("Arsech")},{latexTrigger:["\\arcsech"],parse:C("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:C("Arcsch")},{symbolTrigger:"arccsch",parse:C("Arcsch")},{latexTrigger:["\\arcsch"],parse:C("Arcsch")},{latexTrigger:["\\arccsch"],parse:C("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:C("Cosec")},{latexTrigger:["\\cosec"],parse:C("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:C("Cosh")},{latexTrigger:["\\ch"],parse:C("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:C("Cot")},{latexTrigger:["\\cotg"],parse:C("Cot")},{latexTrigger:["\\ctg"],parse:C("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:C("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:C("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:C("Coth")},{latexTrigger:["\\cth"],parse:C("Coth")},{symbolTrigger:"cth",parse:C("Coth")},{latexTrigger:["\\coth"],parse:C("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:C("Sec")},{name:"Sech",symbolTrigger:"sech",parse:C("Sech")},{latexTrigger:["\\sech"],parse:C("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:C("Sinh")},{latexTrigger:["\\sh"],parse:C("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:C("Tan")},{latexTrigger:["\\tg"],parse:C("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:C("Tanh")},{latexTrigger:["\\th"],parse:C("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:C("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:C("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"}];function Vn(e){return n=>{let t=!1,i=[],r=[];for(;!t;){n.skipVisualSpace(),n.match("\\limits"),n.skipSpace();let a=null,u=null;for(;!(u!==null&&a!==null)&&(n.peek==="_"||n.peek==="^");)n.match("_")?u=n.parseGroup()??n.parseToken():n.match("^")&&(a=n.parseGroup()??n.parseToken()),n.skipSpace();j(u)&&(u=null),j(a)&&(a=null),i.push(u??"Nothing"),r.push(a??"Nothing"),n.skipVisualSpace(),t=!n.match(e)}let[s,o]=Mf(n);if(s&&o.length===0){if(x(s)==="Add"||x(s)==="Subtract"){let a=[],u=[];for(let l of S(s))if(o)u.push(l);else{let c;[c,o]=Xe(l),a.push(c??l)}if(o!==null&&u.length>0)return["Add",Ya(e,["Add",...a],{indexes:o,subs:i,sups:r})??"Nothing",...u]}else if(x(s)==="Divide"){let a;[a,o]=Xe(p(s,1)),a!==null&&o!==null&&(s=["Divide",a,p(s,2)])}}return Ya(e,s,{indexes:o,subs:i,sups:r})}}function Ya(e,n,t){if(!n)return null;if(t.sups.length===0&&t.subs.length===0)return[e,n,...t.indexes];let i=t.indexes.length===0?x(n)==="Function"?S(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let o=0;o<r;o++)i.push("Nothing");else if(i.length!==r)for(let o=i.length;o<r;o++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let o=t.subs.length;o<r;o++)t.subs.push("Nothing");if(t.sups.length!==r)for(let o=t.sups.length;o<r;o++)t.sups.push("Nothing");let s=i.map((o,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?o:["Tuple",o,l,u]});return[e,n,...s]}function Mf(e){let n=!1,t=e.parseExpression({minPrec:266,condition:()=>{let i=e.index;return n=Qa(e),e.index=i,n}});return t!==null&&!n?Xe(t):[t,wf(e)]}function wf(e){let n=[];for(;Qa(e);){e.skipVisualSpace();let t=M(e.parseSymbol());if(t===null)return n;n.push(t)}return n}function Xe(e){let n=x(e),t=p(e,1);if(!t)return[e,[]];if(n==="Sequence"&&Y(e)===1)return Xe(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=S(e);if(i){let[r,s]=Af(i);return r.length>0?[[n,...r],s]:[null,s]}}else if(n==="Delimiter"){let[i,r]=Xe(t);if(r)return i?[["Delimiter",["Sequence",i],...S(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=S(e);if(i.length>0){let[r,s]=Xe(i[i.length-1]);if(s.length>0){if(r)return[["Add",...i.slice(0,-1),r],s];if(i.length>2)return[["Add",...i.slice(0,-1)],s];if(i.length>2)return[i[0],s]}}}else if(n==="Negate"){let[i,r]=Xe(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=Xe(t);if(r.length>0)return[["Divide",i??1,p(e,2)],r]}else{let i=S(e);if(i.length===1){let[r,s]=Xe(i[0]);if(s.length>0)return[[x(e),r],s]}}return[e,[]]}function Wa(e){return(n,t)=>{if(!p(t,1))return e;let i=p(t,1),r=[];x(i)==="BuiltInFunction"?(r=["x"],i=[p(i,1),"x"]):x(i)==="Function"?(r=S(i).slice(1),i=p(i,1)):M(i)?r=[]:r=[];let s=S(t).slice(1),o=[],a=s.map((l,c)=>{if(M(l)==="Nothing")return o.push(M(r[c])??"Nothing"),"";if(M(l))return o.push(M(l)??"Nothing"),"";let f=x(l);if(f==="Tuple"||f==="Pair"||f==="Limits"||f==="Range"){if(Y(l)===3){let m=p(l,1);o.push(M(m)??"Nothing");let h=p(l,2),b=p(l,3);return M(h)==="Nothing"&&(h=null),M(b)==="Nothing"&&(b=null),h!==null&&b!==null?`_{${n.serialize(h)}}^{${n.serialize(b)}}`:h!==null?`_{${n.serialize(h)}}`:b!==null?`^{${n.serialize(b)}}`:""}return`_{${n.serialize(l)}}`}if(Y(l)===2){if(M(p(l,1))){o.push(M(p(l,1))??"Nothing");let b=p(l,2);return M(b)==="Nothing"?"":`_{${n.serialize(b)}}`}o.push(M(r[c])??"Nothing");let m=p(l,1),h=p(l,2);if(M(m)==="Nothing"&&(m=null),M(h)==="Nothing"&&(h=null),m!==null&&h!==null)return`_{${n.serialize(m)}}^{${n.serialize(h)}}`;if(m!==null)return`_{${n.serialize(m)}}`;if(h!==null)return`^{${n.serialize(h)}}`}else o.push(M(r[c])??"Nothing")}),u=o.filter(l=>M(l)!=="Nothing").map(l=>`\\mathrm{d}${n.serialize(M(l)??"x")}`);return u.length>0&&(u=["\\,",...u]),a.length===0?`${e}\\,${n.serialize(i)}\\!${u.join(" ")}`:a.reverse().map(l=>`${e}${l}`).join("")+"\\!"+n.serialize(i)+u.join(" ")}}var Xa=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Vn("Integrate"),serialize:Wa("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Vn("Integrate")},{kind:"expression",latexTrigger:["\\iiint"],parse:Vn("Integrate")},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Vn("CircularIntegrate"),serialize:Wa("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Vn("CircularIntegrate")},{kind:"expression",latexTrigger:["\\oiiint"],parse:Vn("CircularIntegrate")}];function Qa(e){let n=e.index;for(;e.match("\\cdot")||e.skipVisualSpace(););return e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"])||e.match("d")||e.match("\\differentialD")?!0:(e.index=n,!1)}function Af(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=Cf(n),!i)break;t.push(i)}return[n,t]}function Cf(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=M(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var Ka=[{name:"Matrix",serialize:(e,n)=>{let t=S(p(n,1));return wr(e,t,J(p(n,2)),J(p(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=S(n);return wr(e,t.map(i=>["List",i]),J(p(n,2)),J(p(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=Ke(e,!1),[t,i]=Qe(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=Ke(e),[t,i]=Qe(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Inverse",serialize:(e,n)=>e.serialize(p(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>qn(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>qn(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>qn(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>qn(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>qn(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=p(n,1);if(x(t)==="Matrix"){let i=S(p(t,1));return wr(e,i,"||",J(p(t,2)))}return qn(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(p(n,1)),i=e.serialize(p(n,2));return`${t} \\cdot ${i}`}}];function Qe(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function Ke(e,n=!0){let t=e.parseStringGroup(n)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function qn(e,n,t){if(S(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=p(n,1),s=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${s}`:`${t}\\left(${s}\\right)`}function wr(e,n,t,i){t??="()";let[r,s]=["",""];typeof t=="string"&&t.length===2&&([r,s]=t);let o="";if(i)for(let c of i)c==="<"?o+="l":c===">"?o+="r":c==="="?o+="c":c==="|"?o+="|":c===":"&&(o+=":");let a=[];for(let c of n??[]){let f=[];for(let m of S(c))f.push(e.serialize(m));a.push(f.join(" & "))}let u=a.join(`\\\\
7
- `),l=o.length>0?`[${o}]`:"";return r==="("&&s===")"?_(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&s==="]"?_(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&s==="}"?_(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&s==="|"?_(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?_(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&s==="."?_(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&s==="}"?_(["\\begin{rcases}",l,u,"\\end{rcases}"]):o||r!=="."||s!=="."?_(["\\left",ai[r]??r,"\\begin{array}",`{${o}}`,u,"\\end{array}","\\right",ai[s]??s]):_(["\\begin{matrix}",u,"\\end{matrix}"])}var eu=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return!t||!M(t)?null:["Mean",t]}},{latexTrigger:"\\operatorname{var}",parse:"Variance"}];var fi={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},nu=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),pi={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function $f(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(fi[n]!==void 0&&nu.has(t)){let i=pi[t];if(i)return{prefixScale:fi[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(fi[n]!==void 0&&nu.has(t)){let i=pi[t];if(i)return{prefixScale:fi[n],baseEntry:i}}}return null}function Rf(e){let n=pi[e];if(n)return n;let t=$f(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function Ar(e){let n=Rf(e);return n?n.dimension:null}var c1=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[pi[e].dimension.join(","),e]));function Pf(e){let n=e.indexOf("^");if(n===-1)return e;let t=e.slice(0,n),i=e.slice(n+1),r=parseInt(i,10);return isNaN(r)?e:["Power",t,r]}function bt(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,s=!0;for(let o=0;o<e.length-1;o++)if(e[o]==="("?r++:e[o]===")"&&r--,r===0&&o<e.length-1){s=!1;break}if(s)return bt(e.slice(1,-1))}let n=-1,t=[],i=0;for(let r=0;r<e.length;r++)e[r]==="("?i++:e[r]===")"?i--:i===0&&(e[r]==="/"&&n===-1?n=r:e[r]==="*"&&t.push(r));if(n!==-1){let r=e.slice(0,n).trim(),s=e.slice(n+1).trim(),o=bt(r),a=bt(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(e.slice(s,a).trim()),s=a+1;r.push(e.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>bt(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return e[0]==="("?null:Pf(e)}function tu(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?bt(e):e}function ou(e){if(!e.match("<{>"))return null;let n="",t=0;for(;!e.atEnd;){let i=e.peek;if(i==="<}>"&&t===0)return e.nextToken(),n;if(i==="<}>"){t--,e.nextToken();continue}if(i==="<{>"){t++,e.nextToken();continue}if(i==="<space>"){e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var Df=new Set(["d"]);function au(e){if(!e||e.length===0||Df.has(e))return null;if(Ar(e)!==null)return e;if(/[/*^]/.test(e))try{let n=tu(e);if(n!==null&&Cr(n))return n}catch{return null}return null}function Cr(e){if(typeof e=="string")return Ar(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>Cr(t)):n==="Power"?Cr(e[1]):!1}var iu=e=>{let n=e.index,t=ou(e);if(t===null)return e.index=n,null;let i=au(t);return i===null?(e.index=n,null):["__unit__",i]};function _n(e){let n=M(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=x(e);if(!t)return"";if(t==="Divide"){let i=p(e,1),r=p(e,2);return`${_n(i)}/${_n(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(_n(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=p(e,1),r=p(e,2),s=typeof r=="number"?String(r):M(r)??String(r);return`${_n(i)}^{${s}}`}if(t==="Square"){let i=p(e,1);return`${_n(i)}^{2}`}return""}function ru(e){let n=e.parseGroup();if(n===null)return null;let t=uu(e);return t===null?null:["Quantity",n,t]}function su(e){return uu(e)}function uu(e){let n=e.index,t=ou(e);if(t===null)return e.index=n,null;let i=au(t);return i===null?(e.index=n,null):i}var lu=[{latexTrigger:"\\mathrm",kind:"expression",parse:iu},{latexTrigger:"\\text",kind:"expression",parse:iu},{latexTrigger:"\\qty",parse:ru},{latexTrigger:"\\SI",parse:ru},{latexTrigger:"\\unit",parse:su},{latexTrigger:"\\si",parse:su},{name:"Quantity",serialize:(e,n)=>{let t=p(n,1),i=p(n,2);if(t===null||i===null)return"";let r=M(i),s=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",o=e.options;if(s&&(o.dmsFormat||o.angleNormalization&&o.angleNormalization!=="none")){let l=P(t);if(l===null){let f=e.serialize(t),m=_n(i);return _([f,"\\,",`\\mathrm{${m}}`])}let c=l;return r==="rad"?c=c*180/Math.PI:r==="arcmin"?c=c/60:r==="arcsec"&&(c=c/3600),o.angleNormalization&&o.angleNormalization!=="none"&&(c=ui(c,o.angleNormalization)),o.dmsFormat?li(c):`${c}\xB0`}let a=e.serialize(t),u=_n(i);return _([a,"\\,",`\\mathrm{${u}}`])}}];var Ff=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"];function cu(e){for(e.skipSpace(),(e.peek==="-"||e.peek==="+")&&e.nextToken();/^[\d.]$/.test(e.peek);)e.nextToken();for(let n of Ff)if(e.matchAll([...n]))return}function Ee(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}function mi(e){return n=>{let t=n.parseExpression();return t!==null&&!j(t)?["Annotated",t,{dict:{mathStyle:e}}]:"Nothing"}}function Fe(e){return n=>{let t=n.parseExpression();return t!==null&&!j(t)?["Annotated",t,{dict:{size:e}}]:"Nothing"}}var fu=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>M(n)===null?null:["Increment",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>M(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return M(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return M(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,t="Nothing",i="Nothing";for(;!n;)e.skipSpace(),e.match("_")?i=e.parseGroup()??e.parseToken():e.match("^")?t=e.parseGroup()??e.parseToken():n=!0;let r=En(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let s=e.parseGroup()??"Nothing";if(!j(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,i,t]},serialize:(e,n)=>{let t="\\partial",i=p(n,1),r=p(n,2),s=p(n,3);return r!==null&&r!=="Nothing"&&(x(r)==="List"?t+="_{"+e.serialize(["Sequence",...S(r)])+"}":t+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(t+="^{"+e.serialize(s)+"}"),i!==null&&i!=="Nothing"&&(t+=e.serialize(i)),t},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Ee("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Ee("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Ee("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Ee("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Ee("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Ee("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Ee("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Ee("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Ee("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Ee("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Ee("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Ee("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Ee("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Ee("OverGroup")},{latexTrigger:["\\textcolor"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\colorbox"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{backgroundColor:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\boxed"],parse:e=>{let n=e.parseGroup();return n!==null?["Annotated",n,{dict:{border:!0}}]:"Nothing"}},{latexTrigger:["\\displaystyle"],parse:mi("normal")},{latexTrigger:["\\textstyle"],parse:mi("compact")},{latexTrigger:["\\scriptstyle"],parse:mi("script")},{latexTrigger:["\\scriptscriptstyle"],parse:mi("scriptscript")},{latexTrigger:["\\color"],parse:e=>{let n=e.parseStringGroup();if(n!==null){let t=e.parseExpression();if(t!==null&&!j(t))return["Annotated",t,{dict:{color:n}}]}return"Nothing"}},{latexTrigger:["\\tiny"],parse:Fe(1)},{latexTrigger:["\\scriptsize"],parse:Fe(2)},{latexTrigger:["\\footnotesize"],parse:Fe(3)},{latexTrigger:["\\small"],parse:Fe(4)},{latexTrigger:["\\normalsize"],parse:Fe(5)},{latexTrigger:["\\large"],parse:Fe(6)},{latexTrigger:["\\Large"],parse:Fe(7)},{latexTrigger:["\\LARGE"],parse:Fe(8)},{latexTrigger:["\\huge"],parse:Fe(9)},{latexTrigger:["\\Huge"],parse:Fe(10)},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(p(n,1)),i=Na(p(n,2));if(i==null)return t;i.dict.mathStyle==="normal"?t=_(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"?t=_(["{\\textstyle",t,"}"]):i.dict.mathStyle==="script"?t=_(["{\\scriptstyle",t,"}"]):i.dict.mathStyle==="scriptscript"&&(t=_(["{\\scriptscriptstyle",t,"}"]));let r=i.dict.size;return r!==null&&r>=1&&r<=10&&(t=_(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),i.dict.fontFamily==="monospace"?t=_(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=_(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=_(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=_(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=_(["\\textup{",t,"}"])),i.dict.color&&(t=_(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=_(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=_(["\\boxed{",t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\hspace"],parse:e=>(e.peek==="*"&&e.nextToken(),e.parseStringGroup(),["HorizontalSpacing",0])},{latexTrigger:["\\hskip"],parse:e=>(cu(e),["HorizontalSpacing",0])},{latexTrigger:["\\kern"],parse:e=>(cu(e),["HorizontalSpacing",0])},{latexTrigger:["\\phantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:e=>(e.parseOptionalGroup(),e.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:e=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:e=>"Nothing"},{name:"HorizontalSpacing",serialize:(e,n)=>{if(p(n,2)!==null){let i=J(p(n,2)),r=e.serialize(p(n,1));return i==="bin"?`\\mathbin{${r}}`:i==="op"?`\\mathop{${r}}`:i==="rel"?`\\mathrel{${r}}`:i==="ord"?`\\mathord{${r}}`:i==="open"?`\\mathopen{${r}}`:i==="close"?`\\mathclose{${r}}`:i==="punct"?`\\mathpunct{${r}}`:i==="inner"?`\\mathinner{${r}}`:r}let t=P(p(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}},{latexTrigger:"\\operatorname{count}",parse:"Length"},{latexTrigger:"\\operatorname{random}",parse:"Random"},{latexTrigger:"\\operatorname{shuffle}",parse:"Shuffle"},{latexTrigger:"\\operatorname{repeat}",parse:"Repeat"},{latexTrigger:"\\operatorname{join}",parse:"Join"},{latexTrigger:"\\operatorname{range}",parse:"Range"},{name:"Triangle",latexTrigger:["\\operatorname{triangle}"],kind:"function",serialize:(e,n)=>"\\operatorname{triangle}"+e.wrapArguments(n)},{name:"GeometricVector",latexTrigger:["\\operatorname{vector}"],kind:"function",serialize:(e,n)=>"\\operatorname{vector}"+e.wrapArguments(n)},{name:"Sphere",latexTrigger:["\\operatorname{sphere}"],kind:"function",serialize:(e,n)=>"\\operatorname{sphere}"+e.wrapArguments(n)},{name:"Segment",latexTrigger:["\\operatorname{segment}"],kind:"function",serialize:(e,n)=>"\\operatorname{segment}"+e.wrapArguments(n)}];var pu=[{name:"Rgb",latexTrigger:["\\operatorname{rgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{rgb}"+e.wrapArguments(n)},{name:"Hsv",latexTrigger:["\\operatorname{hsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsv}"+e.wrapArguments(n)},{name:"Hsl",latexTrigger:["\\operatorname{hsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsl}"+e.wrapArguments(n)},{name:"Oklab",latexTrigger:["\\operatorname{oklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklab}"+e.wrapArguments(n)},{name:"Oklch",latexTrigger:["\\operatorname{oklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklch}"+e.wrapArguments(n)},{name:"AsRgb",latexTrigger:["\\operatorname{asRgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{asRgb}"+e.wrapArguments(n)},{name:"AsHsv",latexTrigger:["\\operatorname{asHsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsv}"+e.wrapArguments(n)},{name:"AsHsl",latexTrigger:["\\operatorname{asHsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsl}"+e.wrapArguments(n)},{name:"AsOklab",latexTrigger:["\\operatorname{asOklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklab}"+e.wrapArguments(n)},{name:"AsOklch",latexTrigger:["\\operatorname{asOklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklch}"+e.wrapArguments(n)},{name:"ColorDelta",latexTrigger:["\\operatorname{colorDelta}"],kind:"function",serialize:(e,n)=>"\\operatorname{colorDelta}"+e.wrapArguments(n)}];var Of=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var Bf=[...Ca,...Pa,...Da,...Ia,...Ba,...xn,...Ha,...Ua,...Za,...Xa,...Ka,...eu,...lu,...fu,...Of,...pu];var Lf="\\u{FE0F}",Vf="\\u{20E3}",qf="\\u{200D}",Jf="\\p{RI}\\p{RI}",zf="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",mu=`(?:\\p{EMod}|${Lf}${Vf}?|${zf})`,Gf="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",du=`(?:${Gf}${mu}*|\\p{Emoji}${mu}+|${Jf})`,hu=`(?:${du})(${qf}${du})*`,O1=new RegExp(`(?:${hu})+`,"u"),gu=new RegExp(`^(?:${hu})+$`,"u");var Cb=new Set([...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"]);var $b=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"].map(e=>[...e]);function yu(e){return e!==void 0&&"value"in e}function yt(e){return e!==void 0&&"operator"in e}function Sn(e,n,t=!0){let i=!t||e.every(s=>s.isCanonical)?e:e.map(s=>s.canonical);if(n){let s=a=>T(a,"Nothing")||a.operator===n||a.operator==="Sequence";if(i.every(a=>!s(a)))return i;let o=[];for(let a of i)T(a,"Nothing")||(g(a)&&(a.operator===n||a.operator==="Sequence")?o.push(...Sn(a.ops,n,t)):o.push(a));return o}if(i.every(s=>!(T(s,"Nothing")||s.operator==="Sequence")))return i;let r=[];for(let s of i)T(s,"Nothing")||(g(s,"Sequence")?r.push(...Sn(s.ops,n,t)):r.push(s));return r}function Yf(e,n){if(e===n)return 0;if(e.length===0)return n.length;if(n.length===0)return e.length;let t=Array.from({length:e.length+1},(r,s)=>s),i=new Array(e.length+1);for(let r=1;r<=n.length;r++){i[0]=r;for(let s=1;s<=e.length;s++){let o=e[s-1]===n[r-1]?0:1;i[s]=Math.min(t[s]+1,i[s-1]+1,t[s-1]+o)}[t,i]=[i,t]}return t[e.length]}function Rr(e,n){let i=null,r=1/0,s=e.length;for(let o of n){if(Math.abs(s-o.length)>7)continue;let a=Yf(e,o);if(a===0)return o;a<=7&&a<r&&(r=a,i=o)}return i}function di(e,n,t){if(n=Sn(n),!e.strict||n.length===t)return n;let i=[...n.slice(0,t)],r=Math.min(t,n.length);for(;r<t;)i.push(e.error("missing")),r+=1;for(;r<n.length;)i.push(e.error("unexpected-argument",n[r].toString())),r+=1;return i}function sn(e,n,t){return n==null?e.error("missing"):t===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||n.type.matches(t)?n:e.typeError(t,n.type,n))}function Pr(e,n,t){if(n.length===t.length&&n.every((r,s)=>r.type.matches(t[s])))return n;let i=[];for(let r=0;r<=t.length-1;r++)i.push(sn(e,n[r],t[r]));for(let r=t.length;r<=n.length-1;r++)i.push(e.error("unexpected-argument",n[r].toString()));return i}function xu(e){let n={},t=np(e.engine),i=ep(e.engine);if(T(e)&&!n[e.symbol]&&!e.symbol.startsWith("_")){if(!t.includes(e.symbol)){let r=Rr(e.symbol,t);r&&(n[e.symbol]=r)}}else if(g(e)&&!n[e.operator]&&!e.operator.startsWith("_")){let r=e.operator;if(!i.includes(r)){let s=Rr(r,i);s&&(n[r]=s)}for(let s of e.ops)n={...n,...xu(s)}}return n}function ep(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);yt(r)&&n.push(i)}t=t.parent}return n}function np(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);yu(r)&&n.push(i)}t=t.parent}return n}function en(e){let n=xu(e);if(Object.keys(n).length===0)return"";if(Object.keys(n).length===1){let[i,r]=Object.entries(n)[0];return`Unknown symbol "${i}". Did you mean "${r}"?`}let t=[];for(let[i,r]of Object.entries(n))t.push(`- "${i}" -> "${r}"?`);return`Unknown symbols found:
6
+ `))}advance(){let n=this.current;return this.current=this.lexer.consumeToken(),n}match(n){return this.current.type===n?(this.advance(),!0):!1}expect(n){return this.current.type!==n&&this.error(`Expected ${n}, got ${this.current.type}`),this.advance()}createNode(n,t={}){return{kind:n,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();if(n||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return n}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let n=this.lexer.saveState(),t=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(n),this.current=t,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(n),this.current=t}catch(i){if(this.lexer.restoreState(n),this.current=t,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let n=this.parseIntersectionType();if(!n)return;let t=[n];for(;this.match("|");){let i=this.parseIntersectionType();i||this.error("Expected type after |"),t.push(i)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let n=this.parsePrimaryType();if(!n)return;let t=[n];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),t.push(i)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let n=this.parsePrimaryType();return n||this.error("Expected type after !"),this.createNode("negation",{type:n})}if(this.current.type==="("){let n=this.parseFunctionSignature();if(n)return n;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let n=this.lexer.saveState(),t=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(n),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let n=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),n.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(o=>o.modifier==="optional"),r=n.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=n.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:n,returnType:t})}parseArgument(){let n=this.parseNamedElement();if(!n)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:n,modifier:t})}parseNamedElement(){let n;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){n=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:n,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let n=this.current,i=this.lexer.peekToken().type==="<";switch(n.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let n=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}return this.createNode("list",{elementType:n,dimensions:t})}parseVectorType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(n=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:n,size:t})}parseMatrixType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:n,dimensions:t})}parseTensorType(){let n=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("tensor",{elementType:n})}parseDimensions(){let n=this.parseDimension();if(!n)return;let t=[n];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),t.push(this.parseDimension())}else break}return t}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let n=parseInt(this.advance().value);return this.createNode("dimension",{size:n})}}parseCaretDimensions(){let n=this.match("("),t=this.parseDimensions();return n&&this.expect(")"),t}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),t.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let n=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),n.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:n})}}parseRecordEntry(){let n;if(this.current.type==="IDENTIFIER")n=this.advance().value;else if(this.current.type==="VERBATIM_STRING")n=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:n,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("dictionary",{valueType:n})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("set",{elementType:n})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value==="indexed_collection",t=this.current.value==="collection";if(n||t){this.advance();let i=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:n})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let i=this.parseValue();this.expect("..");let r=this.parseValue();this.expect(">");let s=i?.value??-1/0,o=r?.value??1/0;return(Number.isNaN(s)||Number.isNaN(o))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),s>o&&this.error(`Invalid range: ${s}..${o}`,"The lower bound must be less than the upper bound"),this.createNode("numeric",{baseType:t,lowerBound:i,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value;if(vn.has(n))return this.advance(),this.createNode("primitive",{name:n})}}parseValue(){let n,t;switch(this.current.type){case"STRING_LITERAL":n=this.advance().value,t="string";break;case"NUMBER_LITERAL":n=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),n=!0,t="boolean";break;case"FALSE":this.advance(),n=!1,t="boolean";break;case"NAN":this.advance(),n=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),n=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),n=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:n,valueType:t})}parseTypeReference(){let n=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(n&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,i=this.advance().value;return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:n}):n&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0}):(n||this.errorAtToken(t,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:n}))}}};function da(e,n){switch(e.kind){case"function_signature":return n.visitFunctionSignature(e);case"union":return n.visitUnionType(e);case"intersection":return n.visitIntersectionType(e);case"negation":return n.visitNegationType(e);case"group":return n.visitGroupType(e);case"list":return n.visitListType(e);case"vector":return n.visitVectorType(e);case"matrix":return n.visitMatrixType(e);case"tensor":return n.visitTensorType(e);case"tuple":return n.visitTupleType(e);case"record":return n.visitRecordType(e);case"dictionary":return n.visitDictionaryType(e);case"set":return n.visitSetType(e);case"collection":return n.visitCollectionType(e);case"expression":return n.visitExpressionType(e);case"symbol":return n.visitSymbolType(e);case"numeric":return n.visitNumericType(e);case"primitive":return n.visitPrimitiveType(e);case"type_reference":return n.visitTypeReference(e);case"value":return n.visitValue(e);default:throw new Error(`Unknown node kind: ${e.kind}`)}}var yr=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return da(n,this)}visitFunctionSignature(n){let t=[],i=[],r,s;for(let u of n.arguments){let l=this.buildNamedElement(u.element);switch(u.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,s=0;break;case"variadic_one":r=l,s=1;break;default:t.push(l);break}}let o=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(n){return{kind:"union",types:n.types.map(i=>this.buildType(i))}}visitIntersectionType(n){return{kind:"intersection",types:n.types.map(i=>this.buildType(i))}}visitNegationType(n){return{kind:"negation",type:this.buildType(n.type)}}visitGroupType(n){return this.buildType(n.type)}visitListType(n){let t=this.buildType(n.elementType),i=n.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}visitVectorType(n){let t=this.buildType(n.elementType);return n.size!==void 0?{kind:"list",elements:t,dimensions:[n.size]}:{kind:"list",elements:t}}visitMatrixType(n){let t=this.buildType(n.elementType);if(n.dimensions){let i=n.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(n){return{kind:"list",elements:this.buildType(n.elementType)}}visitTupleType(n){return{kind:"tuple",elements:n.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(n){if(n.entries.length===0)return"record";let t={};for(let i of n.entries)t[i.key]=this.buildType(i.valueType);return{kind:"record",elements:t}}visitDictionaryType(n){let t=this.buildType(n.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(n){let t=this.buildType(n.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(n){let t=this.buildType(n.elementType);return n.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(n){return{kind:"expression",operator:n.operator}}visitSymbolType(n){return{kind:"symbol",name:n.name}}visitNumericType(n){if(!n.lowerBound&&!n.upperBound)return n.baseType;let t=n.lowerBound?this.buildValue(n.lowerBound):-1/0,i=n.upperBound?this.buildValue(n.upperBound):1/0;return t===-1/0&&i===1/0?n.baseType:{kind:"numeric",type:n.baseType,lower:t,upper:i}}visitPrimitiveType(n){return n.name}visitTypeReference(n){let t=this.typeResolver.resolve(n.name);if(t)return t;if(n.isForward){let i=this.typeResolver.forward(n.name);if(i)return i}return n.name}visitValue(n){return{kind:"value",value:n.value}}buildNamedElement(n){let t=this.buildType(n.type);return n.name?{name:n.name,type:t}:{type:t}}buildDimension(n){return n.size??-1}buildValue(n){return n.value}isAnyType(n){return n==="any"||typeof n=="object"&&"kind"in n&&n.kind==="primitive"&&"name"in n&&n.name==="any"}};function ha(e,n){return new yr(n).buildType(e)}var ri=new Map,mf=2048;function ga(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;Object.freeze(e);for(let n of Object.values(e))ga(n);return e}function K(e,n){if(e===void 0)return;if(ni(e))return e;if(typeof e!="string")return;let t=n===void 0;if(t){let i=ri.get(e);if(i!==void 0)return i}try{let r=new ii(e,{typeResolver:n}).parseType(),s=ha(r,n);return t&&(ri.size>=mf&&ri.clear(),ri.set(e,ga(s))),s}catch(i){throw new Error(`Failed to parse type "${e}": ${i instanceof Error?i.message:String(i)}`)}}var ba={number:Xt,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:br,unknown:[],nothing:[],never:[],error:[],value:hr,scalar:Kt,collection:Qt,indexed_collection:dr,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:gr},pt=(()=>{let e={},n=t=>{if(e[t])return e[t];let i=new Set([t]);e[t]=i;for(let r of ba[t])if(r!==t)for(let s of n(r))i.add(s);return i};for(let t of Object.keys(ba))n(t);return e})();function ft(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:pt[n].has(e)}function Ea(e,n){if(e===n)return[e];let t=pt[e],i=pt[n];if(t.has(n))return[n];if(i.has(e))return[e];let r=e<n?`${e}|${n}`:`${n}|${e}`,s=ya.get(r);if(s)return s;let o=[];for(let u of t)i.has(u)&&o.push(u);let a=o.filter(u=>!o.some(l=>l!==u&&pt[l].has(u)));return ya.set(r,a),a}var ya=new Map;function A(e,n){if(typeof e=="string"&&!vn.has(e)&&(e=K(e)),typeof n=="string"&&!vn.has(n)&&(n=K(n)),n==="any"||e==="never")return!0;if(n==="never")return!1;if(n==="error")return e==="error";if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?ft(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?ft("integer",n):ft("real",n):typeof e.value=="boolean"?ft("boolean",n):typeof e.value=="string"?ft("string",n):!1:e.kind==="union"?e.types.every(t=>A(t,n)):e.kind==="intersection"?e.types.some(t=>A(t,n)):e.kind==="negation"?!A(e.type,n):e.kind==="numeric"?!!A(e.type,n):n==="number"?Na(e):n==="symbol"?xr(e):n==="expression"?df(e):n==="function"?Ma(e):n==="scalar"?Ta(e):n==="value"?Sa(e):n==="indexed_collection"?_a(e):n==="collection"?Ia(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="record"?e.kind==="record":n==="dictionary"?e.kind==="dictionary":!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(t=>n.types.some(i=>A(t,i))):n.types.some(t=>A(e,t));if(n.kind==="expression"){if(e==="symbol")return!0;if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?xr(e):e.operator===n.operator;if(e.kind==="symbol")return!0}if(typeof e=="string")return!1;if(n.kind==="reference"){if(e.kind==="reference")return e.name===n.name;if(n.alias===!0&&n.def)return A(e,n.def)}if(e.kind==="union")return e.types.some(t=>A(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>A(i,t)));if(e.kind==="intersection")return e.types.every(t=>A(t,n));if(n.kind==="intersection")return n.types.every(t=>A(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!A(e.result,n.result))return!1;if(e.optArgs||e.variadicArg){if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let t=0;t<n.args.length;t++)if(!A(n.args[t].type,e.args[t].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let t=0;t<e.optArgs.length;t++)if(!A(n.optArgs[t].type,e.optArgs[t].type))return!1}else if(e.optArgs)return!1;if(n.variadicArg){if(!e.variadicArg||e.variadicMin!=n.variadicMin||!A(n.variadicArg.type,e.variadicArg.type))return!1}else if(e.variadicArg)return!1}else{if(n.args&&!e.args)return!1;let t=0;if(n.args){if(e.args.length<n.args.length)return!1;for(;t<n.args.length;){if(!A(n.args[t].type,e.args[t].type))return!1;t+=1}}if(n.optArgs){if(t>=e.args.length)return!0;for(let i=0;i<n.optArgs.length;i++){if(!A(n.optArgs[i].type,e.args[t].type))return!1;if(t+=1,t>=e.args.length)return!0}}if(n.variadicArg){if(t>=e.args.length&&n.variadicMin===0)return!0;if(n.variadicMin>0&&t+n.variadicMin>e.args.length)return!1;for(;t<e.args.length;){if(!A(n.variadicArg.type,e.args[t].type))return!1;t+=1}}}return!0}if(e.kind==="record"&&n.kind==="record"){for(let t of Object.keys(n.elements))if(!(t in e.elements)||!A(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return A(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?A(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>A(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return A(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>A(t.type,n.elements));if(e.kind==="set")return A(e.elements,n.elements);if(e.kind==="dictionary")return A({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return A({kind:"tuple",elements:[{type:"string"},{type:ve(...Object.values(e.elements))}]},n.elements)}if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let t=0;t<e.elements.length;t++){let i=e.elements[t],r=n.elements[t];if(!A(i.type,r.type)||i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!A(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let t=0;t<e.dimensions.length;t++)if(n.dimensions[t]!==-1&&e.dimensions[t]!==n.dimensions[t])return!1}return!0}if(e.kind==="symbol"&&n.kind==="symbol")return e.name===n.name;if(e.kind==="numeric"&&n.kind==="numeric")return!(!A(e.type,n.type)||(e.lower??-1/0)<(n.lower??-1/0)||(e.upper??1/0)>(n.upper??1/0));if(n.kind==="set"&&e.kind==="set")return!!A(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return A(e.type,n.type);if(n.kind==="negation")return!A(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return A("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?A("integer",n):A("real",n);if(typeof e.value=="string")return A("string",n)}return!1}function Na(e){return typeof e=="string"?ei.has(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function Ta(e){return Na(e)?!0:typeof e=="string"?pa.has(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function Ia(e){return _a(e)?!0:typeof e=="string"?fa.has(e):["collection","set","record","dictionary"].includes(e.kind)}function _a(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function Sa(e){return Ta(e)||Ia(e)}function Ma(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function df(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||Sa(e)||Ma(e)||xr(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function xr(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function hf(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||A(e,n)?e:A(n,e)?n:"never"}function gf(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(A(e,n))return n;if(A(n,e))return e;let t=xf(e,n);return bf.has(t)?yf(e,n):t}var bf=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function yf(e,n){let t=[],i=new Set,r=s=>{if(typeof s=="object"&&s.kind==="union"){for(let a of s.types)r(a);return}let o=typeof s=="string"?s:JSON.stringify(s);i.has(o)||(i.add(o),t.push(s))};return r(e),r(n),t.length===1?t[0]:{kind:"union",types:t}}function vr(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>hf(n,t))}function ve(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>gf(n,t))}var xa=["non_finite_number","finite_integer","integer","finite_rational","rational","finite_real","real","imaginary","finite_complex","complex","finite_number","number","list","record","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],va=new Map;function xf(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(typeof e=="string"&&typeof n=="string"){let t=e<n?`${e}|${n}`:`${n}|${e}`,i=va.get(t);if(i===void 0){i="any";for(let r of xa){let s=pt[r];if(s.has(e)&&s.has(n)){i=r;break}}va.set(t,i)}return i}for(let t of xa)if(A(e,t)&&A(n,t))return t;return"any"}var wa=3,Aa=1,Ca=2,vf=4,Ef=5,Nf=6,Tf=7,If=8,_f=9,Sf=10,Mf=11;function j(e,n=0){if(typeof e=="string")return e;let t="";switch(e.kind){case"value":typeof e.value=="string"?t=`"${e.value}"`:typeof e.value=="boolean"?t=e.value?"true":"false":t=e.value.toString();break;case"reference":t=e.name;break;case"negation":t=`!${j(e.type,wa)}`;break;case"union":t=e.types.map(u=>j(u,Aa)).join(" | ");break;case"intersection":t=e.types.map(u=>j(u,Ca)).join(" & ");break;case"expression":t=`expression<${ka(e.operator)}>`;break;case"symbol":t=`symbol<${ka(e.name)}>`;break;case"numeric":Number.isFinite(e.lower)&&Number.isFinite(e.upper)?t=`${e.type}<${e.lower}..${e.upper}>`:Number.isFinite(e.lower)?t=`${e.type}<${e.lower}..>`:Number.isFinite(e.upper)?t=`${e.type}<..${e.upper}>`:t=`${e.type}`;break;case"list":if(e.dimensions&&typeof e.elements=="string"&&ei.has(e.elements)){if(e.dimensions===void 0)e.elements==="number"&&(t="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?t="vector":t=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?t=`vector<${j(e.elements)}>`:t=`vector<${j(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${j(e.elements)}>`:t=`matrix<${j(e.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${j(e.elements)}${u}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([u,l])=>`${u}: ${j(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${j(e.values)}>`;break;case"set":t=`set<${j(e.elements)}>`;break;case"collection":t=`collection<${j(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${j(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[u]=e.elements;t=`tuple<${Dn(u)}>`}else t="tuple<"+e.elements.map(u=>Dn(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>Dn(u)).join(", "):"",s=e.optArgs?e.optArgs.map(u=>Dn(u)+"?").join(", "):"",o=e.variadicArg?e.variadicMin===0?`${Dn(e.variadicArg)}*`:`${Dn(e.variadicArg)}+`:"";t=`(${[r,s,o].filter(u=>u).join(", ")}) -> ${j(e.result)}`;break;default:t="error"}return n>0&&n>kf(e.kind)?`(${t})`:t}function Dn(e){return e.name?`${e.name}: ${j(e.type)}`:j(e.type)}function ka(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function kf(e){switch(e){case"negation":return wa;case"union":return Aa;case"intersection":return Ca;case"list":return vf;case"record":return Ef;case"dictionary":return Nf;case"set":return Tf;case"collection":case"indexed_collection":return If;case"tuple":return _f;case"signature":return Sf;case"value":return Mf;default:return 0}}function Er(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function De(e){if(e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="dictionary"||e==="record")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list"||e.kind==="set")return e.elements;if(e.kind==="tuple")return ve(...e.elements.map(n=>n.type));if(e.kind==="dictionary")return K(`tuple<string, ${j(e.values)}>`);if(e.kind==="record")return K(`tuple<string, ${j(ve(...Object.values(e.elements)))}>`)}}var de=class e{static unknown=new e("unknown");static number=new e("number");static non_finite_number=new e("non_finite_number");static finite_number=new e("finite_number");static finite_integer=new e("finite_integer");static finite_real=new e("finite_real");static string=new e("string");static dictionary=new e("dictionary");static setNumber=new e("set<number>");static setComplex=new e("set<complex>");static setImaginary=new e("set<imaginary>");static setReal=new e("set<real>");static setRational=new e("set<rational>");static setFiniteInteger=new e("set<finite_integer>");static setInteger=new e("set<integer>");type;static widen(...n){return new e(ve(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(vr(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=K(n,t):this.type=n}matches(n){return n instanceof e?A(this.type,n.type):A(this.type,n)}is(n){return A(this.type,n)&&A(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return j(this.type)}toJSON(){return j(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return j(this.type)}};function D(e){return e?._kind==="number"}function I(e,n){return e?._kind==="symbol"&&(n===void 0||e.symbol===n)}function g(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function fe(e){return e?._kind==="string"}function ie(e){return e?._kind==="symbol"?e.symbol:void 0}var wg=Object.freeze({bySubject:new Map,membership:new Map});var Dg=[0,-1,1,Math.PI,Math.E,-Math.PI,-Math.E,.5,-.5];function Ye(e){if(!e)return;if(e.operator==="Function"&&e.isCanonical||I(e))return e;if(g(e,"BuiltinFunction"))return e.op1;if(g(e,"Delimiter")){let s=e.op1;if(g(s,"Sequence"))if(s.nops===1)e=s;else return Ye(e.engine._fn("Block",s.ops,{canonical:!1}));return Ye(g(e)?e.op1:void 0)}if(g(e,"Function"))return $a(e.engine,e.ops);e.operator;let n=e.engine,t=e.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=n.function("Block",[t]):t=t.canonical;let s=t.unknowns;s.length>0&&(r=s.map(o=>n.symbol(o,{canonical:!1})))}return $a(n,[t,...r])}function $a(e,n){if(n.length===0)return;let t=n.slice(1).map(r=>I(r)?r:e.error("expected-a-symbol",r.toString()));e._pushShadowedParameters(t.filter(r=>I(r)).map(r=>r.symbol));let i;try{i=n[0].operator==="Block"?n[0].canonical:e.function("Block",[n[0]])}finally{e._popShadowedParameters()}i.isScoped;for(let r of t)I(r)&&!i.localScope.bindings.has(r.symbol)&&e.declare(r.symbol,{inferred:!0,type:"unknown"},i.localScope);return e._fn("Function",[i,...t])}function Ra(e,n){let t=e.Nothing;for(let i of n){let r=i.operator;if(r==="Return"&&g(i)){t=i.op1.evaluate();break}if((r==="Break"||r==="Continue")&&g(i)){t=e.expr([r,i.op1.evaluate()]);break}t=i.evaluate()}return t}function Pa(e,n){let t=[];for(let i of n){if(!i)continue;let r=e.bindings.get(i);r&&(t.push([i,r]),e.bindings.delete(i))}return t}function Da(e,n){for(let[t,i]of n)e.bindings.set(t,i)}function Fa(e,n,t){if(n.operator==="Function"&&g(n)){let i=n.op1;if(i&&g(i)&&i.localScope){let r=new Set(n.ops.slice(1).map(u=>I(u)?u.symbol:"").filter(u=>u)),s=new Map;for(let[u,l]of i.localScope.bindings)r.has(u)&&s.set(u,l);let o={parent:t,bindings:s},a=e._fn("Block",i.ops,{scope:o});return e._fn("Function",[a,...n.ops.slice(1)])}return n}if(g(n)&&n.ops.length>0){let i=!1,r=n.ops.map(s=>{let o=Fa(e,s,t);return o!==s&&(i=!0),o});if(i)return e._fn(n.operator,r)}return n}function $f(e){let n=e.engine;if(I(e)){let a=e.symbol;return u=>n.function(a,u).evaluate()}let t=Ye(e);if(!t)throw new Error("Invalid function literal");e=t,e.operator,e.isCanonical;let i=e;if(i.ops.length===1)return i.ops[0],()=>i.ops[0].evaluate();let[r,...s]=i.ops;if(r.isScoped,!r.localScope)throw new Error("Function body must be a scoped Block expression");let o=r;return a=>{if(a.length>s.length)throw new Error(`Too many arguments for function "${e.toString()}": expected ${s.length}, got ${a.length}`);if(n.strict&&!a.every(v=>v.isValid))return;if(a.length<s.length){let v=new Set([...r.symbols,...s.map(Z=>I(Z)?Z.symbol:"")]),N=s.slice(a.length).map((Z,ae)=>{let ue=`_${ae+1}`,sn=0;for(;v.has(ue);)ue=`_${ae+1}_${sn++}`;return v.add(ue),n.symbol(ue,{canonical:!1})}),M=Object.fromEntries(s.slice(a.length).map((Z,ae)=>[I(Z)?Z.symbol:"",N[ae]])),$=a.map(Z=>Z.evaluate()),F={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map};for(let Z=0;Z<a.length;Z++){let ae=s[Z],ue=I(ae)?ae.symbol:"";ue&&n.declare(ue,{value:$[Z],inferred:!0},F)}let P=o.localScope,Q=P.parent;P.parent=F;let V=s.slice(0,a.length).map(Z=>I(Z)?Z.symbol:""),q=Pa(P,V);n.pushScope(F);let z;try{z=Ra(n,o.ops)}finally{n.popScope(),P.parent=Q,Da(P,q)}return n.function("Function",[z.subs(M),...N])}let u=a.map(v=>v.evaluate()),c={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map},f=s.map(v=>I(v)?v.symbol:"");for(let v=0;v<s.length;v++)f[v]&&n.declare(f[v],{value:u[v],inferred:!0},c);let p=o.localScope,d=p.parent;p.parent=c;let b=Pa(p,f);n.pushScope(c);let y;try{y=Ra(n,o.ops),y=Fa(n,y,c)}finally{n.popScope(),p.parent=d,Da(p,b)}return y.isValid?y:void 0}}function se(e){return $f(e)??(n=>e.engine.function("Apply",[e,...n]).evaluate())}var Nr=100;function si(e){return(e.isFiniteCollection??!1)&&e.isIndexedCollection}function Rf(e,n,t){if(!(e.isFiniteCollection!==!0||n.isFiniteCollection!==!0)){for(let i of e.each())if(n.contains(i)!==!0)return!1;if(t){let i=e.count;if(i===void 0)return!1;let r=n.count;if(r===void 0||i===r)return!1}return!0}}function Pf(e,n){if(g(e)){for(let t=0;t!==e.nops;t+=1)if(n(e.ops[t]))return t+1}}function oi(){return{isLazy:e=>!1,count:e=>g(e)?e.nops:0,isEmpty:e=>!g(e)||e.nops===0,isFinite:e=>!0,contains:(e,n)=>g(e)?e.ops.some(t=>t.isSame(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.nops;return{next:()=>n===t+1?{value:void 0,done:!0}:(n+=1,{value:e.ops[n-1-1],done:!1})}},subsetOf:Rf,at:(e,n)=>{if(!(typeof n!="number"||!g(e))&&(n<0&&(n=e.nops+n+1),!(n<1||n>e.nops)))return e.ops[n-1]},indexWhere:Pf,eltsgn:e=>{},elttype:e=>!g(e)||e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:ve(...e.ops.map(n=>n.type.type))}}function _(e){let n="",t="";for(let i of e)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=n),/\\[a-zA-Z]+\*?$/.test(i)?n=" ":n=""),t+=i.toString());return t}function mt(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}var B=245,dt=260,We=270,re=275,Ee=390,Se=600;var ht=700,Tr=810;var En=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:B+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:B},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:B},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:B+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:B+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:B,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:B},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:B},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:B},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:B+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:B},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:B},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:B},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{latexTrigger:["\\neq"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:B},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:B+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:B},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:B},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:B},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:B},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:B+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:B+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:B},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:B},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:B},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:B},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:B},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:B},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:B},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:B+5}];function Ir(e){return typeof e!="string"?!1:En.some(n=>n.name===e)}function _r(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function Sr(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}var Fn=["Error","'missing'"];function Nn(e){return!!(typeof e=="number"||On(e)||typeof e=="string"&&ci(e))}function On(e){return e!==null&&typeof e=="object"&&"num"in e}function ai(e){return e!==null&&typeof e=="object"&&"sym"in e}function Ba(e){return e!==null&&typeof e=="object"&&"str"in e}function Va(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function Ln(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function H(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"?null:e.length>=2&&e.at(0)==="'"&&e.at(-1)==="'"?e.substring(1,e.length-1):ci(e)||Ar(e)?null:e}function kr(e){if(e==null||H(e)!==null)return null;let n=E(e);return n?[n,...S(e).map(t=>kr(t)).filter(t=>t!==null)]:e}function E(e){return Array.isArray(e)?e[0]:e==null?"":Ln(e)?e.fn[0]:""}function S(e){return Array.isArray(e)?e.slice(1):e!==void 0&&Ln(e)?e.fn.slice(1):[]}function m(e,n){return Array.isArray(e)?e[n]??null:e===null||!Ln(e)?null:e.fn[n]??null}function ne(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Ln(e)?Math.max(0,e.fn.length-1):0}function wr(e){return e==null?null:E(e)==="Hold"?m(e,1):e}function w(e){return typeof e=="string"&&Ar(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:ai(e)?e.sym:null}function Oa(e){let n=E(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=S(e),r=H(t);return r?[r,i??"Nothing"]:null}return null}function qa(e){if(e===null)return null;if(Va(e))return e;let n=Oa(e);if(n)return{dict:{[n[0]]:La(n[1])??"Nothing"}};if(E(e)==="Dictionary"){let t={};for(let i of S(e)){let r=Oa(i);r&&(t[r[0]]=La(r[1])??"Nothing")}return{dict:t}}return null}function ui(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Mr(i)??"Nothing"]))}}function Lf(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(e))return 1/0;if(/^(-infinity|-oo)$/.test(e))return-1/0;if(/\([0-9]+\)/.test(e)){let[n,t,i,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(e)}function O(e){return typeof e=="number"?e:typeof e=="string"&&ci(e)?Lf(e):e!==void 0&&On(e)?O(e.num):null}function Bn(e){if(e==null)return null;if(w(e)==="Half")return[1,2];let n=E(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=Bn(S(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=S(e);t=O(r)??NaN,i=O(s)??NaN}if(n==="Power"){let[r,s]=S(e),o=O(s);o===1?(t=O(r),i=1):o===-1&&(t=1,i=O(r))}if(n==="Multiply"){let[r,s]=S(e);if(E(s)==="Power"){let[o,a]=S(s);O(a)===-1&&(t=O(r),i=O(o))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function li(e,n){let t=null;if(Array.isArray(e)&&(t=e),Ln(e)&&(t=e.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(n(t[i])),i+=1;return r}function Vn(e,n,t){let i=E(n),r=E(t);return i===e&&r===e?[e,...S(n),...S(t)]:i===e?[e,...S(n),t]:r===e?[e,n,...S(t)]:[e,n,t]}function Tn(e){if(e==null)return null;let n=E(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(n=E(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:S(e)}function W(e){return e==null||e==="Nothing"?!0:E(e)==="Sequence"&&ne(e)===0}function X(e){return W(e)?Fn:e}function ci(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(e)}function Ar(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function Mr(e){if(typeof e=="string")return{str:e};if(typeof e=="number")return{num:e.toString()};if(typeof e=="boolean")return e?"True":"False";if(Array.isArray(e))return["List",...e.map(n=>Mr(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Mr(e[t])??"Nothing";return{dict:n}}return Ln(e)||ai(e)||On(e)||Ba(e)||Va(e)?e:null}function La(e){return e==null?null:Ba(e)?e.str:On(e)?parseFloat(e.num):ai(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}var za=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:235},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:235},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:230},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:230},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:232},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:232},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:232},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\Longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["=",">"],kind:"infix",precedence:220,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:220});return i===null?null:["Implies",n,i]}},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\Longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["<","=",">"],kind:"infix",precedence:219,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:219});return i===null?null:["Equivalent",n,i]}},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:219}),r=e.index,s=e.parseExpression({...t,minPrec:219});return s!==null&&E(s)==="Mod"?["Congruent",n,i,X(m(s,1))]:(e.index=r,["Equivalent",n,X(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:gt("\\forall"),parse:on("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:gt("\\exists"),parse:on("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:gt("\\exists!"),parse:on("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:gt("\\lnot\\forall"),parse:on("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:gt("\\lnot\\exists"),parse:on("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=S(n);return t.length===0?"\\delta":t.every(i=>w(i))?`\\delta_{${t.map(i=>e.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>e.serialize(i)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let i=e.parseToken();return i?["KroneckerDelta",i]:null}let t=Tn(n);return t&&t.length<=2?["KroneckerDelta",...t]:E(n)==="InvisibleOperator"?["KroneckerDelta",...S(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=E(n);return!t||!En.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=E(n);return!t||!En.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=t[0],r=typeof i=="string"?i:e.serialize(i);if(t.length===1)return r;let s=t.slice(1).map(o=>e.serialize(o));return`${r}(${s.join(", ")})`}}];function gt(e){return(n,t)=>{let i=S(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),s=n.serialize(i[1]);return`${e} ${r}, ${s}`}}function Ja(e,n){return e.peek==="\\to"||e.peek==="\\rightarrow"||e.peek==="\\implies"||e.peek==="\\Rightarrow"||e.peek==="\\iff"||e.peek==="\\Leftrightarrow"||e.peek==="\\land"||e.peek==="\\wedge"||e.peek==="\\lor"||e.peek==="\\vee"||(n?.condition?.(e)??!1)}function on(e){return(n,t)=>{let i=n.index,r=n.options.quantifierScope!=="loose",s=n.parseSymbol(t);if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let l=r?{...t,condition:f=>Ja(f,t)}:t;n.enterQuantifierScope();let c=n.parseExpression(l);return n.exitQuantifierScope(),[e,s,X(c)]}n.enterQuantifierScope();let u=n.parseEnclosure();if(n.exitQuantifierScope(),u)return[e,s,X(u)]}n.index=i;let o={...t,condition:u=>u.peek===":"||u.peek==="\\colon"||(t?.condition?.(u)??!1)},a=n.parseExpression(o);if(a===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let u=r?{...t,condition:c=>Ja(c,t)}:t;n.enterQuantifierScope();let l=n.parseExpression(u);return n.exitQuantifierScope(),[e,a,X(l)]}if(n.match("(")){n.enterQuantifierScope();let u=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,a,X(u)]:null}return null}}var Bf={x:"First",y:"Second",z:"Third",real:"Real",re:"Real",imag:"Imaginary",im:"Imaginary",count:"Length",total:"Sum",max:"Max",min:"Min"};function Cr(e){return Bf[e]??null}function Vf(e,n){if(e.skipVisualSpace(),e.match("\\operatorname")){let i=e.parseStringGroup();if(i===null)return null;let r=Cr(i.trim());return r===null?null:[r,n]}let t=e.peek;if(typeof t=="string"&&t.startsWith("\\")){let i=t.slice(1),r=Cr(i);return r!==null?(e.nextToken(),[r,n]):null}if(typeof t=="string"&&/^[a-zA-Z]$/.test(t)){let i=Cr(t);return i===null?null:(e.nextToken(),[i,n])}return null}function Ga(e,n,t){e.addBoundary(t),e.skipVisualSpace();let i=e.parseExpression({minPrec:0});return i===null||(e.skipVisualSpace(),!e.matchBoundary())?(e.removeBoundary(),null):["When",n,i]}function $r(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let s=t?[t]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:i});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r),o||e.skipVisualSpace())}return s}function Oe(e=""){return(n,t)=>{if(!t)return"";let i=S(t);if(i.length===0)return"";if(i.length===1)return n.serialize(i[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=i.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),_(r)}}var Wa=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:We,parse:(e,n,t)=>{let i=[];if(E(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),E(n)==="Sequence")for(let s of S(n)){if(!w(s))return null;i.push(w(s))}else{if(!w(n))return null;i=[w(n)]}let r=e.parseExpression({minPrec:We})??"Nothing";return E(r)==="Delimiter"&&(r=m(r,1)??"Nothing"),E(r)==="Sequence"&&(r=["Block",...S(r)]),["Function",r,...i]},serialize:(e,n)=>{let t=S(n);return t.length<1?"()\\mapsto()":t.length===1?_(["()","\\mapsto",e.serialize(m(n,1))]):t.length===2?_([e.serialize(m(n,2)),"\\mapsto",e.serialize(m(n,1))]):_([e.wrapString(S(n)?.slice(1).map(i=>e.serialize(i)).join(", "),"normal"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=m(n,1),i=E(t);if(i==="InverseFunction"||i==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=S(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),o)}let r=m(n,2);if(typeof t=="string"||!r){let o=S(n).slice(1);return e.serialize(o)}if(ne(n)===2)return _([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return _(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...S(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n,t)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=S(n).slice(1);if(E(t)==="Function"){let r=S(t).slice(1),s=m(t,1);if(E(s)==="Block"&&ne(s)===1&&(s=m(s,1)),r.length>0)return`\\left.\\left(${e.serialize(s)}\\right)\\right|_{${r.map((o,a)=>`${e.serialize(o)}=${e.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${e.serialize(t)}\\right)\\right|_{${i.map(r=>e.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:dt,serialize:(e,n)=>{let t=wr(m(n,1));if(E(m(n,2))==="Function"){let i=m(n,2),r=wr(m(i,1)),s=S(i).slice(1);return _([e.serialize(t),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return _([e.serialize(t),"\\coloneq",e.serialize(m(n,2))])},parse:pi},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:dt,parse:pi},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:dt,parse:pi},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:dt,parse:pi},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:240,serialize:(e,n)=>_([e.serialize(m(n,1)),"\\colon",e.serialize(m(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:240,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=O(m(n,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=O(m(n,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),s=0;if(t===2||t===10?s=4:t===16?s=2:t>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Sequence",serialize:Oe(" ")},{name:"InvisibleOperator",serialize:Oe("")},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=m(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[E(i)],s=r?i:["Sequence",i];if(r??="(,)",ne(n)>1){let c=H(m(n,2));typeof c=="string"&&c.length<=3&&(r=c)}let[o,a,u]=["","",""];r.length===3?[o,a,u]=r:r.length===2?[o,u]=r:r.length===1&&(a=r);let l=i?s?Oe(a)(e,s):e.serialize(i):"";return e.wrapString(l,t,o+u)}},{name:"Tuple",serialize:(e,n)=>_(["(",Oe(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>_(["(",Oe(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>_(["(",Oe(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>_(["(",Oe(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>E(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let t=m(n,1);if(H(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=Jf(e,n)||"\\blacksquare",r=E(t)==="ErrorCode"?H(m(t,1)):H(t);return r==="incompatible-type"?w(m(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(m(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(m(t,3))}\\notin ${e.serialize(m(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=H(m(n,1));return t==="missing"?e.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${ja(H(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":_(li(n,t=>H(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":_(li(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:qf},{kind:"postfix",precedence:850,latexTrigger:["."],parse:Vf},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:Pr("]"),serialize:(e,n)=>_(["\\lbrack",Oe(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:Pr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:Pr("\\right","\\rbrack")},{name:"When",kind:"postfix",precedence:800,latexTrigger:["\\left","\\{"],parse:(e,n)=>Ga(e,n,["\\right","\\}"]),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(!t||!i)return"";let s=(E(i)==="And"?S(i)??[]:[i]).map(o=>`\\left\\{${e.serialize(o)}\\right\\}`).join("");return`${e.serialize(t)}${s}`}},{kind:"postfix",precedence:800,latexTrigger:["\\{"],parse:(e,n)=>Ga(e,n,["\\}"])},{kind:"postfix",latexTrigger:["_"],parse:(e,n,t)=>{let i=e.parseGroup()??e.parseToken();i===null&&e.options.strict===!1&&e.peek==="("&&(i=e.parseEnclosure());let r=w(n);return i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||E(n)==="List")?(E(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),E(i)==="Sequence"?["At",n,...S(i)]:["At",n,i]):["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:Xa,serialize:Gf},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:zf},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=$r(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=$r(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:fi,serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(m(n,1));if(t.length===2)return e.wrap(m(n,1),10)+".."+e.wrap(m(n,2),10);if(t.length===3){let i=O(m(n,3)),r=O(m(n,1));return i!==null&&r!==null?e.wrap(m(n,1),10)+".."+e.wrap(r+i,10)+".."+e.wrap(m(n,2),10):e.wrap(m(n,1),10)+"..("+(e.wrap(m(n,1),re)+"+"+e.wrap(m(n,3),re))+").."+e.wrap(m(n,2),10)}return""}},{latexTrigger:[".",".","."],kind:"infix",precedence:800,parse:fi},{latexTrigger:["\\ldots"],kind:"infix",precedence:800,parse:fi},{latexTrigger:["\\dots"],kind:"infix",precedence:800,parse:fi},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=$r(e,t,n,19,";");return i===null?null:i.some(r=>E(r)==="Assign")?jf(i):["Delimiter",["Sequence",...i],"';'"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>{let i=e.index;return Ne(e,"where")?Ya(e,n,t):(e.index=i,null)}},{symbolTrigger:"where",kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>Ya(e,n,t)},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:235,parse:(e,n,t)=>{let i=e.index;if(!Ne(e,"and"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:235});return["And",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:230,parse:(e,n,t)=>{let i=e.index;if(!Ne(e,"or"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:230});return["Or",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!Ne(e,"iff"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!Ne(e,"if and only if"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:21,parse:(e,n,t)=>{let i=e.index;if(!Ne(e,"such that"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:21});return["Colon",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return Ne(e,"for all")?on("ForAll")(e,n):(e.index=t,null)}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return Ne(e,"there exists")?on("Exists")(e,n):(e.index=t,null)}},{name:"Block",serialize:(e,n)=>{let t=S(n);return!t||t.length===0?"":t.filter(r=>E(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=S(n);return!t||t.length<3?"":_(["\\text{if }",e.serialize(t[0]),"\\text{ then }",e.serialize(t[1]),"\\text{ else }",e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=S(n);if(!t||t.length<2)return"";let i=t[0],r=t.slice(1);if(!r.every(a=>E(a)==="Element"))return _(["\\operatorname{Loop}(",e.serialize(i),", ",e.serialize(r[0]),")"]);if(r.length===1){let a=r[0],u=m(a,1),l=m(a,2);if(E(l)==="Range"){let c=m(l,1),f=m(l,2);return _(["\\text{for }",e.serialize(u),"\\text{ from }",e.serialize(c),"\\text{ to }",e.serialize(f),"\\text{ do }",e.serialize(i)])}return _([e.serialize(i)," \\operatorname{for} ",e.serialize(u)," = ",e.serialize(l)])}let o=r.map(a=>{let u=m(a,1),l=m(a,2);return _([e.serialize(u)," = ",e.serialize(l)])}).join(", ");return _([e.serialize(i)," \\operatorname{for} ",o])}},{name:"Break",serialize:()=>"\\text{break}"},{name:"Continue",serialize:()=>"\\text{continue}"},{name:"Return",serialize:(e,n)=>{let t=m(n,1);return!t||w(t)==="Nothing"?"\\text{return}":_(["\\text{return }",e.serialize(t)])}},{symbolTrigger:"if",kind:"prefix",precedence:245,parse:(e,n)=>Ua(e,n)},{symbolTrigger:"for",kind:"prefix",precedence:245,parse:(e,n)=>Za(e,n)},{symbolTrigger:"for",kind:"infix",associativity:"none",precedence:19,parse:(e,n,t)=>Qa(e,n,t)},{symbolTrigger:"break",kind:"prefix",precedence:245,parse:()=>["Break"]},{symbolTrigger:"continue",kind:"prefix",precedence:245,parse:()=>["Continue"]},{symbolTrigger:"return",kind:"prefix",precedence:245,parse:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{name:"Text",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)H(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return _(t.map(a=>e.serialize(a)));let s=[];for(let a=0;a<i;a++)s.push(e.serialize(t[a]));let o="";for(let a=i;a<=r;a++){let u=H(t[a]);u!==null?o+=ja(u):E(t[a])==="Annotated"||E(t[a])==="Text"?o+=e.serialize(t[a]):o+="$"+e.serialize(t[a])+"$"}s.push("\\text{"+o+"}");for(let a=r+1;a<t.length;a++)s.push(e.serialize(t[a]));return _(s)}},{name:"String",latexTrigger:["\\text"],parse:(e,n)=>{let t=e.index;return Ne(e,"if")?Ua(e,n):(e.index=t,Ne(e,"for")?Za(e,n):(e.index=t,Ne(e,"break")?["Break"]:(e.index=t,Ne(e,"continue")?["Continue"]:(e.index=t,Ne(e,"return")?["Return",e.parseExpression(n)??"Nothing"]:(e.index=t,Fe(e))))))},serialize:(e,n)=>{let t=S(n);return t.length===0?"\\text{}":_(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>ne(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix",parse:(e,n)=>e.options.strict===!1&&/^[0-9]$/.test(e.peek)?null:["Superminus",n]},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>Xe(e,n,1),serialize:(e,n)=>{let t=O(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Xe(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Xe(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Xe(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Xe(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=w(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return e.matchBoundary()?e.match("<}>")?["Derivative",n,r]:null:(e.removeBoundary(),null)}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(E(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=w(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new de("matrix")))return e.match("<}>"),["Inverse",n];if(!i.matches("function"))return null;let r=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))r++;else if(e.match("\\prime"))r++;else if(e.match("\\doubleprime"))r+=2;else if(e.match("\\tripleprime"))r+=3;else return null;return r===1?["Derivative",["InverseFunction",n]]:r>0?["Derivative",["InverseFunction",n],r]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=O(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+e.serialize(m(n,2))+")}"}},{name:"D",serialize:(e,n)=>{if(E(n)!=="D")return"D";let t=m(n,1),i=m(n,2);if(!t||!i)return"D";let r=1,s=t;for(;E(s)==="D";){let l=m(s,2);if(w(l)===w(i))r++,s=m(s,1);else break}let o=s;E(s)==="Function"&&(o=m(s,1)??s);let a=e.serialize(o),u=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${u}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${u}^{${r}}}${a}`}},{name:"NewtonDerivative1",latexTrigger:["\\dot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",n,t]}},{name:"NewtonDerivative2",latexTrigger:["\\ddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",n,t],t]}},{name:"NewtonDerivative3",latexTrigger:["\\dddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",n,t],t],t]}},{name:"NewtonDerivative4",latexTrigger:["\\ddddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",["D",n,t],t],t],t]}},{name:"EulerDerivative",latexTrigger:["D"],kind:"expression",parse:e=>{let n=1,t=null,i=!1;for(;!i;)if(e.match("_")){if(t=e.parseGroup()??e.parseToken(),!t)return null}else if(e.match("^")){let o=e.parseGroup()??e.parseToken();n=O(o)??1}else i=!0;if(!t||w(t)===null)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let s=r;for(let o=0;o<n;o++)s=["D",s,t];return s}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:Rr,serialize:(e,n)=>{let t=[],i=S(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let s=[];s.push(e.serialize(i[r+1])),s.push(e.serialize(i[r])),t.push(s.join("&"))}return _(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:Rr},{kind:"environment",symbolTrigger:"rcases",parse:Rr}];function Fe(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,s=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,ui(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")s(),t.push(Fe(e));else if(e.match("\\textbf"))s(),t.push(Fe(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))s(),t.push(Fe(e,{fontStyle:"normal"}));else if(e.match("\\textup"))s(),t.push(Fe(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))s(),t.push(Fe(e,{fontStyle:"italic"}));else if(e.match("\\textit"))s(),t.push(Fe(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))s(),t.push(Fe(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))s(),t.push(Fe(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,u=e.parseStringGroup();if(u!==null){s();let l=Fe(e);t.push(["Annotated",l,ui({color:u})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(s(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(s(),t.push(u)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(s(),t.push(u)):(i+="$$",e.index=a)}else{let a=e.parseChar()??e.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}s();let o;return t.length===1?o=t[0]:t.every(a=>H(a)!==null)?o="'"+t.map(a=>H(a)).join("")+"'":o=["Text",...t],n?["Annotated",o,ui(n)]:o}function qf(e,n){return n===null?"":_(li(n,t=>{let i=H(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function ja(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function Jf(e,n){let t=m(n,2);return t?E(t)==="LatexString"?H(m(t,1))??"":E(t)==="Hold"?e.serialize(m(t,1)):e.serialize(t):""}function Xe(e,n,t){for(;!e.atEnd;)if(e.match("'")||e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else break;let i=E(n);if(i==="Derivative"||i==="Prime"){let a=O(m(n,2))??1;return[i,X(m(n,1)),a+t]}let r=w(n),s=r&&e.getSymbolType(r).matches("function")||E(n);e.skipSpace();let o=e.parseArguments("enclosure");if(o&&o.length>0){let a=o[0],u=w(a)??"x",c=typeof n=="string"?[n,...o]:["Apply",n,...o];for(let f=0;f<t;f++)c=["D",c,u];return c}return s?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",X(n)]:["Prime",X(n),t]}function zf(e,n){if(W(n))return["Delimiter"];let t=E(n);if(t==="Delimiter"&&m(n,2)!==null){let i=H(m(n,2));if(i?.length===1)return["Delimiter",m(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(H(m(n,2))??"..")===".."?["Matrix",m(n,1)]:["Delimiter",n]}function Xa(e,n){if(W(n))return["List"];let t=E(n);if(t==="Range"||t==="Linspace")return n;if(t==="Sequence"){let i=S(n),r=Ha(i,e);return r||["List",...i]}if(t==="Delimiter"){let i=H(m(n,2))??"...";if(i===";"||i===".;.")return["List",...(S(m(n,1))??[]).map(r=>Xa(e,r))];if(i===","||i===".,."){if(n=m(n,1),E(n)==="Sequence"){let r=S(n),s=Ha(r,e);return s||["List",...r]}return["List",n??"Nothing"]}}return["List",n]}function Ha(e,n){if(e.length<4)return null;let t=e[e.length-2];if(w(t)!=="ContinuationPlaceholder")return null;let i=e.slice(0,-2),r=e[e.length-1];if(i.length<2)return null;let s=i.map(O);if(s.some(l=>l===null))return null;let o=s,a=o[o.length-1]-o[o.length-2],u=n.options.tolerance;if(Math.abs(a)<u)return n.error("degenerate-range-step",n.index);for(let l=1;l<o.length;l++)if(Math.abs(o[l]-o[l-1]-a)>u)return n.error("inconsistent-range-samples",n.index);return["Range",o[0],r,a]}function Gf(e,n){return ne(n)>1&&S(n).every(t=>{let i=E(t);return Sr(i)||_r(i)})?_(["\\begin{cases}",Oe("\\\\")(e,n),"\\end{cases}"]):_(["\\bigl\\lbrack",Oe(", ")(e,n),"\\bigr\\rbrack"])}function fi(e,n){if(n===null)return null;let t=e.parseExpression({minPrec:270});if(t===null)return null;if(E(t)==="Range"){let i=m(t,1),r=m(t,2);return i&&r?["Range",n,r,["Subtract",i,n]]:null}return["Range",n,t]}var mi={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function pi(e,n,t){let i=(t?.minPrec??0)>=19,r=w(n);if(r&&r.includes("_")){let a=r.indexOf("_"),u=r.substring(0,a),l=r.substring(a+1),c=parseInt(l,10),f=!isNaN(c)&&String(c)===l?c:l,p=f!==""&&(typeof f=="number"||typeof f=="string"&&f.length===1);(e.getSymbolType(u).matches("indexed_collection")||!i&&p)&&(n=["Subscript",u,f])}if(E(n)==="InvisibleOperator"&&ne(n)===2&&E(m(n,2))==="Delimiter"){let a=w(m(n,1));if(!a)return null;let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=m(m(n,2),1),c=[];return E(l)==="Sequence"?c=[...S(l)]:l&&(c=[l]),["Assign",a,["Function",u,...c??[]]]}if(E(n)==="Subscript"&&w(m(n,1))){let a=w(m(n,1));if(!e.getSymbolType(a).matches("indexed_collection")){let c=m(n,2),f=(c!==null&&typeof c=="string"?c:void 0)??(c!==null&&typeof c=="number"?String(c):void 0);if(f&&i){let p=e.parseExpression({...t??{},minPrec:20});return p===null?null:["Assign",a+"_"+f,p]}}let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=m(n,2);return H(l)!==null?["Assign",n,u]:w(l)?["Assign",n,u]:["Assign",n,u]}let s=E(n);if(s){let a=S(n),u=e.parseExpression({...t??{},minPrec:20});return u===null?null:["Assign",s,["Function",u,...a]]}if(!w(n))return null;let o=e.parseExpression({...t??{},minPrec:20});return o===null?null:["Assign",n,o]}function Rr(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=E(i[0]);return _r(r)||Sr(r)}))return["List",...n.map(i=>i[0])];let t=[];for(let i of n)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=H(i[1]);t.push(r?"True":kr(i[1])??"True"),t.push(i[0])}return["Which",...t]}function Ne(e,n){let t=e.index;if(!e.match("<{>"))return e.index=t,!1;for(;e.match("<space>"););for(let i=0;i<n.length;i++)if(n[i]===" "){if(!e.match("<space>"))return e.index=t,!1;for(;e.match("<space>"););}else{if(e.peek!==n[i])return e.index=t,!1;e.nextToken()}for(;e.match("<space>"););return e.match("<}>")?!0:(e.index=t,!1)}function In(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("\\text")){if(Ne(e,n))return!0;e.index=t}let i=e.index,r=e.parseSymbol();return r!==null&&w(r)===n?!0:(e.index=i,!1)}function _n(e,n){let t=e.index,i=In(e,n);return e.index=t,i}function Ua(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:s=>_n(s,"then")});if(t===null||!In(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:s=>_n(s,"else")});if(i===null||!In(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function Za(e,n){let t=e.parseExpression({minPrec:0,condition:a=>_n(a,"from")}),i=t?w(t):null;if(!i||!In(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>_n(a,"to")});if(r===null||!In(e,"to"))return null;let s=e.parseExpression({minPrec:0,condition:a=>_n(a,"do")});return s===null||!In(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,s]]]}function Qa(e,n,t){let i={minPrec:21,condition:s=>{if(t?.condition?.(s))return!0;let o=s.index;s.skipVisualSpace();let a=s.peek===",";return s.index=o,!!(a||_n(s,"where")||_n(s,"with"))}},r=[];do{e.skipVisualSpace();let s=e.parseExpression(i);if(s===null)break;let o=E(s);if(o!=="Equal"&&o!=="Assign")return null;let a=m(s,1),u=m(s,2);if(!a||!u)return null;r.push(["Element",a,u]),e.skipVisualSpace()}while(e.match(","));return r.length===0?null:["Loop",n,...r]}function Ya(e,n,t){let i={minPrec:21,condition:a=>{if(t?.condition?.(a))return!0;let u=a.index;a.skipVisualSpace();let l=a.peek===",";return a.index=u,l}},r=[];do{e.skipVisualSpace();let a=e.parseExpression(i);if(!a)break;r.push(a),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let s=e.index;if(In(e,"for")){let a=Qa(e,n,t);if(a){let u=[];for(let l of r){let c=Dr(l);E(c)==="Assign"&&u.push(["Declare",m(c,1)]),u.push(c)}return u.push(a),["Block",...u]}e.index=s}let o=[];for(let a of r){let u=Dr(a);E(u)==="Assign"&&o.push(["Declare",m(u,1)]),o.push(u)}return o.push(n),["Block",...o]}function jf(e){let n=[];for(let t of e){let i=Dr(t);E(i)==="Assign"&&n.push(["Declare",m(i,1)]),n.push(i)}return["Block",...n]}function Dr(e){if(E(e)!=="Assign")return e;let n=m(e,1);if(E(n)!=="Subscript")return e;let t=w(m(n,1));if(!t)return e;let i=m(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,m(e,2)??"Nothing"]:e}function Pr(...e){return(n,t)=>{if(!w(t)&&E(t)!=="List")return null;let i=null;return e.length===0&&(i=n.parseGroup()),i??=n.parseExpression({minPrec:0}),i===null||e.length>0&&!n.matchAll(e)||H(i)!==null?null:(E(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),E(i)==="Sequence"?["At",t,...S(i)]:["At",t,i])}}var bt=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Ka=[...bt.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...bt.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var eu=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["-",">"],kind:"infix",precedence:270,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:270});return i===null?null:["To",n,i]}}];function Le(e,n,t){if(W(e))return null;let i,r=E(e);if(r==="Delimiter"){let l=H(m(e,2));if(l!==","&&l!=="(,)"&&l!=="[,]")return null;let c=m(e,1);E(c)==="Sequence"?i=[...S(c)]:i=c?[c]:[]}else if(r==="Sequence")i=[...S(e)];else return null;if(i.length!==2)return null;let[s,o]=i;return["Interval",n?["Open",s]:s,t?["Open",o]:o]}var nu=new Set(["Less","LessEqual","Greater","GreaterEqual","Equal","NotEqual","And","Or","Not"]),iu=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"UpperHalfPlane",latexTrigger:"\\mathbb{C}^+"},{latexTrigger:"\\mathbb{C}^{+}",parse:"UpperHalfPlane"},{latexTrigger:"\\C^+",parse:"UpperHalfPlane"},{latexTrigger:"\\C^{+}",parse:"UpperHalfPlane"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix",serialize:(e,n)=>_([e.serialize(m(n,1)),"^\\complement"])},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:tu},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>Le(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>Le(n,!0,!0)},{name:"Multiple",serialize:tu},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Divides",latexTrigger:["\\mid"],kind:"infix",precedence:160},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>{if(W(n))return"EmptySet";E(n)=="Delimiter"&&H(m(n,2))===","&&(n=m(n,1));let t=E(n);if(t==="Divides"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null)return["Set",i,["Condition",r]]}if(t==="Colon"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null){let s=E(i);return s!==null&&nu.has(s)?["Which",i,r]:["Set",i,["Condition",r]]}}if(t==="Sequence"){let i=S(n),r=i.filter(o=>E(o)==="Colon");if(r.length>0&&r.every(o=>{let a=m(o,1),u=a!==null?E(a):null;return u!==null&&nu.has(u)})){let o=[];for(let a=0;a<i.length;a++){let u=i[a];if(E(u)==="Colon"){let l=m(u,1),c=m(u,2);if(l===null||c===null)return["Set",...i];o.push(l,c)}else{if(a!==i.length-1)return["Set",...i];o.push("True",u)}}return["Which",...o]}return["Set",...i]}return["Set",n]},serialize:(e,n)=>{if(ne(n)===2&&E(m(n,2))==="Condition"){let t=m(n,2);return _(["\\lbrace",e.serialize(m(n,1)),"\\mid",e.serialize(m(t,1)),"\\rbrace"])}return _(["\\lbrace",S(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])}},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:B},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function tu(e,n){if(n===null)return"";let t=E(n);if(!t)return"";if(t==="Range")return _(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=m(n,1),s=m(n,2),o=!1,a=!1;return E(r)==="Open"&&(r=m(r,1),o=!0),E(s)==="Open"&&(s=m(s,1),a=!0),_([o?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(s),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function Sn(e,n,t){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let i=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return _(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function di(e,n){if(n==="none")return e;if(n==="0...360"){let t=e%360;return(t<0?t+360:t)||0}if(n==="-180...180"){let t=e%360;return t>180&&(t-=360),t<-180&&(t+=360),t||0}return e}function Hf(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,s=Math.floor(r),o=(r-s)*60,a=Math.round(o*1e3)/1e3,u=s,l=i;return a>=60&&(a=0,u++),u>=60&&(u=0,l++),{deg:n*l||0,min:n*u||0,sec:a===0?0:n*a}}function hi(e){let{deg:n,min:t,sec:i}=Hf(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let s=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(s))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function Uf(e){if(E(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of S(e))if(E(i)==="Power"){let r=m(i,1),s=m(i,2);if(E(s)==="Negate"){let o=m(s,1);r&&o&&t.push(["Power",r,o])}else{let o=O(s)??NaN;o===-1?r&&t.push(r):o<0?r&&t.push(["Power",r,-o]):n.push(i)}}else if(E(i)==="Rational"&&ne(i)===2||E(i)==="Divide"){let r=m(i,1),s=m(i,2);O(r)!==1&&n.push(r),O(s)!==1&&t.push(s)}else{let r=Bn(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function Zf(e){let n=e.parseOptionalGroup(),t=e.parseGroup()??e.parseToken();return W(t)?n!==null?["Root",Fn,X(n)]:["Sqrt",Fn]:n!==null?["Root",t,n]:["Sqrt",t]}function Yf(e){if(typeof e=="number")return-e;if(typeof e=="string")return e.startsWith("-")?e.slice(1):e.startsWith("+")?"-"+e.slice(1):"-"+e;let n=e.num;return n.startsWith("-")?{num:n.slice(1)}:n.startsWith("+")?{num:"-"+n.slice(1)}:{num:"-"+n}}function xt(e,n,t,i){return t==null?"\\sqrt{}":(i=i??2,n==="solidus"?e.wrapShort(t)+"^{1/"+e.serialize(i)+"}":n==="quotient"?e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(i)+"}}":O(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}function Wf(e,n){e.level-=1;let t=E(n),i="",r=m(n,1);if(t==="Negate")i="-"+e.wrap(r,re+1);else if(t==="Subtract"){i=e.wrap(r,re);let s=m(n,2);if(s!==null){let o=e.wrap(s,re);o[0]==="-"?i+="+"+o.slice(1):o[0]==="+"?i+="-"+o.slice(1):i=i+"-"+o}}else if(t==="Add"){if(e.options.prettify&&ne(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[m(n,1),m(n,2)],[l,c]=[a,u],f=O(l),p=Bn(c);if((f===null||p===null)&&([l,c]=[u,a],f=O(l),p=Bn(c)),f!==null&&p!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(p[0])&&isFinite(p[1])&&p[0]>0&&p[0]<=100&&p[1]<=100)return i=Sn(e.options.invisiblePlus,e.serialize(l),e.serialize(c)),e.level+=1,i}if(e.options.prettify&&ne(n)===2){let[a,u]=vt(r),[l,c]=vt(m(n,2));if(u<0&&c>0)return i=e.wrap(l,re)+"-"+e.wrap(a,re),e.level+=1,i}i=e.serialize(r);let s=ne(n)+1,o=S(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[u,l]=vt(r),c=e.wrap(u,re);l>0?c.startsWith("+")||c.startsWith("-")?i+=c:i+="+"+c:c.startsWith("+")?i+="-"+c.slice(1):c.startsWith("-")?i+="+"+c.slice(1):i+="-"+c}else{let u=e.wrap(r,re);u[0]==="-"||u[0]==="+"?i+=u:i+="+"+u}}return e.level+=1,i}function cu(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[u,l]=Uf(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?t="1":u.length===1?t=e.serialize(u[0]):t=cu(e,["Multiply",...u]):t=e.serialize(["Divide",u.length===1?u[0]:["Multiply",...u],l.length===1?l[0]:["Multiply",...l]]))}if(t)return e.level+=1,t;let i=!1,r=null,s=ne(n)+1,o=S(n);e.options.prettify===!0&&o.length===2&&Nn(o[1])&&!Nn(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let u=1;u<s;u++){if(r=o[u-1],r===null)continue;let l;if(Nn(r)){l=e.serialize(r),l==="-1"&&!t?(t="",i=!i):(l[0]==="-"&&(l=l.slice(1),i=!i),t?t=Sn(e.options.multiply,t,l):t=l),a=!0;continue}if(E(r)==="Power"){let c=Bn(m(r,2));if(c!=null){let[f,p]=c;if(f===1&&p!==null){t+=xt(e,e.rootStyle(r,e.level),m(r,1),p),a=!1;continue}}}if(E(r)==="Power"&&!isNaN(O(m(r,1))??NaN)){l=e.serialize(r),t?t=Sn(e.options.multiply,t,l):t=l,a=!0;continue}if(E(r)==="Negate"&&(r=m(r,1),i=!i),l=e.wrap(r,Ee),!t)t=l;else{let c=E(r);a&&(c==="Divide"||c==="Rational")?t=Sn(e.options.multiply,t,l):/^\d/.test(l)?t=Sn(e.options.multiply,t,l):e.options.invisibleMultiply?t=Sn(e.options.invisibleMultiply,t,l):t=_([t,l])}a=!1}return e.level+=1,i?"-"+t:t}function gi(e){let n=e.parseGroup(),t=null;if(n===null?(n=e.parseToken(),t=e.parseToken()):t=e.parseGroup(),n=X(n),t=X(t),E(n)==="PartialDerivative"&&(E(t)==="PartialDerivative"||E(t)==="Multiply"&&E(m(t,1))==="PartialDerivative")){let s=m(n,3)??null,o=m(n,1);o==null&&(o=X(e.parseExpression()));let a=[];if(E(t)==="Multiply"){for(let u of S(t))if(E(u)==="PartialDerivative"){let l=m(u,2);l&&a.push(l)}}else{let u=m(t,2);u&&a.push(u)}return a.length>1&&(a=["List",...a]),["PartialDerivative",o,...a,s===null?1:s]}let i=w(n);if(i==="d"||i==="d_upright"||i==="differentialD"){let s=[],o=a=>{if(!a)return;let u=w(a);if(u&&u!=="d"&&u!=="d_upright"&&u!=="differentialD"){s.push(a);return}let l=E(a);if(l==="Sequence"||l==="Multiply"||l==="InvisibleOperator")for(let c of S(a))o(c)};if(o(t),s.length===0){let a=w(t);a&&a.length>1&&a[0]==="d"&&s.push(a.slice(1))}if(s.length>0)return["D",X(e.parseExpression()),...s]}return["Divide",n,t]}function ru(e,n){if(n===null)return"";let t=X(m(n,1)),i=X(m(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(t),l=e.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return O(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return O(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(t),a=e.serialize(i);return`${s}{${o}}{${a}}`}function Fr(e,n){if(!n)return"";let t=E(n),i=X(m(n,1));if(t==="Sqrt")return xt(e,e.rootStyle(n,e.level-1),i,2);let r=X(m(n,2));if(t==="Root")return xt(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let o=O(r)??1;if(o===-1)return e.serialize(["Divide","1",i]);if(o<0)return e.serialize(["Divide","1",["Power",i,-o]]);if(E(r)==="Divide"||E(r)==="Rational"){let a=O(m(r,1)),u=O(m(r,2));if(a===1){let l=e.rootStyle(n,e.level);return xt(e,l,i,m(r,2))}if(a===-1)return u===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,m(r,2)??Fn]]);if(u===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(m(r,1))}}`}else if(E(r)==="Power"&&O(m(r,2))===-1){let a=e.rootStyle(n,e.level);return xt(e,a,i,m(r,1))}}return mt("^",(o=>o.startsWith("-")?e.wrapString(o,"normal"):o)(e.wrapShort(i)),e.serialize(r))}function yt(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,s=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=O(i),e.skipSpace();let u=e.index,l=e.parseNumber();l!==null&&(e.match('"')||e.match("\\doubleprime"))?s=O(l):e.index=u}else return e.index=t,["Degrees",n];let o=O(n);if(o!==null&&r!==null){let u=o+r/60;return s!==null&&(u+=s/3600),["Degrees",u]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),s!==null&&a.push(["Quantity",s,"arcsec"]),["Add",...a]}var fu=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>yt(e,n),serialize:(e,n)=>{let t=e.options,i=m(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=O(i);if(r!==null){let s=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(s=di(s,t.angleNormalization)),t.dmsFormat?hi(s):`${s}\xB0`}}return _([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>yt(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>yt(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>yt(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>yt(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=O(m(n,1)),i=O(m(n,2)),r=O(m(n,3));if(t!==null){let o=i??0,a=r??0,u=`${t}\xB0`;return(o!==0||a!==0)&&(u+=`${o}'`),a!==0&&(u+=`${a}"`),u}let s=[];for(let o of[1,2,3]){let a=m(n,o);a!==null&&s.push(e.serialize(a))}return`\\operatorname{DMS}(${s.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{latexTrigger:"\\exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>W(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>W(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:re,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:re});if(i===null)return null;if(E(i)==="Negate"){let r=m(i,1);if(Nn(r))return Vn("Add",n,Yf(r))}return Vn("Add",n,i)},serialize:Wf},{kind:"prefix",latexTrigger:["+"],precedence:re,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>W(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>W(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:re-1,serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=O(m(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":_([e.serialize(m(n,2)),"\\imaginaryI"]);return O(m(n,1))===0?r:i!==null&&i<0?_([t,r]):_([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Se,parse:gi,serialize:ru},{latexTrigger:"\\dfrac",precedence:Se,parse:gi},{latexTrigger:"\\tfrac",precedence:Se,parse:gi},{latexTrigger:"\\cfrac",precedence:Se,parse:gi},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Se,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Se,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Se,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Se,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=m(n,1);return w(t)||O(t)!==null?_(["\\exponentialE^{",e.serialize(t),"}"]):_(["\\exp",e.wrap(X(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:Tr},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:Tr},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>W(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>W(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{latexTrigger:["\\zeta"],kind:"function",parse:"Zeta"},{latexTrigger:["\\Beta"],kind:"function",parse:"Beta"},{name:"LambertW",latexTrigger:["\\operatorname{W}"],kind:"function",serialize:(e,n)=>"\\operatorname{W}"+e.wrapArguments(n)},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{J}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselJ",i]):"\\operatorname{J}"+e.wrapArguments(n)}},{name:"BesselY",latexTrigger:["\\operatorname{Y}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{Y}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselY",i]):"\\operatorname{Y}"+e.wrapArguments(n)}},{name:"BesselI",latexTrigger:["\\operatorname{I}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{I}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselI",i]):"\\operatorname{I}"+e.wrapArguments(n)}},{name:"BesselK",latexTrigger:["\\operatorname{K}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"AiryAi",latexTrigger:["\\operatorname{Ai}"],kind:"function",serialize:(e,n)=>"\\operatorname{Ai}"+e.wrapArguments(n)},{name:"AiryBi",latexTrigger:["\\operatorname{Bi}"],kind:"function",serialize:(e,n)=>"\\operatorname{Bi}"+e.wrapArguments(n)},{name:"GCD",latexTrigger:["\\gcd"],kind:"function"},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>lu("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>lu("Log",e),serialize:(e,n)=>{let[t,i]=S(n);return i?_(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",latexTrigger:["\\lcm"],kind:"function"},{symbolTrigger:"lcm",kind:"function",parse:"LCM"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max",arguments:"implicit"},{symbolTrigger:"min",kind:"function",parse:"Min",arguments:"implicit"},{name:"Max",latexTrigger:"\\max",kind:"function",arguments:"implicit"},{name:"Min",latexTrigger:"\\min",kind:"function",arguments:"implicit"},{name:"Supremum",latexTrigger:"\\sup",kind:"function",arguments:"implicit"},{name:"Infimum",latexTrigger:"\\inf",kind:"function",arguments:"implicit"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(E(n)!=="To")return null;let t=e.parseExpression({minPrec:Ee});return t?["Limit",["Function",t,m(n,1)],m(n,2)]:null},serialize:(e,n)=>{let t=m(n,1),i=m(t,2),r=m(n,2);return _(["\\lim_{",e.serialize(i),"\\to",e.serialize(r),"}",e.serialize(m(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:We},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:Ee,serialize:cu},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:Ee,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:Ee+2});return i===null?null:Vn("Multiply",n,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:Ee,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:Ee+2});return i===null?["Multiply",n,Fn]:Vn("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Se,serialize:(e,n)=>{if(ne(n)!==2)return"";let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return _([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:Se,parse:"Mod"},{latexTrigger:"\\operatorname{mod}",parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:B,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",X(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));if(m(n,3)===null)return _([t,"\\equiv",i]);let r=e.serialize(m(n,3));return _([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:ht+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:ht+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>W(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>W(n)?null:["Norm",n],serialize:(e,n)=>{let t=m(n,1);if(E(t)==="Matrix"){let i=m(t,1),r=m(t,2),s=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(s)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:We,serialize:(e,n)=>{let t=m(n,1);if(t===null)return"\\pm";if(ne(n)===1)return _(["\\pm",e.serialize(t)]);let i=m(n,2);return _([e.serialize(t),"\\pm",e.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,X(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["PlusMinus",n,X(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",X(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Fr},{latexTrigger:"\\prod",precedence:Ee,name:"Product",parse:ou("Product","Multiply",Ee),serialize:uu("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:ht,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:ht});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:Se,serialize:(e,n)=>n&&ne(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):ru(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=m(n,2);return w(i)==="Add"?`\\sum ${e.serialize(t)}`:w(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(m(n,2))}\\right)`}},{name:"Root",serialize:Fr},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(m(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:re,name:"Sum",parse:ou("Sum","Add",Ee),serialize:uu("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:Zf,serialize:Fr},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:re+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:re+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(m(n,1),re+2),i=e.wrap(m(n,2),re+3);return _([t,"-",i])}},{name:"Distance",latexTrigger:["\\operatorname{distance}"],kind:"function",serialize:(e,n)=>"\\operatorname{distance}"+e.wrapArguments(n)}];function Xf(e,n){if(e!==null){if(w(e))return{index:w(e)??"Nothing",upper:n};if(E(e)==="GreaterEqual"){let t=w(m(e,1))??"Nothing",i=m(e,2)??1;return{index:t,lower:i,upper:n}}if(E(e)==="Equal"){let t=w(m(e,1))??"Nothing",i=m(e,2);if(E(i)==="Range"){let s=m(i,1)??1,o=m(i,2)??void 0;return{index:t,lower:s,upper:o}}return{index:t,lower:i??1,upper:n}}if(E(e)==="Element")return{index:w(m(e,1))??"Nothing",element:e}}}function Qf(e){let n=E(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function su(e){if(e===null)return[];let n=Tn(e);if(n)return[...n];if(E(e)==="Tuple"){let t=S(e);return t?[...t]:[e]}return[e]}function Kf(e,n){W(e)&&(e=null),W(n)&&(n=null);let t=su(e),i=su(n),r=[],s=0;for(;s<t.length;){let o=t[s],a=Xf(o,i[s]);if(a){if(a.element&&s+1<t.length){let u=t[s+1];if(Qf(u)&&E(u)!=="Element"&&E(u)!=="Equal"){let l=a.element;if(Array.isArray(l)&&l.length>=3){let c=[l[0],...l.slice(1),u];a.element=c}s++}}r.push(a)}s++}return r}function ou(e,n,t){return i=>{i.skipSpace(),i.pushSymbolTable();let r=null,s=null;for(;!(s&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?s=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!s){let l=i.parseExpression({minPrec:t});return i.popSymbolTable(),l?["Reduce",l,n]:null}let o=Kf(s,r),a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[e];let u=[];for(let l of o){if(l.element){u.push(l.element);continue}let c=l.lower,f=l.upper,p=l.index??"Nothing";f!=null?u.push(["Tuple",p,c??1,f]):c!=null?u.push(["Tuple",p,c]):u.push(["Tuple",p])}return[e,a,...u]}}var ep=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function au(e){return e==null||w(e)==="Nothing"?null:e}function np(e){let n=[],t=S(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=E(i);if(r&&ep.has(r)){n.push(i);continue}break}return n}function tp(e,n){if(E(n)==="Element"){let l=e.serialize(m(n,1)),c=e.serialize(m(n,2));return{sub:`${l}\\in ${c}`}}let t=m(n,1);t!==null&&E(t)==="Hold"&&(t=m(t,1));let i=au(m(n,2)),r=au(m(n,3)),s={},o=t?w(t):null,a=o!==null&&o!=="Nothing",u=a&&t?e.serialize(t):void 0;return a&&i!==null&&u?s.sub=`${u}=${e.serialize(i)}`:a&&u?s.sub=u:i!==null&&(s.sub=e.serialize(i)),r!==null&&(s.sup=e.serialize(r)),s}function uu(e){return(n,t)=>{let i=m(t,1);if(!i)return e;let r=np(t),s=e;if(r.length>0){let o=[],a=[];for(let u of r){let l=tp(n,u);l.sub&&o.push(l.sub),l.sup&&a.push(l.sup)}o.length>0&&(s=mt("_",s,o.join(", "))),a.length>0&&(s=mt("^",s,a.join(", ")))}return _([s,n.serialize(i)])}}function lu(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=n.parseArguments("implicit");return i===null&&t===null?[e]:i===null?[e,t]:t===null?[e,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function vt(e){let n=1,t=e;do{e=t;let i=E(e);if(i==="Negate")n*=-1,t=m(e,1);else if(i==="Multiply"){let[r,s]=vt(m(e,1));s<0&&(n*=-1,r===1?t=["Multiply",...S(e).slice(1)]:t=["Multiply",r,...S(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,s]=vt(m(e,1));s<0&&(n*=-1,t=[i,r,m(e,2)])}else{let r=O(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var pu=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function C(e){return(n,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcsinh":"Arsinh","\\arcosh":"Arcosh","\\arccosh":"Arcosh","\\artanh":"Artanh","\\arctanh":"Artanh","\\arsech":"Arsech","\\arcsech":"Arsech","\\arcsch":"Arcsch","\\arccsch":"Arcsch","\\arcoth":"Arcoth","\\arccoth":"Arcoth","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Cosh","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[e??""]??e??"";if(n.atTerminator(t))return r;let s=r;do{let f=n.parsePostfixOperator(s,t);if(f===null)break;s=f}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:Ee,condition:f=>i[f.peek]!==void 0||(t?.condition?.(f)??!1)}),l=a?.length===2&&(s==="Arctan"||Array.isArray(s)&&s[0]==="InverseFunction"&&s[1]==="Tan")?"Arctan2":s,c=a===null?s:typeof l=="string"?[l,...a]:["Apply",l,...a];return o===null?c:["Power",c,o]}}var mu=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:C("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:C("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:C("Arctan")},{latexTrigger:["\\arctg"],parse:C("Arctan")},{symbolTrigger:"arctg",parse:C("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:C("Arccot")},{latexTrigger:["\\arcctg"],parse:C("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:C("Arcoth")},{symbolTrigger:"arccoth",parse:C("Arcoth")},{latexTrigger:["\\arcoth"],parse:C("Arcoth")},{latexTrigger:["\\arccoth"],parse:C("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:C("Arcsec")},{latexTrigger:["\\arcsec"],parse:C("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:C("Arccsc")},{latexTrigger:["\\arccsc"],parse:C("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:C("Arsinh")},{symbolTrigger:"arcsinh",parse:C("Arsinh")},{latexTrigger:["\\arsinh"],parse:C("Arsinh")},{latexTrigger:["\\arcsinh"],parse:C("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:C("Arcosh")},{symbolTrigger:"arccosh",parse:C("Arcosh")},{latexTrigger:"\\arcosh",parse:C("Arcosh")},{latexTrigger:"\\arccosh",parse:C("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:C("Artanh")},{symbolTrigger:"arctanh",parse:C("Artanh")},{latexTrigger:"\\artanh",parse:C("Artanh")},{latexTrigger:["\\arctanh"],parse:C("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:C("Arsech")},{symbolTrigger:"arcsech",parse:C("Arsech")},{latexTrigger:["\\arsech"],parse:C("Arsech")},{latexTrigger:["\\arcsech"],parse:C("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:C("Arcsch")},{symbolTrigger:"arccsch",parse:C("Arcsch")},{latexTrigger:["\\arcsch"],parse:C("Arcsch")},{latexTrigger:["\\arccsch"],parse:C("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:C("Cosec")},{latexTrigger:["\\cosec"],parse:C("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:C("Cosh")},{latexTrigger:["\\ch"],parse:C("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:C("Cot")},{latexTrigger:["\\cotg"],parse:C("Cot")},{latexTrigger:["\\ctg"],parse:C("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:C("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:C("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:C("Coth")},{latexTrigger:["\\cth"],parse:C("Coth")},{symbolTrigger:"cth",parse:C("Coth")},{latexTrigger:["\\coth"],parse:C("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:C("Sec")},{name:"Sech",symbolTrigger:"sech",parse:C("Sech")},{latexTrigger:["\\sech"],parse:C("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:C("Sinh")},{latexTrigger:["\\sh"],parse:C("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:C("Tan")},{latexTrigger:["\\tg"],parse:C("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:C("Tanh")},{latexTrigger:["\\th"],parse:C("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:C("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:C("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"}];function qn(e){return n=>{let t=!1,i=[],r=[];for(;!t;){n.skipVisualSpace(),n.match("\\limits"),n.skipSpace();let a=null,u=null;for(;!(u!==null&&a!==null)&&(n.peek==="_"||n.peek==="^");)n.match("_")?u=n.parseGroup()??n.parseToken():n.match("^")&&(a=n.parseGroup()??n.parseToken()),n.skipSpace();W(u)&&(u=null),W(a)&&(a=null),i.push(u??"Nothing"),r.push(a??"Nothing"),n.skipVisualSpace(),t=!n.match(e)}let[s,o]=ip(n);if(s&&o.length===0){if(E(s)==="Add"||E(s)==="Subtract"){let a=[],u=[];for(let l of S(s))if(o)u.push(l);else{let c;[c,o]=Qe(l),a.push(c??l)}if(o!==null&&u.length>0)return["Add",du(e,["Add",...a],{indexes:o,subs:i,sups:r})??"Nothing",...u]}else if(E(s)==="Divide"){let a;[a,o]=Qe(m(s,1)),a!==null&&o!==null&&(s=["Divide",a,m(s,2)])}}return du(e,s,{indexes:o,subs:i,sups:r})}}function du(e,n,t){if(!n)return null;if(t.sups.length===0&&t.subs.length===0)return[e,n,...t.indexes];let i=t.indexes.length===0?E(n)==="Function"?S(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let o=0;o<r;o++)i.push("Nothing");else if(i.length!==r)for(let o=i.length;o<r;o++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let o=t.subs.length;o<r;o++)t.subs.push("Nothing");if(t.sups.length!==r)for(let o=t.sups.length;o<r;o++)t.sups.push("Nothing");let s=i.map((o,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?o:["Tuple",o,l,u]});return[e,n,...s]}function ip(e){let n=!1,t=e.parseExpression({minPrec:266,condition:()=>{let i=e.index;return n=bu(e),e.index=i,n}});return t!==null&&!n?Qe(t):[t,rp(e)]}function rp(e){let n=[];for(;bu(e);){e.skipVisualSpace();let t=w(e.parseSymbol());if(t===null)return n;n.push(t)}return n}function Qe(e){let n=E(e),t=m(e,1);if(!t)return[e,[]];if(n==="Sequence"&&ne(e)===1)return Qe(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=S(e);if(i){let[r,s]=sp(i);return r.length>0?[[n,...r],s]:[null,s]}}else if(n==="Delimiter"){let[i,r]=Qe(t);if(r)return i?[["Delimiter",["Sequence",i],...S(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=S(e);if(i.length>0){let[r,s]=Qe(i[i.length-1]);if(s.length>0){if(r)return[["Add",...i.slice(0,-1),r],s];if(i.length>2)return[["Add",...i.slice(0,-1)],s];if(i.length>2)return[i[0],s]}}}else if(n==="Negate"){let[i,r]=Qe(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=Qe(t);if(r.length>0)return[["Divide",i??1,m(e,2)],r]}else{let i=S(e);if(i.length===1){let[r,s]=Qe(i[0]);if(s.length>0)return[[E(e),r],s]}}return[e,[]]}function hu(e){return(n,t)=>{if(!m(t,1))return e;let i=m(t,1),r=[];E(i)==="BuiltInFunction"?(r=["x"],i=[m(i,1),"x"]):E(i)==="Function"?(r=S(i).slice(1),i=m(i,1)):w(i)?r=[]:r=[];let s=S(t).slice(1),o=[],a=s.map((l,c)=>{if(w(l)==="Nothing")return o.push(w(r[c])??"Nothing"),"";if(w(l))return o.push(w(l)??"Nothing"),"";let f=E(l);if(f==="Tuple"||f==="Pair"||f==="Limits"||f==="Range"){if(ne(l)===3){let p=m(l,1);o.push(w(p)??"Nothing");let d=m(l,2),b=m(l,3);return w(d)==="Nothing"&&(d=null),w(b)==="Nothing"&&(b=null),d!==null&&b!==null?`_{${n.serialize(d)}}^{${n.serialize(b)}}`:d!==null?`_{${n.serialize(d)}}`:b!==null?`^{${n.serialize(b)}}`:""}return`_{${n.serialize(l)}}`}if(ne(l)===2){if(w(m(l,1))){o.push(w(m(l,1))??"Nothing");let b=m(l,2);return w(b)==="Nothing"?"":`_{${n.serialize(b)}}`}o.push(w(r[c])??"Nothing");let p=m(l,1),d=m(l,2);if(w(p)==="Nothing"&&(p=null),w(d)==="Nothing"&&(d=null),p!==null&&d!==null)return`_{${n.serialize(p)}}^{${n.serialize(d)}}`;if(p!==null)return`_{${n.serialize(p)}}`;if(d!==null)return`^{${n.serialize(d)}}`}else o.push(w(r[c])??"Nothing")}),u=o.filter(l=>w(l)!=="Nothing").map(l=>`\\mathrm{d}${n.serialize(w(l)??"x")}`);return u.length>0&&(u=["\\,",...u]),a.length===0?`${e}\\,${n.serialize(i)}\\!${u.join(" ")}`:a.reverse().map(l=>`${e}${l}`).join("")+"\\!"+n.serialize(i)+u.join(" ")}}var gu=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:qn("Integrate"),serialize:hu("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:qn("Integrate")},{kind:"expression",latexTrigger:["\\iiint"],parse:qn("Integrate")},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:qn("CircularIntegrate"),serialize:hu("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:qn("CircularIntegrate")},{kind:"expression",latexTrigger:["\\oiiint"],parse:qn("CircularIntegrate")}];function bu(e){let n=e.index;for(;e.match("\\cdot")||e.skipVisualSpace(););return e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"])||e.match("d")||e.match("\\differentialD")?!0:(e.index=n,!1)}function sp(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=op(n),!i)break;t.push(i)}return[n,t]}function op(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=w(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var yu=[{name:"Matrix",serialize:(e,n)=>{let t=S(m(n,1));return Or(e,t,H(m(n,2)),H(m(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=S(n);return Or(e,t.map(i=>["List",i]),H(m(n,2)),H(m(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=en(e,!1),[t,i]=Ke(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=en(e),[t,i]=Ke(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Inverse",serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>Jn(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>Jn(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>Jn(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>Jn(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>Jn(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=m(n,1);if(E(t)==="Matrix"){let i=S(m(t,1));return Or(e,i,"||",H(m(t,2)))}return Jn(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return`${t} \\cdot ${i}`}}];function Ke(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function en(e,n=!0){let t=e.parseStringGroup(n)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function Jn(e,n,t){if(S(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=m(n,1),s=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${s}`:`${t}\\left(${s}\\right)`}function Or(e,n,t,i){t??="()";let[r,s]=["",""];typeof t=="string"&&t.length===2&&([r,s]=t);let o="";if(i)for(let c of i)c==="<"?o+="l":c===">"?o+="r":c==="="?o+="c":c==="|"?o+="|":c===":"&&(o+=":");let a=[];for(let c of n??[]){let f=[];for(let p of S(c))f.push(e.serialize(p));a.push(f.join(" & "))}let u=a.join(`\\\\
7
+ `),l=o.length>0?`[${o}]`:"";return r==="("&&s===")"?_(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&s==="]"?_(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&s==="}"?_(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&s==="|"?_(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?_(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&s==="."?_(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&s==="}"?_(["\\begin{rcases}",l,u,"\\end{rcases}"]):o||r!=="."||s!=="."?_(["\\left",mi[r]??r,"\\begin{array}",`{${o}}`,u,"\\end{array}","\\right",mi[s]??s]):_(["\\begin{matrix}",u,"\\end{matrix}"])}var xu=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return!t||!w(t)?null:["Mean",t]}},{latexTrigger:"\\operatorname{var}",parse:"Variance"}];var bi={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},vu=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),yi={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function ap(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(bi[n]!==void 0&&vu.has(t)){let i=yi[t];if(i)return{prefixScale:bi[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(bi[n]!==void 0&&vu.has(t)){let i=yi[t];if(i)return{prefixScale:bi[n],baseEntry:i}}}return null}function up(e){let n=yi[e];if(n)return n;let t=ap(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function Lr(e){let n=up(e);return n?n.dimension:null}var J1=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[yi[e].dimension.join(","),e]));function lp(e){let n=e.indexOf("^");if(n===-1)return e;let t=e.slice(0,n),i=e.slice(n+1),r=parseInt(i,10);return isNaN(r)?e:["Power",t,r]}function Et(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,s=!0;for(let o=0;o<e.length-1;o++)if(e[o]==="("?r++:e[o]===")"&&r--,r===0&&o<e.length-1){s=!1;break}if(s)return Et(e.slice(1,-1))}let n=-1,t=[],i=0;for(let r=0;r<e.length;r++)e[r]==="("?i++:e[r]===")"?i--:i===0&&(e[r]==="/"&&n===-1?n=r:e[r]==="*"&&t.push(r));if(n!==-1){let r=e.slice(0,n).trim(),s=e.slice(n+1).trim(),o=Et(r),a=Et(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(e.slice(s,a).trim()),s=a+1;r.push(e.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>Et(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return e[0]==="("?null:lp(e)}function Eu(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?Et(e):e}function _u(e){if(!e.match("<{>"))return null;let n="",t=0;for(;!e.atEnd;){let i=e.peek;if(i==="<}>"&&t===0)return e.nextToken(),n;if(i==="<}>"){t--,e.nextToken();continue}if(i==="<{>"){t++,e.nextToken();continue}if(i==="<space>"){e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var cp=new Set(["d"]);function Su(e){if(!e||e.length===0||cp.has(e))return null;if(Lr(e)!==null)return e;if(/[/*^]/.test(e))try{let n=Eu(e);if(n!==null&&Br(n))return n}catch{return null}return null}function Br(e){if(typeof e=="string")return Lr(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>Br(t)):n==="Power"?Br(e[1]):!1}var Nu=e=>{let n=e.index,t=_u(e);if(t===null)return e.index=n,null;let i=Su(t);return i===null?(e.index=n,null):["__unit__",i]};function Mn(e){let n=w(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=E(e);if(!t)return"";if(t==="Divide"){let i=m(e,1),r=m(e,2);return`${Mn(i)}/${Mn(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(Mn(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=m(e,1),r=m(e,2),s=typeof r=="number"?String(r):w(r)??String(r);return`${Mn(i)}^{${s}}`}if(t==="Square"){let i=m(e,1);return`${Mn(i)}^{2}`}return""}function Tu(e){let n=e.parseGroup();if(n===null)return null;let t=Mu(e);return t===null?null:["Quantity",n,t]}function Iu(e){return Mu(e)}function Mu(e){let n=e.index,t=_u(e);if(t===null)return e.index=n,null;let i=Su(t);return i===null?(e.index=n,null):i}var ku=[{latexTrigger:"\\mathrm",kind:"expression",parse:Nu},{latexTrigger:"\\text",kind:"expression",parse:Nu},{latexTrigger:"\\qty",parse:Tu},{latexTrigger:"\\SI",parse:Tu},{latexTrigger:"\\unit",parse:Iu},{latexTrigger:"\\si",parse:Iu},{name:"Quantity",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(t===null||i===null)return"";let r=w(i),s=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",o=e.options;if(s&&(o.dmsFormat||o.angleNormalization&&o.angleNormalization!=="none")){let l=O(t);if(l===null){let f=e.serialize(t),p=Mn(i);return _([f,"\\,",`\\mathrm{${p}}`])}let c=l;return r==="rad"?c=c*180/Math.PI:r==="arcmin"?c=c/60:r==="arcsec"&&(c=c/3600),o.angleNormalization&&o.angleNormalization!=="none"&&(c=di(c,o.angleNormalization)),o.dmsFormat?hi(c):`${c}\xB0`}let a=e.serialize(t),u=Mn(i);return _([a,"\\,",`\\mathrm{${u}}`])}}];var fp=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"];function wu(e){for(e.skipSpace(),(e.peek==="-"||e.peek==="+")&&e.nextToken();/^[\d.]$/.test(e.peek);)e.nextToken();for(let n of fp)if(e.matchAll([...n]))return}function Te(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}function xi(e){return n=>{let t=n.parseExpression();return t!==null&&!W(t)?["Annotated",t,{dict:{mathStyle:e}}]:"Nothing"}}function Be(e){return n=>{let t=n.parseExpression();return t!==null&&!W(t)?["Annotated",t,{dict:{size:e}}]:"Nothing"}}var Au=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>w(n)===null?null:["Increment",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>w(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return w(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return w(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,t="Nothing",i="Nothing";for(;!n;)e.skipSpace(),e.match("_")?i=e.parseGroup()??e.parseToken():e.match("^")?t=e.parseGroup()??e.parseToken():n=!0;let r=Tn(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let s=e.parseGroup()??"Nothing";if(!W(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,i,t]},serialize:(e,n)=>{let t="\\partial",i=m(n,1),r=m(n,2),s=m(n,3);return r!==null&&r!=="Nothing"&&(E(r)==="List"?t+="_{"+e.serialize(["Sequence",...S(r)])+"}":t+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(t+="^{"+e.serialize(s)+"}"),i!==null&&i!=="Nothing"&&(t+=e.serialize(i)),t},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Te("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Te("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Te("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Te("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Te("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Te("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Te("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Te("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Te("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Te("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Te("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Te("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Te("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Te("OverGroup")},{latexTrigger:["\\textcolor"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\colorbox"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{backgroundColor:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\boxed"],parse:e=>{let n=e.parseGroup();return n!==null?["Annotated",n,{dict:{border:!0}}]:"Nothing"}},{latexTrigger:["\\displaystyle"],parse:xi("normal")},{latexTrigger:["\\textstyle"],parse:xi("compact")},{latexTrigger:["\\scriptstyle"],parse:xi("script")},{latexTrigger:["\\scriptscriptstyle"],parse:xi("scriptscript")},{latexTrigger:["\\color"],parse:e=>{let n=e.parseStringGroup();if(n!==null){let t=e.parseExpression();if(t!==null&&!W(t))return["Annotated",t,{dict:{color:n}}]}return"Nothing"}},{latexTrigger:["\\tiny"],parse:Be(1)},{latexTrigger:["\\scriptsize"],parse:Be(2)},{latexTrigger:["\\footnotesize"],parse:Be(3)},{latexTrigger:["\\small"],parse:Be(4)},{latexTrigger:["\\normalsize"],parse:Be(5)},{latexTrigger:["\\large"],parse:Be(6)},{latexTrigger:["\\Large"],parse:Be(7)},{latexTrigger:["\\LARGE"],parse:Be(8)},{latexTrigger:["\\huge"],parse:Be(9)},{latexTrigger:["\\Huge"],parse:Be(10)},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=qa(m(n,2));if(i==null)return t;i.dict.mathStyle==="normal"?t=_(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"?t=_(["{\\textstyle",t,"}"]):i.dict.mathStyle==="script"?t=_(["{\\scriptstyle",t,"}"]):i.dict.mathStyle==="scriptscript"&&(t=_(["{\\scriptscriptstyle",t,"}"]));let r=i.dict.size;return r!==null&&r>=1&&r<=10&&(t=_(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),i.dict.fontFamily==="monospace"?t=_(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=_(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=_(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=_(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=_(["\\textup{",t,"}"])),i.dict.color&&(t=_(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=_(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=_(["\\boxed{",t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\hspace"],parse:e=>(e.peek==="*"&&e.nextToken(),e.parseStringGroup(),["HorizontalSpacing",0])},{latexTrigger:["\\hskip"],parse:e=>(wu(e),["HorizontalSpacing",0])},{latexTrigger:["\\kern"],parse:e=>(wu(e),["HorizontalSpacing",0])},{latexTrigger:["\\phantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:e=>(e.parseOptionalGroup(),e.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:e=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:e=>"Nothing"},{name:"HorizontalSpacing",serialize:(e,n)=>{if(m(n,2)!==null){let i=H(m(n,2)),r=e.serialize(m(n,1));return i==="bin"?`\\mathbin{${r}}`:i==="op"?`\\mathop{${r}}`:i==="rel"?`\\mathrel{${r}}`:i==="ord"?`\\mathord{${r}}`:i==="open"?`\\mathopen{${r}}`:i==="close"?`\\mathclose{${r}}`:i==="punct"?`\\mathpunct{${r}}`:i==="inner"?`\\mathinner{${r}}`:r}let t=O(m(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}},{latexTrigger:"\\operatorname{count}",parse:"Length"},{latexTrigger:"\\operatorname{random}",parse:"Random"},{latexTrigger:"\\operatorname{shuffle}",parse:"Shuffle"},{latexTrigger:"\\operatorname{repeat}",parse:"Repeat"},{latexTrigger:"\\operatorname{join}",parse:"Join"},{latexTrigger:"\\operatorname{range}",parse:"Range"},{name:"Triangle",latexTrigger:["\\operatorname{triangle}"],kind:"function",serialize:(e,n)=>"\\operatorname{triangle}"+e.wrapArguments(n)},{name:"GeometricVector",latexTrigger:["\\operatorname{vector}"],kind:"function",serialize:(e,n)=>"\\operatorname{vector}"+e.wrapArguments(n)},{name:"Sphere",latexTrigger:["\\operatorname{sphere}"],kind:"function",serialize:(e,n)=>"\\operatorname{sphere}"+e.wrapArguments(n)},{name:"Segment",latexTrigger:["\\operatorname{segment}"],kind:"function",serialize:(e,n)=>"\\operatorname{segment}"+e.wrapArguments(n)}];var Cu=[{name:"Rgb",latexTrigger:["\\operatorname{rgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{rgb}"+e.wrapArguments(n)},{name:"Hsv",latexTrigger:["\\operatorname{hsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsv}"+e.wrapArguments(n)},{name:"Hsl",latexTrigger:["\\operatorname{hsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsl}"+e.wrapArguments(n)},{name:"Oklab",latexTrigger:["\\operatorname{oklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklab}"+e.wrapArguments(n)},{name:"Oklch",latexTrigger:["\\operatorname{oklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklch}"+e.wrapArguments(n)},{name:"AsRgb",latexTrigger:["\\operatorname{asRgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{asRgb}"+e.wrapArguments(n)},{name:"AsHsv",latexTrigger:["\\operatorname{asHsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsv}"+e.wrapArguments(n)},{name:"AsHsl",latexTrigger:["\\operatorname{asHsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsl}"+e.wrapArguments(n)},{name:"AsOklab",latexTrigger:["\\operatorname{asOklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklab}"+e.wrapArguments(n)},{name:"AsOklch",latexTrigger:["\\operatorname{asOklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklch}"+e.wrapArguments(n)},{name:"ColorDelta",latexTrigger:["\\operatorname{colorDelta}"],kind:"function",serialize:(e,n)=>"\\operatorname{colorDelta}"+e.wrapArguments(n)}];var pp=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var mp=[...Wa,...Ka,...eu,...za,...iu,...En,...fu,...pu,...mu,...gu,...yu,...xu,...ku,...Au,...pp,...Cu];var dp="\\u{FE0F}",hp="\\u{20E3}",gp="\\u{200D}",bp="\\p{RI}\\p{RI}",yp="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",$u=`(?:\\p{EMod}|${dp}${hp}?|${yp})`,xp="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",Ru=`(?:${xp}${$u}*|\\p{Emoji}${$u}+|${bp})`,Pu=`(?:${Ru})(${gp}${Ru})*`,hb=new RegExp(`(?:${Pu})+`,"u"),Du=new RegExp(`^(?:${Pu})+$`,"u");var ly=new Set([...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"]);var cy=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"].map(e=>[...e]);function Ou(e){return e!==void 0&&"value"in e}function Nt(e){return e!==void 0&&"operator"in e}function kn(e,n,t=!0){let i=!t||e.every(s=>s.isCanonical)?e:e.map(s=>s.canonical);if(n){let s=a=>I(a,"Nothing")||a.operator===n||a.operator==="Sequence";if(i.every(a=>!s(a)))return i;let o=[];for(let a of i)I(a,"Nothing")||(g(a)&&(a.operator===n||a.operator==="Sequence")?o.push(...kn(a.ops,n,t)):o.push(a));return o}if(i.every(s=>!(I(s,"Nothing")||s.operator==="Sequence")))return i;let r=[];for(let s of i)I(s,"Nothing")||(g(s,"Sequence")?r.push(...kn(s.ops,n,t)):r.push(s));return r}function Ip(e,n){if(e===n)return 0;if(e.length===0)return n.length;if(n.length===0)return e.length;let t=Array.from({length:e.length+1},(r,s)=>s),i=new Array(e.length+1);for(let r=1;r<=n.length;r++){i[0]=r;for(let s=1;s<=e.length;s++){let o=e[s-1]===n[r-1]?0:1;i[s]=Math.min(t[s]+1,i[s-1]+1,t[s-1]+o)}[t,i]=[i,t]}return t[e.length]}function qr(e,n){let i=null,r=1/0,s=e.length;for(let o of n){if(Math.abs(s-o.length)>7)continue;let a=Ip(e,o);if(a===0)return o;a<=7&&a<r&&(r=a,i=o)}return i}function vi(e,n,t){if(n=kn(n),!e.strict||n.length===t)return n;let i=[...n.slice(0,t)],r=Math.min(t,n.length);for(;r<t;)i.push(e.error("missing")),r+=1;for(;r<n.length;)i.push(e.error("unexpected-argument",n[r].toString())),r+=1;return i}function an(e,n,t){return n==null?e.error("missing"):t===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||n.type.matches(t)?n:e.typeError(t,n.type,n))}function Jr(e,n,t){if(n.length===t.length&&n.every((r,s)=>r.type.matches(t[s])))return n;let i=[];for(let r=0;r<=t.length-1;r++)i.push(an(e,n[r],t[r]));for(let r=t.length;r<=n.length-1;r++)i.push(e.error("unexpected-argument",n[r].toString()));return i}function Lu(e){let n={},t=Ap(e.engine),i=wp(e.engine);if(I(e)&&!n[e.symbol]&&!e.symbol.startsWith("_")){if(!t.includes(e.symbol)){let r=qr(e.symbol,t);r&&(n[e.symbol]=r)}}else if(g(e)&&!n[e.operator]&&!e.operator.startsWith("_")){let r=e.operator;if(!i.includes(r)){let s=qr(r,i);s&&(n[r]=s)}for(let s of e.ops)n={...n,...Lu(s)}}return n}function wp(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);Nt(r)&&n.push(i)}t=t.parent}return n}function Ap(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);Ou(r)&&n.push(i)}t=t.parent}return n}function nn(e){let n=Lu(e);if(Object.keys(n).length===0)return"";if(Object.keys(n).length===1){let[i,r]=Object.entries(n)[0];return`Unknown symbol "${i}". Did you mean "${r}"?`}let t=[];for(let[i,r]of Object.entries(n))t.push(`- "${i}" -> "${r}"?`);return`Unknown symbols found:
8
8
  ${t.join(`
9
- `)}`}var ce=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},_e=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},tp=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var t=e*e;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},ip=function(e,n){var t=Math.abs(e),i=Math.abs(n);return t<3e3&&i<3e3?Math.sqrt(t*t+i*i):(t<i?(t=i,i=e/n):i=n/e,t*Math.sqrt(1+i*i))},Jn=function(){throw SyntaxError("Invalid Param")};function Dr(e,n){var t=Math.abs(e),i=Math.abs(n);return e===0?Math.log(i):n===0?Math.log(t):t<3e3&&i<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var rp=function(e,n){var t={re:0,im:0};if(e==null)t.re=t.im=0;else if(n!==void 0)t.re=e,t.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)t.re=e.re,t.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return $.INFINITY;t.re=e.abs*Math.cos(e.arg),t.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return $.INFINITY;t.re=e.r*Math.cos(e.phi),t.im=e.r*Math.sin(e.phi)}else e.length===2?(t.re=e[0],t.im=e[1]):Jn();break;case"string":t.im=t.re=0;var i=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,s=0;i===null&&Jn();for(var o=0;o<i.length;o++){var a=i[o];a===" "||a===" "||a===`
10
- `||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Jn(),i[o+1]!==" "&&!isNaN(Number(i[o+1]))?(t.im+=parseFloat((s%2?"-":"")+i[o+1]),o++):t.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Jn(),i[o+1]==="i"||i[o+1]==="I"?(t.im+=parseFloat((s%2?"-":"")+a),o++):t.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Jn();break;case"number":t.im=0,t.re=e;break;default:Jn()}return isNaN(t.re)||isNaN(t.im),t},$=class e{constructor(n,t){this.re=0,this.im=0;var i=rp(n,t);this.re=i.re,this.im=i.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re+i.re,this.im+i.im)}sub(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re-i.re,this.im-i.im)}mul(n,t){var i=new e(n,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:i.im===0&&this.im===0?new e(this.re*i.re,0):new e(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(n,t){var i=new e(n,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return e.NAN;if(this.isInfinite()||i.isZero())return e.INFINITY;if(this.isZero()||i.isInfinite())return e.ZERO;n=this.re,t=this.im;var r=i.re,s=i.im,o,a;return s===0?new e(n/r,t/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new e((n*a+t)/o,(t*a-n)/o)):(a=s/r,o=s*a+r,new e((n+t*a)/o,(t-n*a)/o))}pow(n,t){var i=new e(n,t);if(n=this.re,t=this.im,i.isZero())return e.ONE;if(i.im===0){if(t===0&&n>0)return new e(Math.pow(n,i.re),0);if(n===0)switch((i.re%4+4)%4){case 0:return new e(Math.pow(t,i.re),0);case 1:return new e(0,Math.pow(t,i.re));case 2:return new e(-Math.pow(t,i.re),0);case 3:return new e(0,-Math.pow(t,i.re))}}if(n===0&&t===0&&i.re>0&&i.im>=0)return e.ZERO;var r=Math.atan2(t,n),s=Dr(n,t);return n=Math.exp(i.re*s-i.im*r),t=i.im*s+i.re*r,new e(n*Math.cos(t),n*Math.sin(t))}sqrt(){var n=this.re,t=this.im,i=this.abs(),r,s;if(n>=0){if(t===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(i+n))}else r=Math.abs(t)/Math.sqrt(2*(i-n));return n<=0?s=.5*Math.sqrt(2*(i-n)):s=Math.abs(t)/Math.sqrt(2*(i+n)),new e(r,t<0?-s:s)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,t=this.im;return new e(Math.expm1(n)*Math.cos(t)+tp(t),Math.exp(n)*Math.sin(t))}log(){var n=this.re,t=this.im;return t===0&&n>0,new e(Dr(n,t),Math.atan2(t,n))}abs(){return ip(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,t=this.im;return new e(Math.sin(n)*ce(t),Math.cos(n)*_e(t))}cos(){var n=this.re,t=this.im;return new e(Math.cos(n)*ce(t),-Math.sin(n)*_e(t))}tan(){var n=2*this.re,t=2*this.im,i=Math.cos(n)+ce(t);return new e(Math.sin(n)/i,_e(t)/i)}cot(){var n=2*this.re,t=2*this.im,i=Math.cos(n)-ce(t);return new e(-Math.sin(n)/i,_e(t)/i)}sec(){var n=this.re,t=this.im,i=.5*ce(2*t)+.5*Math.cos(2*n);return new e(Math.cos(n)*ce(t)/i,Math.sin(n)*_e(t)/i)}csc(){var n=this.re,t=this.im,i=.5*ce(2*t)-.5*Math.cos(2*n);return new e(Math.sin(n)*ce(t)/i,-Math.cos(n)*_e(t)/i)}asin(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,t=this.im;if(n===0){if(t===1)return new e(0,1/0);if(t===-1)return new e(0,-1/0)}var i=n*n+(1-t)*(1-t),r=new e((1-t*t-n*n)/i,-2*n/i).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,t=this.im;if(t===0)return new e(Math.atan2(1,n),0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atan():new e(n!==0?n/0:0,t!==0?-t/0:0).atan()}asec(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acos():new e(n!==0?n/0:0,t!==0?-t/0:0).acos()}acsc(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(Math.PI/2,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asin():new e(n!==0?n/0:0,t!==0?-t/0:0).asin()}sinh(){var n=this.re,t=this.im;return new e(_e(n)*Math.cos(t),ce(n)*Math.sin(t))}cosh(){var n=this.re,t=this.im;return new e(ce(n)*Math.cos(t),_e(n)*Math.sin(t))}tanh(){var n=2*this.re,t=2*this.im,i=ce(n)+Math.cos(t);return new e(_e(n)/i,Math.sin(t)/i)}coth(){var n=2*this.re,t=2*this.im,i=ce(n)-Math.cos(t);return new e(_e(n)/i,-Math.sin(t)/i)}csch(){var n=this.re,t=this.im,i=Math.cos(2*t)-ce(2*n);return new e(-2*_e(n)*Math.cos(t)/i,2*ce(n)*Math.sin(t)/i)}sech(){var n=this.re,t=this.im,i=Math.cos(2*t)+ce(2*n);return new e(2*ce(n)*Math.cos(t)/i,-2*_e(n)*Math.sin(t)/i)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var t=this.asin();return this.re=-this.im,this.im=n,n=t.re,t.re=-t.im,t.im=n,t}acosh(){var n=this.acos();if(n.im<=0){var t=n.re;n.re=-n.im,n.im=t}else{var t=n.im;n.im=-n.re,n.re=t}return n}atanh(){var n=this.re,t=this.im,i=n>1&&t===0,r=1-n,s=1+n,o=r*r+t*t,a=o!==0?new e((s*r-t*t)/o,(t*r+s*t)/o):new e(n!==-1?n/0:0,t!==0?t/0:0),u=a.re;return a.re=Dr(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,Math.PI/2);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atanh():new e(n!==0?n/0:0,t!==0?-t/0:0).atanh()}acsch(){var n=this.re,t=this.im;if(t===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asinh():new e(n!==0?n/0:0,t!==0?-t/0:0).asinh()}asech(){var n=this.re,t=this.im;if(this.isZero())return e.INFINITY;var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acosh():new e(n!==0?n/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,t=this.im,i=n*n+t*t;return new e(n/i,-t/i)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,t){var i=new e(n,t);return Math.abs(i.re-this.re)<=e.EPSILON&&Math.abs(i.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(t)<e.EPSILON&&(t=0),t===0?i+n:(n!==0?(i+=n,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};$.ZERO=new $(0,0);$.ONE=new $(1,0);$.I=new $(0,1);$.PI=new $(Math.PI,0);$.E=new $(Math.E,0);$.INFINITY=new $(1/0,1/0);$.NAN=new $(NaN,NaN);$.EPSILON=1e-15;function Ae(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-we&&e<=we?e:null;if(!R(e))return null;let n=e.numericValue;if(typeof n=="number")return Number.isInteger(n)&&n>=-we&&n<=we?n:null;if(n.im!==0)return null;let t=n.re;return Number.isInteger(t)&&t>=-we&&t<=we?Number(t):null}function G(e){if(!R(e))return null;let n=e.numericValue;return Math.round(typeof n=="number"?n:n.re)}function dp(e,n,t,i){return e.filter(r=>{let o=t.subs({[n]:r}).evaluate();return ee(o)==="True"})}function Or(e,n){if(e.operator!=="Element")return{status:"error",reason:"expected-element-expression"};if(!g(e))return{status:"error",reason:"expected-element-expression"};let t=T(e.op1)?e.op1.symbol:void 0;if(!t)return{status:"error",reason:"expected-index-variable"};let i=e.op2;if(!i)return{status:"error",reason:"expected-domain"};let r=e.op3,s=e.nops>=3&&r&&ee(r)!=="Nothing"?r:null,o=u=>{if(s){let l=dp(u,t,s,n);return{status:"success",variable:t,values:l}}return{status:"success",variable:t,values:u}};if(i.operator==="Set"||i.operator==="List"){let u=g(i)?i.ops:void 0;if(u&&u.length<=1e3){if(i.operator==="List"&&u.length===2){let l=Ae(u[0]),c=Ae(u[1]);if(l!==null&&c!==null){let f=c-l+1;if(f>0&&f<=1e3){let m=[];for(let h=l;h<=c;h++)m.push(n.number(h));return o(m)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}}return o([...u])}return u&&u.length>1e3?{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}:{status:"error",reason:"empty-domain"}}if(g(i,"Range")){let u=Ae(i.op1),l=Ae(i.op2),c=i.ops.length>=3?Ae(i.op3):1;if(u!==null&&l!==null&&c!==null&&c!==0){let f=Math.floor((l-u)/c)+1;if(f>0&&f<=1e3){let m=[];for(let h=u;c>0?h<=l:h>=l;h+=c)m.push(n.number(h));return o(m)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}if(g(i,"Interval")){let u=i.op1,l=i.op2,c=!1,f=!1;g(u,"Open")?(c=!0,u=u.op1):g(u,"Closed")&&(u=u.op1),g(l,"Open")?(f=!0,l=l.op1):g(l,"Closed")&&(l=l.op1);let m=Ae(u),h=Ae(l);if(m!==null&&h!==null){c&&(m+=1),f&&(h-=1);let b=h-m+1;if(b>0&&b<=1e3){let v=[];for(let E=m;E<=h;E++)v.push(n.number(E));return o(v)}if(b>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}let a=ee(i);if(a){if(["Integers","NonNegativeIntegers","PositiveIntegers","NegativeIntegers","Rationals","Reals","PositiveReals","NonNegativeReals","NegativeReals","NonPositiveReals","ExtendedReals","Complexes","ImaginaryNumbers","Numbers","ExtendedComplexes","AlgebraicNumbers","TranscendentalNumbers"].includes(a))return{status:"non-enumerable",variable:t,domain:i,reason:"infinite-domain"};let l=i.value;if(l&&l.operator==="Set"&&g(l)){let c=l.ops;if(c&&c.length<=1e3)return o([...c]);if(c&&c.length>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unknown-domain"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unrecognized-domain-type"}}function Eu(e){return e?._kind==="number"}function hp(e){return e?._kind==="symbol"}function xt(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function on(e){if(xt(e,"Interval")){let n=e.op1,t=e.op2,i=!1,r=!1;xt(n,"Open")?(i=!0,n=n.op1):xt(n,"Closed")&&(n=n.op1),xt(t,"Open")?(r=!0,t=t.op1):xt(t,"Closed")&&(t=t.op1);let s=n.N(),o=t.N();return!Eu(s)||!Eu(o)?void 0:{start:s.re,openStart:i,end:o.re,openEnd:r}}if(hp(e)){if(e.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(e.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(e.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(e.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(e.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(e.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function Nu(e,n){return!((e.openStart?n<=e.start:n<e.start)||(e.openEnd?n>=e.end:n>e.end))}function Tu(e){let n=Math.sin(e*12.9898)*43758.5453;return n-Math.floor(n)}function Iu(e){return e+.6180339887498949}function _u(e,n,t){return n.every(i=>i.isCanonical)?n:n.map(i=>e.expr(i,{scope:t}))}function Ne(e){if(typeof e=="string")return Zo(e)?e:"error";switch(e.kind){case"union":return Mu(e);case"intersection":return bp(e);case"negation":return gp(e);case"collection":case"indexed_collection":return yp(e.kind,e);case"list":return xp(e);case"set":return vp(e);case"tuple":return Ep(e);case"record":return Np(e);case"dictionary":return Tp(e);case"signature":return Ip(e);case"value":return e;case"reference":return e;default:throw new Error(`Unknown type kind: ${e}`)}}function me(e){return typeof e!="object"||Object.isFrozen(e)||Object.prototype.hasOwnProperty.call(e,"toString")||Object.defineProperty(e,"toString",{value:()=>q(e)}),e}function ku(e){let n=[],t=new Set;for(let i of e){let r=Ne(i),s=typeof r=="string"?r:q(r);t.has(s)||(t.add(s),n.push(r))}return n}function gp(e){let n=Ne(e.type);return n==="nothing"?"any":n==="any"?"nothing":me({kind:"negation",type:n})}function Mu(e){let n=ku(e.types);if(n.length===0)return"never";if(n.some(i=>i==="error"))return"error";if(n.length===1)return me(n[0]);let t=[];for(let i of n)if(!t.some(r=>A(i,r))){for(let r=t.length-1;r>=0;r--)A(t[r],i)&&t.splice(r,1);t.push(i)}return t.length===1?me(t[0]):me({kind:"union",types:t})}function wu(e,n){if(A(e,n))return e;if(A(n,e))return n;if(typeof e=="object"&&e.kind==="union")return Su(e.types,n);if(typeof n=="object"&&n.kind==="union")return Su(n.types,e);if(typeof e=="string"&&typeof n=="string"){let t=ta(e,n);return t.length===0?"nothing":t.length===1?t[0]:{kind:"union",types:t}}return"nothing"}function Su(e,n){let t=e.map(i=>wu(i,n)).filter(i=>i!=="nothing");return t.length===0?"nothing":t.length===1?t[0]:Mu({kind:"union",types:t})}function bp(e){let n=ku(e.types);if(n.length===0)return"nothing";if(n.some(i=>i==="error"))return"error";let t=n[0];for(let i=1;i<n.length;i++)if(t=wu(t,n[i]),t==="nothing")return"nothing";return me(t)}function yp(e,n){let t=Ne(n.elements);return t==="error"?"error":t==="nothing"?me({kind:e,elements:"nothing"}):t==="any"?e:me({...n,elements:t})}function xp(e){let n=Ne(e.elements);if(n==="error")return"error";if(n==="nothing")return me({kind:"list",elements:"nothing"});if(n==="any")return"list";let t=e.dimensions;return t&&(t=t.filter(i=>i>=1||i===-1),t.length===0)?"nothing":me({...e,dimensions:t,elements:n})}function vp(e){let n=Ne(e.elements);return n==="error"?"error":n==="nothing"?me({kind:"set",elements:"nothing"}):n==="any"?"set":me({...e,elements:n})}function Ep(e){let n=e.elements.map(t=>({...t,type:Ne(t.type)}));return n.length===0?"nothing":n.some(t=>t.type==="error")?"error":(n=n.filter(t=>t.type!=="nothing"),me({...e,elements:n}))}function Np(e){let n={};for(let[t,i]of Object.entries(e.elements))n[t]=Ne(i);return Object.values(n).some(t=>t==="error")?"error":(n=Object.fromEntries(Object.entries(n).filter(([t,i])=>i!=="nothing")),Object.keys(n).length===0?"record":me({...e,elements:n}))}function Tp(e){let n=Ne(e.values);return n==="error"||n==="nothing"?"error":n==="any"||n==="unknown"?"any":me({kind:"dictionary",values:n})}function Ip(e){let n=e.args?.map(s=>({...s,type:Ne(s.type)})),t=e.optArgs?.map(s=>({...s,type:Ne(s.type)})),i=e.variadicArg?{...e.variadicArg,type:Ne(e.variadicArg.type)}:void 0,r=Ne(e.result);return n?.some(s=>s.type==="error")||t?.some(s=>s.type==="error")||i?.type==="error"||r==="error"?"error":(t=t?.filter(s=>s.type!=="nothing"),n?.length===0&&(t=void 0),t?.length===0&&(t=void 0),i?.type==="nothing"&&(i=void 0),me({...e,args:n,optArgs:t,variadicArg:i,variadicMin:i?e.variadicMin:void 0,result:r}))}function _p(e,n){return Ne({kind:"intersection",types:[e,n]})}function bi(e,n){let t=e.type;if(t.matches(n))return!0;if(_p(t.type,n)==="nothing"||R(e))return!1}var vt=50,Et=ei(),q2={List:{complexity:8200,signature:"(any*) -> list",type:(e,{engine:n})=>U(`list<${pe.widen(...e.map(t=>t.type))}>`),canonical:Sp,lazy:!0,evaluate:(e,{engine:n,materialization:t})=>{if(t)return n._fn("List",Lr(e).map(i=>i.evaluate({materialization:t})))},eq:Cu,collection:ei()},Set:{complexity:8200,signature:"(any*) -> set",type:(e,{engine:n})=>Oe(e)!==null?U("set"):U(`set<${pe.widen(...e.map(t=>t.type))}>`),canonical:kp,lazy:!0,evaluate:(e,{engine:n,numericApproximation:t,materialization:i})=>{let r=Oe(e);if(r!==null){let s=kn(r);return s===void 0||s.length>dr?void 0:n.function("Set",s)}return n.function("Set",e.map(s=>s.evaluate({numericApproximation:t,materialization:i})))},eq:(e,n)=>{if(e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops)return!1;let t=i=>n.ops.some(r=>i.isSame(r));return e.ops.every(t)},collection:{...Et,at:void 0,indexWhere:void 0,isLazy:e=>g(e)&&Oe(e.ops)!==null,count:e=>{if(!g(e))return 0;let n=Oe(e.ops);return n===null?e.nops:kn(n)?.length},isEmpty:e=>{if(!g(e))return!0;let n=Oe(e.ops);if(n===null)return e.nops===0;let t=kn(n);return t===void 0?void 0:t.length===0},isFinite:e=>{if(!g(e))return!0;let n=Oe(e.ops);if(n===null||kn(n)!==void 0||n.domain?.isFiniteCollection===!0)return!0},iterator:e=>{if(!g(e))return Et.iterator(e);let n=Oe(e.ops);if(n===null)return Et.iterator(e);let t=kn(n);if(t===void 0)return;let i=0;return{next:()=>i>=t.length?{value:void 0,done:!0}:{value:t[i++],done:!1}}},contains:(e,n)=>{if(!g(e))return;let t=Oe(e.ops);return t!==null?Mp(t,n):Pu(e.ops,n)},elttype:e=>{if(!g(e))return Et.elttype(e);let n=Oe(e.ops);if(n===null)return Et.elttype(e);let t=kn(n);return t===void 0||t.length===0?"unknown":ye(...t.map(i=>i.type.type))}}},Length:{description:"Number of elements in a collection. Returns undefined for non-collections and for infinite collections.",complexity:4e3,signature:"(any) -> integer",type:()=>"integer",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(e.isEmptyCollection)return n.Zero;let t=e.count;if(!(t===void 0||!isFinite(t)))return n.number(t)}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(any*) -> tuple",type:e=>U(`tuple<${e.map(n=>n.type).join(", ")}>`),canonical:(e,{engine:n})=>n.tuple(...e),eq:Cu,collection:{...ei(),keys:e=>["first","second","last"]}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([e,n])=>U(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[t,i]=Pr(n,e,["string","any"]);return!t.isValid||!i.isValid?n._fn("KeyValuePair",[t,i]):n.tuple(t,i)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([e])=>U(`tuple<${e.type}>`),canonical:(e,{engine:n})=>n.tuple(...di(n,e,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([e,n])=>U(`tuple<${e.type}, ${n.type}>`),canonical:(e,{engine:n})=>n.tuple(...di(n,e,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([e,n,t])=>U(`tuple<${e.type}, ${n.type}, ${t.type}>`),canonical:(e,{engine:n})=>n.tuple(...di(n,e,3))},Range:{complexity:8200,signature:"(number, number?, step: number?) -> indexed_collection<number>",type:e=>e.every(t=>t.isInteger)?U("indexed_collection<integer>"):U("indexed_collection<number>"),canonical:(e,{engine:n})=>e.length===0?null:e.length===1?n._fn("Range",[n.One,e[0].canonical]):e.length===2?n._fn("Range",[e[0].canonical,e[1].canonical]):n._fn("Range",[e[0].canonical,e[1].canonical,e[2].canonical.evaluate()]),eq:(e,n)=>{if(e.operator!==n.operator)return!1;let[t,i,r]=nn(e),[s,o,a]=nn(n);return t===s&&i===o&&r===a},collection:{isLazy:e=>!0,count:e=>{let[n,t,i]=nn(e);return i===0?0:!isFinite(n)||!isFinite(t)?1/0:Math.max(0,Math.floor((t-n)/i)+1)},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return bi(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(g(e)&&e.ops.some(l=>Number.isNaN(l.re)))return;let[i,r,s]=nn(e);if(s===0)return!1;if(s>0){if(t<i||t>r)return!1}else if(t>i||t<r)return!1;let o=(t-i)/s,a=e.engine.tolerance,u=Math.round(o);return u>=0&&Math.abs(o-u)<a},iterator:e=>{let[n,t,i]=nn(e),r=i===0?0:Math.max(0,Math.floor((t-n)/i)+1),s=1;return{next:()=>s===r+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+i*(s-1-1)),done:!1})}},at:(e,n)=>{if(typeof n!="number")return;let[t,i,r]=nn(e);if(r===0)return;let s=Math.max(0,Math.floor((i-t)/r)+1);if(!(n<1||n>s))return e.engine.number(t+r*(n-1))},indexWhere:void 0,subsetOf:(e,n)=>{if(n.operator==="Range"){let[i,r,s]=nn(e),[o,a,u]=nn(n);return i>=o&&r<=a&&s%u===0}if(!n.isCollection)return!1;let t=1;for(let i of n.each()){if(!e.contains(i)||!e.at(t)?.isSame(i))return!1;t++}return!0},eltsgn:e=>{let[n,t,i]=nn(e);return i===0?"zero":i>0?n<=t?"positive":"negative":n>=t?"positive":"negative"},elttype:e=>{if(!g(e))return"finite_integer";for(let n=1;n<=e.nops;n++)if(!e[`op${n}`].isInteger)return"finite_real";return"finite_integer"}}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(number, number) -> set<real>",canonical:([e,n],{engine:t})=>{if(!e||!n)return null;let i=c=>g(c,"Open")?[c.op1,!0]:g(c,"Closed")?[c.op1,!1]:[c,!1],[r,s]=i(e),[o,a]=i(n),[u,l]=Pr(t,[r.canonical,o.canonical],["number","number"]);return!u.isValid||!l.isValid?null:t._fn("Interval",[s?t._fn("Open",[u]):u,a?t._fn("Open",[l]):l])},eq:(e,n)=>{let t=on(e),i=on(n);return!t||!i?!1:t.start===i.start&&t.end===i.end&&t.openStart===i.openStart&&t.openEnd===i.openEnd},collection:{count:e=>1/0,iterator:e=>{let n=on(e);if(!n)return{next:()=>({value:void 0,done:!0})};if(n.start>=n.end)return{next:()=>({value:void 0,done:!0})};let t=e.engine,i=0,r=0;return{next:()=>{let s=Math.pow(2,i);r>=s&&(i++,r=0);let o=(2*r+1)/Math.pow(2,i+1),a=n.start+o*(n.end-n.start);return r++,{value:t.number(a),done:!1}}}},isEmpty:e=>{let n=on(e);if(n)return n.openStart&&n.start===n.end||n.openEnd&&n.start===n.end?!0:n.openStart&&n.openEnd?!1:n.start>=n.end},isFinite:e=>!1,contains:(e,n)=>{let t=on(e);if(!t)return;if(bi(n,"number")===!1)return!1;let i=n.re;if(!Number.isNaN(i))return n.im!==0?!1:Nu(t,i);let r=t.openStart?n.isGreater(t.start):n.isGreaterEqual(t.start);if(r===!1)return!1;let s=t.openEnd?n.isLess(t.end):n.isLessEqual(t.end);if(s===!1)return!1;if(r===!0&&s===!0)return!0},eltsgn:e=>{let n=on(e);if(!n||n.start===n.end)return"unsigned";if(n.start>=0&&!n.openStart)return"non-negative";if(n.end<=0&&!n.openEnd)return"non-positive";if(n.start>0&&n.end>0)return"positive";if(n.start<0&&n.end<0)return"negative"},elttype:e=>{let n=on(e);return n?isFinite(n.start)&&isFinite(n.end)?"finite_real":"real":"never"}}},Linspace:{complexity:8200,signature:"(start: number, end: number?, count: number?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op3.re;return isFinite(n)||(n=vt),Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.re,i=e.op2.re,r=e.op3.re;if(isFinite(r)||(r=vt),r=Math.floor(r),!(!isFinite(t)||!isFinite(i))&&!(n<1||n>r))return r===1?e.engine.number(t):e.engine.number(t+(i-t)*(n-1)/(r-1))},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.re,t=e.op2.re,i;isFinite(t)?i=Math.max(0,isFinite(e.op3.re)?e.op3.re:vt):(t=n,n=1,i=vt),i=Math.floor(i);let r=i>1?i-1:1,s=1;return{next:()=>s===i+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+(t-n)*(s-1-1)/r),done:!1})}},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return bi(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(!g(e))return;let i=e.op1.re,r=e.op2.re;if(Number.isNaN(i)||Number.isNaN(r))return;if(t<i||t>r)return!1;let s=e.op3.re;if(isFinite(s)||(s=vt),s=Math.floor(s),s===0)return!1;if(s===1)return t===i;let o=(r-i)/(s-1),a=(t-i)/o,u=e.engine.tolerance,l=Math.round(a);return l>=0&&l<=s-1&&Math.abs(a-l)<u}}},Contains:{description:"Return True if the collection contains the given element, False otherwise.",complexity:8200,signature:"(collection, element: any) -> boolean",evaluate:([e,n],{engine:t})=>e.contains(n)?t.True:t.False},Count:{description:["Return the number of elements in the collection."],complexity:8200,signature:"(collection) -> integer",evaluate:([e],{engine:n})=>{if(e.isEmptyCollection)return n.Zero;let t=e.count;if(t!==void 0)return n.number(t)},sgn:([e])=>{let n=e.isEmptyCollection;if(n===!0)return"zero";if(n===!1)return"positive"}},IsEmpty:{description:["Return True if the collection is empty, False otherwise."],complexity:8200,signature:"(collection) -> boolean",evaluate:([e],{engine:n})=>e.isEmptyCollection?n.True:n.False},Map:{description:["Return the collection where each element has been transformed by the mapping function.","Equivalent to `[f(x) for x in xs]`."],complexity:8200,lazy:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=sn(n,e[0]?.canonical,"collection"),i=Ze(e[1]);return!t.isValid||!i?null:n._fn("Map",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=re(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each();return{next:()=>{for(;;){let{value:i,done:r}=t.next();return r?{value:void 0,done:!0}:{value:n([i])??e.engine.Nothing,done:!1}}}}},at:(e,n)=>{if(!g(e)||!e.isIndexedCollection||typeof n!="number"||!Number.isFinite(n)||n===0)return;let t=e.op1.at(n);if(t)return re(e.op2)?.([t])}}},Filter:{description:["Return the elements of the collection for which the predicate function returns True.","Equivalent to `[x for x in xs if p(x)]`."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=sn(n,e[0]?.canonical,"collection"),i=Ze(e[1]);return!t.isValid||!i?null:n._fn("Filter",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;if(!e.op1.isFiniteCollection)return 1/0;let n=0;for(let t of e.each())n++;return n},contains:(e,n)=>{if(!g(e)||!e.contains(n))return!1;let t=re(e.op2);return ee(t([n]))==="True"},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=re(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=0,r=e.engine.iterationLimit;return{next:()=>{for(;;){let{value:s,done:o}=t.next();if(i+=1,i>r)throw new Ge({cause:"iteration-limit-exceeded",message:`Iteration limit of ${r} exceeded while evaluating Filter()`});if(o)return{value:void 0,done:!0};let a=n([s]);if(!a)throw new Error(`Invalid filter predicate. ${en(e.op2)}`);if(ee(a)==="True")return{value:s,done:!1};if(ee(a)!=="False")throw new Error(`Filter predicate must return "True" or "False". ${en(e.op2)}`)}}}},at:(e,n)=>{if(typeof n!="number"||!Number.isFinite(n)||n===0||!g(e))return;let t=re(e.op2);if(!t)return;if(n<0){if(!e.op1.isFiniteCollection)return;let r=Array.from(e.each()),s=r.length+n+1;return s<1||s>r.length?void 0:r[s-1]}let i=0;for(let r of e.op1.each()){let s=ee(t([r]));if(s==="True"){if(i+=1,i===n)return r}else if(s!=="False")throw new Error(`Filter predicate must return "True" or "False". ${en(e.op2)}`)}}}},Reduce:{complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> value",canonical:(e,{engine:n})=>{let t=sn(n,e[0],"collection"),i=Ze(e[1]);if(!t.isValid||!i)return null;let r=e[2]?.canonical;return r?.isValid?n._fn("Reduce",[t,i,r]):n._fn("Reduce",[t,i])},type:e=>U(mr(e[1].type.type)??"unknown"),evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=t!==void 0;if(t??=i.Nothing,t.type.matches("real")&&e.type.matches(i.type("collection<real>"))){let o=i._compile(n);if(o.calling==="lambda"&&o.run)return Xi((function*(){let a=r?t.re:NaN,u=!0;for(let l of e.each())u&&!r?a=l.re:a=o.run(a,l.re),u=!1,yield;return i.expr(a)})(),i._timeRemaining)}let s=re(n);return Xi(Du(e,(o,a)=>s([o,a])??i.Nothing,t),i._timeRemaining)}},Join:{description:["Join the elements of some collections into a flat collection."],complexity:8200,signature:"(collection*) -> collection",type:wp,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=0;for(let t of e.ops){let i=t.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;n+=i}return n},contains:(e,n)=>g(e)?e.ops.some(t=>t.contains(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.ops.map(i=>i.each()),t=0;return{next:()=>{for(;;){let{value:i,done:r}=n[t].next();if(!r)return{value:i,done:!1};if(t+=1,t>=n.length)return{value:void 0,done:!0}}}}},at:(e,n)=>{if(!(typeof n!="number"||!g(e))){if(n<0){let t=0;for(let i of e.ops){let r=i.count;if(r===void 0||!Number.isFinite(r))return;t+=r}n=t+n+1}if(!(n<1))for(let t of e.ops){let i=t.count;if(i===void 0)return;if(n<=i)return t.at(n);n-=i}}}}},At:{description:["Access an element of an indexed collection.","If the index is negative, it is counted from the end.","Multiple indices can be provided to access nested collections (e.g., matrices).","If the index is a finite collection of booleans, returns the elements where the mask is True.","If the index is a finite collection of integers, returns the elements at those indices."],complexity:8200,signature:"(value: indexed_collection, index: (number|string|indexed_collection)+) -> unknown",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??$e(e.type.type)??"any",evaluate:(e,{engine:n})=>{let t=e[0],i=1;for(;e[i];){let s=t.baseDefinition?.collection?.at;if(!s)return;let o=e[i],a=le(o)?o.string:void 0;if(a!==void 0){t=s(t,a)??n.Nothing,i+=1;continue}if(o.isCollection&&o.isFiniteCollection){let l=Array.from(o.each()),c=l.every(m=>{let h=ee(m);return h==="True"||h==="False"}),f=[];if(c)l.forEach((m,h)=>{if(ee(m)!=="True")return;let b=s(t,h+1);b!==void 0&&f.push(b)});else for(let m of l){let h=m.re;if(!Number.isInteger(h))return;let b=s(t,h);b!==void 0&&f.push(b)}t=n._fn("List",f),i+=1;continue}let u=o.re;if(!Number.isInteger(u))return;t=s(t,u)??n.Nothing,i+=1}return t}},Take:{description:["Return `n` elements from a collection."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${q($e(e.type.type)??"any")}>`,evaluate:(e,{engine:n,materialization:t})=>{if(!t)return;let i=n._fn("Take",e),r=Array.from(i.each());return n._fn("List",r)},collection:{isLazy:e=>!0,count:Ru,isEmpty:e=>{if(!g(e))return;let[n,t]=e.ops;if(n.isEmptyCollection)return!0;if(n.isFiniteCollection===!1)return!1;let i=Math.max(0,G(t)??0),r=n.count;if(r!==void 0)return Number.isFinite(i)?Math.min(r,i)===0:!1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:Ap,at:(e,n)=>{if(typeof n!="number"||n===0||!g(e))return;let t=Math.max(0,G(e.op2)??0);if(t===0)return;if(n>0)return n>t?void 0:e.op1.at(n);let i=Ru(e);if(!(i===void 0||i===0)&&!(n<-i))return e.op1.at(i+n)}}},Drop:{description:["Return the collection without the first n elements."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${q($e(e.type.type)??"any")}>`,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;if(n.isEmptyCollection)return 0;let r=G(t)??0;return r>=i?0:Math.max(0,i-r)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let[n,t]=e.ops,i=G(t)??0;if(i<=0)return n.each();let r=n.count,s=i+1;return{next:()=>{if(r!==void 0&&s>r)return{value:void 0,done:!0};let o=n.at(s++);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let[t,i]=e.ops,r=G(i)??0;if(r<=0)return t.at(n);if(n<0){let s=t.count;return s!==void 0&&-n>s-r?void 0:t.at(n)}if(!(n<1))return t.at(n+r)}}},First:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(1)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Second:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(2)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Third:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(3)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Last:{complexity:8200,signature:"(collection) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.at(-1)??n.Nothing},Rest:{description:["Return the collection without the first element.","If the collection has only one element, return an empty collection."],complexity:8200,signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isEmpty:e=>{if(!g(e))return;if(e.op1.isEmptyCollection)return!0;let n=e.op1.count;if(n!==void 0)return n<=1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1,t=n.count,i=2;return{next:()=>{if(t!==void 0&&i>t)return{value:void 0,done:!0};let r=n.at(i);return r===void 0?{value:void 0,done:!0}:(i+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(n>0?n+1:n)}}},Most:{complexity:8200,description:["Return the collection without the last element.","If the collection has only one element, return an empty collection."],signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},isEmpty:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return n<=1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=1)return{next:()=>({value:void 0,done:!0})};let t=1,i=n-1;return{next:()=>t>i?{value:void 0,done:!0}:{value:e.op1.at(t++),done:!1}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t!==void 0&&(n<1&&(n=t+1+n),!(n<1||n>t-1)))return e.op1.at(n)}}},Slice:{description:["Return a range of elements from an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: indexed_collection, start: number, end: number) -> list",type:([e])=>U(`list<${q($e(e.type.type)??"any")}>`),collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=G(e.op2)??1;if(t<1&&(t=n+1+t),t<1&&(t=1),t>n)return 0;let i=G(e.op3)??n;return i<1&&(i=n+1+i),i<1&&(i=1),i>n&&(i=n),Math.max(0,i-t+1)},isFinite:e=>!0,at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0)return;let i=G(e.op2)??1;if(i<1&&(i=t+1+i),i<1&&(i=1),i>t)return;let r=G(e.op3)??t;r<1&&(r=t+1+r),r<1&&(r=1),r>t&&(r=t);let s=r-i+1;if(!(s<=0)&&(n<0&&(n=s+1+n),!(n<1||n>s)))return e.op1.at(i+n-1)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=G(e.op2)??1,t=e.op1.count;if(t===void 0)return{next:()=>({value:void 0,done:!0})};if(n<1&&(n=t+1+n),n<1&&(n=1),n>t)return{next:()=>({value:void 0,done:!0})};let i=G(e.op3)??t;i<1&&(i=t+1+i),i<1&&(i=1),i>t&&(i=t);let r=n,s=i;return{next:()=>{if(r>s)return{value:void 0,done:!0};let o=e.op1.at(r);return r+=1,{value:o,done:!1}}}}}},Reverse:{complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:([e])=>e.type,collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=-1;return{next:()=>{if(n===0)return{value:void 0,done:!0};let t=e.op1.at(n);return n-=1,{value:t,done:!1}}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(-n)}}},RotateLeft:{description:"Rotate the elements of the collection to the left by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=G(e.op2)??1;t=(t%n+n)%n;let i=1,r=n;return{next:()=>{if(i===r+1)return{value:void 0,done:!0};i+=1;let s=e.op1.at((i-1-1+t)%n+1);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=G(e.op2)??1;return i=(i%t+t)%t,e.op1.at((n-1+i)%t+1)}}},RotateRight:{description:"Rotate the elements of the collection to the right by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=G(e.op2)??1;t=(t%n+n)%n;let i=1;return{next:()=>{if(i===n+1)return{value:void 0,done:!0};i+=1;let r=(i-1-1+(n-t))%n+1,s=e.op1.at(r);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=G(e.op2)??1;i=(i%t+t)%t;let r=(n-1+(t-i))%t+1;return e.op1.at(r)}}},IndexOf:{description:"Return the 1-based index of the first occurrence of value in collection, or 0 if not found.",complexity:8200,signature:"(collection, any) -> integer",evaluate:([e,n],{engine:t})=>{let i=e.indexWhere(r=>r.isSame(n))??void 0;return t.number(i??0)}},IndexWhere:{description:"Return the 1-based index of the first element satisfying the predicate, or 0 if not found.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=re(n);if(!i)return t.Zero;let r=e.indexWhere(s=>{let o=ee(i([s]));if(o==="True")return!0;if(o==="False")return!1;throw new Error(`Filter predicate must return "True" or "False". ${en(n)}`)})??void 0;return t.number(r??0)}},Find:{description:"Return the first element of the collection satisfying the predicate, or Nothing if none found.",complexity:8200,signature:"(collection, function) -> any",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{let i=re(n);if(!i)return t.Nothing;for(let r of e.each()){let s=ee(i([r]));if(s!=="False"){if(s==="True")return r;throw new Error(`Filter predicate must return "True" or "False". ${en(n)}`)}}return t.Nothing}},CountIf:{description:"Return the number of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=re(n);if(!i)return t.Zero;let r=0;for(let s of e.each()){let o=ee(i([s]));if(o!=="False")if(o==="True")r++;else throw new Error(`Filter predicate must return "True" or "False". ${en(n)}`)}return t.number(r)}},Position:{description:"Return a list of indexes of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> list<integer>",type:()=>"list<integer>",evaluate:([e,n],{engine:t})=>{let i=re(n);if(!i)return t.function("List",[]);let r=[],s=1;for(let o of e.each()){let a=ee(i([o]));if(a==="True")r.push(t.number(s));else if(a!=="False")throw new Error(`Filter predicate must return "True" or "False". ${en(n)}`);s++}return t.function("List",r)}},Ordering:{description:"Return the indexes that would sort the collection.",complexity:8200,signature:"(indexed_collection, function?) -> list<integer>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function("List",[]);let i=$u(e,n);return i?t.function("List",i):t.function("List",[])}},Sort:{description:"Return the elements of the collection sorted according to the given comparison function.",complexity:8200,signature:"(indexed_collection, function?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function(e.operator,[]);let i=$u(e,n);if(i)return t.function(e.operator,i.map(r=>e.at(r)))}},Shuffle:{description:"Randomize the order of the elements in the collection. With an optional `seed` argument, the shuffle is deterministic.",complexity:8200,signature:"(indexed_collection, real?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=Array.from(e.each()),r=n?.re;if(r!==void 0&&!Number.isNaN(r)){let s=r;for(let o=i.length-1;o>0;o--){let a=Math.floor(Tu(s)*(o+1));[i[o],i[a]]=[i[a],i[o]],s=Iu(s)}}else for(let s=i.length-1;s>0;s--){let o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}return t.function(e.operator,i)}},Tabulate:{description:"Create a collection by applying a function to each index in the specified dimensions.",complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",canonical:(e,{engine:n})=>{let t=Ze(e[0]);return t?e[2]?n._fn("Tabulate",[t,sn(n,e[1]?.canonical,"integer"),sn(n,e[2]?.canonical,"integer")]):n._fn("Tabulate",[t,sn(n,e[1]?.canonical,"integer")]):null},evaluate:(e,{engine:n})=>{let t=re(e[0]);if(!t)return;if(e.length===1)return n._fn("List",[]);let i=e.slice(1).map(s=>G(s));if(i.some(s=>s===null||s<=0))return;if(i.length===1)return n._fn("List",Array.from({length:i[0]??0},(s,o)=>t([n.number(o+1)])??n.Nothing));let r=(s,o,a=0)=>{if(a===s.length){let l=o.map(c=>n.number(c));return t(l)??n.Nothing}let u=["List"];for(let l=1;l<=s[a];l++)o[a]=l,u.push(r(s,o,a+1));return u};return n.expr(r(i,Array(i.length).fill(0)))}},Tally:{description:"Return a tuple with the unique elements of the collection and their respective counts.",complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:([e],{engine:n})=>{let t=e.type.type;return t==="string"?U("tuple<list<string>, list<integer>>"):U(`tuple<list<${q($e(t)??"any")}>, list<integer>>`)},evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Au(e[0]);return n.tuple(n.function("List",t),n.function("List",i))}},Unique:{description:"Return a list of the unique elements of the collection.",complexity:8200,signature:"(collection) -> list",type:([e])=>`list<${q($e(e.type.type)??"any")}>`,evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Au(e[0]);return n.function("List",t)}},Partition:{wikidata:"Q381060",complexity:8200,signature:"(collection, integer | function) -> list",type:([e])=>`list<${q($e(e.type.type)??"any")}>`,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=G(n);if(i!==null&&i>0){let a=Array.from(e.each()),u=[],l=Math.ceil(a.length/i);for(let c=0;c<i;c++){let f=a.slice(c*l,(c+1)*l);u.push(t.function("List",f))}return t.function("List",u)}let r=re(n);if(!r)return;let s=[],o=[];for(let a of e.each()){let u=ee(r([a]));if(u==="True")s.push(a);else if(u==="False")o.push(a);else throw new Error(`Partition predicate must return "True" or "False". ${en(n)}`)}return t.function("List",[t.function("List",s),t.function("List",o)])}},Chunk:{description:"Split the collection into `k` nearly equal-sized chunks.",complexity:8200,signature:"(collection, integer) -> list<list>",evaluate:([e,n],{engine:t})=>{let i=G(n);if(!e.isFiniteCollection||i===null||i<=0)return;let r=Array.from(e.each()),s=[],o=Math.ceil(r.length/i);for(let a=0;a<i;a++){let u=r.slice(a*o,(a+1)*o);s.push(t.function("List",u))}return t.function("List",s)}},GroupBy:{description:["Partition the collection into a dictionary of lists based on the key returned by the function."],complexity:8200,signature:"(collection, function) -> dictionary<list>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=re(n);if(!i)return;let r={};for(let s of e.each()){let o=i([s])??t.Nothing,a=(T(o)?o.symbol:void 0)??(le(o)?o.string:void 0)??o.toString();a in r||(r[a]=[]),r[a].push(s)}return t.function("Dictionary",Object.entries(r).map(([s,o])=>t._fn("Tuple",[t.string(s),t.function("List",o)])))}},Zip:{description:"Combine multiple collections element-wise into a list of tuples. The result has the length of the shortest input.",complexity:8200,signature:"(indexed_collection+) -> list",collection:{isLazy:e=>!0,count:Br,isFinite:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isFiniteCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},isEmpty:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isEmptyCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Br(e);if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=1;return{next:()=>{if(t===n+1)return{value:void 0,done:!0};t+=1;let i=e.ops.map(r=>r.at(t-1));return i.some(r=>r===void 0)?{value:void 0,done:!0}:{value:e.engine.tuple(...i),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=Br(e);if(t===void 0||n<1||n>t)return;let i=e.ops.map(r=>r.at(n));if(!i.some(r=>r===void 0))return e.engine.tuple(...i)}}},Iterate:{description:"Produce an infinite sequence by repeatedly applying a function to the previous value, starting with an initial value.",complexity:8200,signature:"((index: integer, acc:any) -> any, initial: any?) -> list",canonical:([e,n],{engine:t})=>{let i=Ze(e);if(!i)return null;let r=n?.canonical;return r?t._fn("Iterate",[i,r]):t._fn("Iterate",[i])},collection:{isLazy:e=>!0,count:()=>1/0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=re(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op2??e.engine.Nothing,i=0;return{next:()=>(i+=1,t=n([e.engine.number(i),t])??e.engine.Nothing,{value:t,done:!1})}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=re(e.op1);if(!t)return;let i=e.op2??e.engine.Nothing;for(let r=1;r<n;r++)i=t([e.engine.number(r),i])??e.engine.Nothing;return i}}},Repeat:{description:"Produce a sequence by repeating a single value. With 1 argument, returns an infinite sequence; with 2 arguments (value, count), returns a finite list of `count` copies.",complexity:8200,signature:"(value: any, count: integer?) -> list",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let t=G(e[1]);if(t===null)return;let i=Math.max(0,t);if(!(i>n.maxCollectionSize))return n._fn("List",Array(i).fill(e[0]))},collection:{isLazy:e=>g(e)&&e.ops?.length===1,count:e=>{if(g(e)){if(e.ops?.length===2){let n=G(e.op2);return n!==null?Math.max(0,n):void 0}return 1/0}},isEmpty:e=>{if(g(e)){if(e.ops?.length===2){let n=G(e.op2);return n!==null?n<=0:void 0}return!1}},isFinite:e=>g(e)&&e.ops?.length===2,contains:(e,n)=>{if(!g(e))return!1;if(e.ops?.length===2){let t=G(e.op2);if(t!==null&&t<=0)return!1}return e.op1.isSame(n)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.ops?.length===2){let n=G(e.op2);if(n===null)return{next:()=>({value:void 0,done:!0})};let t=Math.max(0,n),i=0;return{next:()=>i++<t?{value:e.op1,done:!1}:{value:void 0,done:!0}}}return{next:()=>({value:e.op1,done:!1})}},at:(e,n)=>{if(g(e)&&typeof n=="number"){if(e.ops?.length===2){let t=G(e.op2),i=t!==null?Math.max(0,t):0;if(n<1||n>i)return}else if(n<1)return;return e.op1}}}},Cycle:{description:"Produce an infinite sequence by cycling through the elements of a finite collection.",complexity:8200,signature:"(list) -> list",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.isEmptyCollection?0:1/0},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isEmptyCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.op1.count;return t===void 0||t===0?{next:()=>({value:void 0,done:!0})}:{next:()=>{let i=(n-1)%t+1,r=e.op1.at(i);return r===void 0?{value:void 0,done:!0}:(n+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=e.op1.count;if(t===void 0||t===0)return;let i=(n-1)%t+1;return e.op1.at(i)}}},Fill:{description:"Produce a 2D list (matrix) by applying a function to each pair of row and column indexes.",complexity:8200,signature:"(function, tuple) -> list",collection:{isLazy:e=>!0,count:e=>!g(e)||!g(e.op2)?void 0:e.op2.ops.map(t=>G(t)??0)[0]??0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=re(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};if(!g(e.op2))return{next:()=>({value:void 0,done:!0})};let t=e.op2.ops.map(a=>G(a)??0),i=t[0]??0,r=t[1]??0,s=i,o=1;return{next:()=>{if(o===s+1)return{value:void 0,done:!0};o+=1;let a=[];for(let u=1;u<=r;u++)a.push(n([e.engine.number(o-1),e.engine.number(u)])??e.engine.Nothing);return{value:e.engine.function("List",a),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=re(e.op1);if(!t||!g(e.op2))return;let i=e.op2.ops.map(u=>G(u)??0),r=i[0]??0,s=i[1]??0;if(n>r*s)return;let o=Math.ceil(n/s),a=(n-1)%s+1;return t([e.engine.number(o),e.engine.number(a)])??e.engine.Nothing}}},ListFrom:{description:"Create a list from the elements of a collection.",complexity:8200,signature:"(value*) -> list",type:e=>{if(e.length===0)return"list";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"list";n=ye(n,$e(t.type.type)??n)}return U(`list<${q(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("List",t)}},SetFrom:{description:"Create a set from the elements of a collection.",complexity:8200,signature:"(value*) -> set",type:e=>{if(e.length===0)return"set";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"set";n=ye(n,$e(t.type.type)??n)}return U(`set<${q(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("Set",t)}},TupleFrom:{description:"Create a tuple from the elements of a collection.",complexity:8200,signature:"(value*) -> tuple",evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.tuple(...t)}},DictionaryFrom:{description:"Create a dictionary from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> dictionary",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Record"))return n.function("Dictionary",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!le(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Dictionary",t)}},RecordFrom:{description:"Create a record from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> record",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Dictionary"))return n.function("Record",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!le(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Record",t)}}};function nn(e){if(!g(e))return[1,0,0];if(e.nops===0)return[1,0,0];let n=e.op1.re;if(!isFinite(n)&&!n&&(n=1),e.nops===1)return[1,n,1];let t=e.op2.re;if(!isFinite(t)&&!t&&(t=1),e.nops===2)return[n,t,t>=n?1:-1];let i=e.op3.re;return!isFinite(i)&&!i&&(i=1),[n,t,i]}function Sp(e,{engine:n}){let t=e[0];if(e.length===1&&g(t,"Matrix")){let[r,s,o]=t.ops;if(!s||le(s)&&s.string==="..")return o?n._fn("Matrix",[r,n.string("[]"),o]):n._fn("Matrix",[r,s])}let i=e.map(r=>g(r,"Delimiter")?g(r.op1,"Sequence")?n._fn("List",_u(n,r.op1.ops)):n._fn("List",[r.op1?.canonical??n.Nothing]):r.canonical);return n._fn("List",i)}function kp(e,{engine:n}){if(e=e.map(r=>r.canonical),Oe(e)!==null)return n._fn("Set",[...e]);let t=[],i=r=>t.some(s=>s.isSame(r));for(let r of e)i(r)||t.push(r);return n._fn("Set",t)}function Oe(e){if(e.length!==2)return null;let[n,t]=e,i=r=>r.isCanonical?r:r.canonical;if(g(t,"Element")&&t.nops>=2){if(!T(t.op1))return null;let r=t.op1.symbol;if(!n.has(r))return null;let s=t.nops>=3&&ee(t.op3)!=="Nothing"?t.op3:void 0;return{body:n,variable:r,domain:t.op2,condition:s}}if(g(t,"Condition")&&t.nops>=1){let r=t.op1;if(g(n,"Element")&&n.nops===2&&T(n.op1))return{body:n.op1,variable:n.op1.symbol,domain:i(n.op2),condition:i(r)};if(g(r,"Element")&&r.nops===2&&T(r.op1)){let s=r.op1.symbol;if(n.has(s))return{body:n,variable:s,domain:i(r.op2),condition:void 0}}if(g(r,"And")){let s=r.ops.filter(a=>g(a,"Element")&&a.nops===2&&T(a.op1)&&n.has(a.op1.symbol)),o=s.length===1?s[0]:void 0;if(o&&g(o,"Element")&&T(o.op1)){let a=r.ops.filter(c=>c!==o).map(i),u=n.engine,l=a.length===0?void 0:a.length===1?a[0]:u._fn("And",a);return{body:n,variable:o.op1.symbol,domain:i(o.op2),condition:l}}}return{body:n,variable:T(n)?n.symbol:void 0,domain:void 0,condition:r}}return null}function kn(e){let{body:n,variable:t,domain:i,condition:r}=e;if(t===void 0||i===void 0)return;let s=n.engine,o=c=>Or(s._fn("Element",[s.symbol(t),c,...r?[r]:[]]),s),a=o(i);if(a.status!=="success"){let c=i.evaluate();c.isSame(i)||(a=o(c))}if(a.status!=="success")return;let u=T(n)&&n.symbol===t,l=[];for(let c of a.values){let f=u?c:n.subs({[t]:c}).evaluate();l.some(m=>m.isSame(f))||l.push(f)}return l}function Pu(e,n){let t=!1;for(let i of e){if(n.isSame(i))return!0;if(R(n)&&R(i)){let r=n.isEqual(i);if(r===!0)return!0;r!==!1&&(t=!0)}else le(n)&&le(i)||(t=!0)}return t?void 0:!1}function Mp(e,n){let t=kn(e);if(t!==void 0)return Pu(t,n);if(e.domain!==void 0&&e.variable!==void 0&&T(e.body)&&e.body.symbol===e.variable){let i=e.domain.contains(n);if(i===!1)return!1;let r=!0;if(e.condition!==void 0)if(R(n)||le(n)){let s=e.condition.subs({[e.variable]:n}).evaluate();r=ee(s)==="True"?!0:ee(s)==="False"?!1:void 0}else r=void 0;if(r===!1)return!1;if(i===!0&&r===!0)return!0}}function Au(e){let n=[],t=[],i=r=>{for(let s=0;s<n.length;s++)if(n[s].isSame(r))return s;return-1};for(let r of e.each()){let s=i(r);s>=0?t[s]++:(n.push(r),t.push(1))}return[n,t]}function*Du(e,n,t){let i=t;for(let r of e.each()){let s=n(i,r);if(s===null)return;yield i,i=s}return i}function wp(e){return e.some(n=>n.type.matches("record"))?"record":e.some(n=>n.type.matches("dictionary"))?"dictionary":e.some(n=>n.type.matches("set"))?"set":"list"}function Cu(e,n){return e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops?!1:e.ops.every((t,i)=>t.isSame(n.ops[i]))}function $u(e,n=void 0){let t=n?re(n):void 0,i=t?(o,a)=>{let u=t([o,a]);return u?.isNegative?-1:u?.isSame(0)?0:1}:(o,a)=>o.isLess(a)?-1:o.isEqual(a)?0:1,r=e.count;if(r===void 0||!Number.isFinite(r)||r<1)return;let s=Array.from({length:r},(o,a)=>a+1);return s.sort((o,a)=>{let u=e.at(o),l=e.at(a);return i(u,l)}),s}function Lr(e){if(e.length===0)return[];let n=[];for(let t of e)ee(t)!=="Nothing"&&(g(t,"Sequence")?n.push(...Lr([...t.ops])):le(t)?n.push(t):t.isCollection?n.push(...Lr([...t.each()])):n.push(t));return n}function Ap(e){if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Math.max(0,G(e.op2)??0);if(n===0)return{next:()=>({value:void 0,done:!0})};let t=1,i=0;return{next:()=>{if(i>=Math.abs(n))return{value:void 0,done:!0};let r=e.op1.at(t);return r?(t+=1,i+=1,{value:r,done:!1}):{value:void 0,done:!0}}}}function Ru(e){if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;let r=Math.max(0,G(t)??0);return Number.isFinite(r)?Math.min(i,r):1/0}function Br(e){if(!g(e))return;let n=e.ops.map(t=>t.count);if(!n.some(t=>t===void 0))return n.some(t=>!Number.isFinite(t))?1/0:n.length===0?0:Math.min(...n)}function Fu(e){e?.operator,g(e);let n=1,t=n+Rn,i,r=!0,s=e,o=s.op1;i=T(o)?o.symbol:void 0,n=Math.floor(s.op2.re),isNaN(n)&&(n=1),Number.isFinite(n)||(r=!1);let a=s.op3;return(T(a)?a.symbol:void 0)==="Nothing"||a.isInfinity?(r=!1,t=1/0):(isNaN(a.re)||(t=Math.floor(a.re??t)),Number.isFinite(t)||(r=!1)),r||(!Number.isFinite(n)&&!Number.isFinite(t)?(n=-Rn/2,t=n+Rn):Number.isFinite(n)?t=n+Rn:n=t-Rn),{index:i,lower:n,upper:t,isFinite:r}}var y=class e{static compile(n,t,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);if(T(n)){let r=n.symbol,s=t.operators?.(r);return s!==void 0?`(a,b) => a ${s[0]} b`:t.var?.(r)??r}if(R(n)){if(n.im!==0){if(!t.complex)throw new Error("Complex numbers are not supported by this target");return t.complex(n.re,n.im)}return t.number(n.re)}if(le(n))return t.string(n.string);if(!g(n))throw new Error(`Cannot compile expression: "${n.toString()}"`);return e.compileExpr(n.engine,n.operator,n.ops,i,t)}static compileExpr(n,t,i,r,s){if(t==="Error")throw new Error("Error");if(t==="Sequence")return i.length===0?"":`(${i.map(u=>e.compile(u,s,r)).join(", ")})`;if(t==="Sum"||t==="Product"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):typeof u=="string"?`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:e.compileLoop(t,i,s)}let o=s.operators?.(t);if(o!==void 0&&!i.some(l=>e.isComplexValued(l))){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o[0]))return`${o[0]}(${i.map(c=>e.compile(c,s)).join(", ")})`;if(i.every(c=>!c.isCollection)){if(gr(t)&&i.length>2){let f=[];for(let m=0;m<i.length-1;m++)f.push(e.compileExpr(n,t,[i[m],i[m+1]],o[1],s));return`(${f.join(") && (")})`}let c;if(i.length===1)c=`${o[0]}${e.compile(i[0],s,o[1])}`;else{let f=t==="Power";c=i.map((m,h)=>{let b=f&&h<i.length-1?o[1]+1:o[1];return e.compile(m,s,b)}).join(` ${o[0]} `)}return o[1]<r?`(${c})`:c}}if(t==="Function"){let u=s.functions?.(t);if(typeof u=="function")return u(i,c=>e.compile(c,s),s);let l=i.slice(1).map(c=>T(c)?c.symbol:"_");return`((${l.join(", ")}) => ${e.compile(i[0].canonical,{...s,var:c=>l.includes(c)?c:s.var(c)})})`}if(t==="Declare"){let u=T(i[0])?i[0].symbol:"_";return s.declare?s.declare(u):`let ${u}`}if(t==="Assign")return`${T(i[0])?i[0].symbol:"_"} = ${e.compile(i[1],s)}`;if(t==="Return")return`return ${e.compile(i[0],s)}`;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Loop"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):e.compileForLoop(i,s)}if(t==="If"){if(i.length!==3)throw new Error("If: wrong number of arguments");let u=s.functions?.(t);return u?typeof u=="function"?u(i,l=>e.compile(l,s),s):`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:`((${e.compile(i[0],s)}) ? (${e.compile(i[1],s)}) : (${e.compile(i[2],s)}))`}if(t==="Which"){if(i.length<2||i.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,c=>e.compile(c,s),s):`${u}(${i.map(c=>e.compile(c,s)).join(", ")})`;let l=c=>{if(c>=i.length)return"NaN";let f=i[c],m=i[c+1];return T(f,"True")?`(${e.compile(m,s)})`:`((${e.compile(f,s)}) ? (${e.compile(m,s)}) : ${l(c+2)})`};return l(0)}if(t==="When"){if(i.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,f=>e.compile(f,s),s):`${u}(${i.map(f=>e.compile(f,s)).join(", ")})`;if(T(i[1],"True"))return`(${e.compile(i[0],s)})`;if(T(i[1],"False"))return"NaN";let l=e.compile(i[0],s);return`((${e.compile(i[1],s)}) ? (${l}) : NaN)`}if(t==="Block")return e.compileBlock(i,s);let a=s.functions?.(t);if(!a)throw new Error(`Unknown operator \`${t}\``);if(typeof a=="function"){let u=n.lookupDefinition(t);if(yt(u)&&u.operator.broadcastable&&i.length===1&&Kt(i[0])){let l=e.tempVar();return`(${e.compile(i[0],s)}).map((${l}) => ${a([i[0].engine.expr(l)],c=>e.compile(c,s),s)})`}return a(i,l=>e.compile(l,s),s)}return`${a}(${i.map(u=>e.compile(u,s)).join(", ")})`}static compileBlock(n,t){let i=[];for(let a of n)if(g(a,"Declare")){let u=a.ops[0];T(u)&&i.push(u.symbol)}if(n.length===1&&i.length===0)return e.compile(n[0],t);let r={};if(t.declare&&t.language){let u=t.language==="wgsl"?"vec2f":"vec2";for(let l of i)for(let c of n){if(g(c,"Declare")&&T(c.ops[0],l)&&T(c.ops[1],"complex")){r[l]=u;break}if(g(c,"Assign")&&T(c.ops[0],l)){e.isComplexValued(c.ops[1])&&(r[l]=u);break}}}let s={...t,var:a=>i.includes(a)?a:t.var(a)},o=n.filter(a=>!T(a,"Nothing")).map(a=>g(a,"Declare")&&T(a.ops[0])&&t.declare?t.declare(a.ops[0].symbol,r[a.ops[0].symbol]):e.compile(a,s)).filter(a=>a!=="");return o.length===0?"":t.block?t.block(o):(o[o.length-1]=`return ${o[o.length-1]}`,`(() => {${t.ws(`
9
+ `)}`}var pe=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Me=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},Cp=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var t=e*e;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},$p=function(e,n){var t=Math.abs(e),i=Math.abs(n);return t<3e3&&i<3e3?Math.sqrt(t*t+i*i):(t<i?(t=i,i=e/n):i=n/e,t*Math.sqrt(1+i*i))},zn=function(){throw SyntaxError("Invalid Param")};function zr(e,n){var t=Math.abs(e),i=Math.abs(n);return e===0?Math.log(i):n===0?Math.log(t):t<3e3&&i<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var Rp=function(e,n){var t={re:0,im:0};if(e==null)t.re=t.im=0;else if(n!==void 0)t.re=e,t.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)t.re=e.re,t.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return R.INFINITY;t.re=e.abs*Math.cos(e.arg),t.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return R.INFINITY;t.re=e.r*Math.cos(e.phi),t.im=e.r*Math.sin(e.phi)}else e.length===2?(t.re=e[0],t.im=e[1]):zn();break;case"string":t.im=t.re=0;var i=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,s=0;i===null&&zn();for(var o=0;o<i.length;o++){var a=i[o];a===" "||a===" "||a===`
10
+ `||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&zn(),i[o+1]!==" "&&!isNaN(Number(i[o+1]))?(t.im+=parseFloat((s%2?"-":"")+i[o+1]),o++):t.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&zn(),i[o+1]==="i"||i[o+1]==="I"?(t.im+=parseFloat((s%2?"-":"")+a),o++):t.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&zn();break;case"number":t.im=0,t.re=e;break;default:zn()}return isNaN(t.re)||isNaN(t.im),t},R=class e{constructor(n,t){this.re=0,this.im=0;var i=Rp(n,t);this.re=i.re,this.im=i.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re+i.re,this.im+i.im)}sub(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re-i.re,this.im-i.im)}mul(n,t){var i=new e(n,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:i.im===0&&this.im===0?new e(this.re*i.re,0):new e(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(n,t){var i=new e(n,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return e.NAN;if(this.isInfinite()||i.isZero())return e.INFINITY;if(this.isZero()||i.isInfinite())return e.ZERO;n=this.re,t=this.im;var r=i.re,s=i.im,o,a;return s===0?new e(n/r,t/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new e((n*a+t)/o,(t*a-n)/o)):(a=s/r,o=s*a+r,new e((n+t*a)/o,(t-n*a)/o))}pow(n,t){var i=new e(n,t);if(n=this.re,t=this.im,i.isZero())return e.ONE;if(i.im===0){if(t===0&&n>0)return new e(Math.pow(n,i.re),0);if(n===0)switch((i.re%4+4)%4){case 0:return new e(Math.pow(t,i.re),0);case 1:return new e(0,Math.pow(t,i.re));case 2:return new e(-Math.pow(t,i.re),0);case 3:return new e(0,-Math.pow(t,i.re))}}if(n===0&&t===0&&i.re>0&&i.im>=0)return e.ZERO;var r=Math.atan2(t,n),s=zr(n,t);return n=Math.exp(i.re*s-i.im*r),t=i.im*s+i.re*r,new e(n*Math.cos(t),n*Math.sin(t))}sqrt(){var n=this.re,t=this.im,i=this.abs(),r,s;if(n>=0){if(t===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(i+n))}else r=Math.abs(t)/Math.sqrt(2*(i-n));return n<=0?s=.5*Math.sqrt(2*(i-n)):s=Math.abs(t)/Math.sqrt(2*(i+n)),new e(r,t<0?-s:s)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,t=this.im;return new e(Math.expm1(n)*Math.cos(t)+Cp(t),Math.exp(n)*Math.sin(t))}log(){var n=this.re,t=this.im;return t===0&&n>0,new e(zr(n,t),Math.atan2(t,n))}abs(){return $p(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,t=this.im;return new e(Math.sin(n)*pe(t),Math.cos(n)*Me(t))}cos(){var n=this.re,t=this.im;return new e(Math.cos(n)*pe(t),-Math.sin(n)*Me(t))}tan(){var n=2*this.re,t=2*this.im,i=Math.cos(n)+pe(t);return new e(Math.sin(n)/i,Me(t)/i)}cot(){var n=2*this.re,t=2*this.im,i=Math.cos(n)-pe(t);return new e(-Math.sin(n)/i,Me(t)/i)}sec(){var n=this.re,t=this.im,i=.5*pe(2*t)+.5*Math.cos(2*n);return new e(Math.cos(n)*pe(t)/i,Math.sin(n)*Me(t)/i)}csc(){var n=this.re,t=this.im,i=.5*pe(2*t)-.5*Math.cos(2*n);return new e(Math.sin(n)*pe(t)/i,-Math.cos(n)*Me(t)/i)}asin(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,t=this.im;if(n===0){if(t===1)return new e(0,1/0);if(t===-1)return new e(0,-1/0)}var i=n*n+(1-t)*(1-t),r=new e((1-t*t-n*n)/i,-2*n/i).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,t=this.im;if(t===0)return new e(Math.atan2(1,n),0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atan():new e(n!==0?n/0:0,t!==0?-t/0:0).atan()}asec(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acos():new e(n!==0?n/0:0,t!==0?-t/0:0).acos()}acsc(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(Math.PI/2,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asin():new e(n!==0?n/0:0,t!==0?-t/0:0).asin()}sinh(){var n=this.re,t=this.im;return new e(Me(n)*Math.cos(t),pe(n)*Math.sin(t))}cosh(){var n=this.re,t=this.im;return new e(pe(n)*Math.cos(t),Me(n)*Math.sin(t))}tanh(){var n=2*this.re,t=2*this.im,i=pe(n)+Math.cos(t);return new e(Me(n)/i,Math.sin(t)/i)}coth(){var n=2*this.re,t=2*this.im,i=pe(n)-Math.cos(t);return new e(Me(n)/i,-Math.sin(t)/i)}csch(){var n=this.re,t=this.im,i=Math.cos(2*t)-pe(2*n);return new e(-2*Me(n)*Math.cos(t)/i,2*pe(n)*Math.sin(t)/i)}sech(){var n=this.re,t=this.im,i=Math.cos(2*t)+pe(2*n);return new e(2*pe(n)*Math.cos(t)/i,-2*Me(n)*Math.sin(t)/i)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var t=this.asin();return this.re=-this.im,this.im=n,n=t.re,t.re=-t.im,t.im=n,t}acosh(){var n=this.acos();if(n.im<=0){var t=n.re;n.re=-n.im,n.im=t}else{var t=n.im;n.im=-n.re,n.re=t}return n}atanh(){var n=this.re,t=this.im,i=n>1&&t===0,r=1-n,s=1+n,o=r*r+t*t,a=o!==0?new e((s*r-t*t)/o,(t*r+s*t)/o):new e(n!==-1?n/0:0,t!==0?t/0:0),u=a.re;return a.re=zr(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,Math.PI/2);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atanh():new e(n!==0?n/0:0,t!==0?-t/0:0).atanh()}acsch(){var n=this.re,t=this.im;if(t===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asinh():new e(n!==0?n/0:0,t!==0?-t/0:0).asinh()}asech(){var n=this.re,t=this.im;if(this.isZero())return e.INFINITY;var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acosh():new e(n!==0?n/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,t=this.im,i=n*n+t*t;return new e(n/i,-t/i)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,t){var i=new e(n,t);return Math.abs(i.re-this.re)<=e.EPSILON&&Math.abs(i.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(t)<e.EPSILON&&(t=0),t===0?i+n:(n!==0?(i+=n,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};R.ZERO=new R(0,0);R.ONE=new R(1,0);R.I=new R(0,1);R.PI=new R(Math.PI,0);R.E=new R(Math.E,0);R.INFINITY=new R(1/0,1/0);R.NAN=new R(NaN,NaN);R.EPSILON=1e-15;function Re(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-$e&&e<=$e?e:null;if(!D(e))return null;let n=e.numericValue;if(typeof n=="number")return Number.isInteger(n)&&n>=-$e&&n<=$e?n:null;if(n.im!==0)return null;let t=n.re;return Number.isInteger(t)&&t>=-$e&&t<=$e?Number(t):null}function Y(e){if(!D(e))return null;let n=e.numericValue;return Math.round(typeof n=="number"?n:n.re)}function zp(e,n,t,i){return e.filter(r=>{let o=t.subs({[n]:r}).evaluate();return ie(o)==="True"})}function jr(e,n){if(e.operator!=="Element")return{status:"error",reason:"expected-element-expression"};if(!g(e))return{status:"error",reason:"expected-element-expression"};let t=I(e.op1)?e.op1.symbol:void 0;if(!t)return{status:"error",reason:"expected-index-variable"};let i=e.op2;if(!i)return{status:"error",reason:"expected-domain"};let r=e.op3,s=e.nops>=3&&r&&ie(r)!=="Nothing"?r:null,o=u=>{if(s){let l=zp(u,t,s,n);return{status:"success",variable:t,values:l}}return{status:"success",variable:t,values:u}};if(i.operator==="Set"||i.operator==="List"){let u=g(i)?i.ops:void 0;if(u&&u.length<=1e3){if(i.operator==="List"&&u.length===2){let l=Re(u[0]),c=Re(u[1]);if(l!==null&&c!==null){let f=c-l+1;if(f>0&&f<=1e3){let p=[];for(let d=l;d<=c;d++)p.push(n.number(d));return o(p)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}}return o([...u])}return u&&u.length>1e3?{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}:{status:"error",reason:"empty-domain"}}if(g(i,"Range")){let u=Re(i.op1),l=Re(i.op2),c=i.ops.length>=3?Re(i.op3):1;if(u!==null&&l!==null&&c!==null&&c!==0){let f=Math.floor((l-u)/c)+1;if(f>0&&f<=1e3){let p=[];for(let d=u;c>0?d<=l:d>=l;d+=c)p.push(n.number(d));return o(p)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}if(g(i,"Interval")){let u=i.op1,l=i.op2,c=!1,f=!1;g(u,"Open")?(c=!0,u=u.op1):g(u,"Closed")&&(u=u.op1),g(l,"Open")?(f=!0,l=l.op1):g(l,"Closed")&&(l=l.op1);let p=Re(u),d=Re(l);if(p!==null&&d!==null){c&&(p+=1),f&&(d-=1);let b=d-p+1;if(b>0&&b<=1e3){let y=[];for(let v=p;v<=d;v++)y.push(n.number(v));return o(y)}if(b>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}let a=ie(i);if(a){if(["Integers","NonNegativeIntegers","PositiveIntegers","NegativeIntegers","Rationals","Reals","PositiveReals","NonNegativeReals","NegativeReals","NonPositiveReals","ExtendedReals","Complexes","ImaginaryNumbers","Numbers","ExtendedComplexes","AlgebraicNumbers","TranscendentalNumbers"].includes(a))return{status:"non-enumerable",variable:t,domain:i,reason:"infinite-domain"};let l=i.value;if(l&&l.operator==="Set"&&g(l)){let c=l.ops;if(c&&c.length<=1e3)return o([...c]);if(c&&c.length>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unknown-domain"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unrecognized-domain-type"}}function Vu(e){return e?._kind==="number"}function Gp(e){return e?._kind==="symbol"}function Tt(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function un(e){if(Tt(e,"Interval")){let n=e.op1,t=e.op2,i=!1,r=!1;Tt(n,"Open")?(i=!0,n=n.op1):Tt(n,"Closed")&&(n=n.op1),Tt(t,"Open")?(r=!0,t=t.op1):Tt(t,"Closed")&&(t=t.op1);let s=n.N(),o=t.N();return!Vu(s)||!Vu(o)?void 0:{start:s.re,openStart:i,end:o.re,openEnd:r}}if(Gp(e)){if(e.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(e.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(e.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(e.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(e.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(e.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function qu(e,n){return!((e.openStart?n<=e.start:n<e.start)||(e.openEnd?n>=e.end:n>e.end))}function Ju(e){let n=Math.sin(e*12.9898)*43758.5453;return n-Math.floor(n)}function zu(e){return e+.6180339887498949}function Gu(e,n,t){return n.every(i=>i.isCanonical)?n:n.map(i=>e.expr(i,{scope:t}))}function Ie(e){if(typeof e=="string")return ma(e)?e:"error";switch(e.kind){case"union":return Uu(e);case"intersection":return Hp(e);case"negation":return jp(e);case"collection":case"indexed_collection":return Up(e.kind,e);case"list":return Zp(e);case"set":return Yp(e);case"tuple":return Wp(e);case"record":return Xp(e);case"dictionary":return Qp(e);case"signature":return Kp(e);case"value":return e;case"reference":return e;default:throw new Error(`Unknown type kind: ${e}`)}}function he(e){return typeof e!="object"||Object.isFrozen(e)||Object.prototype.hasOwnProperty.call(e,"toString")||Object.defineProperty(e,"toString",{value:()=>j(e)}),e}function Hu(e){let n=[],t=new Set;for(let i of e){let r=Ie(i),s=typeof r=="string"?r:j(r);t.has(s)||(t.add(s),n.push(r))}return n}function jp(e){let n=Ie(e.type);return n==="nothing"?"any":n==="any"?"nothing":he({kind:"negation",type:n})}function Uu(e){let n=Hu(e.types);if(n.length===0)return"never";if(n.some(i=>i==="error"))return"error";if(n.length===1)return he(n[0]);let t=[];for(let i of n)if(!t.some(r=>A(i,r))){for(let r=t.length-1;r>=0;r--)A(t[r],i)&&t.splice(r,1);t.push(i)}return t.length===1?he(t[0]):he({kind:"union",types:t})}function Zu(e,n){if(A(e,n))return e;if(A(n,e))return n;if(typeof e=="object"&&e.kind==="union")return ju(e.types,n);if(typeof n=="object"&&n.kind==="union")return ju(n.types,e);if(typeof e=="string"&&typeof n=="string"){let t=Ea(e,n);return t.length===0?"nothing":t.length===1?t[0]:{kind:"union",types:t}}return"nothing"}function ju(e,n){let t=e.map(i=>Zu(i,n)).filter(i=>i!=="nothing");return t.length===0?"nothing":t.length===1?t[0]:Uu({kind:"union",types:t})}function Hp(e){let n=Hu(e.types);if(n.length===0)return"nothing";if(n.some(i=>i==="error"))return"error";let t=n[0];for(let i=1;i<n.length;i++)if(t=Zu(t,n[i]),t==="nothing")return"nothing";return he(t)}function Up(e,n){let t=Ie(n.elements);return t==="error"?"error":t==="nothing"?he({kind:e,elements:"nothing"}):t==="any"?e:he({...n,elements:t})}function Zp(e){let n=Ie(e.elements);if(n==="error")return"error";if(n==="nothing")return he({kind:"list",elements:"nothing"});if(n==="any")return"list";let t=e.dimensions;return t&&(t=t.filter(i=>i>=1||i===-1),t.length===0)?"nothing":he({...e,dimensions:t,elements:n})}function Yp(e){let n=Ie(e.elements);return n==="error"?"error":n==="nothing"?he({kind:"set",elements:"nothing"}):n==="any"?"set":he({...e,elements:n})}function Wp(e){let n=e.elements.map(t=>({...t,type:Ie(t.type)}));return n.length===0?"nothing":n.some(t=>t.type==="error")?"error":(n=n.filter(t=>t.type!=="nothing"),he({...e,elements:n}))}function Xp(e){let n={};for(let[t,i]of Object.entries(e.elements))n[t]=Ie(i);return Object.values(n).some(t=>t==="error")?"error":(n=Object.fromEntries(Object.entries(n).filter(([t,i])=>i!=="nothing")),Object.keys(n).length===0?"record":he({...e,elements:n}))}function Qp(e){let n=Ie(e.values);return n==="error"||n==="nothing"?"error":n==="any"||n==="unknown"?"any":he({kind:"dictionary",values:n})}function Kp(e){let n=e.args?.map(s=>({...s,type:Ie(s.type)})),t=e.optArgs?.map(s=>({...s,type:Ie(s.type)})),i=e.variadicArg?{...e.variadicArg,type:Ie(e.variadicArg.type)}:void 0,r=Ie(e.result);return n?.some(s=>s.type==="error")||t?.some(s=>s.type==="error")||i?.type==="error"||r==="error"?"error":(t=t?.filter(s=>s.type!=="nothing"),n?.length===0&&(t=void 0),t?.length===0&&(t=void 0),i?.type==="nothing"&&(i=void 0),he({...e,args:n,optArgs:t,variadicArg:i,variadicMin:i?e.variadicMin:void 0,result:r}))}function em(e,n){return Ie({kind:"intersection",types:[e,n]})}function Ti(e,n){let t=e.type;if(t.matches(n))return!0;if(em(t.type,n)==="nothing"||D(e))return!1}var It=50,_t=oi(),xv={List:{complexity:8200,signature:"(any*) -> list",type:(e,{engine:n})=>K(`list<${de.widen(...e.map(t=>t.type))}>`),canonical:nm,lazy:!0,evaluate:(e,{engine:n,materialization:t})=>{if(t)return n._fn("List",Ur(e).map(i=>i.evaluate({materialization:t})))},eq:Wu,collection:oi()},Set:{complexity:8200,signature:"(any*) -> set",type:(e,{engine:n})=>Ve(e)!==null?K("set"):K(`set<${de.widen(...e.map(t=>t.type))}>`),canonical:tm,lazy:!0,evaluate:(e,{engine:n,numericApproximation:t,materialization:i})=>{let r=Ve(e);if(r!==null){let s=wn(r);return s===void 0||s.length>Nr?void 0:n.function("Set",s)}return n.function("Set",e.map(s=>s.evaluate({numericApproximation:t,materialization:i})))},eq:(e,n)=>{if(e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops)return!1;let t=i=>n.ops.some(r=>i.isSame(r));return e.ops.every(t)},collection:{..._t,at:void 0,indexWhere:void 0,isLazy:e=>g(e)&&Ve(e.ops)!==null,count:e=>{if(!g(e))return 0;let n=Ve(e.ops);return n===null?e.nops:wn(n)?.length},isEmpty:e=>{if(!g(e))return!0;let n=Ve(e.ops);if(n===null)return e.nops===0;let t=wn(n);return t===void 0?void 0:t.length===0},isFinite:e=>{if(!g(e))return!0;let n=Ve(e.ops);if(n===null||wn(n)!==void 0||n.domain?.isFiniteCollection===!0)return!0},iterator:e=>{if(!g(e))return _t.iterator(e);let n=Ve(e.ops);if(n===null)return _t.iterator(e);let t=wn(n);if(t===void 0)return;let i=0;return{next:()=>i>=t.length?{value:void 0,done:!0}:{value:t[i++],done:!1}}},contains:(e,n)=>{if(!g(e))return;let t=Ve(e.ops);return t!==null?im(t,n):Ku(e.ops,n)},elttype:e=>{if(!g(e))return _t.elttype(e);let n=Ve(e.ops);if(n===null)return _t.elttype(e);let t=wn(n);return t===void 0||t.length===0?"unknown":ve(...t.map(i=>i.type.type))}}},Length:{description:"Number of elements in a collection. Returns undefined for non-collections and for infinite collections.",complexity:4e3,signature:"(any) -> integer",type:()=>"integer",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(e.isEmptyCollection)return n.Zero;let t=e.count;if(!(t===void 0||!isFinite(t)))return n.number(t)}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(any*) -> tuple",type:e=>K(`tuple<${e.map(n=>n.type).join(", ")}>`),canonical:(e,{engine:n})=>n.tuple(...e),eq:Wu,collection:{...oi(),keys:e=>["first","second","last"]}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([e,n])=>K(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[t,i]=Jr(n,e,["string","any"]);return!t.isValid||!i.isValid?n._fn("KeyValuePair",[t,i]):n.tuple(t,i)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([e])=>K(`tuple<${e.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([e,n])=>K(`tuple<${e.type}, ${n.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([e,n,t])=>K(`tuple<${e.type}, ${n.type}, ${t.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,3))},Range:{complexity:8200,signature:"(number, number?, step: number?) -> indexed_collection<number>",type:e=>e.every(t=>t.isInteger)?K("indexed_collection<integer>"):K("indexed_collection<number>"),canonical:(e,{engine:n})=>e.length===0?null:e.length===1?n._fn("Range",[n.One,e[0].canonical]):e.length===2?n._fn("Range",[e[0].canonical,e[1].canonical]):n._fn("Range",[e[0].canonical,e[1].canonical,e[2].canonical.evaluate()]),eq:(e,n)=>{if(e.operator!==n.operator)return!1;let[t,i,r]=tn(e),[s,o,a]=tn(n);return t===s&&i===o&&r===a},collection:{isLazy:e=>!0,count:e=>{let[n,t,i]=tn(e);return i===0?0:!isFinite(n)||!isFinite(t)?1/0:Math.max(0,Math.floor((t-n)/i)+1)},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return Ti(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(g(e)&&e.ops.some(l=>Number.isNaN(l.re)))return;let[i,r,s]=tn(e);if(s===0)return!1;if(s>0){if(t<i||t>r)return!1}else if(t>i||t<r)return!1;let o=(t-i)/s,a=e.engine.tolerance,u=Math.round(o);return u>=0&&Math.abs(o-u)<a},iterator:e=>{let[n,t,i]=tn(e),r=i===0?0:Math.max(0,Math.floor((t-n)/i)+1),s=1;return{next:()=>s===r+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+i*(s-1-1)),done:!1})}},at:(e,n)=>{if(typeof n!="number")return;let[t,i,r]=tn(e);if(r===0)return;let s=Math.max(0,Math.floor((i-t)/r)+1);if(!(n<1||n>s))return e.engine.number(t+r*(n-1))},indexWhere:void 0,subsetOf:(e,n)=>{if(n.operator==="Range"){let[i,r,s]=tn(e),[o,a,u]=tn(n);return i>=o&&r<=a&&s%u===0}if(!n.isCollection)return!1;let t=1;for(let i of n.each()){if(!e.contains(i)||!e.at(t)?.isSame(i))return!1;t++}return!0},eltsgn:e=>{let[n,t,i]=tn(e);return i===0?"zero":i>0?n<=t?"positive":"negative":n>=t?"positive":"negative"},elttype:e=>{if(!g(e))return"finite_integer";for(let n=1;n<=e.nops;n++)if(!e[`op${n}`].isInteger)return"finite_real";return"finite_integer"}}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(number, number) -> set<real>",canonical:([e,n],{engine:t})=>{if(!e||!n)return null;let i=c=>g(c,"Open")?[c.op1,!0]:g(c,"Closed")?[c.op1,!1]:[c,!1],[r,s]=i(e),[o,a]=i(n),[u,l]=Jr(t,[r.canonical,o.canonical],["number","number"]);return!u.isValid||!l.isValid?null:t._fn("Interval",[s?t._fn("Open",[u]):u,a?t._fn("Open",[l]):l])},eq:(e,n)=>{let t=un(e),i=un(n);return!t||!i?!1:t.start===i.start&&t.end===i.end&&t.openStart===i.openStart&&t.openEnd===i.openEnd},collection:{count:e=>1/0,iterator:e=>{let n=un(e);if(!n)return{next:()=>({value:void 0,done:!0})};if(n.start>=n.end)return{next:()=>({value:void 0,done:!0})};let t=e.engine,i=0,r=0;return{next:()=>{let s=Math.pow(2,i);r>=s&&(i++,r=0);let o=(2*r+1)/Math.pow(2,i+1),a=n.start+o*(n.end-n.start);return r++,{value:t.number(a),done:!1}}}},isEmpty:e=>{let n=un(e);if(n)return n.openStart&&n.start===n.end||n.openEnd&&n.start===n.end?!0:n.openStart&&n.openEnd?!1:n.start>=n.end},isFinite:e=>!1,contains:(e,n)=>{let t=un(e);if(!t)return;if(Ti(n,"number")===!1)return!1;let i=n.re;if(!Number.isNaN(i))return n.im!==0?!1:qu(t,i);let r=t.openStart?n.isGreater(t.start):n.isGreaterEqual(t.start);if(r===!1)return!1;let s=t.openEnd?n.isLess(t.end):n.isLessEqual(t.end);if(s===!1)return!1;if(r===!0&&s===!0)return!0},eltsgn:e=>{let n=un(e);if(!n||n.start===n.end)return"unsigned";if(n.start>=0&&!n.openStart)return"non-negative";if(n.end<=0&&!n.openEnd)return"non-positive";if(n.start>0&&n.end>0)return"positive";if(n.start<0&&n.end<0)return"negative"},elttype:e=>{let n=un(e);return n?isFinite(n.start)&&isFinite(n.end)?"finite_real":"real":"never"}}},Linspace:{complexity:8200,signature:"(start: number, end: number?, count: number?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op3.re;return isFinite(n)||(n=It),Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.re,i=e.op2.re,r=e.op3.re;if(isFinite(r)||(r=It),r=Math.floor(r),!(!isFinite(t)||!isFinite(i))&&!(n<1||n>r))return r===1?e.engine.number(t):e.engine.number(t+(i-t)*(n-1)/(r-1))},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.re,t=e.op2.re,i;isFinite(t)?i=Math.max(0,isFinite(e.op3.re)?e.op3.re:It):(t=n,n=1,i=It),i=Math.floor(i);let r=i>1?i-1:1,s=1;return{next:()=>s===i+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+(t-n)*(s-1-1)/r),done:!1})}},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return Ti(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(!g(e))return;let i=e.op1.re,r=e.op2.re;if(Number.isNaN(i)||Number.isNaN(r))return;if(t<i||t>r)return!1;let s=e.op3.re;if(isFinite(s)||(s=It),s=Math.floor(s),s===0)return!1;if(s===1)return t===i;let o=(r-i)/(s-1),a=(t-i)/o,u=e.engine.tolerance,l=Math.round(a);return l>=0&&l<=s-1&&Math.abs(a-l)<u}}},Contains:{description:"Return True if the collection contains the given element, False otherwise.",complexity:8200,signature:"(collection, element: any) -> boolean",evaluate:([e,n],{engine:t})=>e.contains(n)?t.True:t.False},Count:{description:["Return the number of elements in the collection."],complexity:8200,signature:"(collection) -> integer",evaluate:([e],{engine:n})=>{if(e.isEmptyCollection)return n.Zero;let t=e.count;if(t!==void 0)return n.number(t)},sgn:([e])=>{let n=e.isEmptyCollection;if(n===!0)return"zero";if(n===!1)return"positive"}},IsEmpty:{description:["Return True if the collection is empty, False otherwise."],complexity:8200,signature:"(collection) -> boolean",evaluate:([e],{engine:n})=>e.isEmptyCollection?n.True:n.False},Map:{description:["Return the collection where each element has been transformed by the mapping function.","Equivalent to `[f(x) for x in xs]`."],complexity:8200,lazy:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=an(n,e[0]?.canonical,"collection"),i=Ye(e[1]);return!t.isValid||!i?null:n._fn("Map",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each();return{next:()=>{for(;;){let{value:i,done:r}=t.next();return r?{value:void 0,done:!0}:{value:n([i])??e.engine.Nothing,done:!1}}}}},at:(e,n)=>{if(!g(e)||!e.isIndexedCollection||typeof n!="number"||!Number.isFinite(n)||n===0)return;let t=e.op1.at(n);if(t)return se(e.op2)?.([t])}}},Filter:{description:["Return the elements of the collection for which the predicate function returns True.","Equivalent to `[x for x in xs if p(x)]`."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=an(n,e[0]?.canonical,"collection"),i=Ye(e[1]);return!t.isValid||!i?null:n._fn("Filter",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;if(!e.op1.isFiniteCollection)return 1/0;let n=0;for(let t of e.each())n++;return n},contains:(e,n)=>{if(!g(e)||!e.contains(n))return!1;let t=se(e.op2);return ie(t([n]))==="True"},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=0,r=e.engine.iterationLimit;return{next:()=>{for(;;){let{value:s,done:o}=t.next();if(i+=1,i>r)throw new je({cause:"iteration-limit-exceeded",message:`Iteration limit of ${r} exceeded while evaluating Filter()`});if(o)return{value:void 0,done:!0};let a=n([s]);if(!a)throw new Error(`Invalid filter predicate. ${nn(e.op2)}`);if(ie(a)==="True")return{value:s,done:!1};if(ie(a)!=="False")throw new Error(`Filter predicate must return "True" or "False". ${nn(e.op2)}`)}}}},at:(e,n)=>{if(typeof n!="number"||!Number.isFinite(n)||n===0||!g(e))return;let t=se(e.op2);if(!t)return;if(n<0){if(!e.op1.isFiniteCollection)return;let r=Array.from(e.each()),s=r.length+n+1;return s<1||s>r.length?void 0:r[s-1]}let i=0;for(let r of e.op1.each()){let s=ie(t([r]));if(s==="True"){if(i+=1,i===n)return r}else if(s!=="False")throw new Error(`Filter predicate must return "True" or "False". ${nn(e.op2)}`)}}}},Reduce:{complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> value",canonical:(e,{engine:n})=>{let t=an(n,e[0],"collection"),i=Ye(e[1]);if(!t.isValid||!i)return null;let r=e[2]?.canonical;return r?.isValid?n._fn("Reduce",[t,i,r]):n._fn("Reduce",[t,i])},type:e=>K(Er(e[1].type.type)??"unknown"),evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=t!==void 0;if(t??=i.Nothing,t.type.matches("real")&&e.type.matches(i.type("collection<real>"))){let o=i._compile(n);if(o.calling==="lambda"&&o.run)return sr((function*(){let a=r?t.re:NaN,u=!0;for(let l of e.each())u&&!r?a=l.re:a=o.run(a,l.re),u=!1,yield;return i.expr(a)})(),i._timeRemaining)}let s=se(n);return sr(el(e,(o,a)=>s([o,a])??i.Nothing,t),i._timeRemaining)}},Join:{description:["Join the elements of some collections into a flat collection."],complexity:8200,signature:"(collection*) -> collection",type:rm,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=0;for(let t of e.ops){let i=t.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;n+=i}return n},contains:(e,n)=>g(e)?e.ops.some(t=>t.contains(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.ops.map(i=>i.each()),t=0;return{next:()=>{for(;;){let{value:i,done:r}=n[t].next();if(!r)return{value:i,done:!1};if(t+=1,t>=n.length)return{value:void 0,done:!0}}}}},at:(e,n)=>{if(!(typeof n!="number"||!g(e))){if(n<0){let t=0;for(let i of e.ops){let r=i.count;if(r===void 0||!Number.isFinite(r))return;t+=r}n=t+n+1}if(!(n<1))for(let t of e.ops){let i=t.count;if(i===void 0)return;if(n<=i)return t.at(n);n-=i}}}}},At:{description:["Access an element of an indexed collection.","If the index is negative, it is counted from the end.","Multiple indices can be provided to access nested collections (e.g., matrices).","If the index is a finite collection of booleans, returns the elements where the mask is True.","If the index is a finite collection of integers, returns the elements at those indices."],complexity:8200,signature:"(value: indexed_collection, index: (number|string|indexed_collection)+) -> unknown",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??De(e.type.type)??"any",evaluate:(e,{engine:n})=>{let t=e[0],i=1;for(;e[i];){let s=t.baseDefinition?.collection?.at;if(!s)return;let o=e[i],a=fe(o)?o.string:void 0;if(a!==void 0){t=s(t,a)??n.Nothing,i+=1;continue}if(o.isCollection&&o.isFiniteCollection){let l=Array.from(o.each()),c=l.every(p=>{let d=ie(p);return d==="True"||d==="False"}),f=[];if(c)l.forEach((p,d)=>{if(ie(p)!=="True")return;let b=s(t,d+1);b!==void 0&&f.push(b)});else for(let p of l){let d=p.re;if(!Number.isInteger(d))return;let b=s(t,d);b!==void 0&&f.push(b)}t=n._fn("List",f),i+=1;continue}let u=o.re;if(!Number.isInteger(u))return;t=s(t,u)??n.Nothing,i+=1}return t}},Take:{description:["Return `n` elements from a collection."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${j(De(e.type.type)??"any")}>`,evaluate:(e,{engine:n,materialization:t})=>{if(!t)return;let i=n._fn("Take",e),r=Array.from(i.each());return n._fn("List",r)},collection:{isLazy:e=>!0,count:Qu,isEmpty:e=>{if(!g(e))return;let[n,t]=e.ops;if(n.isEmptyCollection)return!0;if(n.isFiniteCollection===!1)return!1;let i=Math.max(0,Y(t)??0),r=n.count;if(r!==void 0)return Number.isFinite(i)?Math.min(r,i)===0:!1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:sm,at:(e,n)=>{if(typeof n!="number"||n===0||!g(e))return;let t=Math.max(0,Y(e.op2)??0);if(t===0)return;if(n>0)return n>t?void 0:e.op1.at(n);let i=Qu(e);if(!(i===void 0||i===0)&&!(n<-i))return e.op1.at(i+n)}}},Drop:{description:["Return the collection without the first n elements."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${j(De(e.type.type)??"any")}>`,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;if(n.isEmptyCollection)return 0;let r=Y(t)??0;return r>=i?0:Math.max(0,i-r)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let[n,t]=e.ops,i=Y(t)??0;if(i<=0)return n.each();let r=n.count,s=i+1;return{next:()=>{if(r!==void 0&&s>r)return{value:void 0,done:!0};let o=n.at(s++);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let[t,i]=e.ops,r=Y(i)??0;if(r<=0)return t.at(n);if(n<0){let s=t.count;return s!==void 0&&-n>s-r?void 0:t.at(n)}if(!(n<1))return t.at(n+r)}}},First:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(1)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Second:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(2)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Third:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(3)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Last:{complexity:8200,signature:"(collection) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.at(-1)??n.Nothing},Rest:{description:["Return the collection without the first element.","If the collection has only one element, return an empty collection."],complexity:8200,signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isEmpty:e=>{if(!g(e))return;if(e.op1.isEmptyCollection)return!0;let n=e.op1.count;if(n!==void 0)return n<=1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1,t=n.count,i=2;return{next:()=>{if(t!==void 0&&i>t)return{value:void 0,done:!0};let r=n.at(i);return r===void 0?{value:void 0,done:!0}:(i+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(n>0?n+1:n)}}},Most:{complexity:8200,description:["Return the collection without the last element.","If the collection has only one element, return an empty collection."],signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},isEmpty:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return n<=1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=1)return{next:()=>({value:void 0,done:!0})};let t=1,i=n-1;return{next:()=>t>i?{value:void 0,done:!0}:{value:e.op1.at(t++),done:!1}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t!==void 0&&(n<1&&(n=t+1+n),!(n<1||n>t-1)))return e.op1.at(n)}}},Slice:{description:["Return a range of elements from an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: indexed_collection, start: number, end: number) -> list",type:([e])=>K(`list<${j(De(e.type.type)??"any")}>`),collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=Y(e.op2)??1;if(t<1&&(t=n+1+t),t<1&&(t=1),t>n)return 0;let i=Y(e.op3)??n;return i<1&&(i=n+1+i),i<1&&(i=1),i>n&&(i=n),Math.max(0,i-t+1)},isFinite:e=>!0,at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0)return;let i=Y(e.op2)??1;if(i<1&&(i=t+1+i),i<1&&(i=1),i>t)return;let r=Y(e.op3)??t;r<1&&(r=t+1+r),r<1&&(r=1),r>t&&(r=t);let s=r-i+1;if(!(s<=0)&&(n<0&&(n=s+1+n),!(n<1||n>s)))return e.op1.at(i+n-1)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Y(e.op2)??1,t=e.op1.count;if(t===void 0)return{next:()=>({value:void 0,done:!0})};if(n<1&&(n=t+1+n),n<1&&(n=1),n>t)return{next:()=>({value:void 0,done:!0})};let i=Y(e.op3)??t;i<1&&(i=t+1+i),i<1&&(i=1),i>t&&(i=t);let r=n,s=i;return{next:()=>{if(r>s)return{value:void 0,done:!0};let o=e.op1.at(r);return r+=1,{value:o,done:!1}}}}}},Reverse:{complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:([e])=>e.type,collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=-1;return{next:()=>{if(n===0)return{value:void 0,done:!0};let t=e.op1.at(n);return n-=1,{value:t,done:!1}}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(-n)}}},RotateLeft:{description:"Rotate the elements of the collection to the left by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=Y(e.op2)??1;t=(t%n+n)%n;let i=1,r=n;return{next:()=>{if(i===r+1)return{value:void 0,done:!0};i+=1;let s=e.op1.at((i-1-1+t)%n+1);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=Y(e.op2)??1;return i=(i%t+t)%t,e.op1.at((n-1+i)%t+1)}}},RotateRight:{description:"Rotate the elements of the collection to the right by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=Y(e.op2)??1;t=(t%n+n)%n;let i=1;return{next:()=>{if(i===n+1)return{value:void 0,done:!0};i+=1;let r=(i-1-1+(n-t))%n+1,s=e.op1.at(r);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=Y(e.op2)??1;i=(i%t+t)%t;let r=(n-1+(t-i))%t+1;return e.op1.at(r)}}},IndexOf:{description:"Return the 1-based index of the first occurrence of value in collection, or 0 if not found.",complexity:8200,signature:"(collection, any) -> integer",evaluate:([e,n],{engine:t})=>{let i=e.indexWhere(r=>r.isSame(n))??void 0;return t.number(i??0)}},IndexWhere:{description:"Return the 1-based index of the first element satisfying the predicate, or 0 if not found.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Zero;let r=e.indexWhere(s=>{let o=ie(i([s]));if(o==="True")return!0;if(o==="False")return!1;throw new Error(`Filter predicate must return "True" or "False". ${nn(n)}`)})??void 0;return t.number(r??0)}},Find:{description:"Return the first element of the collection satisfying the predicate, or Nothing if none found.",complexity:8200,signature:"(collection, function) -> any",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Nothing;for(let r of e.each()){let s=ie(i([r]));if(s!=="False"){if(s==="True")return r;throw new Error(`Filter predicate must return "True" or "False". ${nn(n)}`)}}return t.Nothing}},CountIf:{description:"Return the number of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Zero;let r=0;for(let s of e.each()){let o=ie(i([s]));if(o!=="False")if(o==="True")r++;else throw new Error(`Filter predicate must return "True" or "False". ${nn(n)}`)}return t.number(r)}},Position:{description:"Return a list of indexes of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> list<integer>",type:()=>"list<integer>",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.function("List",[]);let r=[],s=1;for(let o of e.each()){let a=ie(i([o]));if(a==="True")r.push(t.number(s));else if(a!=="False")throw new Error(`Filter predicate must return "True" or "False". ${nn(n)}`);s++}return t.function("List",r)}},Ordering:{description:"Return the indexes that would sort the collection.",complexity:8200,signature:"(indexed_collection, function?) -> list<integer>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function("List",[]);let i=Xu(e,n);return i?t.function("List",i):t.function("List",[])}},Sort:{description:"Return the elements of the collection sorted according to the given comparison function.",complexity:8200,signature:"(indexed_collection, function?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function(e.operator,[]);let i=Xu(e,n);if(i)return t.function(e.operator,i.map(r=>e.at(r)))}},Shuffle:{description:"Randomize the order of the elements in the collection. With an optional `seed` argument, the shuffle is deterministic.",complexity:8200,signature:"(indexed_collection, real?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=Array.from(e.each()),r=n?.re;if(r!==void 0&&!Number.isNaN(r)){let s=r;for(let o=i.length-1;o>0;o--){let a=Math.floor(Ju(s)*(o+1));[i[o],i[a]]=[i[a],i[o]],s=zu(s)}}else for(let s=i.length-1;s>0;s--){let o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}return t.function(e.operator,i)}},Tabulate:{description:"Create a collection by applying a function to each index in the specified dimensions.",complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",canonical:(e,{engine:n})=>{let t=Ye(e[0]);return t?e[2]?n._fn("Tabulate",[t,an(n,e[1]?.canonical,"integer"),an(n,e[2]?.canonical,"integer")]):n._fn("Tabulate",[t,an(n,e[1]?.canonical,"integer")]):null},evaluate:(e,{engine:n})=>{let t=se(e[0]);if(!t)return;if(e.length===1)return n._fn("List",[]);let i=e.slice(1).map(s=>Y(s));if(i.some(s=>s===null||s<=0))return;if(i.length===1)return n._fn("List",Array.from({length:i[0]??0},(s,o)=>t([n.number(o+1)])??n.Nothing));let r=(s,o,a=0)=>{if(a===s.length){let l=o.map(c=>n.number(c));return t(l)??n.Nothing}let u=["List"];for(let l=1;l<=s[a];l++)o[a]=l,u.push(r(s,o,a+1));return u};return n.expr(r(i,Array(i.length).fill(0)))}},Tally:{description:"Return a tuple with the unique elements of the collection and their respective counts.",complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:([e],{engine:n})=>{let t=e.type.type;return t==="string"?K("tuple<list<string>, list<integer>>"):K(`tuple<list<${j(De(t)??"any")}>, list<integer>>`)},evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Yu(e[0]);return n.tuple(n.function("List",t),n.function("List",i))}},Unique:{description:"Return a list of the unique elements of the collection.",complexity:8200,signature:"(collection) -> list",type:([e])=>`list<${j(De(e.type.type)??"any")}>`,evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Yu(e[0]);return n.function("List",t)}},Partition:{wikidata:"Q381060",complexity:8200,signature:"(collection, integer | function) -> list",type:([e])=>`list<${j(De(e.type.type)??"any")}>`,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=Y(n);if(i!==null&&i>0){let a=Array.from(e.each()),u=[],l=Math.ceil(a.length/i);for(let c=0;c<i;c++){let f=a.slice(c*l,(c+1)*l);u.push(t.function("List",f))}return t.function("List",u)}let r=se(n);if(!r)return;let s=[],o=[];for(let a of e.each()){let u=ie(r([a]));if(u==="True")s.push(a);else if(u==="False")o.push(a);else throw new Error(`Partition predicate must return "True" or "False". ${nn(n)}`)}return t.function("List",[t.function("List",s),t.function("List",o)])}},Chunk:{description:"Split the collection into `k` nearly equal-sized chunks.",complexity:8200,signature:"(collection, integer) -> list<list>",evaluate:([e,n],{engine:t})=>{let i=Y(n);if(!e.isFiniteCollection||i===null||i<=0)return;let r=Array.from(e.each()),s=[],o=Math.ceil(r.length/i);for(let a=0;a<i;a++){let u=r.slice(a*o,(a+1)*o);s.push(t.function("List",u))}return t.function("List",s)}},GroupBy:{description:["Partition the collection into a dictionary of lists based on the key returned by the function."],complexity:8200,signature:"(collection, function) -> dictionary<list>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=se(n);if(!i)return;let r={};for(let s of e.each()){let o=i([s])??t.Nothing,a=(I(o)?o.symbol:void 0)??(fe(o)?o.string:void 0)??o.toString();a in r||(r[a]=[]),r[a].push(s)}return t.function("Dictionary",Object.entries(r).map(([s,o])=>t._fn("Tuple",[t.string(s),t.function("List",o)])))}},Zip:{description:"Combine multiple collections element-wise into a list of tuples. The result has the length of the shortest input.",complexity:8200,signature:"(indexed_collection+) -> list",collection:{isLazy:e=>!0,count:Hr,isFinite:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isFiniteCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},isEmpty:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isEmptyCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Hr(e);if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=1;return{next:()=>{if(t===n+1)return{value:void 0,done:!0};t+=1;let i=e.ops.map(r=>r.at(t-1));return i.some(r=>r===void 0)?{value:void 0,done:!0}:{value:e.engine.tuple(...i),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=Hr(e);if(t===void 0||n<1||n>t)return;let i=e.ops.map(r=>r.at(n));if(!i.some(r=>r===void 0))return e.engine.tuple(...i)}}},Iterate:{description:"Produce an infinite sequence by repeatedly applying a function to the previous value, starting with an initial value.",complexity:8200,signature:"((index: integer, acc:any) -> any, initial: any?) -> list",canonical:([e,n],{engine:t})=>{let i=Ye(e);if(!i)return null;let r=n?.canonical;return r?t._fn("Iterate",[i,r]):t._fn("Iterate",[i])},collection:{isLazy:e=>!0,count:()=>1/0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op2??e.engine.Nothing,i=0;return{next:()=>(i+=1,t=n([e.engine.number(i),t])??e.engine.Nothing,{value:t,done:!1})}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=se(e.op1);if(!t)return;let i=e.op2??e.engine.Nothing;for(let r=1;r<n;r++)i=t([e.engine.number(r),i])??e.engine.Nothing;return i}}},Repeat:{description:"Produce a sequence by repeating a single value. With 1 argument, returns an infinite sequence; with 2 arguments (value, count), returns a finite list of `count` copies.",complexity:8200,signature:"(value: any, count: integer?) -> list",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let t=Y(e[1]);if(t===null)return;let i=Math.max(0,t);if(!(i>n.maxCollectionSize))return n._fn("List",Array(i).fill(e[0]))},collection:{isLazy:e=>g(e)&&e.ops?.length===1,count:e=>{if(g(e)){if(e.ops?.length===2){let n=Y(e.op2);return n!==null?Math.max(0,n):void 0}return 1/0}},isEmpty:e=>{if(g(e)){if(e.ops?.length===2){let n=Y(e.op2);return n!==null?n<=0:void 0}return!1}},isFinite:e=>g(e)&&e.ops?.length===2,contains:(e,n)=>{if(!g(e))return!1;if(e.ops?.length===2){let t=Y(e.op2);if(t!==null&&t<=0)return!1}return e.op1.isSame(n)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.ops?.length===2){let n=Y(e.op2);if(n===null)return{next:()=>({value:void 0,done:!0})};let t=Math.max(0,n),i=0;return{next:()=>i++<t?{value:e.op1,done:!1}:{value:void 0,done:!0}}}return{next:()=>({value:e.op1,done:!1})}},at:(e,n)=>{if(g(e)&&typeof n=="number"){if(e.ops?.length===2){let t=Y(e.op2),i=t!==null?Math.max(0,t):0;if(n<1||n>i)return}else if(n<1)return;return e.op1}}}},Cycle:{description:"Produce an infinite sequence by cycling through the elements of a finite collection.",complexity:8200,signature:"(list) -> list",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.isEmptyCollection?0:1/0},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isEmptyCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.op1.count;return t===void 0||t===0?{next:()=>({value:void 0,done:!0})}:{next:()=>{let i=(n-1)%t+1,r=e.op1.at(i);return r===void 0?{value:void 0,done:!0}:(n+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=e.op1.count;if(t===void 0||t===0)return;let i=(n-1)%t+1;return e.op1.at(i)}}},Fill:{description:"Produce a 2D list (matrix) by applying a function to each pair of row and column indexes.",complexity:8200,signature:"(function, tuple) -> list",collection:{isLazy:e=>!0,count:e=>!g(e)||!g(e.op2)?void 0:e.op2.ops.map(t=>Y(t)??0)[0]??0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};if(!g(e.op2))return{next:()=>({value:void 0,done:!0})};let t=e.op2.ops.map(a=>Y(a)??0),i=t[0]??0,r=t[1]??0,s=i,o=1;return{next:()=>{if(o===s+1)return{value:void 0,done:!0};o+=1;let a=[];for(let u=1;u<=r;u++)a.push(n([e.engine.number(o-1),e.engine.number(u)])??e.engine.Nothing);return{value:e.engine.function("List",a),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=se(e.op1);if(!t||!g(e.op2))return;let i=e.op2.ops.map(u=>Y(u)??0),r=i[0]??0,s=i[1]??0;if(n>r*s)return;let o=Math.ceil(n/s),a=(n-1)%s+1;return t([e.engine.number(o),e.engine.number(a)])??e.engine.Nothing}}},ListFrom:{description:"Create a list from the elements of a collection.",complexity:8200,signature:"(value*) -> list",type:e=>{if(e.length===0)return"list";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"list";n=ve(n,De(t.type.type)??n)}return K(`list<${j(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("List",t)}},SetFrom:{description:"Create a set from the elements of a collection.",complexity:8200,signature:"(value*) -> set",type:e=>{if(e.length===0)return"set";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"set";n=ve(n,De(t.type.type)??n)}return K(`set<${j(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("Set",t)}},TupleFrom:{description:"Create a tuple from the elements of a collection.",complexity:8200,signature:"(value*) -> tuple",evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.tuple(...t)}},DictionaryFrom:{description:"Create a dictionary from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> dictionary",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Record"))return n.function("Dictionary",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!fe(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Dictionary",t)}},RecordFrom:{description:"Create a record from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> record",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Dictionary"))return n.function("Record",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!fe(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Record",t)}}};function tn(e){if(!g(e))return[1,0,0];if(e.nops===0)return[1,0,0];let n=e.op1.re;if(!isFinite(n)&&!n&&(n=1),e.nops===1)return[1,n,1];let t=e.op2.re;if(!isFinite(t)&&!t&&(t=1),e.nops===2)return[n,t,t>=n?1:-1];let i=e.op3.re;return!isFinite(i)&&!i&&(i=1),[n,t,i]}function nm(e,{engine:n}){let t=e[0];if(e.length===1&&g(t,"Matrix")){let[r,s,o]=t.ops;if(!s||fe(s)&&s.string==="..")return o?n._fn("Matrix",[r,n.string("[]"),o]):n._fn("Matrix",[r,s])}let i=e.map(r=>g(r,"Delimiter")?g(r.op1,"Sequence")?n._fn("List",Gu(n,r.op1.ops)):n._fn("List",[r.op1?.canonical??n.Nothing]):r.canonical);return n._fn("List",i)}function tm(e,{engine:n}){if(e=e.map(r=>r.canonical),Ve(e)!==null)return n._fn("Set",[...e]);let t=[],i=r=>t.some(s=>s.isSame(r));for(let r of e)i(r)||t.push(r);return n._fn("Set",t)}function Ve(e){if(e.length!==2)return null;let[n,t]=e,i=r=>r.isCanonical?r:r.canonical;if(g(t,"Element")&&t.nops>=2){if(!I(t.op1))return null;let r=t.op1.symbol;if(!n.has(r))return null;let s=t.nops>=3&&ie(t.op3)!=="Nothing"?t.op3:void 0;return{body:n,variable:r,domain:t.op2,condition:s}}if(g(t,"Condition")&&t.nops>=1){let r=t.op1;if(g(n,"Element")&&n.nops===2&&I(n.op1))return{body:n.op1,variable:n.op1.symbol,domain:i(n.op2),condition:i(r)};if(g(r,"Element")&&r.nops===2&&I(r.op1)){let s=r.op1.symbol;if(n.has(s))return{body:n,variable:s,domain:i(r.op2),condition:void 0}}if(g(r,"And")){let s=r.ops.filter(a=>g(a,"Element")&&a.nops===2&&I(a.op1)&&n.has(a.op1.symbol)),o=s.length===1?s[0]:void 0;if(o&&g(o,"Element")&&I(o.op1)){let a=r.ops.filter(c=>c!==o).map(i),u=n.engine,l=a.length===0?void 0:a.length===1?a[0]:u._fn("And",a);return{body:n,variable:o.op1.symbol,domain:i(o.op2),condition:l}}}return{body:n,variable:I(n)?n.symbol:void 0,domain:void 0,condition:r}}return null}function wn(e){let{body:n,variable:t,domain:i,condition:r}=e;if(t===void 0||i===void 0)return;let s=n.engine,o=c=>jr(s._fn("Element",[s.symbol(t),c,...r?[r]:[]]),s),a=o(i);if(a.status!=="success"){let c=i.evaluate();c.isSame(i)||(a=o(c))}if(a.status!=="success")return;let u=I(n)&&n.symbol===t,l=[];for(let c of a.values){let f=u?c:n.subs({[t]:c}).evaluate();l.some(p=>p.isSame(f))||l.push(f)}return l}function Ku(e,n){let t=!1;for(let i of e){if(n.isSame(i))return!0;if(D(n)&&D(i)){let r=n.isEqual(i);if(r===!0)return!0;r!==!1&&(t=!0)}else fe(n)&&fe(i)||(t=!0)}return t?void 0:!1}function im(e,n){let t=wn(e);if(t!==void 0)return Ku(t,n);if(e.domain!==void 0&&e.variable!==void 0&&I(e.body)&&e.body.symbol===e.variable){let i=e.domain.contains(n);if(i===!1)return!1;let r=!0;if(e.condition!==void 0)if(D(n)||fe(n)){let s=e.condition.subs({[e.variable]:n}).evaluate();r=ie(s)==="True"?!0:ie(s)==="False"?!1:void 0}else r=void 0;if(r===!1)return!1;if(i===!0&&r===!0)return!0}}function Yu(e){let n=[],t=[],i=r=>{for(let s=0;s<n.length;s++)if(n[s].isSame(r))return s;return-1};for(let r of e.each()){let s=i(r);s>=0?t[s]++:(n.push(r),t.push(1))}return[n,t]}function*el(e,n,t){let i=t;for(let r of e.each()){let s=n(i,r);if(s===null)return;yield i,i=s}return i}function rm(e){return e.some(n=>n.type.matches("record"))?"record":e.some(n=>n.type.matches("dictionary"))?"dictionary":e.some(n=>n.type.matches("set"))?"set":"list"}function Wu(e,n){return e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops?!1:e.ops.every((t,i)=>t.isSame(n.ops[i]))}function Xu(e,n=void 0){let t=n?se(n):void 0,i=t?(o,a)=>{let u=t([o,a]);return u?.isNegative?-1:u?.isSame(0)?0:1}:(o,a)=>o.isLess(a)?-1:o.isEqual(a)?0:1,r=e.count;if(r===void 0||!Number.isFinite(r)||r<1)return;let s=Array.from({length:r},(o,a)=>a+1);return s.sort((o,a)=>{let u=e.at(o),l=e.at(a);return i(u,l)}),s}function Ur(e){if(e.length===0)return[];let n=[];for(let t of e)ie(t)!=="Nothing"&&(g(t,"Sequence")?n.push(...Ur([...t.ops])):fe(t)?n.push(t):t.isCollection?n.push(...Ur([...t.each()])):n.push(t));return n}function sm(e){if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Math.max(0,Y(e.op2)??0);if(n===0)return{next:()=>({value:void 0,done:!0})};let t=1,i=0;return{next:()=>{if(i>=Math.abs(n))return{value:void 0,done:!0};let r=e.op1.at(t);return r?(t+=1,i+=1,{value:r,done:!1}):{value:void 0,done:!0}}}}function Qu(e){if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;let r=Math.max(0,Y(t)??0);return Number.isFinite(r)?Math.min(i,r):1/0}function Hr(e){if(!g(e))return;let n=e.ops.map(t=>t.count);if(!n.some(t=>t===void 0))return n.some(t=>!Number.isFinite(t))?1/0:n.length===0?0:Math.min(...n)}function nl(e){e?.operator,g(e);let n=1,t=n+Pn,i,r=!0,s=e,o=s.op1;i=I(o)?o.symbol:void 0,n=Math.floor(s.op2.re),isNaN(n)&&(n=1),Number.isFinite(n)||(r=!1);let a=s.op3;return(I(a)?a.symbol:void 0)==="Nothing"||a.isInfinity?(r=!1,t=1/0):(isNaN(a.re)||(t=Math.floor(a.re??t)),Number.isFinite(t)||(r=!1)),r||(!Number.isFinite(n)&&!Number.isFinite(t)?(n=-Pn/2,t=n+Pn):Number.isFinite(n)?t=n+Pn:n=t-Pn),{index:i,lower:n,upper:t,isFinite:r}}var x=class e{static FOLD_OPERAND_PREC=1e3;static compile(n,t,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);if(I(n)){let r=n.symbol,s=t.operators?.(r);if(s!==void 0)return`(a,b) => a ${s[0]} b`;let o=t.var?.(r);return o!==void 0?o:e.tryFoldKnownSymbol(n.engine,r,t)??r}if(D(n)){if(n.im!==0){if(!t.complex)throw new Error("Complex numbers are not supported by this target");return t.complex(n.re,n.im)}return t.number(n.re)}if(fe(n))return t.string(n.string);if(!g(n))throw new Error(`Cannot compile expression: "${n.toString()}"`);return e.compileExpr(n.engine,n.operator,n.ops,i,t)}static compileExpr(n,t,i,r,s){if(t==="Error")throw new Error("Error");if(t==="Sequence")return i.length===0?"":`(${i.map(u=>e.compile(u,s,r)).join(", ")})`;if(t==="Sum"||t==="Product"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):typeof u=="string"?`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:e.compileLoop(t,i,s)}let o=s.operators?.(t);if(o!==void 0&&!i.some(l=>e.isComplexValued(l))){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o[0]))return`${o[0]}(${i.map(c=>e.compile(c,s)).join(", ")})`;if(i.every(c=>!c.isCollection)){if(Ir(t)&&i.length>2){let f=[];for(let p=0;p<i.length-1;p++)f.push(e.compileExpr(n,t,[i[p],i[p+1]],o[1],s));return`(${f.join(") && (")})`}let c;if(i.length===1)c=`${o[0]}${e.compile(i[0],s,o[1])}`;else{let f=t==="Power";c=i.map((p,d)=>{let b=f&&d<i.length-1?o[1]+1:o[1];return e.compile(p,s,b)}).join(` ${o[0]} `)}return o[1]<r?`(${c})`:c}}if(t==="Function"){let u=s.functions?.(t);if(typeof u=="function")return u(i,c=>e.compile(c,s),s);let l=i.slice(1).map(c=>I(c)?c.symbol:"_");return`((${l.join(", ")}) => ${e.compile(i[0].canonical,{...s,var:c=>l.includes(c)?c:s.var(c)})})`}if(t==="Declare"){let u=I(i[0])?i[0].symbol:"_";return s.declare?s.declare(u):`let ${u}`}if(t==="Assign")return`${I(i[0])?i[0].symbol:"_"} = ${e.compile(i[1],s)}`;if(t==="Return")return`return ${e.compile(i[0],s)}`;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Loop"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):e.compileForLoop(i,s)}if(t==="If"){if(i.length!==3)throw new Error("If: wrong number of arguments");let u=s.functions?.(t);return u?typeof u=="function"?u(i,l=>e.compile(l,s),s):`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:`((${e.compile(i[0],s)}) ? (${e.compile(i[1],s)}) : (${e.compile(i[2],s)}))`}if(t==="Which"){if(i.length<2||i.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,c=>e.compile(c,s),s):`${u}(${i.map(c=>e.compile(c,s)).join(", ")})`;let l=c=>{if(c>=i.length)return"NaN";let f=i[c],p=i[c+1];return I(f,"True")?`(${e.compile(p,s)})`:`((${e.compile(f,s)}) ? (${e.compile(p,s)}) : ${l(c+2)})`};return l(0)}if(t==="When"){if(i.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,f=>e.compile(f,s),s):`${u}(${i.map(f=>e.compile(f,s)).join(", ")})`;if(I(i[1],"True"))return`(${e.compile(i[0],s)})`;if(I(i[1],"False"))return"NaN";let l=e.compile(i[0],s);return`((${e.compile(i[1],s)}) ? (${l}) : NaN)`}if(t==="Block")return e.compileBlock(i,s);let a=s.functions?.(t);if(!a)throw new Error(`Unknown operator \`${t}\``);if(typeof a=="function"){let u=n.lookupDefinition(t);if(Nt(u)&&u.operator.broadcastable&&i.length===1&&si(i[0])){let l=e.tempVar();return`(${e.compile(i[0],s)}).map((${l}) => ${a([i[0].engine.expr(l)],c=>e.compile(c,s),s)})`}return a(i,l=>e.compile(l,s),s)}return`${a}(${i.map(u=>e.compile(u,s)).join(", ")})`}static compileBlock(n,t){let i=[];for(let a of n)if(g(a,"Declare")){let u=a.ops[0];I(u)&&i.push(u.symbol)}if(n.length===1&&i.length===0)return e.compile(n[0],t);let r={};if(t.declare&&t.language){let u=t.language==="wgsl"?"vec2f":"vec2";for(let l of i)for(let c of n){if(g(c,"Declare")&&I(c.ops[0],l)&&I(c.ops[1],"complex")){r[l]=u;break}if(g(c,"Assign")&&I(c.ops[0],l)){e.isComplexValued(c.ops[1])&&(r[l]=u);break}}}let s={...t,var:a=>i.includes(a)?a:t.var(a)},o=n.filter(a=>!I(a,"Nothing")).map(a=>g(a,"Declare")&&I(a.ops[0])&&t.declare?t.declare(a.ops[0].symbol,r[a.ops[0].symbol]):e.compile(a,s)).filter(a=>a!=="");return o.length===0?"":t.block?t.block(o):(o[o.length-1]=`return ${o[o.length-1]}`,`(() => {${t.ws(`
11
11
  `)}${o.join(`;${t.ws(`
12
12
  `)}`)}${t.ws(`
13
- `)}})()`)}static compileForLoop(n,t){if(!n[0])throw new Error("Loop: no body");if(!n[1])throw new Error("Loop: no indexing set");let i=n[0],r=n.slice(1);if(r.length>1||r.length===1&&g(r[0],"Element")&&!e.isLegacyCompatibleRange(r[0].ops[1])){let v=t.language??"";if(v==="glsl"||v==="wgsl")throw new Error(`${v.toUpperCase()}: multi-Element Loop comprehension is not yet supported. TODO(E3-GLSL): unroll or use a fixed-size array.`);let E=[];for(let F=0;F<r.length;F++){let oe=r[F];if(!g(oe,"Element"))throw new Error(`Loop: argument ${F+1} must be an Element clause, got ${oe.operator??"?"}`);if(!T(oe.ops[0]))throw new Error(`Loop: Element index (argument ${F+1}) must be a symbol`);E.push(oe)}let I=new Set(E.map(F=>F.ops[0].symbol)),O=t.number(0)!=="0"?{...t,var:F=>I.has(F)?t.number(0).replace("0",F):t.var(F)}:t,D=`result.push(${e.compile(i,O)});`;for(let F=E.length-1;F>=0;F--){let oe=E[F],X=oe.ops[0].symbol,K=oe.ops[1],Q;g(K,"Range")?Q=e.compileRangeIterable(K,O):Q=e.compile(K,O),D=`for (const ${X} of ${Q}) { ${D} }`}return`(() => { const result = []; ${D} return result; })()`}let o=r[0];if(!g(o,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let a=o.ops[0],u=o.ops[1];if(!T(a))throw new Error("Loop: index must be a symbol");if(!g(u,"Range"))throw new Error("Loop: expected Range(lo, hi)");let l=a.symbol,c=Math.floor(u.ops[0].re),f=Math.floor(u.ops[1].re);if(!Number.isFinite(c)||!Number.isFinite(f))throw new Error("Loop: bounds must be finite numbers");let m=t.number(0)!=="0",h={...t,var:v=>v===l?m?t.number(0).replace("0",l):l:t.var(v)};if(e.isCollectibleLoopValue(i)){let v=e.compile(i,h),E=e.tempVar();return`(() => {${t.ws(`
14
- `)}const ${E} = [];${t.ws(`
13
+ `)}})()`)}static compileForLoop(n,t){if(!n[0])throw new Error("Loop: no body");if(!n[1])throw new Error("Loop: no indexing set");let i=n[0],r=n.slice(1);if(r.length>1||r.length===1&&g(r[0],"Element")&&!e.isLegacyCompatibleRange(r[0].ops[1])){let y=t.language??"";if(y==="glsl"||y==="wgsl")throw new Error(`${y.toUpperCase()}: multi-Element Loop comprehension is not yet supported. TODO(E3-GLSL): unroll or use a fixed-size array.`);let v=[];for(let P=0;P<r.length;P++){let Q=r[P];if(!g(Q,"Element"))throw new Error(`Loop: argument ${P+1} must be an Element clause, got ${Q.operator??"?"}`);if(!I(Q.ops[0]))throw new Error(`Loop: Element index (argument ${P+1}) must be a symbol`);v.push(Q)}let N=new Set(v.map(P=>P.ops[0].symbol)),M=t.number(0)!=="0",$={...t,var:P=>N.has(P)?M?t.number(0).replace("0",P):P:t.var(P)},F=`result.push(${e.compile(i,$)});`;for(let P=v.length-1;P>=0;P--){let Q=v[P],V=Q.ops[0].symbol,q=Q.ops[1],z;g(q,"Range")?z=e.compileRangeIterable(q,$):z=e.compile(q,$),F=`for (const ${V} of ${z}) { ${F} }`}return`(() => { const result = []; ${F} return result; })()`}let o=r[0];if(!g(o,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let a=o.ops[0],u=o.ops[1];if(!I(a))throw new Error("Loop: index must be a symbol");if(!g(u,"Range"))throw new Error("Loop: expected Range(lo, hi)");let l=a.symbol,c=Math.floor(u.ops[0].re),f=Math.floor(u.ops[1].re);if(!Number.isFinite(c)||!Number.isFinite(f))throw new Error("Loop: bounds must be finite numbers");let p=t.number(0)!=="0",d={...t,var:y=>y===l?p?t.number(0).replace("0",l):l:t.var(y)};if(e.isCollectibleLoopValue(i)){let y=e.compile(i,d),v=e.tempVar();return`(() => {${t.ws(`
14
+ `)}const ${v} = [];${t.ws(`
15
15
  `)}for (let ${l} = ${c}; ${l} <= ${f}; ${l}++) {${t.ws(`
16
- `)}${E}.push(${v});${t.ws(`
16
+ `)}${v}.push(${y});${t.ws(`
17
17
  `)}}${t.ws(`
18
- `)}return ${E};${t.ws(`
19
- `)}})()`}let b=e.compileLoopBody(i,h);return`(() => {${t.ws(`
18
+ `)}return ${v};${t.ws(`
19
+ `)}})()`}let b=e.compileLoopBody(i,d);return`(() => {${t.ws(`
20
20
  `)}for (let ${l} = ${c}; ${l} <= ${f}; ${l}++) {${t.ws(`
21
21
  `)}${b}${t.ws(`
22
22
  `)}}${t.ws(`
23
- `)}})()`}static isCollectibleLoopValue(n){if(!g(n))return!0;let t=n.operator;return t==="Break"||t==="Continue"||t==="Return"||t==="Block"||t==="Assign"||t==="Declare"?!1:n.ops.every(i=>e.isCollectibleLoopValue(i))}static isLegacyCompatibleRange(n){if(!g(n,"Range"))return!1;if(n.ops.length>=3){let r=n.ops[2];if(!R(r)||r.re!==1)return!1}let t=n.ops[0],i=n.ops[1];return!(R(t)&&!Number.isInteger(t.re)||R(i)&&!Number.isInteger(i.re)||R(t)&&R(i)&&t.re>i.re)}static compileRangeIterable(n,t){let i=n.ops[0],r=n.ops[1],s=n.ops[2];if(R(i)&&R(r)&&(s===void 0||R(s))){let l=i.re,c=r.re,f=s===void 0?c>=l?1:-1:s.re;if(f===0)return"[]";let m=Math.max(0,Math.floor((c-l)/f)+1);return f===1?l===0?`Array.from({length:${m}},(_,k)=>k)`:`Array.from({length:${m}},(_,k)=>${l}+k)`:`Array.from({length:${m}},(_,k)=>${l}+(${f})*k)`}let o=e.compile(i,t),a=e.compile(r,t);if(s===void 0)return`((_lo,_hi)=>{const _st=_hi>=_lo?1:-1;return Array.from({length:Math.max(0,Math.floor((_hi-_lo)/_st)+1)},(_,k)=>_lo+_st*k);})(${o},${a})`;let u=e.compile(s,t);return`((_lo,_hi,_st)=>_st===0?[]:Array.from({length:Math.max(0,Math.floor((_hi-_lo)/_st)+1)},(_,k)=>_lo+_st*k))(${o},${a},${u})`}static compileLoopBody(n,t){if(T(n,"Nothing"))return"";if(!g(n))return e.compile(n,t);let i=n.operator;if(i==="Break")return"break";if(i==="Continue")return"continue";if(i==="Return")return`return ${e.compile(n.ops[0],t)}`;if(i==="If"){let r=e.scalarConditionTarget(t),s=e.compile(n.ops[0],r),o=e.compileLoopBody(n.ops[1],t);if(n.ops.length>2){let a=e.compileLoopBody(n.ops[2],t);if(a)return`if (${s}) { ${o} } else { ${a} }`}return`if (${s}) { ${o} }`}return i==="Block"?n.ops.map(r=>e.compileLoopBody(r,t)).join("; "):e.compile(n,t)}static scalarConditionTarget(n){let t={Less:["<",20],Greater:[">",20],LessEqual:["<=",20],GreaterEqual:[">=",20],Equal:["===",20],NotEqual:["!==",20],And:["&&",6],Or:["||",5],Not:["!",16]};return n.number(0)==="0"?n:{...n,number:i=>String(i),var:i=>{let r=n.var(i);if(!r)return;let s=r.match(/^_IA\.point\((.+)\)$/);return s?s[1]:r},operators:i=>t[i]??n.operators?.(i),functions:i=>{if(!(i in t))return n.functions?.(i)}}}static compileLoop(n,t,i){if(!t[0])throw new Error("Sum/Product: no body");let{index:r,lower:s,upper:o,isFinite:a}=Fu(t[1]),u=n==="Sum",l=u?"+":"*",c=e.isComplexValued(t[0]);if(!r){let h=e.tempVar(),b=e.tempVar(),v=e.compile(t[0],i);return c?u?`${v}.reduce((${b}, ${h}) => ({ re: ${b}.re + ${h}.re, im: ${b}.im + ${h}.im }), { re: 0, im: 0 })`:`${v}.reduce((${b}, ${h}) => ({ re: ${b}.re * ${h}.re - ${b}.im * ${h}.im, im: ${b}.re * ${h}.im + ${b}.im * ${h}.re }), { re: 1, im: 0 })`:`${v}.reduce((${b}, ${h}) => ${b} ${l} ${h}, ${u?"0":"1"})`}let f=e.compile(t[0],{...i,var:h=>h===r?r:i.var(h)}),m=e.tempVar();if(c){let h=e.tempVar();return u?`(() => {
24
- let ${m} = { re: 0, im: 0 };
23
+ `)}})()`}static isCollectibleLoopValue(n){if(!g(n))return!0;let t=n.operator;return t==="Break"||t==="Continue"||t==="Return"||t==="Block"||t==="Assign"||t==="Declare"?!1:n.ops.every(i=>e.isCollectibleLoopValue(i))}static isLegacyCompatibleRange(n){if(!g(n,"Range"))return!1;if(n.ops.length>=3){let r=n.ops[2];if(!D(r)||r.re!==1)return!1}let t=n.ops[0],i=n.ops[1];return!(D(t)&&!Number.isInteger(t.re)||D(i)&&!Number.isInteger(i.re)||D(t)&&D(i)&&t.re>i.re)}static compileRangeIterable(n,t){let i=n.ops[0],r=n.ops[1],s=n.ops[2];if(D(i)&&D(r)&&(s===void 0||D(s))){let l=i.re,c=r.re,f=s===void 0?c>=l?1:-1:s.re;if(f===0)return"[]";let p=Math.max(0,Math.floor((c-l)/f)+1);return f===1?l===0?`Array.from({length:${p}},(_,k)=>k)`:`Array.from({length:${p}},(_,k)=>${l}+k)`:`Array.from({length:${p}},(_,k)=>${l}+(${f})*k)`}let o=e.compile(i,t),a=e.compile(r,t);if(s===void 0)return`((_lo,_hi)=>{const _st=_hi>=_lo?1:-1;return Array.from({length:Math.max(0,Math.floor((_hi-_lo)/_st)+1)},(_,k)=>_lo+_st*k);})(${o},${a})`;let u=e.compile(s,t);return`((_lo,_hi,_st)=>_st===0?[]:Array.from({length:Math.max(0,Math.floor((_hi-_lo)/_st)+1)},(_,k)=>_lo+_st*k))(${o},${a},${u})`}static compileLoopBody(n,t){if(I(n,"Nothing"))return"";if(!g(n))return e.compile(n,t);let i=n.operator;if(i==="Break")return"break";if(i==="Continue")return"continue";if(i==="Return")return`return ${e.compile(n.ops[0],t)}`;if(i==="If"){let r=e.scalarConditionTarget(t),s=e.compile(n.ops[0],r),o=e.compileLoopBody(n.ops[1],t);if(n.ops.length>2){let a=e.compileLoopBody(n.ops[2],t);if(a)return`if (${s}) { ${o} } else { ${a} }`}return`if (${s}) { ${o} }`}return i==="Block"?n.ops.map(r=>e.compileLoopBody(r,t)).join("; "):e.compile(n,t)}static scalarConditionTarget(n){let t={Less:["<",20],Greater:[">",20],LessEqual:["<=",20],GreaterEqual:[">=",20],Equal:["===",20],NotEqual:["!==",20],And:["&&",6],Or:["||",5],Not:["!",16]};return n.number(0)==="0"?n:{...n,number:i=>String(i),var:i=>{let r=n.var(i);if(!r)return;let s=r.match(/^_IA\.point\((.+)\)$/);return s?s[1]:r},operators:i=>t[i]??n.operators?.(i),functions:i=>{if(!(i in t))return n.functions?.(i)}}}static compileLoop(n,t,i){if(!t[0])throw new Error("Sum/Product: no body");let{index:r,lower:s,upper:o,isFinite:a}=nl(t[1]),u=n==="Sum",l=u?"+":"*",c=e.isComplexValued(t[0]);if(!r){let d=e.tempVar(),b=e.tempVar(),y=e.compile(t[0],i);return c?u?`${y}.reduce((${b}, ${d}) => ({ re: ${b}.re + ${d}.re, im: ${b}.im + ${d}.im }), { re: 0, im: 0 })`:`${y}.reduce((${b}, ${d}) => ({ re: ${b}.re * ${d}.re - ${b}.im * ${d}.im, im: ${b}.re * ${d}.im + ${b}.im * ${d}.re }), { re: 1, im: 0 })`:`${y}.reduce((${b}, ${d}) => ${b} ${l} ${d}, ${u?"0":"1"})`}let f=e.compile(t[0],{...i,var:d=>d===r?r:i.var(d)}),p=e.tempVar();if(c){let d=e.tempVar();return u?`(() => {
24
+ let ${p} = { re: 0, im: 0 };
25
25
  let ${r} = ${s};
26
26
  while (${r} <= ${o}) {
27
- const ${h} = ${f};
28
- ${m} = { re: ${m}.re + ${h}.re, im: ${m}.im + ${h}.im };
27
+ const ${d} = ${f};
28
+ ${p} = { re: ${p}.re + ${d}.re, im: ${p}.im + ${d}.im };
29
29
  ${r}++;
30
30
  }
31
- return ${m};
31
+ return ${p};
32
32
  })()`:`(() => {
33
- let ${m} = { re: 1, im: 0 };
33
+ let ${p} = { re: 1, im: 0 };
34
34
  let ${r} = ${s};
35
35
  while (${r} <= ${o}) {
36
- const ${h} = ${f};
37
- ${m} = { re: ${m}.re * ${h}.re - ${m}.im * ${h}.im, im: ${m}.re * ${h}.im + ${m}.im * ${h}.re };
36
+ const ${d} = ${f};
37
+ ${p} = { re: ${p}.re * ${d}.re - ${p}.im * ${d}.im, im: ${p}.re * ${d}.im + ${p}.im * ${d}.re };
38
38
  ${r}++;
39
39
  }
40
- return ${m};
40
+ return ${p};
41
41
  })()`}return`(() => {
42
- let ${m} = ${u?"0":"1"};
42
+ let ${p} = ${u?"0":"1"};
43
43
  let ${r} = ${s};
44
44
  while (${r} <= ${o}) {
45
- ${m} ${l}= ${f};
45
+ ${p} ${l}= ${f};
46
46
  ${r}++;
47
47
  }
48
- return ${m};
49
- })()`}static isComplexValued(n){if(R(n))return n.im!==0;if(T(n)){if(n.symbol==="ImaginaryUnit")return!0;let t=n.type;return t?t.matches("complex")&&!t.matches("real"):!1}if(g(n)){let t=n.type;return t.matches("complex")&&!t.matches("real")?!0:t.matches("real")?!1:n.ops.some(i=>e.isComplexValued(i))}return!1}static isIntegerValued(n){if(R(n))return n.im===0&&Number.isInteger(n.re);let t=n.type;return t?t.matches("integer"):!1}static isNonNegative(n){return R(n)?n.im===0&&n.re>=0:n.isNonNegative===!0}static tempVar(){return`_${Math.random().toString(36).substring(4)}`}static inlineExpression(n,t){if(/^[\p{L}_][\p{L}\p{N}_]*$/u.test(t)||/^[0-9]+$/.test(t))return new Function("x",`return \`${n}\`;`)(t);{let r=e.tempVar();return new Function("x",`return \`(() => { const ${r} = \${x}; return ${n.replace(/\\\${x}/g,r)}; })()\`;`)(t)}}};function Nt(e){return typeof e=="object"&&e!==null}function Ou(e){return typeof e=="number"&&Number.isFinite(e)}function Cp(e){if(!Nt(e))throw new Error("Invalid compile target: expected an object");if(typeof e.var!="function")throw new Error('Invalid compile target: missing required method "var()"');if(typeof e.string!="function")throw new Error('Invalid compile target: missing required method "string()"');if(typeof e.number!="function")throw new Error('Invalid compile target: missing required method "number()"');if(typeof e.ws!="function")throw new Error('Invalid compile target: missing required method "ws()"');if(typeof e.preamble!="string")throw new Error('Invalid compile target: "preamble" must be a string');if(!Ou(e.indent))throw new Error('Invalid compile target: "indent" must be a finite number');if(e.operators!==void 0&&typeof e.operators!="function")throw new Error('Invalid compile target: "operators" must be a function');if(e.functions!==void 0&&typeof e.functions!="function")throw new Error('Invalid compile target: "functions" must be a function');if(e.language!==void 0&&typeof e.language!="string")throw new Error('Invalid compile target: "language" must be a string')}function $p(e,n){if(n!==void 0&&(!Array.isArray(n)||n.length!==2||typeof n[0]!="string"||!Ou(n[1])))throw new Error(`Invalid compilation option "operators.${e}": expected [string, number]`)}function Rp(e){if(e!==void 0&&typeof e!="function"){if(!Nt(e)||Array.isArray(e))throw new Error('Invalid compilation option "operators": expected a function or a record');for(let[n,t]of Object.entries(e))$p(n,t)}}function Pp(e){if(e!==void 0){if(!Nt(e)||Array.isArray(e))throw new Error('Invalid compilation option "functions": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string"&&typeof t!="function")throw new Error(`Invalid compilation option "functions.${n}": expected a string or function`)}}function Dp(e){if(e!==void 0){if(!Nt(e)||Array.isArray(e))throw new Error('Invalid compilation option "vars": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string")throw new Error(`Invalid compilation option "vars.${n}": expected a string`)}}function Fp(e){if(e!==void 0&&!Array.isArray(e))throw new Error('Invalid compilation option "imports": expected an array')}function Bu(e){if(e!==void 0){if(!Nt(e)||Array.isArray(e))throw new Error("Invalid compilation options: expected an object");if(e.to!==void 0&&typeof e.to!="string")throw new Error('Invalid compilation option "to": expected a string');if(e.target!==void 0&&Cp(e.target),Rp(e.operators),Pp(e.functions),Dp(e.vars),Fp(e.imports),e.preamble!==void 0&&typeof e.preamble!="string")throw new Error('Invalid compilation option "preamble": expected a string');if(e.fallback!==void 0&&typeof e.fallback!="boolean")throw new Error('Invalid compilation option "fallback": expected a boolean')}}function Lu(e,n){Bu(n);try{if(n?.target){let r=y.compile(e,n.target);return{target:n.target.language??"custom",success:!0,code:r}}let t=n?.to??"javascript",i=e.engine.getCompilationTarget(t);if(!i)throw new Error(`Compilation target "${t}" is not registered. Available targets: ${e.engine.listCompilationTargets().join(", ")}`);return i.compile(e,{operators:n?.operators,functions:n?.functions,vars:n?.vars,imports:n?.imports,preamble:n?.preamble,realOnly:n?.realOnly})}catch(t){if(n?.fallback??!0){console.warn(`Compilation fallback for "${e.operator}" (target: ${n?.to??"javascript"}): ${t.message}`);let i=e.engine,r=n?.to??"javascript";return g(e,"Function")?{target:r,success:!1,code:"",calling:"lambda",run:((...a)=>i.function("Apply",[e,...a.map(u=>i.expr(u))]).evaluate().re)}:{target:r,success:!1,code:"",calling:"expression",run:(o=>{i.pushScope();try{if(o&&typeof o=="object")for(let[a,u]of Object.entries(o))i.assign(a,u);return e.evaluate().re}finally{i.popScope()}})}}throw t}}function ae(e){let n=e.toString();return!n.includes(".")&&!n.includes("e")&&!n.includes("E")?`${n}.0`:n}function W(e){if(!R(e)||e.im!==0)return;let n=e.re;if(isFinite(n))return n}var Op=/^-?\d+(\.\d+)?$/;function an(e,n,t){let i=t==="+"?0:1,r=null,s=[];for(let o of e)if(Op.test(o)){let a=parseFloat(o);if(t==="*"&&a===0)return"0.0";r===null?r=a:r=t==="+"?r+a:r*a}else s.push(o);return r!==null&&r!==i&&s.unshift(ae(r)),s.length===0?r!==null?ae(r):n:s.length===1?s[0]:s.join(t==="+"?" + ":" * ")}function yi(e,n){return g(e,"Add")||g(e,"Subtract")?`(${n})`:n}function Vu(e,n){if(T(e,"ImaginaryUnit"))return{re:null,im:"1.0"};if(R(e)&&e.im!==0){let t=e.re,i=e.im;return{re:t!==0?ae(t):null,im:ae(i)}}if(g(e,"Multiply")){let t=e.ops,i=t.findIndex(r=>T(r,"ImaginaryUnit")||R(r)&&r.re===0&&r.im!==0);if(i>=0){let r=t[i],s=T(r,"ImaginaryUnit")?1:r.im,o=t.filter((l,c)=>c!==i);if(o.length===0)return{re:null,im:ae(s)};let a=o.map(l=>yi(l,n(l)));return s!==1&&a.unshift(ae(s)),{re:null,im:an(a,"1.0","*")}}}return y.isComplexValued(e)?null:{re:n(e),im:null}}function Vr(e){let n=Math.abs(e);return n<=.0031308?12.92*e:(Math.sign(e)||1)*(1.055*Math.pow(n,1/2.4)-.055)}function qr(e){let n=Math.abs(e);return n<=.04045?e/12.92:(Math.sign(e)||1)*Math.pow((n+.055)/1.055,2.4)}function Ii(e,n,t){e=e/360;let i,r,s;if(n===0)i=r=s=t;else{let o=(l,c,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<.16666666666666666?l+(c-l)*6*f:f<.5?c:f<.6666666666666666?l+(c-l)*(.6666666666666666-f)*6:l),a=t<.5?t*(1+n):t+n-t*n,u=2*t-a;i=o(u,a,e+1/3),r=o(u,a,e),s=o(u,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(r*255),b:Math.round(s*255)}}function _i(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),s=(i+r)/2;if(i===r)return{h:0,s:0,l:s};let o=i-r,a=s>.5?o/(2-i-r):o/(i+r),u;return i===e?u=((n-t)/o+(n<t?6:0))/6:i===n?u=((t-e)/o+2)/6:u=((e-n)/o+4)/6,{h:u*360,s:a,l:s}}function rl(e,n,t){e=(e%360+360)%360,n=Math.max(0,Math.min(1,n)),t=Math.max(0,Math.min(1,t));let i=t*n,r=i*(1-Math.abs(e/60%2-1)),s=t-i,o=0,a=0,u=0;return e<60?[o,a,u]=[i,r,0]:e<120?[o,a,u]=[r,i,0]:e<180?[o,a,u]=[0,i,r]:e<240?[o,a,u]=[0,r,i]:e<300?[o,a,u]=[r,0,i]:[o,a,u]=[i,0,r],{r:(o+s)*255,g:(a+s)*255,b:(u+s)*255}}function sl(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),s=i-r,o=0;s>0&&(i===e?o=(n-t)/s%6:i===n?o=(t-e)/s+2:o=(e-n)/s+4,o*=60,o<0&&(o+=360));let a=i===0?0:s/i;return{h:o,s:a,v:i}}function Bp(e){let n=e.startsWith("#")?e.substring(1):e,t,i,r,s;if(n.length===3)t=parseInt(n[0]+n[0],16),i=parseInt(n[1]+n[1],16),r=parseInt(n[2]+n[2],16);else if(n.length===6)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16);else if(n.length===8)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16),s=parseInt(n.substring(6,8),16)/255;else return{r:0,g:0,b:0};let o={r:t,g:i,b:r};return s!==void 0&&(o.alpha=s),o}function Ei(e){return typeof e=="number"?{r:e>>>24&255,g:e>>>16&255,b:e>>>8&255,alpha:(e&255)/255}:typeof e=="string"?Bp(e):"C"in e?Si(e):"a"in e&&"b"in e?Hr(e):e}function qu(e){let n=Ei(e),t=n.alpha!==void 0?Le(n.alpha*255):255;return(Le(n.r)<<24|Le(n.g)<<16|Le(n.b)<<8|t)>>>0}function Le(e){return e<0?0:e>255?255:Math.round(e)}function Mn(e){let[n,t,i]=[e.L,e.C,e.H],r=i*Math.PI/180,s={L:n,a:t*Math.cos(r),b:t*Math.sin(r)};return e.alpha!==void 0&&(s.alpha=e.alpha),s}function It(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.sqrt(t*t+i*i),o=Math.atan2(i,t)*180/Math.PI,a={L:n,C:r,H:o};return e.alpha!==void 0&&(a.alpha=e.alpha),a}function vi(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.pow(.9999999984505198*n+.39633779217376786*t+.2158037580607588*i,3),s=Math.pow(1.00000000888176*n-.10556134232365635*t-.0638541747717059*i,3),o=Math.pow(n*1.000000054672411-.0894841820949657*t-1.2914855378640917*i,3),a=4.076741661347994*r-3.307711590408193*s+.230969928729428*o,u=-1.2684380040921763*r+2.6097574006633715*s-.3413193963102197*o,l=-.004196086541837188*r-.7034186144594493*s+1.7076147009309444*o;return[Vr(a),Vr(u),Vr(l)]}function Jr(e){let[n,t,i]=e;return n>=0&&n<=1&&t>=0&&t<=1&&i>=0&&i<=1}function zr(e,n){let[t,i,r]=e;return t=Le(t*255),i=Le(i*255),r=Le(r*255),n!==void 0?{r:t,g:i,b:r,alpha:n}:{r:t,g:i,b:r}}function Hr(e){let[n,t,i]=vi(e);if(Jr([n,t,i]))return zr([n,t,i],e.alpha);let r=It(e);if(r.C=0,[n,t,i]=vi(Mn(r)),!Jr([n,t,i]))return zr([n,t,i],e.alpha);let s=0,o=e.L,a=(s+o)/2;r.C=a;let u=.36/Math.pow(2,12);for(;o-s>u;)a=(s+o)/2,r.C=a,[n,t,i]=vi(Mn(r)),Jr([n,t,i])?s=a:o=a;return zr([n,t,i],e.alpha)}function Si(e){return Hr(Mn(e))}function Ur(e){let[n,t,i]=[e.r,e.g,e.b],r=qr(n/255),s=qr(t/255),o=qr(i/255),a=.41222147079999993*r+.5363325363*s+.0514459929*o,u=.2119034981999999*r+.6806995450999999*s+.1073969566*o,l=.08830246189999998*r+.2817188376*s+.6299787005000002*o,c=Math.cbrt(a),f=Math.cbrt(u),m=Math.cbrt(l),h={L:.2104542553*c+.793617785*f-.0040720468*m,a:1.9779984951*c-2.428592205*f+.4505937099*m,b:.0259040371*c+.7827717662*f-.808675766*m};return e.alpha!==void 0&&(h.alpha=e.alpha),h}function Te(e){return It(Ur(e))}function Gr(e,n){let t=n*Math.PI/180,i=0,r=1.5;for(let s=0;s<32;s++){let o=(i+r)/2,[a,u,l]=vi({L:e,a:o*Math.cos(t),b:o*Math.sin(t)});a>=0&&a<=1&&u>=0&&u<=1&&l>=0&&l<=1?i=o:r=o}return i}function Gn(e,n,t){let i=e/100;if(i<=0)return 255;let r=Si({L:i,C:n,H:t});return(Le(r.r)<<24|Le(r.g)<<16|Le(r.b)<<8|255)>>>0}function Lp(e){let{l:n,c:t,h:i}=Ni(e);return Gn(n+2.8,t+.002,i+.46)}function Ni(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=Te({r:n,g:t,b:i});return{l:r.L*100,c:r.C,h:r.H<0?r.H+360:r.H}}function jr(e,n,t){let{l:i,c:r,h:s}=Ni(e),{l:o,c:a,h:u}=Ni(n),l=i+(o-i)*t,c=r+(a-r)*t,f=u-s;f>180&&(f-=360),f<-180&&(f+=360);let m=s+f*t,h=e&255,b=n&255,v=Math.round(h+(b-h)*t);return Gn(l,c,m<0?m+360:m>360?m-360:m)&4294967040|v}function Vp(e,n=.1){let a=.45,u=0;for(let b=.45;b>=.35;b-=.01){let v=Gr(b,e);if(v>=.15){a=b,u=.15;break}else v>u&&(a=b,u=v)}if(u<.15*.8)for(let b=.45+.01;b<=.5;b+=.01){let v=Gr(b,e);if(v>=.15||v>u*1.2){a=b,u=Math.min(.15,v);break}}let l=.96,c=.02,f=Gr(.96,e);f<.02&&(c=f*(1-n)),c=Math.max(.015,Math.min(.02,c));let m=Gn(a*100,u,e),h=Gn(l*100,c,e);return{darkest:m,lightest:h}}function qp(e,n){let t=Math.max(0,Math.min(1e3,n)),i,r,s;if(typeof e=="object")i=e.darkest,s=e.lightest,r=e.mid??0;else{r=e;let{h:u}=Ni(r),l=r&255,{darkest:c,lightest:f}=Vp(u);i=c&4294967040|l,s=f&4294967040|l}if(!r&&typeof e=="object"&&!e.mid&&(r=jr(i,s,.5)),t<=500){let u=t/500,l=u*u*(3-2*u);return jr(s,r,l)}let o=(t-500)/500,a=o*o*(3-2*o);return jr(r,i,a)}var Jp=[{id:"pink",name:"Pink",colors:{mid:{lightness:69,chroma:.202,hue:7.4}}},{id:"red",name:"Red",colors:{lightest:{lightness:95,chroma:.2,hue:30},mid:{lightness:62,chroma:.25,hue:30},darkest:{lightness:36,chroma:.16,hue:25}}},{id:"brown",name:"Brown",colors:{lightest:{lightness:94.5,chroma:.021,hue:72.1},mid:{lightness:59,chroma:.2,hue:73},darkest:{lightness:20,chroma:.061,hue:72.7}}},{id:"orange",name:"Orange",colors:{lightest:{lightness:95,chroma:.06,hue:82},mid:{lightness:73,chroma:.21,hue:56},darkest:{lightness:46,chroma:.2,hue:35}}},{id:"yellow",name:"Yellow",colors:{lightest:{lightness:97,chroma:.02,hue:106},mid:{lightness:89,chroma:.21,hue:99},darkest:{lightness:67,chroma:.43,hue:59}}},{id:"lime",name:"Lime",colors:{mid:{lightness:65,chroma:.192,hue:134.3}}},{id:"green",name:"Green",colors:{mid:{lightness:64,chroma:.21,hue:144}}},{id:"teal",name:"Teal",colors:{mid:{lightness:65,chroma:.116,hue:192.6}}},{id:"cyan",name:"Cyan",colors:{lightest:{lightness:97,chroma:.11,hue:195},mid:{lightness:61,chroma:.11,hue:210},darkest:{lightness:42,chroma:.11,hue:210}}},{id:"blue",name:"Blue",colors:{lightest:{lightness:91,chroma:.22,hue:240},mid:{lightness:63,chroma:.22,hue:255},darkest:{lightness:38,chroma:.22,hue:252}}},{id:"indigo",name:"Indigo",colors:{lightest:{lightness:92.7,chroma:.036,hue:291},mid:{lightness:67,chroma:.285,hue:296},darkest:{lightness:28,chroma:.23,hue:278}}},{id:"purple",name:"Purple",colors:{mid:{lightness:67,chroma:.21,hue:299}}}];function zn({lightness:e,chroma:n,hue:t}){return Gn(e,n,t)}function zp(e){let{mid:n,lightest:t,darkest:i}=e.colors;if(t&&i&&n)return{lightest:zn(t),mid:zn(n),darkest:zn(i)};if(t&&i)return{lightest:zn(t),darkest:zn(i)};if(n)return zn(n);throw new Error(`Color scale preset "${e.id}" is missing required anchors.`)}var xi=null;function Gp(){if(!xi){xi=Object.create(null);for(let e of Jp)xi[e.id]=zp(e)}return xi}var Ju={red:"#d7170b",orange:"#fe8a2b",yellow:"#ffc02b",lime:"#63b215",green:"#21ba3a",teal:"#17cfcf",cyan:"#13a7ec",blue:"#0d80f2",indigo:"#63c",purple:"#a219e6",magenta:"#eb4799",brown:"#8c564b",olive:"#8a8f2a",midnight:"#2c4670",sky:"#d2dce9",black:"#000",white:"#ffffff",carbon:"#111111",charcoal:"#333333",slate:"#555555","dark-grey":"#666",graphite:"#777777",stone:"#999999",grey:"#A6A6A6","light-grey":"#d4d5d2",ash:"#E6E6E6",mist:"#F3F3F3",snow:"#FFFFFF"};function tn(e,n){let t=e.trim().toLowerCase(),i=t.match(/^(.+?)\s*\/\s*(\d+(?:\.\d+)?)%?\s*$/);if(i){let l=tn(i[1].trim(),n),c=Math.max(0,Math.min(100,parseFloat(i[2]))),f=Math.round(c/100*255);return l&4294967040|f}if(t.startsWith("#")){let l=t.substring(1),c,f,m,h=255;if(l.length===3)c=parseInt(l[0]+l[0],16),f=parseInt(l[1]+l[1],16),m=parseInt(l[2]+l[2],16);else if(l.length===6)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),m=parseInt(l.substring(4,6),16);else if(l.length===8)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),m=parseInt(l.substring(4,6),16),h=parseInt(l.substring(6,8),16);else return 0;return(c<<24|f<<16|m<<8|h)>>>0}let r=t.match(/^rgba?\s*\(\s*([^)]+)\s*\)$/);if(r){let l=r[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0,m=parseFloat(l[2])||0;l[0].includes("%")||l[1].includes("%")||l[2].includes("%")?(l[0].includes("%")&&(c=c/100*255),l[1].includes("%")&&(f=f/100*255),l[2].includes("%")&&(m=m/100*255)):c<=1&&f<=1&&m<=1&&(c=c*255,f=f*255,m=m*255),c=Math.round(Math.max(0,Math.min(255,c))),f=Math.round(Math.max(0,Math.min(255,f))),m=Math.round(Math.max(0,Math.min(255,m)));let h=255;if(l.length>=4){let b=parseFloat(l[3]);l[3].includes("%")?b=b/100:b>1&&(b=b/255),h=Math.round(Math.max(0,Math.min(255,b*255)))}return(c<<24|f<<16|m<<8|h)>>>0}let s=t.match(/^oklch\s*\(\s*([^)]+)\s*\)$/);if(s){let l=s[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);l[0].includes("%")?c=c/100:c<=1||(c=c/100);let f=parseFloat(l[1])||0,m=parseFloat(l[2])||0,h=1;l.length>=4&&(h=parseFloat(l[3]),l[3].includes("%")?h=h/100:h>1&&(h=h/255));let b=Gn(c*100,f,m),v=Math.round(h*255);return b&4294967040|v}let o=t.match(/^oklab\s*\(\s*([^)]+)\s*\)$/);if(o){let l=o[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);(l[0].includes("%")||c>1)&&(c=c/100);let f=parseFloat(l[1])||0,m=parseFloat(l[2])||0,h=1;l.length>=4&&(h=parseFloat(l[3]),l[3].includes("%")?h=h/100:h>1&&(h=h/255));let b=Hr({L:c,a:f,b:m}),v=b.r,E=b.g,I=b.b,w=Math.round(h*255);return(v<<24|E<<16|I<<8|w)>>>0}let a=t.match(/^hsl\s*\(\s*([^)]+)\s*\)$/);if(a){let l=a[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0;l[1].includes("%")?f=f/100:f<=1||(f=f/100);let m=parseFloat(l[2])||0;l[2].includes("%")?m=m/100:m<=1||(m=m/100);let h=1;l.length>=4&&(h=parseFloat(l[3]),l[3].includes("%")?h=h/100:h>1&&(h=h/255));let{r:b,g:v,b:E}=Ii(c,f,m),I=Math.round(h*255);return(b<<24|v<<16|E<<8|I)>>>0}if(t==="transparent")return 0;let u=t.match(/^([a-z]+)-(\d+)$/);if(u){let l=Gp()[u[1]];if(l){let c=qp(l,parseInt(u[2],10));return n?Lp(c):c}}return t in Ju?tn(Ju[t]):(console.warn(`parseColor: unrecognized color "${e}"`),0)}function Ti(e,n){let t=Ei(e),i=Ei(n),r=.56,s=.57,o=.62,a=.65,u=.022,l=1.414,c=.1,f=5e-4,m=1.14,h=.027,b=1.14,v=.027;function E(F){return F>=u?F:F+(u-F)**l}function I(F){return(F<0?-1:1)*Math.pow(Math.abs(F),2.4)}let w=E(I(i.r/255)*.2126729+I(i.g/255)*.7151522+I(i.b/255)*.072175),O=E(I(t.r/255)*.2126729+I(t.g/255)*.7151522+I(t.b/255)*.072175),z,D;return Math.abs(O-w)<f?D=0:O>w?(z=O**r-w**s,D=z*m):(z=O**a-w**o,D=z*b),Math.abs(D)<c?0:D>0?D-v:D+h}function Zr(e){let n,t,i;typeof e!="object"||!("bg"in e)?(n=Ei(e),t="#ffffff",i="#000000"):(n=e.bg,t=e.fg1,i=e.fg2);let r=Math.abs(Ti(t,n)),s=Math.abs(Ti(i,n));return r>=s?qu(t):qu(i)}function ol(e,n){let t=e.L-n.L,i=e.a-n.a,r=e.b-n.b;return Math.sqrt(t*t+i*i+r*r)}var jp=["#4e79a7","#f28e2b","#59a14f","#e15759","#b07aa1","#9c755f","#ff9da7","#edc948","#76b7b2","#6b8fd6","#c07bc4"],Hp=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],Up=["#4e79a7","#f28e2b","#2ca58d","#d13a3c","#b07aa1","#9c755f","#ff9da7","#e3c13b","#5fb8b2","#6b8fd6","#c07bc4"],Zp=["#8fb1d4","#f6b878","#8ecf86","#f08a8b","#d3a9cc","#c3a492","#ffc6cc","#f3e08a","#a8d8d4","#a9c0ea","#e0b4e4"],Yp=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],Wp=["#2f6fb0","#ff7a00","#2fa23a","#e02f2f","#9b4db5","#7f4f38","#ff6f86","#f2c200","#2daaa3","#4c79e0","#b84ac6"],Xp=["#4f93ff","#ff8c1a","#33c94a","#ff4f4f","#b86bff","#a86a4a","#ff7f9e","#ffd400","#2ec9c1","#6f9bff","#cc5bd9"],Qp=["#5E81B5","#E19C24","#8FB131","#EB6235","#8778B3","#C56E1A","#5E9EC9","#B23A3A","#4C9F70","#C979B7"],Kp=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],em=["#007AFF","#FF9500","#34C759","#FF3B30","#AF52DE","#FF2D55","#30B0C7","#5856D6","#A2845E","#32ADE6","#00C7BE"],nm=["#0A84FF","#FF9F0A","#30D158","#FF453A","#BF5AF2","#FF375F","#40C8E0","#5E5CE6","#AC8E68","#64D2FF","#00D1C1"],tm=["#fdfdfd","#1d1d1d","#ebce2b","#702c8c","#db6917","#96cde6","#ba1c30","#c0bd7f","#7f7e80","#5fa641","#d485b2","#4277b6","#df8461","#463397","#e1a11a","#91218c","#e8e948","#7e1510","#92ae31","#6f340d","#d32b1e","#2b3514"],im=["#4148cc","#db3c80","#12b5b0","#ff8c14","#848aff","#78e16e","#1e78f0","#ebcd00","#beeb3c","#7828d2","#cd5f00","#00915f"],al={tycho11:jp,"tycho-dark11":Hp,"tycho-robust11":Up,"tycho-soft11":Zp,"tycho-soft-dark11":Yp,"tycho-bold11":Wp,"tycho-bold-dark11":Xp,tableau10:Kp,kelly22:tm,mathematica10:Qp,cupertino10:em,"cupertino-dark10":nm,spectrum12:im},zu=["#033198","#053399","#07359a","#09379b","#0b399c","#0c3b9c","#0e3d9d","#0f3f9e","#11409f","#1242a0","#1344a0","#1446a1","#1548a2","#164aa3","#174ca4","#184da4","#194fa5","#1951a6","#1a53a7","#1b54a8","#1b56a8","#1c58a9","#1d5aaa","#1d5bab","#1e5dab","#1e5fac","#1f60ad","#2062ae","#2064ae","#2166af","#2167b0","#2269b0","#226ab1","#236cb2","#236eb3","#246fb3","#2471b4","#2573b5","#2574b5","#2676b6","#2677b7","#2779b7","#287ab8","#287cb9","#297eb9","#297fba","#2a81bb","#2b82bb","#2b84bc","#2c85bd","#2d87bd","#2d88be","#2e8abf","#2f8cbf","#308dc0","#308fc1","#3190c1","#3292c2","#3394c3","#3495c3","#3597c4","#3698c5","#379ac5","#389cc6","#399dc7","#3a9fc7","#3ca1c8","#3da2c9","#3ea4c9","#40a6ca","#41a7cb","#43a9cb","#44abcc","#46accc","#47aecd","#49b0ce","#4bb2ce","#4db3cf","#4fb5d0","#51b7d0","#53b8d1","#55bad1","#57bcd2","#59bdd2","#5bbfd3","#5dc1d3","#60c3d4","#62c4d4","#64c6d5","#67c7d5","#69c9d5","#6ccbd6","#6eccd6","#71ced6","#74cfd6","#76d1d7","#79d2d7","#7bd4d7","#7ed5d7","#81d7d7","#83d8d7","#86d9d7","#89dad7","#8bdcd7","#8eddd7","#90ded7","#93dfd6","#95e0d6","#98e1d6","#9be2d5","#9de3d5","#9fe4d4","#a2e5d4","#a4e5d3","#a6e6d2","#a9e7d2","#abe7d1","#ade8d0","#afe8cf","#b1e9ce","#b3e9cd","#b5eacc","#b7eaca","#b9eac9","#bbeac8","#bdeac6","#beeac5","#c0eac3","#c1eac2","#c3eac0","#c4eabe","#c6eabc","#c7e9ba","#c8e9b8","#c9e9b6","#cbe8b4","#cce7b2","#cce7b0","#cde6ad","#cee5ab","#cfe5a8","#d0e4a6","#d0e3a3","#d1e2a1","#d1e19e","#d1df9b","#d2de98","#d2dd96","#d2dc93","#d2da90","#d2d98d","#d2d78a","#d2d687","#d2d484","#d2d381","#d2d17e","#d1cf7b","#d1cd78","#d0cc75","#d0ca72","#cfc86f","#cfc66d","#cec46a","#cec267","#cdc064","#ccbe62","#cbbc5f","#cbba5d","#cab85a","#c9b658","#c8b455","#c7b253","#c7b051","#c6ae4f","#c5ac4c","#c4aa4a","#c3a848","#c2a647","#c1a545","#c1a343","#c0a141","#bf9f40","#be9d3e","#bd9b3c","#bc993b","#bb9739","#ba9538","#ba9437","#b99235","#b89034","#b78e33","#b68c32","#b58b31","#b58930","#b4872f","#b3862e","#b2842d","#b1822c","#b0802b","#b07f2a","#af7d29","#ae7c28","#ad7a27","#ad7826","#ac7726","#ab7525","#aa7324","#a97223","#a97023","#a86f22","#a76d21","#a66c20","#a66a20","#a5681f","#a4671e","#a3651e","#a2641d","#a2621c","#a1611c","#a05f1b","#9f5d1a","#9e5c19","#9e5a19","#9d5818","#9c5717","#9b5517","#9a5316","#995215","#995014","#984e14","#974d13","#964b12","#954912","#944711","#934610","#92440f","#91420f","#90400e","#903e0d","#8f3c0c","#8e3a0b","#8d380b","#8c360a","#8b3409","#8a3208","#883008","#872e07","#862c06","#852a06","#842705","#832504","#822204","#812003","#801d02","#7f1a01","#7e1700"],Gu=["#0b3c78","#2366a8","#4f97cf","#9bc7e4","#f7f7f7","#e88fa0","#c23c6f","#8e1d4d","#5a0c2e"],ju=["#2c557f","#4a7fa8","#7aa8c9","#b5cfe3","#f7f7f7","#e4b0b0","#c96c72","#9b3d4f","#6b1a2b"],Hu=["#053061","#11458c","#1f5fa5","#337ab7","#4f94c6","#6baed6","#8bbdd9","#a6cce3","#c1dbec","#dceaf4","#f7f7f7","#fbe3d6","#f9c8b2","#f5a993","#ee8a75","#e36b58","#d64b41","#c72c33","#af212d","#971628","#7f0b23","#67001f"],Uu=["#3b4cc0","#465ecf","#5070de","#5c82ea","#6f96f5","#86aafc","#9dbdff","#b6d0f3","#cfe1e8","#e6efe1","#f1f1f1","#f7f7f7","#f6e1d3","#f4cbb3","#f1b594","#ee9f76","#ea8960","#e06b53","#d24f49","#c1363f","#ae2036","#b40426"],Tt=e=>e.slice().reverse(),ul={roma:zu,"roma-reversed":Tt(zu),vik:Gu,"vik-reversed":Tt(Gu),broc:ju,"broc-reversed":Tt(ju),rdbu:Hu,"rdbu-reversed":Tt(Hu),coolwarm:Uu,"coolwarm-reversed":Tt(Uu)},Zu=["#30123b","#321543","#33184a","#341b51","#351e58","#36215f","#372466","#38276d","#392a73","#3a2d79","#3b2f80","#3c3286","#3d358b","#3e3891","#3f3b97","#3f3e9c","#4040a2","#4143a7","#4146ac","#4249b1","#424bb5","#434eba","#4451bf","#4454c3","#4456c7","#4559cb","#455ccf","#455ed3","#4661d6","#4664da","#4666dd","#4669e0","#466be3","#476ee6","#4771e9","#4773eb","#4776ee","#4778f0","#477bf2","#467df4","#4680f6","#4682f8","#4685fa","#4687fb","#458afc","#458cfd","#448ffe","#4391fe","#4294ff","#4196ff","#4099ff","#3e9bfe","#3d9efe","#3ba0fd","#3aa3fc","#38a5fb","#37a8fa","#35abf8","#33adf7","#31aff5","#2fb2f4","#2eb4f2","#2cb7f0","#2ab9ee","#28bceb","#27bee9","#25c0e7","#23c3e4","#22c5e2","#20c7df","#1fc9dd","#1ecbda","#1ccdd8","#1bd0d5","#1ad2d2","#1ad4d0","#19d5cd","#18d7ca","#18d9c8","#18dbc5","#18ddc2","#18dec0","#18e0bd","#19e2bb","#19e3b9","#1ae4b6","#1ce6b4","#1de7b2","#1fe9af","#20eaac","#22ebaa","#25eca7","#27eea4","#2aefa1","#2cf09e","#2ff19b","#32f298","#35f394","#38f491","#3cf58e","#3ff68a","#43f787","#46f884","#4af880","#4ef97d","#52fa7a","#55fa76","#59fb73","#5dfc6f","#61fc6c","#65fd69","#69fd66","#6dfe62","#71fe5f","#75fe5c","#79fe59","#7dff56","#80ff53","#84ff51","#88ff4e","#8bff4b","#8fff49","#92ff47","#96fe44","#99fe42","#9cfe40","#9ffd3f","#a1fd3d","#a4fc3c","#a7fc3a","#a9fb39","#acfb38","#affa37","#b1f936","#b4f836","#b7f735","#b9f635","#bcf534","#bef434","#c1f334","#c3f134","#c6f034","#c8ef34","#cbed34","#cdec34","#d0ea34","#d2e935","#d4e735","#d7e535","#d9e436","#dbe236","#dde037","#dfdf37","#e1dd37","#e3db38","#e5d938","#e7d739","#e9d539","#ebd339","#ecd13a","#eecf3a","#efcd3a","#f1cb3a","#f2c93a","#f4c73a","#f5c53a","#f6c33a","#f7c13a","#f8be39","#f9bc39","#faba39","#fbb838","#fbb637","#fcb336","#fcb136","#fdae35","#fdac34","#fea933","#fea732","#fea431","#fea130","#fe9e2f","#fe9b2d","#fe992c","#fe962b","#fe932a","#fe9029","#fd8d27","#fd8a26","#fc8725","#fc8423","#fb8122","#fb7e21","#fa7b1f","#f9781e","#f9751d","#f8721c","#f76f1a","#f66c19","#f56918","#f46617","#f36315","#f26014","#f15d13","#f05b12","#ef5811","#ed5510","#ec530f","#eb500e","#ea4e0d","#e84b0c","#e7490c","#e5470b","#e4450a","#e2430a","#e14109","#df3f08","#dd3d08","#dc3b07","#da3907","#d83706","#d63506","#d43305","#d23105","#d02f05","#ce2d04","#cc2b04","#ca2a04","#c82803","#c52603","#c32503","#c12302","#be2102","#bc2002","#b91e02","#b71d02","#b41b01","#b21a01","#af1801","#ac1701","#a91601","#a71401","#a41301","#a11201","#9e1001","#9b0f01","#980e01","#950d01","#920b01","#8e0a01","#8b0902","#880802","#850702","#810602","#7e0502","#7a0403"],Yu=["#000004","#010005","#010106","#010108","#020109","#02020b","#02020d","#03030f","#030312","#040414","#050416","#060518","#06051a","#07061c","#08071e","#090720","#0a0822","#0b0924","#0c0926","#0d0a29","#0e0b2b","#100b2d","#110c2f","#120d31","#130d34","#140e36","#150e38","#160f3b","#180f3d","#19103f","#1a1042","#1c1044","#1d1147","#1e1149","#20114b","#21114e","#221150","#241253","#251255","#271258","#29115a","#2a115c","#2c115f","#2d1161","#2f1163","#311165","#331067","#341069","#36106b","#38106c","#390f6e","#3b0f70","#3d0f71","#3f0f72","#400f74","#420f75","#440f76","#451077","#471078","#491078","#4a1079","#4c117a","#4e117b","#4f127b","#51127c","#52137c","#54137d","#56147d","#57157e","#59157e","#5a167e","#5c167f","#5d177f","#5f187f","#601880","#621980","#641a80","#651a80","#671b80","#681c81","#6a1c81","#6b1d81","#6d1d81","#6e1e81","#701f81","#721f81","#732081","#752181","#762181","#782281","#792282","#7b2382","#7c2382","#7e2482","#802582","#812581","#832681","#842681","#862781","#882781","#892881","#8b2981","#8c2981","#8e2a81","#902a81","#912b81","#932b80","#942c80","#962c80","#982d80","#992d80","#9b2e7f","#9c2e7f","#9e2f7f","#a02f7f","#a1307e","#a3307e","#a5317e","#a6317d","#a8327d","#aa337d","#ab337c","#ad347c","#ae347b","#b0357b","#b2357b","#b3367a","#b5367a","#b73779","#b83779","#ba3878","#bc3978","#bd3977","#bf3a77","#c03a76","#c23b75","#c43c75","#c53c74","#c73d73","#c83e73","#ca3e72","#cc3f71","#cd4071","#cf4070","#d0416f","#d2426f","#d3436e","#d5446d","#d6456c","#d8456c","#d9466b","#db476a","#dc4869","#de4968","#df4a68","#e04c67","#e24d66","#e34e65","#e44f64","#e55064","#e75263","#e85362","#e95462","#ea5661","#eb5760","#ec5860","#ed5a5f","#ee5b5e","#ef5d5e","#f05f5e","#f1605d","#f2625d","#f2645c","#f3655c","#f4675c","#f4695c","#f56b5c","#f66c5c","#f66e5c","#f7705c","#f7725c","#f8745c","#f8765c","#f9785d","#f9795d","#f97b5d","#fa7d5e","#fa7f5e","#fa815f","#fb835f","#fb8560","#fb8761","#fc8961","#fc8a62","#fc8c63","#fc8e64","#fc9065","#fd9266","#fd9467","#fd9668","#fd9869","#fd9a6a","#fd9b6b","#fe9d6c","#fe9f6d","#fea16e","#fea36f","#fea571","#fea772","#fea973","#feaa74","#feac76","#feae77","#feb078","#feb27a","#feb47b","#feb67c","#feb77e","#feb97f","#febb81","#febd82","#febf84","#fec185","#fec287","#fec488","#fec68a","#fec88c","#feca8d","#fecc8f","#fecd90","#fecf92","#fed194","#fed395","#fed597","#fed799","#fed89a","#fdda9c","#fddc9e","#fddea0","#fde0a1","#fde2a3","#fde3a5","#fde5a7","#fde7a9","#fde9aa","#fdebac","#fcecae","#fceeb0","#fcf0b2","#fcf2b4","#fcf4b6","#fcf6b8","#fcf7b9","#fcf9bb","#fcfbbd","#fcfdbf"],Wu=["#000004","#010005","#010106","#010108","#02010a","#02020c","#02020e","#030210","#040312","#040314","#050417","#060419","#07051b","#08051d","#09061f","#0a0722","#0b0724","#0c0826","#0d0829","#0e092b","#10092d","#110a30","#120a32","#140b34","#150b37","#160b39","#180c3c","#190c3e","#1b0c41","#1c0c43","#1e0c45","#1f0c48","#210c4a","#230c4c","#240c4f","#260c51","#280b53","#290b55","#2b0b57","#2d0b59","#2f0a5b","#310a5c","#320a5e","#340a5f","#360961","#380962","#390963","#3b0964","#3d0965","#3e0966","#400a67","#420a68","#440a68","#450a69","#470b6a","#490b6a","#4a0c6b","#4c0c6b","#4d0d6c","#4f0d6c","#510e6c","#520e6d","#540f6d","#550f6d","#57106e","#59106e","#5a116e","#5c126e","#5d126e","#5f136e","#61136e","#62146e","#64156e","#65156e","#67166e","#69166e","#6a176e","#6c186e","#6d186e","#6f196e","#71196e","#721a6e","#741a6e","#751b6e","#771c6d","#781c6d","#7a1d6d","#7c1d6d","#7d1e6d","#7f1e6c","#801f6c","#82206c","#84206b","#85216b","#87216b","#88226a","#8a226a","#8c2369","#8d2369","#8f2469","#902568","#922568","#932667","#952667","#972766","#982766","#9a2865","#9b2964","#9d2964","#9f2a63","#a02a63","#a22b62","#a32c61","#a52c60","#a62d60","#a82e5f","#a92e5e","#ab2f5e","#ad305d","#ae305c","#b0315b","#b1325a","#b3325a","#b43359","#b63458","#b73557","#b93556","#ba3655","#bc3754","#bd3853","#bf3952","#c03a51","#c13a50","#c33b4f","#c43c4e","#c63d4d","#c73e4c","#c83f4b","#ca404a","#cb4149","#cc4248","#ce4347","#cf4446","#d04545","#d24644","#d34743","#d44842","#d54a41","#d74b3f","#d84c3e","#d94d3d","#da4e3c","#db503b","#dd513a","#de5238","#df5337","#e05536","#e15635","#e25734","#e35933","#e45a31","#e55c30","#e65d2f","#e75e2e","#e8602d","#e9612b","#ea632a","#eb6429","#eb6628","#ec6726","#ed6925","#ee6a24","#ef6c23","#ef6e21","#f06f20","#f1711f","#f1731d","#f2741c","#f3761b","#f37819","#f47918","#f57b17","#f57d15","#f67e14","#f68013","#f78212","#f78410","#f8850f","#f8870e","#f8890c","#f98b0b","#f98c0a","#f98e09","#fa9008","#fa9207","#fa9407","#fb9606","#fb9706","#fb9906","#fb9b06","#fb9d07","#fc9f07","#fca108","#fca309","#fca50a","#fca60c","#fca80d","#fcaa0f","#fcac11","#fcae12","#fcb014","#fcb216","#fcb418","#fbb61a","#fbb81d","#fbba1f","#fbbc21","#fbbe23","#fac026","#fac228","#fac42a","#fac62d","#f9c72f","#f9c932","#f9cb35","#f8cd37","#f8cf3a","#f7d13d","#f7d340","#f6d543","#f6d746","#f5d949","#f5db4c","#f4dd4f","#f4df53","#f4e156","#f3e35a","#f3e55d","#f2e661","#f2e865","#f2ea69","#f1ec6d","#f1ed71","#f1ef75","#f1f179","#f2f27d","#f2f482","#f3f586","#f3f68a","#f4f88e","#f5f992","#f6fa96","#f8fb9a","#f9fc9d","#fafda1","#fcffa4"],Xu=["#0d0887","#100788","#130789","#16078a","#19068c","#1b068d","#1d068e","#20068f","#220690","#240691","#260591","#280592","#2a0593","#2c0594","#2e0595","#2f0596","#310597","#330597","#350498","#370499","#38049a","#3a049a","#3c049b","#3e049c","#3f049c","#41049d","#43039e","#44039e","#46039f","#48039f","#4903a0","#4b03a1","#4c02a1","#4e02a2","#5002a2","#5102a3","#5302a3","#5502a4","#5601a4","#5801a4","#5901a5","#5b01a5","#5c01a6","#5e01a6","#6001a6","#6100a7","#6300a7","#6400a7","#6600a7","#6700a8","#6900a8","#6a00a8","#6c00a8","#6e00a8","#6f00a8","#7100a8","#7201a8","#7401a8","#7501a8","#7701a8","#7801a8","#7a02a8","#7b02a8","#7d03a8","#7e03a8","#8004a8","#8104a7","#8305a7","#8405a7","#8606a6","#8707a6","#8808a6","#8a09a5","#8b0aa5","#8d0ba5","#8e0ca4","#8f0da4","#910ea3","#920fa3","#9410a2","#9511a1","#9613a1","#9814a0","#99159f","#9a169f","#9c179e","#9d189d","#9e199d","#a01a9c","#a11b9b","#a21d9a","#a31e9a","#a51f99","#a62098","#a72197","#a82296","#aa2395","#ab2494","#ac2694","#ad2793","#ae2892","#b02991","#b12a90","#b22b8f","#b32c8e","#b42e8d","#b52f8c","#b6308b","#b7318a","#b83289","#ba3388","#bb3488","#bc3587","#bd3786","#be3885","#bf3984","#c03a83","#c13b82","#c23c81","#c33d80","#c43e7f","#c5407e","#c6417d","#c7427c","#c8437b","#c9447a","#ca457a","#cb4679","#cc4778","#cc4977","#cd4a76","#ce4b75","#cf4c74","#d04d73","#d14e72","#d24f71","#d35171","#d45270","#d5536f","#d5546e","#d6556d","#d7566c","#d8576b","#d9586a","#da5a6a","#da5b69","#db5c68","#dc5d67","#dd5e66","#de5f65","#de6164","#df6263","#e06363","#e16462","#e26561","#e26660","#e3685f","#e4695e","#e56a5d","#e56b5d","#e66c5c","#e76e5b","#e76f5a","#e87059","#e97158","#e97257","#ea7457","#eb7556","#eb7655","#ec7754","#ed7953","#ed7a52","#ee7b51","#ef7c51","#ef7e50","#f07f4f","#f0804e","#f1814d","#f1834c","#f2844b","#f3854b","#f3874a","#f48849","#f48948","#f58b47","#f58c46","#f68d45","#f68f44","#f79044","#f79143","#f79342","#f89441","#f89540","#f9973f","#f9983e","#f99a3e","#fa9b3d","#fa9c3c","#fa9e3b","#fb9f3a","#fba139","#fba238","#fca338","#fca537","#fca636","#fca835","#fca934","#fdab33","#fdac33","#fdae32","#fdaf31","#fdb130","#fdb22f","#fdb42f","#fdb52e","#feb72d","#feb82c","#feba2c","#febb2b","#febd2a","#febe2a","#fec029","#fdc229","#fdc328","#fdc527","#fdc627","#fdc827","#fdca26","#fdcb26","#fccd25","#fcce25","#fcd025","#fcd225","#fbd324","#fbd524","#fbd724","#fad824","#fada24","#f9dc24","#f9dd25","#f8df25","#f8e125","#f7e225","#f7e425","#f6e626","#f6e826","#f5e926","#f5eb27","#f4ed27","#f3ee27","#f3f027","#f2f227","#f1f426","#f1f525","#f0f724","#f0f921"],Qu=["#440154","#440256","#450457","#450559","#46075a","#46085c","#460a5d","#460b5e","#470d60","#470e61","#471063","#471164","#471365","#481467","#481668","#481769","#48186a","#481a6c","#481b6d","#481c6e","#481d6f","#481f70","#482071","#482173","#482374","#482475","#482576","#482677","#482878","#482979","#472a7a","#472c7a","#472d7b","#472e7c","#472f7d","#46307e","#46327e","#46337f","#463480","#453581","#453781","#453882","#443983","#443a83","#443b84","#433d84","#433e85","#423f85","#424086","#424186","#414287","#414487","#404588","#404688","#3f4788","#3f4889","#3e4989","#3e4a89","#3e4c8a","#3d4d8a","#3d4e8a","#3c4f8a","#3c508b","#3b518b","#3b528b","#3a538b","#3a548c","#39558c","#39568c","#38588c","#38598c","#375a8c","#375b8d","#365c8d","#365d8d","#355e8d","#355f8d","#34608d","#34618d","#33628d","#33638d","#32648e","#32658e","#31668e","#31678e","#31688e","#30698e","#306a8e","#2f6b8e","#2f6c8e","#2e6d8e","#2e6e8e","#2e6f8e","#2d708e","#2d718e","#2c718e","#2c728e","#2c738e","#2b748e","#2b758e","#2a768e","#2a778e","#2a788e","#29798e","#297a8e","#297b8e","#287c8e","#287d8e","#277e8e","#277f8e","#27808e","#26818e","#26828e","#26828e","#25838e","#25848e","#25858e","#24868e","#24878e","#23888e","#23898e","#238a8d","#228b8d","#228c8d","#228d8d","#218e8d","#218f8d","#21908d","#21918c","#20928c","#20928c","#20938c","#1f948c","#1f958b","#1f968b","#1f978b","#1f988b","#1f998a","#1f9a8a","#1e9b8a","#1e9c89","#1e9d89","#1f9e89","#1f9f88","#1fa088","#1fa188","#1fa187","#1fa287","#20a386","#20a486","#21a585","#21a685","#22a785","#22a884","#23a983","#24aa83","#25ab82","#25ac82","#26ad81","#27ad81","#28ae80","#29af7f","#2ab07f","#2cb17e","#2db27d","#2eb37c","#2fb47c","#31b57b","#32b67a","#34b679","#35b779","#37b878","#38b977","#3aba76","#3bbb75","#3dbc74","#3fbc73","#40bd72","#42be71","#44bf70","#46c06f","#48c16e","#4ac16d","#4cc26c","#4ec36b","#50c46a","#52c569","#54c568","#56c667","#58c765","#5ac864","#5cc863","#5ec962","#60ca60","#63cb5f","#65cb5e","#67cc5c","#69cd5b","#6ccd5a","#6ece58","#70cf57","#73d056","#75d054","#77d153","#7ad151","#7cd250","#7fd34e","#81d34d","#84d44b","#86d549","#89d548","#8bd646","#8ed645","#90d743","#93d741","#95d840","#98d83e","#9bd93c","#9dd93b","#a0da39","#a2da37","#a5db36","#a8db34","#aadc32","#addc30","#b0dd2f","#b2dd2d","#b5de2b","#b8de29","#bade28","#bddf26","#c0df25","#c2df23","#c5e021","#c8e020","#cae11f","#cde11d","#d0e11c","#d2e21b","#d5e21a","#d8e219","#dae319","#dde318","#dfe318","#e2e418","#e5e419","#e7e419","#eae51a","#ece51b","#efe51c","#f1e51d","#f4e61e","#f6e620","#f8e621","#fbe723","#fde725"],Ku=["#00204d","#00214e","#002250","#002252","#002353","#002455","#002557","#002558","#00265a","#00275c","#00275e","#002860","#002961","#002a63","#002a65","#002b67","#002c69","#002c6a","#002d6c","#002e6e","#002e6f","#002f6f","#002f6f","#00306f","#00306f","#00316f","#00326f","#00336f","#00336f","#00346f","#00356e","#01366e","#06366e","#0b376e","#0f386e","#12386d","#15396d","#183a6d","#1a3b6d","#1d3b6d","#1f3c6d","#213d6d","#233e6c","#243e6c","#263f6c","#28406c","#2a406c","#2b416c","#2d426c","#2e436c","#30436c","#31446b","#32456b","#34456b","#35466b","#36476b","#38486b","#39486b","#3a496b","#3b4a6b","#3d4a6b","#3e4b6b","#3f4c6b","#404d6b","#414d6b","#424e6b","#434f6b","#444f6b","#46506b","#47516b","#48526b","#49526b","#4a536b","#4b546c","#4c546c","#4d556c","#4e566c","#4f576c","#50576c","#51586c","#52596c","#53596c","#545a6c","#555b6d","#565c6d","#575c6d","#585d6d","#595e6d","#595f6d","#5a5f6d","#5b606e","#5c616e","#5d616e","#5e626e","#5f636e","#60646f","#61646f","#62656f","#63666f","#64666f","#646770","#656870","#666970","#676970","#686a71","#696b71","#6a6c71","#6b6c71","#6c6d72","#6c6e72","#6d6e72","#6e6f73","#6f7073","#707173","#717174","#727274","#727374","#737475","#747475","#757575","#767676","#777776","#787777","#787877","#797977","#7a7a78","#7b7a78","#7c7b78","#7d7c78","#7e7d78","#7f7d78","#807e79","#817f79","#828079","#838079","#848179","#848279","#858379","#868379","#878479","#888579","#898679","#8a8779","#8b8779","#8c8879","#8d8979","#8e8a79","#8f8a79","#908b79","#918c78","#928d78","#938e78","#948e78","#958f78","#969078","#979178","#989278","#999278","#9a9377","#9b9477","#9c9577","#9d9677","#9e9677","#9f9777","#a09877","#a19976","#a29a76","#a39a76","#a49b76","#a59c76","#a69d75","#a89e75","#a99f75","#aa9f75","#aba074","#aca174","#ada274","#aea374","#afa473","#b0a473","#b1a573","#b2a672","#b3a772","#b4a872","#b5a971","#b6a971","#b7aa71","#b8ab70","#b9ac70","#baad70","#bbae6f","#bcaf6f","#beaf6f","#bfb06e","#c0b16e","#c1b26d","#c2b36d","#c3b46d","#c4b56c","#c5b56c","#c6b66b","#c7b76b","#c8b86a","#c9b96a","#cbba69","#ccbb69","#cdbc68","#cebc68","#cfbd67","#d0be67","#d1bf66","#d2c066","#d3c165","#d4c264","#d6c364","#d7c463","#d8c563","#d9c562","#dac661","#dbc761","#dcc860","#ddc95f","#deca5f","#e0cb5e","#e1cc5d","#e2cd5c","#e3ce5c","#e4cf5b","#e5d05a","#e6d159","#e8d259","#e9d358","#ead357","#ebd456","#ecd555","#edd654","#efd753","#f0d852","#f1d951","#f2da50","#f3db4f","#f4dc4e","#f6dd4d","#f7de4c","#f8df4b","#f9e04a","#fae149","#fbe248","#fde346","#fee445","#ffe544","#ffe642","#ffe742","#ffe843","#ffe944","#ffea46"],el=["#03051a","#04051a","#05061b","#06071c","#07071d","#08081e","#0a091f","#0b0920","#0d0a21","#0e0b22","#100b23","#110c24","#130d25","#140e26","#160e27","#170f28","#180f29","#1a102a","#1b112b","#1d112c","#1e122d","#20122e","#211330","#221331","#241432","#251433","#271534","#281535","#2a1636","#2b1637","#2d1738","#2e1739","#30173a","#31183b","#33183c","#34193d","#35193e","#37193f","#381a40","#3a1a41","#3c1a42","#3d1a42","#3f1b43","#401b44","#421b45","#431c46","#451c47","#461c48","#481c48","#491d49","#4b1d4a","#4c1d4b","#4e1d4b","#501d4c","#511e4d","#531e4d","#541e4e","#561e4f","#581e4f","#591e50","#5b1e51","#5c1e51","#5e1f52","#601f52","#611f53","#631f53","#641f54","#661f54","#681f55","#691f55","#6b1f56","#6d1f56","#6e1f57","#701f57","#711f57","#731f58","#751f58","#761f58","#781f59","#7a1f59","#7b1f59","#7d1f5a","#7f1e5a","#811e5a","#821e5a","#841e5a","#861e5b","#871e5b","#891e5b","#8b1d5b","#8c1d5b","#8e1d5b","#901d5b","#921c5b","#931c5b","#951c5b","#971c5b","#981b5b","#9a1b5b","#9c1b5b","#9e1a5b","#9f1a5b","#a11a5b","#a3195b","#a4195b","#a6195a","#a8185a","#aa185a","#ab185a","#ad1759","#af1759","#b01759","#b21758","#b41658","#b51657","#b71657","#b91657","#ba1656","#bc1656","#bd1655","#bf1654","#c11754","#c21753","#c41753","#c51852","#c71951","#c81951","#ca1a50","#cb1b4f","#cd1c4e","#ce1d4e","#cf1e4d","#d11f4c","#d2204c","#d3214b","#d5224a","#d62449","#d72549","#d82748","#d92847","#db2946","#dc2b46","#dd2c45","#de2e44","#df2f44","#e03143","#e13342","#e23442","#e33641","#e43841","#e53940","#e63b40","#e73d3f","#e83f3f","#e8403e","#e9423e","#ea443e","#eb463e","#eb483e","#ec4a3e","#ec4c3e","#ed4e3e","#ed503e","#ee523f","#ee543f","#ef5640","#ef5840","#ef5a41","#f05c42","#f05e42","#f06043","#f16244","#f16445","#f16646","#f26747","#f26948","#f26b49","#f26d4b","#f26f4c","#f3714d","#f3734e","#f37450","#f37651","#f37852","#f47a54","#f47c55","#f47d57","#f47f58","#f4815a","#f4835b","#f4845d","#f4865e","#f58860","#f58a61","#f58b63","#f58d64","#f58f66","#f59067","#f59269","#f5946b","#f5966c","#f5976e","#f59970","#f69b71","#f69c73","#f69e75","#f6a077","#f6a178","#f6a37a","#f6a47c","#f6a67e","#f6a880","#f6a981","#f6ab83","#f6ad85","#f6ae87","#f6b089","#f6b18b","#f6b38d","#f6b48f","#f6b691","#f6b893","#f6b995","#f6bb97","#f6bc99","#f6be9b","#f6bf9d","#f6c19f","#f7c2a2","#f7c4a4","#f7c6a6","#f7c7a8","#f7c9aa","#f7caac","#f7ccaf","#f7cdb1","#f7cfb3","#f7d0b5","#f8d1b8","#f8d3ba","#f8d4bc","#f8d6be","#f8d7c0","#f8d9c3","#f8dac5","#f8dcc7","#f9ddc9","#f9dfcb","#f9e0cd","#f9e2d0","#f9e3d2","#f9e5d4","#fae6d6","#fae8d8","#fae9da","#faebdd"],nl=["#0b0405","#0d0406","#0e0508","#0f0609","#10060a","#11070c","#12080d","#13090f","#140910","#150a12","#160b13","#170c15","#180d16","#190e18","#1a0e19","#1b0f1a","#1c101c","#1d111d","#1e111f","#1f1220","#201322","#211423","#221425","#231526","#241628","#251729","#26172b","#27182d","#28192e","#291930","#291a31","#2a1b33","#2b1c35","#2c1c36","#2d1d38","#2e1e39","#2e1e3b","#2f1f3d","#30203e","#312140","#312142","#322243","#332345","#342447","#342548","#35254a","#35264c","#36274d","#37284f","#372851","#382953","#382a54","#392b56","#3a2c58","#3a2c59","#3b2d5b","#3b2e5d","#3b2f5f","#3c3060","#3c3162","#3d3164","#3d3266","#3e3367","#3e3469","#3e356b","#3f366d","#3f366f","#3f3770","#403872","#403974","#403a76","#403b78","#403c79","#413d7b","#413e7d","#413e7f","#413f80","#414082","#414184","#414285","#414387","#414488","#40468a","#40478b","#40488d","#40498e","#3f4a8f","#3f4b90","#3f4c92","#3e4d93","#3e4f94","#3e5095","#3d5195","#3d5296","#3c5397","#3c5598","#3b5698","#3b5799","#3b589a","#3a599a","#3a5b9b","#3a5c9b","#395d9c","#395e9c","#385f9c","#38619d","#38629d","#38639d","#37649e","#37659e","#37669e","#37689f","#36699f","#366a9f","#366b9f","#366ca0","#366da0","#366fa0","#3670a0","#3671a0","#3572a1","#3573a1","#3574a1","#3575a1","#3576a2","#3578a2","#3579a2","#357aa2","#357ba3","#357ca3","#357da3","#357ea4","#347fa4","#3480a4","#3482a4","#3483a5","#3484a5","#3485a5","#3486a5","#3487a6","#3488a6","#3489a6","#348ba6","#348ca7","#348da7","#348ea7","#348fa7","#3490a8","#3491a8","#3492a8","#3493a8","#3495a9","#3496a9","#3497a9","#3498a9","#3499aa","#349aaa","#359baa","#359caa","#359eaa","#359fab","#35a0ab","#35a1ab","#36a2ab","#36a3ab","#36a4ab","#37a5ac","#37a6ac","#37a8ac","#38a9ac","#38aaac","#39abac","#39acac","#3aadac","#3aaead","#3bafad","#3cb1ad","#3cb2ad","#3db3ad","#3eb4ad","#3fb5ad","#3fb6ad","#40b7ad","#41b8ad","#42b9ad","#43baad","#44bcad","#45bdad","#46bead","#47bfad","#48c0ad","#49c1ad","#4bc2ad","#4cc3ad","#4dc4ad","#4fc5ad","#50c6ad","#52c7ad","#53c9ad","#55caad","#57cbad","#59ccad","#5bcdad","#5ecdad","#60ceac","#62cfac","#65d0ad","#68d1ad","#6ad2ad","#6dd3ad","#70d4ad","#73d4ad","#76d5ae","#79d6ae","#7cd6af","#7fd7af","#82d8b0","#85d9b1","#88d9b1","#8bdab2","#8edbb3","#91dbb4","#94dcb5","#96ddb5","#99ddb6","#9cdeb7","#9edfb8","#a1dfb9","#a4e0bb","#a6e1bc","#a9e1bd","#abe2be","#aee3c0","#b0e4c1","#b2e4c2","#b5e5c4","#b7e6c5","#b9e6c7","#bbe7c8","#bee8ca","#c0e9cc","#c2e9cd","#c4eacf","#c6ebd1","#c8ecd2","#caedd4","#ccedd6","#ceeed7","#d0efd9","#d2f0db","#d4f1dc","#d6f1de","#d8f2e0","#daf3e1","#dcf4e3","#def5e5"],tl=["#000000","#111111","#222222","#333333","#444444","#555555","#666666","#777777","#888888","#999999","#aaaaaa","#bbbbbb","#cccccc","#dddddd","#eeeeee","#ffffff"],il=["#a8780d","#b3701b","#be6828","#c75f35","#cf5643","#d54b53","#db4066","#de357b","#df2a93","#dc25ad","#d529c4","#cc34d7","#c041e5","#b24fef","#a25cf3","#9168f4","#7d73f0","#687ce8","#5285dc","#3d8bcd","#2c90bc","#2093ac","#19959c","#12978c","#0c987c","#119a69","#249a52","#409839","#5e9420","#778d12","#8b860d","#9b7f0d"],Be=e=>e.slice().reverse(),ll={turbo:Zu,"turbo-reversed":Be(Zu),grey:tl,"grey-reversed":Be(tl),magma:Yu,"magma-reversed":Be(Yu),inferno:Wu,"inferno-reversed":Be(Wu),plasma:Xu,"plasma-reversed":Be(Xu),viridis:Qu,"viridis-reversed":Be(Qu),cividis:Ku,"cividis-reversed":Be(Ku),rocket:el,"rocket-reversed":Be(el),mako:nl,"mako-reversed":Be(nl),"cmocean-phase":il,"cmocean-phase-reversed":Be(il)};var cl=7,fl=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function ke(e){if(e<0)return NaN;let n=0;for(;e<10;)n+=Math.log(e),e+=1;let t=Math.PI,i=e*e*e;return e*Math.log(e)-e-.5*Math.log(e)+.5*Math.log(2*t)+1/(12*e)-1/(360*i)+1/(1260*i*e*e)-n}function te(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*te(1-e));if(e>100)return Math.exp(ke(e));e-=1;let n=fl[0];for(let i=1;i<cl+2;i++)n+=fl[i]/(e+i);let t=e+cl+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,e+.5)*Math.exp(-t)*n}function rm(e){let t=Math.log(1-e*e),i=2/(Math.PI*.147)+t/2;return Math.sign(e)*Math.sqrt(Math.sqrt(i*i-t/.147)-i)}function pl(e){if(Number.isNaN(e)||e<-1||e>1)return NaN;if(e===0)return 0;if(e===1)return 1/0;if(e===-1)return-1/0;let n=e<0?-1:1,t=Math.abs(e),i=rm(t),r=Math.sqrt(Math.PI)/2;for(let s=0;s<4;s++)i-=(An(i)-t)*r*Math.exp(i*i);return n*i}function Un(e){if(Number.isNaN(e))return NaN;if(!Number.isFinite(e))return e>0?0:2;if(e<0)return 2-Un(-e);if(e<2)return 1-An(e);let n=1e-300,t=e===0?n:e,i=t,r=0;for(let s=1;s<=500;s++){let o=s/2;r=e+o*r,r===0&&(r=n),r=1/r,i=e+o/i,i===0&&(i=n);let a=i*r;if(t*=a,Math.abs(a-1)<1e-17)break}return Math.exp(-e*e)/(Math.sqrt(Math.PI)*t)}function An(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1:-1;let n=e<0?-1:1,t=Math.abs(e);if(t>=6)return n;let i=t*t,r=t,s=t;for(let o=1;o<200&&(r*=2*i/(2*o+1),s+=r,!(r<s*1e-18));o++);return n*(2/Math.sqrt(Math.PI))*Math.exp(-i)*s}var ki=.5772156649015329,Hn=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function wi(e){if(!isFinite(e))return NaN;if(e<0)return Number.isInteger(e)?NaN:wi(1-e)-Math.PI/Math.tan(Math.PI*e);if(e===0)return NaN;let n=0,t=e;for(;t<7;)n-=1/t,t+=1;n+=Math.log(t)-1/(2*t);let i=t*t;for(let r=0;r<Hn.length;r++)n-=Hn[r]/(2*(r+1)*i),i*=t*t;return n}function Ai(e){if(!isFinite(e))return NaN;if(e<0){if(Number.isInteger(e))return NaN;let r=Math.sin(Math.PI*e);return Math.PI*Math.PI/(r*r)-Ai(1-e)}if(e===0)return NaN;let n=0,t=e;for(;t<7;)n+=1/(t*t),t+=1;n+=1/t+1/(2*t*t);let i=t*t*t;for(let r=0;r<Hn.length;r++)n+=Hn[r]/i,i*=t*t;return n}function Yr(e,n){if(!Number.isInteger(e)||e<0)return NaN;if(e===0)return wi(n);if(e===1)return Ai(n);if(!isFinite(n)||n===0)return NaN;if(n<0){if(Number.isInteger(n))return NaN;let a=0,u=n,l=e%2===0?1:-1;for(;u<1;)a+=l*jn(e)/Math.pow(u,e+1),u+=1;return a+Yr(e,u)}let t=0,i=n,r=e%2===0?-1:1;for(;i<7;)t+=r*jn(e)/Math.pow(i,e+1),i+=1;let s=e%2===0?-1:1;t+=s*jn(e-1)/Math.pow(i,e),t+=s*jn(e)/(2*Math.pow(i,e+1));let o=Math.pow(i,e+2);for(let a=0;a<Math.min(Hn.length,6);a++){let u=2*(a+1),l=1;for(let c=0;c<u;c++)l*=e+c;t+=s*Hn[a]*l/(jn(u)*o),o*=i*i}return t}function jn(e){if(e<=1)return 1;let n=1;for(let t=2;t<=e;t++)n*=t;return n}function ml(e,n){return e>100||n>100||e+n>100?Math.exp(ke(e)+ke(n)-ke(e+n)):te(e)*te(n)/te(e+n)}function Wr(e){if(!isFinite(e))return NaN;if(e===1)return 1/0;if(e===0)return-.5;if(e===2)return Math.PI*Math.PI/6;if(e===4)return Math.PI**4/90;if(e===6)return Math.PI**6/945;if(e===8)return Math.PI**8/9450;if(e<0)return Math.pow(2,e)*Math.pow(Math.PI,e-1)*Math.sin(Math.PI*e/2)*te(1-e)*Wr(1-e);let n=22,t=sm(n),i=t[n],r=0;for(let s=0;s<=n;s++)r+=(s%2===0?1:-1)*(t[s]-i)/Math.pow(s+1,e);return-1/(i*(1-Math.pow(2,1-e)))*r}function sm(e){let n=new Array(e+1);n[0]=1;for(let t=1;t<=e;t++)n[t]=n[t-1]+om(e,t);return n}function om(e,n){n>e-n&&(n=e-n);let t=1;for(let i=0;i<n;i++)t=t*(e-i)/(i+1);return t}function dl(e){if(!isFinite(e))return e;if(e===0)return 0;let n=1/Math.E;if(e<-n)return NaN;if(Math.abs(e+n)<1e-15)return-1;let t;if(e<0){let i=Math.sqrt(2*(Math.E*e+1));t=-1+i-i*i/3+11/72*i*i*i}else if(e<=1)t=e*(1-e*(1-1.5*e));else if(e<100){let i=Math.log(e);t=i-Math.log(i)}else{let i=Math.log(e),r=Math.log(i);t=i-r+r/i}for(let i=0;i<30;i++){let r=Math.exp(t),o=t*r-e,a=r*(t+1),u=r*(t+2),l=o/(a-o*u/(2*a));if(t-=l,Math.abs(l)<1e-15*(1+Math.abs(t)))break}return t}function un(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:e<0?(e=-e,e%2===0?un(e,n):-un(e,n)):n<0?e%2===0?un(e,-n):-un(e,-n):n>25+e*e/2?um(e,n):n<5+e?am(e,n):lm(e,n)}function am(e,n){let t=n/2,i=-(n*n)/4,r=1;for(let o=1;o<=e;o++)r/=o;let s=r;for(let o=1;o<=60&&(r*=i/(o*(e+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,e)}function hl(e,n){let t=4*e*e,i=1,r=0,s=1,o=8*n;for(let a=1;a<=20;a++){s*=t-(2*a-1)*(2*a-1);let u=jn(a)*Math.pow(o,a),l=s/u;if(a%2===1?r+=(a%4===1?1:-1)*l:i+=(a%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[i,r]}function um(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=hl(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.cos(t)-r*Math.sin(t))}function lm(e,n){let t=Math.max(e+20,Math.ceil(n)+30),i=0,r=1,s=new Array(t+1);s[t]=r;for(let u=t;u>=1;u--){let l=2*u/n*r-i;i=r,r=l,s[u-1]=r}let o=s[0];for(let u=2;u<=t;u+=2)o+=2*s[u];let a=1/o;return s[e]*a}function Mi(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;if(e<0)return e=-e,e%2===0?Mi(e,n):-Mi(e,n);if(n>12+e*e/4)return pm(e,n);let t=cm(n);if(e===0)return t;let i=fm(n);if(e===1)return i;let r=t,s=i;for(let o=1;o<e;o++){let a=2*o/n*s-r;r=s,s=a}return s}function cm(e){let n=e/2,t=n*n,i=un(0,e),r=0,s=1,o=0;for(let a=1;a<=60&&(o+=1/a,s*=-t/(a*a),r-=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16));a++);return 2/Math.PI*(i*(Math.log(n)+ki)+r)}function fm(e){let n=e/2,t=n*n,i=un(1,e),r=0,s=1,o=1;for(let a=0;a<=60;a++){a>0&&(o*=a,s*=t);let u=o*(a+1),l=0;for(let v=1;v<=a;v++)l+=1/v;let c=l+1/(a+1),f=-ki+l,m=-ki+c,b=(a%2===0?1:-1)*(f+m)*s/(o*u);if(r+=b,a>3&&Math.abs(b)<1e-16*Math.abs(r))break}return-2/(Math.PI*e)+2/Math.PI*Math.log(n)*i-n/Math.PI*r}function pm(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=hl(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.sin(t)+r*Math.cos(t))}function wn(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:(e<0&&(e=-e),n<0?e%2===0?wn(e,-n):-wn(e,-n):n>40?dm(e,n):mm(e,n))}function mm(e,n){let t=n/2,i=n*n/4,r=1;for(let o=1;o<=e;o++)r/=o;let s=r;for(let o=1;o<=80&&(r*=i/(o*(e+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,e)}function dm(e,n){let t=4*e*e,i=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(i*=o/(s*8*n),r+=i,Math.abs(i)<1e-15)break}return Math.exp(n)/Math.sqrt(2*Math.PI*n)*r}function gl(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;if(e<0&&(e=-e),n>40)return gm(e,n);let t=bl(n);if(e===0)return t;let i=hm(n);if(e===1)return i;let r=t,s=i;for(let o=1;o<e;o++){let a=2*o/n*s+r;r=s,s=a}return s}function bl(e){let n=e/2,t=n*n,i=wn(0,e),r=0,s=1,o=0;for(let a=1;a<=60&&(o+=1/a,s*=t/(a*a),r+=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16&&a>3));a++);return-(Math.log(n)+ki)*i+r}function hm(e){let n=wn(0,e),t=wn(1,e),i=bl(e);return(1/e-t*i)/n}function gm(e,n){let t=4*e*e,i=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(i*=o/(s*8*n),r+=i,Math.abs(i)<1e-15)break}return Math.sqrt(Math.PI/(2*n))*Math.exp(-n)*r}function yl(e){if(!isFinite(e))return NaN;if(e>5){let a=.6666666666666666*Math.pow(e,1.5);return bm(e,a)}if(e<-5){let a=-e,u=2/3*Math.pow(a,1.5);return ym(a,u)}let n=1/(Math.pow(3,2/3)*te(2/3)),t=1/(Math.pow(3,1/3)*te(1/3)),i=1,r=e,s=1,o=e;for(let a=1;a<=80;a++){let u=3*a;if(s*=e*e*e/((u-1)*u),o*=e*e*e/(u*(u+1)),i+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(i)+Math.abs(r)))break}return n*i-t*r}function bm(e,n){let t=Math.pow(e,.25),i=1,r=1,s=[1,5/72,385/10368,85085/2239488,37182145/644972544];for(let o=1;o<s.length;o++)r=s[o]/Math.pow(n,o),i+=(o%2===0?1:-1)*r;return Math.exp(-n)/(2*Math.sqrt(Math.PI)*t)*i}function ym(e,n){let t=Math.pow(e,.25);return Math.sin(n+Math.PI/4)/(Math.sqrt(Math.PI)*t)}function xl(e){if(!isFinite(e))return NaN;if(e>5){let a=.6666666666666666*Math.pow(e,1.5);return xm(e,a)}if(e<-5){let a=-e,u=2/3*Math.pow(a,1.5);return vm(a,u)}let n=1/(Math.pow(3,2/3)*te(2/3)),t=1/(Math.pow(3,1/3)*te(1/3)),i=1,r=e,s=1,o=e;for(let a=1;a<=80;a++){let u=3*a;if(s*=e*e*e/((u-1)*u),o*=e*e*e/(u*(u+1)),i+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(i)+Math.abs(r)))break}return Math.sqrt(3)*(n*i+t*r)}function xm(e,n){let t=Math.pow(e,.25),i=1,r=1,s=[1,5/72,385/10368,85085/2239488,37182145/644972544];for(let o=1;o<s.length;o++)r=s[o]/Math.pow(n,o),i+=r;return Math.exp(n)/(Math.sqrt(Math.PI)*t)*i}function vm(e,n){let t=Math.pow(e,.25);return Math.cos(n+Math.PI/4)/(Math.sqrt(Math.PI)*t)}var Em=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],Nm=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Tm=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Im=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],vl=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],El=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],Nl=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],Tl=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function Se(e,n){let t=n[0];for(let i=1;i<n.length;i++)t=t*e+n[i];return t}function ln(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*t*Se(i,Em)/Se(i,Nm)}if(e<36974){let t=e*e,i=Math.PI*t,r=1/(i*i),s=1-r*Se(r,vl)/Se(r,El),o=1/i*Se(r,Nl)/Se(r,Tl),a=Math.PI/2*t,u=Math.cos(a),l=Math.sin(a);return n*(.5-(s*u+o*l)/(Math.PI*e))}return n*.5}function cn(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*Se(i,Tm)/Se(i,Im)}if(e<36974){let t=e*e,i=Math.PI*t,r=1/(i*i),s=1-r*Se(r,vl)/Se(r,El),o=1/i*Se(r,Nl)/Se(r,Tl),a=Math.PI/2*t,u=Math.cos(a),l=Math.sin(a);return n*(.5+(s*l-o*u)/(Math.PI*e))}return n*.5}function Il(e){return e===0?1:Math.sin(e)/e}var _t=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function St(e,n){for(;e>=_t.length;){let t=_t.length,i=[1],r=_t[t-1];for(let s=1;s<t;s++)i[s]=r[s-1]+r[s];i[t]=1,_t.push(i)}return _t[e][n]}function Sl(e){let n=0,t=0;for(let i of e)n+=i,t++;return t===0?NaN:n/t}function kt(e){let n=[...e].sort((i,r)=>i-r),t=Math.floor(n.length/2);return n.length%2===0?(n[t-1]+n[t])/2:n[t]}function Xr(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/(i-1)}function Qr(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/i}function kl(e){return Math.sqrt(Xr(e))}function Ml(e){return Math.sqrt(Qr(e))}function wl(e){let n=0,t=0,i=0,r=0,s=0;for(let c of e){let f=c;if(!Number.isFinite(f))return NaN;n+=f,t+=f*f,i+=f*f*f,r+=f*f*f*f,s++}if(s===0)return NaN;let o=s,a=n/o,u=(t-n*n/o)/o;return(r-4*a*i+6*a*a*t-4*a*a*a*n+o*a*a*a*a)/o/(u*u)}function Al(e){let n=0,t=0,i=0,r=0;for(let l of e){let c=l;if(!Number.isFinite(c))return NaN;n+=c,t+=c*c,i+=c*c*c,r++}if(r===0)return NaN;let s=r,o=n/s,a=(t-n*n/s)/s;return(i-3*o*t+3*o*o*n-s*o*o*o)/s/Math.pow(a,3/2)}function Cl(e){let n={};for(let r of e)n[r]=(n[r]??0)+1;let t=0,i=NaN;for(let r in n){let s=n[r];s>t&&(t=s,i=+r)}return i}function Kr(e){let n=[...e].sort((o,a)=>o-a),t=Math.floor(n.length/2),i=kt(n.slice(0,t)),r=kt(n),s=kt(n.slice(t));return[i,r,s]}function $l(e){let[n,,t]=Kr(e);return t-n}function Cm(e,n){if(n===0)return{estimate:e,error:n};let t=Math.abs(n),i=Math.floor(Math.log10(t)),r=2,s=Math.pow(10,i-(r-1)),o=Math.round(n/s)*s,a=Math.max(0,-(i-(r-1)));return{estimate:Number(e.toFixed(a)),error:o}}function Rl(e,n,t,i=1e5,r){r??=Ft();let s;n===-1/0&&t===1/0?s=()=>{let E=Math.random(),I=Math.tan(Math.PI*(E-.5));return e(I)*Math.PI*(1+I*I)}:n===-1/0?s=()=>{let E=Math.random();return e(t+Math.log(E))/E}:t===1/0?s=()=>{let E=Math.random();return e(n-Math.log(E))/E}:s=()=>e(n+Math.random()*(t-n));let o=0,a=0,u=0;Ot(r,()=>{for(let E=0;E<i;E++){if((E&63)===0&&r!==void 0&&Date.now()>=r){E===0&&Xn(r);break}let I;try{I=s()}catch(w){if(w instanceof Ge&&u>0)break;throw w}o+=I,a+=I*I,u++}});let l=o/u,c=(a-u*l*l)/(u-1),f=Math.sqrt(c/u),m=isFinite(n)&&isFinite(t)?t-n:1,h=l*m,b=f*m;return Cm(h,b)}var es={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},ns={Abs:(e,n)=>y.isComplexValued(e[0])?`_SYS.cabs(${n(e[0])})`:y.isNonNegative(e[0])?n(e[0]):`Math.abs(${n(e[0])})`,Add:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(o=>y.isComplexValued(o))){let o=e.map(W);if(o.every(u=>u!==void 0))return String(o.reduce((u,l)=>u+l,0));let a=e.filter(u=>W(u)!==0);return a.length===0?"0":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" + ")})`}let i=e.map(o=>({code:n(o),isComplex:y.isComplexValued(o)})),r=i.map(o=>o.isComplex?`(${o.code}).re`:o.code),s=i.filter(o=>o.isComplex).map(o=>`(${o.code}).im`);return`({ re: ${r.join(" + ")}, im: ${s.join(" + ")} })`},Arccos:(e,n)=>y.isComplexValued(e[0])?`_SYS.cacos(${n(e[0])})`:`Math.acos(${n(e[0])})`,Arcosh:"Math.acosh",Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return y.isComplexValued(e)?`_SYS.cacot(${n(e)})`:`Math.atan(1 / (${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return y.isComplexValued(e)?`_SYS.cacoth(${n(e)})`:`Math.atanh(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return y.isComplexValued(e)?`_SYS.cacsc(${n(e)})`:`Math.asin(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return y.isComplexValued(e)?`_SYS.cacsch(${n(e)})`:`Math.asinh(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return y.isComplexValued(e)?`_SYS.casec(${n(e)})`:`Math.acos(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return y.isComplexValued(e)?`_SYS.casech(${n(e)})`:`Math.acosh(1 / (${n(e)}))`},Arcsin:(e,n)=>y.isComplexValued(e[0])?`_SYS.casin(${n(e[0])})`:`Math.asin(${n(e[0])})`,Arsinh:"Math.asinh",Arctan:(e,n)=>y.isComplexValued(e[0])?`_SYS.catan(${n(e[0])})`:`Math.atan(${n(e[0])})`,Artanh:"Math.atanh",Ceil:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`Math.ceil(${n(e[0])})`,Chop:"_SYS.chop",Cos:(e,n)=>y.isComplexValued(e[0])?`_SYS.ccos(${n(e[0])})`:`Math.cos(${n(e[0])})`,Cosh:(e,n)=>y.isComplexValued(e[0])?`_SYS.ccosh(${n(e[0])})`:`Math.cosh(${n(e[0])})`,Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return y.isComplexValued(e)?`_SYS.ccot(${n(e)})`:y.inlineExpression("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return y.isComplexValued(e)?`_SYS.ccoth(${n(e)})`:y.inlineExpression("(Math.cosh(${x}) / Math.sinh(${x}))",n(e))},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return y.isComplexValued(e)?`_SYS.ccsc(${n(e)})`:`1 / Math.sin(${n(e)})`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return y.isComplexValued(e)?`_SYS.ccsch(${n(e)})`:`1 / Math.sinh(${n(e)})`},Exp:(e,n)=>y.isComplexValued(e[0])?`_SYS.cexp(${n(e[0])})`:`Math.exp(${n(e[0])})`,First:(e,n)=>`${n(e[0])}[0]`,Floor:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`Math.floor(${n(e[0])})`,Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return y.inlineExpression("${x} - Math.floor(${x})",n(e))},Gamma:"_SYS.gamma",GCD:"_SYS.gcd",Integrate:(e,n,t)=>Dm(e,n,t),LCM:"_SYS.lcm",Product:(e,n,t)=>Dl("Product",e,n,t),Sum:(e,n,t)=>Dl("Sum",e,n,t),Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:(e,n)=>y.isComplexValued(e[0])?`_SYS.cln(${n(e[0])})`:`Math.log(${n(e[0])})`,List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>n(e[0]),Tuple:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Log:(e,n)=>e.length===1?`Math.log10(${n(e[0])})`:`(Math.log(${n(e[0])}) / Math.log(${n(e[1])}))`,GammaLn:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Mean:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mean(${n(e[0])})`:`_SYS.mean([${e.map(t=>n(t)).join(", ")}])`,Median:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.median(${n(e[0])})`:`_SYS.median([${e.map(t=>n(t)).join(", ")}])`,Variance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.variance(${n(e[0])})`:`_SYS.variance([${e.map(t=>n(t)).join(", ")}])`,PopulationVariance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationVariance(${n(e[0])})`:`_SYS.populationVariance([${e.map(t=>n(t)).join(", ")}])`,StandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.standardDeviation(${n(e[0])})`:`_SYS.standardDeviation([${e.map(t=>n(t)).join(", ")}])`,PopulationStandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationStandardDeviation(${n(e[0])})`:`_SYS.populationStandardDeviation([${e.map(t=>n(t)).join(", ")}])`,Kurtosis:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.kurtosis(${n(e[0])})`:`_SYS.kurtosis([${e.map(t=>n(t)).join(", ")}])`,Skewness:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.skewness(${n(e[0])})`:`_SYS.skewness([${e.map(t=>n(t)).join(", ")}])`,Mode:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mode(${n(e[0])})`:`_SYS.mode([${e.map(t=>n(t)).join(", ")}])`,Quartiles:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.quartiles(${n(e[0])})`:`_SYS.quartiles([${e.map(t=>n(t)).join(", ")}])`,InterquartileRange:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.interquartileRange(${n(e[0])})`:`_SYS.interquartileRange([${e.map(t=>n(t)).join(", ")}])`,Min:"Math.min",Power:(e,n)=>{let t=e[0],i=e[1];if(t===null)throw new Error("Power: no argument");if(y.isComplexValued(t)||y.isComplexValued(i))return`_SYS.cpow(${n(t)}, ${n(i)})`;let r=W(t),s=W(i);if(r!==void 0&&s!==void 0)return String(Math.pow(r,s));if(s===0)return"1";if(s===1)return n(t);if(s===2&&(T(t)||R(t))){let o=n(t);return`(${o} * ${o})`}return s===-1?`(1 / (${n(t)}))`:s===.5?`Math.sqrt(${n(t)})`:s===1/3?`Math.cbrt(${n(t)})`:s===-.5?`(1 / Math.sqrt(${n(t)}))`:`Math.pow(${n(t)}, ${n(i)})`},Range:(e,n)=>{if(e.length===0)return"[]";if(e.length===1)return`Array.from({length: ${n(e[0])}}, (_, i) => i)`;let t=n(e[0]),i=n(e[1]),r=e[2]?n(e[2]):"1";if(t===null)throw new Error("Range: no start");if(i===null&&(i=t,t="1"),r==="0")throw new Error("Range: step cannot be zero");if(parseFloat(r)===1){let s=parseFloat(i),o=parseFloat(t);return!isNaN(s)&&!isNaN(o)?s-o<50?`[${Array.from({length:s-o+1},(a,u)=>o+u).join(", ")}]`:`Array.from({length: ${s-o+1}
48
+ return ${p};
49
+ })()`}static isComplexValued(n){if(D(n))return n.im!==0;if(I(n)){if(n.symbol==="ImaginaryUnit")return!0;let t=n.type;return t?t.matches("complex")&&!t.matches("real"):!1}if(g(n)){let t=n.type;return t.matches("complex")&&!t.matches("real")?!0:t.matches("real")?!1:n.ops.some(i=>e.isComplexValued(i))}return!1}static isIntegerValued(n){if(D(n))return n.im===0&&Number.isInteger(n.re);let t=n.type;return t?t.matches("integer"):!1}static isNonNegative(n){return D(n)?n.im===0&&n.re>=0:n.isNonNegative===!0}static tryFoldKnownSymbol(n,t,i){let r=n._getSymbolValue(t);if(r!==void 0)return e.compile(r,i,e.FOLD_OPERAND_PREC)}static STRUCTURAL_HEADS=new Set(["Sequence","Sum","Product","Function","Declare","Assign","Return","Break","Continue","Loop","If","Which","When","Block","Limits","Element"]);static analyzeReferences(n,t,i){let r=n.engine,s=new Set,o=new Set,a=new Set,u=(c,f)=>{let p=new Set(c);for(let d of f)p.add(d);return p},l=(c,f)=>{if(I(c)){let b=c.symbol;if(f.has(b)||t.operators?.(b)!==void 0)return;if(i?.has(b)){s.add(b);return}let y=r._getSymbolValue(b);if(y!==void 0){a.has(b)||(a.add(b),l(y,f));return}s.add(b);return}if(!g(c))return;let p=c.operator,d=c.ops;if(p!=="Error"&&!e.STRUCTURAL_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0&&o.add(p),p==="Function"){let b=d.slice(1).filter(y=>I(y)).map(y=>y.symbol);l(d[0],b.length?u(f,b):f);return}if(p==="Sum"||p==="Product"||p==="Integrate"||p==="Loop"){let b=[],y=[];for(let v of d.slice(1))if(g(v)){I(v.ops[0])&&b.push(v.ops[0].symbol);for(let N of v.ops.slice(1))y.push(N)}else y.push(v);l(d[0],b.length?u(f,b):f);for(let v of y)l(v,f);return}if(p==="Block"){let b=[];for(let v of d)g(v,"Declare")&&I(v.ops[0])&&b.push(v.ops[0].symbol);let y=b.length?u(f,b):f;for(let v of d)l(v,y);return}for(let b of d)l(b,f)};return l(n,new Set),{freeSymbols:[...s],unsupported:[...o]}}static withReferences(n,t,i,r){return Object.assign(n,e.analyzeReferences(t,i,r))}static tempVar(){return`_${Math.random().toString(36).substring(4)}`}static inlineExpression(n,t){if(/^[\p{L}_][\p{L}\p{N}_]*$/u.test(t)||/^[0-9]+$/.test(t))return new Function("x",`return \`${n}\`;`)(t);{let r=e.tempVar();return new Function("x",`return \`(() => { const ${r} = \${x}; return ${n.replace(/\\\${x}/g,r)}; })()\`;`)(t)}}};function St(e){return typeof e=="object"&&e!==null}function tl(e){return typeof e=="number"&&Number.isFinite(e)}function om(e){if(!St(e))throw new Error("Invalid compile target: expected an object");if(typeof e.var!="function")throw new Error('Invalid compile target: missing required method "var()"');if(typeof e.string!="function")throw new Error('Invalid compile target: missing required method "string()"');if(typeof e.number!="function")throw new Error('Invalid compile target: missing required method "number()"');if(typeof e.ws!="function")throw new Error('Invalid compile target: missing required method "ws()"');if(typeof e.preamble!="string")throw new Error('Invalid compile target: "preamble" must be a string');if(!tl(e.indent))throw new Error('Invalid compile target: "indent" must be a finite number');if(e.operators!==void 0&&typeof e.operators!="function")throw new Error('Invalid compile target: "operators" must be a function');if(e.functions!==void 0&&typeof e.functions!="function")throw new Error('Invalid compile target: "functions" must be a function');if(e.language!==void 0&&typeof e.language!="string")throw new Error('Invalid compile target: "language" must be a string')}function am(e,n){if(n!==void 0&&(!Array.isArray(n)||n.length!==2||typeof n[0]!="string"||!tl(n[1])))throw new Error(`Invalid compilation option "operators.${e}": expected [string, number]`)}function um(e){if(e!==void 0&&typeof e!="function"){if(!St(e)||Array.isArray(e))throw new Error('Invalid compilation option "operators": expected a function or a record');for(let[n,t]of Object.entries(e))am(n,t)}}function lm(e){if(e!==void 0){if(!St(e)||Array.isArray(e))throw new Error('Invalid compilation option "functions": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string"&&typeof t!="function")throw new Error(`Invalid compilation option "functions.${n}": expected a string or function`)}}function cm(e){if(e!==void 0){if(!St(e)||Array.isArray(e))throw new Error('Invalid compilation option "vars": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string")throw new Error(`Invalid compilation option "vars.${n}": expected a string`)}}function fm(e){if(e!==void 0&&!Array.isArray(e))throw new Error('Invalid compilation option "imports": expected an array')}function il(e){if(e!==void 0){if(!St(e)||Array.isArray(e))throw new Error("Invalid compilation options: expected an object");if(e.to!==void 0&&typeof e.to!="string")throw new Error('Invalid compilation option "to": expected a string');if(e.target!==void 0&&om(e.target),um(e.operators),lm(e.functions),cm(e.vars),fm(e.imports),e.preamble!==void 0&&typeof e.preamble!="string")throw new Error('Invalid compilation option "preamble": expected a string');if(e.fallback!==void 0&&typeof e.fallback!="boolean")throw new Error('Invalid compilation option "fallback": expected a boolean')}}function rl(e,n){il(n);try{if(n?.target){let r=x.compile(e,n.target);return x.withReferences({target:n.target.language??"custom",success:!0,code:r},e,n.target,n.vars?new Set(Object.keys(n.vars)):void 0)}let t=n?.to??"javascript",i=e.engine.getCompilationTarget(t);if(!i)throw new Error(`Compilation target "${t}" is not registered. Available targets: ${e.engine.listCompilationTargets().join(", ")}`);return i.compile(e,{operators:n?.operators,functions:n?.functions,vars:n?.vars,imports:n?.imports,preamble:n?.preamble,realOnly:n?.realOnly})}catch(t){if(n?.fallback??!0){let i=t.message;console.warn(`Compilation fallback for "${e.operator}" (target: ${n?.to??"javascript"}): ${i}`);let r=e.engine,s=n?.to??"javascript",o={freeSymbols:[],unsupported:[]};try{let u=n?.target??e.engine.getCompilationTarget(s)?.createTarget();u&&(o=x.analyzeReferences(e,u,n?.vars?new Set(Object.keys(n.vars)):void 0))}catch{}return g(e,"Function")?{target:s,success:!1,code:"",calling:"lambda",run:((...l)=>r.function("Apply",[e,...l.map(c=>r.expr(c))]).evaluate().re),error:i,...o}:{target:s,success:!1,code:"",calling:"expression",run:(u=>{r.pushScope();try{if(u&&typeof u=="object")for(let[l,c]of Object.entries(u))r.assign(l,c);return e.evaluate().re}finally{r.popScope()}}),error:i,...o}}throw t}}function le(e){if(!Number.isFinite(e))throw new Error(`Cannot compile the non-finite value \`${e}\` to a GPU shader: GLSL/WGSL have no infinity or NaN literals.`);let n=e.toString();return!n.includes(".")&&!n.includes("e")&&!n.includes("E")?`${n}.0`:n}function te(e){if(!D(e)||e.im!==0)return;let n=e.re;if(isFinite(n))return n}var pm=/^-?\d+(\.\d+)?$/;function ln(e,n,t){let i=t==="+"?0:1,r=null,s=[];for(let o of e)if(pm.test(o)){let a=parseFloat(o);if(t==="*"&&a===0)return"0.0";r===null?r=a:r=t==="+"?r+a:r*a}else s.push(o);return r!==null&&r!==i&&s.unshift(le(r)),s.length===0?r!==null?le(r):n:s.length===1?s[0]:s.join(t==="+"?" + ":" * ")}function Ii(e,n){return g(e,"Add")||g(e,"Subtract")?`(${n})`:n}function sl(e,n){if(I(e,"ImaginaryUnit"))return{re:null,im:"1.0"};if(D(e)&&e.im!==0){let t=e.re,i=e.im;return{re:t!==0?le(t):null,im:le(i)}}if(g(e,"Multiply")){let t=e.ops,i=t.findIndex(r=>I(r,"ImaginaryUnit")||D(r)&&r.re===0&&r.im!==0);if(i>=0){let r=t[i],s=I(r,"ImaginaryUnit")?1:r.im,o=t.filter((l,c)=>c!==i);if(o.length===0)return{re:null,im:le(s)};let a=o.map(l=>Ii(l,n(l)));return s!==1&&a.unshift(le(s)),{re:null,im:ln(a,"1.0","*")}}}return x.isComplexValued(e)?null:{re:n(e),im:null}}function Zr(e){let n=Math.abs(e);return n<=.0031308?12.92*e:(Math.sign(e)||1)*(1.055*Math.pow(n,1/2.4)-.055)}function Yr(e){let n=Math.abs(e);return n<=.04045?e/12.92:(Math.sign(e)||1)*Math.pow((n+.055)/1.055,2.4)}function Ai(e,n,t){e=e/360;let i,r,s;if(n===0)i=r=s=t;else{let o=(l,c,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<.16666666666666666?l+(c-l)*6*f:f<.5?c:f<.6666666666666666?l+(c-l)*(.6666666666666666-f)*6:l),a=t<.5?t*(1+n):t+n-t*n,u=2*t-a;i=o(u,a,e+1/3),r=o(u,a,e),s=o(u,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(r*255),b:Math.round(s*255)}}function Ci(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),s=(i+r)/2;if(i===r)return{h:0,s:0,l:s};let o=i-r,a=s>.5?o/(2-i-r):o/(i+r),u;return i===e?u=((n-t)/o+(n<t?6:0))/6:i===n?u=((t-e)/o+2)/6:u=((e-n)/o+4)/6,{h:u*360,s:a,l:s}}function Tl(e,n,t){e=(e%360+360)%360,n=Math.max(0,Math.min(1,n)),t=Math.max(0,Math.min(1,t));let i=t*n,r=i*(1-Math.abs(e/60%2-1)),s=t-i,o=0,a=0,u=0;return e<60?[o,a,u]=[i,r,0]:e<120?[o,a,u]=[r,i,0]:e<180?[o,a,u]=[0,i,r]:e<240?[o,a,u]=[0,r,i]:e<300?[o,a,u]=[r,0,i]:[o,a,u]=[i,0,r],{r:(o+s)*255,g:(a+s)*255,b:(u+s)*255}}function Il(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),s=i-r,o=0;s>0&&(i===e?o=(n-t)/s%6:i===n?o=(t-e)/s+2:o=(e-n)/s+4,o*=60,o<0&&(o+=360));let a=i===0?0:s/i;return{h:o,s:a,v:i}}function mm(e){let n=e.startsWith("#")?e.substring(1):e,t,i,r,s;if(n.length===3)t=parseInt(n[0]+n[0],16),i=parseInt(n[1]+n[1],16),r=parseInt(n[2]+n[2],16);else if(n.length===6)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16);else if(n.length===8)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16),s=parseInt(n.substring(6,8),16)/255;else return{r:0,g:0,b:0};let o={r:t,g:i,b:r};return s!==void 0&&(o.alpha=s),o}function Mi(e){return typeof e=="number"?{r:e>>>24&255,g:e>>>16&255,b:e>>>8&255,alpha:(e&255)/255}:typeof e=="string"?mm(e):"C"in e?$i(e):"a"in e&&"b"in e?es(e):e}function ol(e){let n=Mi(e),t=n.alpha!==void 0?Je(n.alpha*255):255;return(Je(n.r)<<24|Je(n.g)<<16|Je(n.b)<<8|t)>>>0}function Je(e){return e<0?0:e>255?255:Math.round(e)}function An(e){let[n,t,i]=[e.L,e.C,e.H],r=i*Math.PI/180,s={L:n,a:t*Math.cos(r),b:t*Math.sin(r)};return e.alpha!==void 0&&(s.alpha=e.alpha),s}function kt(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.sqrt(t*t+i*i),o=Math.atan2(i,t)*180/Math.PI,a={L:n,C:r,H:o};return e.alpha!==void 0&&(a.alpha=e.alpha),a}function Si(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.pow(.9999999984505198*n+.39633779217376786*t+.2158037580607588*i,3),s=Math.pow(1.00000000888176*n-.10556134232365635*t-.0638541747717059*i,3),o=Math.pow(n*1.000000054672411-.0894841820949657*t-1.2914855378640917*i,3),a=4.076741661347994*r-3.307711590408193*s+.230969928729428*o,u=-1.2684380040921763*r+2.6097574006633715*s-.3413193963102197*o,l=-.004196086541837188*r-.7034186144594493*s+1.7076147009309444*o;return[Zr(a),Zr(u),Zr(l)]}function Wr(e){let[n,t,i]=e;return n>=0&&n<=1&&t>=0&&t<=1&&i>=0&&i<=1}function Xr(e,n){let[t,i,r]=e;return t=Je(t*255),i=Je(i*255),r=Je(r*255),n!==void 0?{r:t,g:i,b:r,alpha:n}:{r:t,g:i,b:r}}function es(e){let[n,t,i]=Si(e);if(Wr([n,t,i]))return Xr([n,t,i],e.alpha);let r=kt(e);if(r.C=0,[n,t,i]=Si(An(r)),!Wr([n,t,i]))return Xr([n,t,i],e.alpha);let s=0,o=e.L,a=(s+o)/2;r.C=a;let u=.36/Math.pow(2,12);for(;o-s>u;)a=(s+o)/2,r.C=a,[n,t,i]=Si(An(r)),Wr([n,t,i])?s=a:o=a;return Xr([n,t,i],e.alpha)}function $i(e){return es(An(e))}function ns(e){let[n,t,i]=[e.r,e.g,e.b],r=Yr(n/255),s=Yr(t/255),o=Yr(i/255),a=.41222147079999993*r+.5363325363*s+.0514459929*o,u=.2119034981999999*r+.6806995450999999*s+.1073969566*o,l=.08830246189999998*r+.2817188376*s+.6299787005000002*o,c=Math.cbrt(a),f=Math.cbrt(u),p=Math.cbrt(l),d={L:.2104542553*c+.793617785*f-.0040720468*p,a:1.9779984951*c-2.428592205*f+.4505937099*p,b:.0259040371*c+.7827717662*f-.808675766*p};return e.alpha!==void 0&&(d.alpha=e.alpha),d}function _e(e){return kt(ns(e))}function Qr(e,n){let t=n*Math.PI/180,i=0,r=1.5;for(let s=0;s<32;s++){let o=(i+r)/2,[a,u,l]=Si({L:e,a:o*Math.cos(t),b:o*Math.sin(t)});a>=0&&a<=1&&u>=0&&u<=1&&l>=0&&l<=1?i=o:r=o}return i}function jn(e,n,t){let i=e/100;if(i<=0)return 255;let r=$i({L:i,C:n,H:t});return(Je(r.r)<<24|Je(r.g)<<16|Je(r.b)<<8|255)>>>0}function dm(e){let{l:n,c:t,h:i}=ki(e);return jn(n+2.8,t+.002,i+.46)}function ki(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=_e({r:n,g:t,b:i});return{l:r.L*100,c:r.C,h:r.H<0?r.H+360:r.H}}function Kr(e,n,t){let{l:i,c:r,h:s}=ki(e),{l:o,c:a,h:u}=ki(n),l=i+(o-i)*t,c=r+(a-r)*t,f=u-s;f>180&&(f-=360),f<-180&&(f+=360);let p=s+f*t,d=e&255,b=n&255,y=Math.round(d+(b-d)*t);return jn(l,c,p<0?p+360:p>360?p-360:p)&4294967040|y}function hm(e,n=.1){let a=.45,u=0;for(let b=.45;b>=.35;b-=.01){let y=Qr(b,e);if(y>=.15){a=b,u=.15;break}else y>u&&(a=b,u=y)}if(u<.15*.8)for(let b=.45+.01;b<=.5;b+=.01){let y=Qr(b,e);if(y>=.15||y>u*1.2){a=b,u=Math.min(.15,y);break}}let l=.96,c=.02,f=Qr(.96,e);f<.02&&(c=f*(1-n)),c=Math.max(.015,Math.min(.02,c));let p=jn(a*100,u,e),d=jn(l*100,c,e);return{darkest:p,lightest:d}}function gm(e,n){let t=Math.max(0,Math.min(1e3,n)),i,r,s;if(typeof e=="object")i=e.darkest,s=e.lightest,r=e.mid??0;else{r=e;let{h:u}=ki(r),l=r&255,{darkest:c,lightest:f}=hm(u);i=c&4294967040|l,s=f&4294967040|l}if(!r&&typeof e=="object"&&!e.mid&&(r=Kr(i,s,.5)),t<=500){let u=t/500,l=u*u*(3-2*u);return Kr(s,r,l)}let o=(t-500)/500,a=o*o*(3-2*o);return Kr(r,i,a)}var bm=[{id:"pink",name:"Pink",colors:{mid:{lightness:69,chroma:.202,hue:7.4}}},{id:"red",name:"Red",colors:{lightest:{lightness:95,chroma:.2,hue:30},mid:{lightness:62,chroma:.25,hue:30},darkest:{lightness:36,chroma:.16,hue:25}}},{id:"brown",name:"Brown",colors:{lightest:{lightness:94.5,chroma:.021,hue:72.1},mid:{lightness:59,chroma:.2,hue:73},darkest:{lightness:20,chroma:.061,hue:72.7}}},{id:"orange",name:"Orange",colors:{lightest:{lightness:95,chroma:.06,hue:82},mid:{lightness:73,chroma:.21,hue:56},darkest:{lightness:46,chroma:.2,hue:35}}},{id:"yellow",name:"Yellow",colors:{lightest:{lightness:97,chroma:.02,hue:106},mid:{lightness:89,chroma:.21,hue:99},darkest:{lightness:67,chroma:.43,hue:59}}},{id:"lime",name:"Lime",colors:{mid:{lightness:65,chroma:.192,hue:134.3}}},{id:"green",name:"Green",colors:{mid:{lightness:64,chroma:.21,hue:144}}},{id:"teal",name:"Teal",colors:{mid:{lightness:65,chroma:.116,hue:192.6}}},{id:"cyan",name:"Cyan",colors:{lightest:{lightness:97,chroma:.11,hue:195},mid:{lightness:61,chroma:.11,hue:210},darkest:{lightness:42,chroma:.11,hue:210}}},{id:"blue",name:"Blue",colors:{lightest:{lightness:91,chroma:.22,hue:240},mid:{lightness:63,chroma:.22,hue:255},darkest:{lightness:38,chroma:.22,hue:252}}},{id:"indigo",name:"Indigo",colors:{lightest:{lightness:92.7,chroma:.036,hue:291},mid:{lightness:67,chroma:.285,hue:296},darkest:{lightness:28,chroma:.23,hue:278}}},{id:"purple",name:"Purple",colors:{mid:{lightness:67,chroma:.21,hue:299}}}];function Gn({lightness:e,chroma:n,hue:t}){return jn(e,n,t)}function ym(e){let{mid:n,lightest:t,darkest:i}=e.colors;if(t&&i&&n)return{lightest:Gn(t),mid:Gn(n),darkest:Gn(i)};if(t&&i)return{lightest:Gn(t),darkest:Gn(i)};if(n)return Gn(n);throw new Error(`Color scale preset "${e.id}" is missing required anchors.`)}var _i=null;function xm(){if(!_i){_i=Object.create(null);for(let e of bm)_i[e.id]=ym(e)}return _i}var al={red:"#d7170b",orange:"#fe8a2b",yellow:"#ffc02b",lime:"#63b215",green:"#21ba3a",teal:"#17cfcf",cyan:"#13a7ec",blue:"#0d80f2",indigo:"#63c",purple:"#a219e6",magenta:"#eb4799",brown:"#8c564b",olive:"#8a8f2a",midnight:"#2c4670",sky:"#d2dce9",black:"#000",white:"#ffffff",carbon:"#111111",charcoal:"#333333",slate:"#555555","dark-grey":"#666",graphite:"#777777",stone:"#999999",grey:"#A6A6A6","light-grey":"#d4d5d2",ash:"#E6E6E6",mist:"#F3F3F3",snow:"#FFFFFF"};function rn(e,n){let t=e.trim().toLowerCase(),i=t.match(/^(.+?)\s*\/\s*(\d+(?:\.\d+)?)%?\s*$/);if(i){let l=rn(i[1].trim(),n),c=Math.max(0,Math.min(100,parseFloat(i[2]))),f=Math.round(c/100*255);return l&4294967040|f}if(t.startsWith("#")){let l=t.substring(1),c,f,p,d=255;if(l.length===3)c=parseInt(l[0]+l[0],16),f=parseInt(l[1]+l[1],16),p=parseInt(l[2]+l[2],16);else if(l.length===6)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),p=parseInt(l.substring(4,6),16);else if(l.length===8)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),p=parseInt(l.substring(4,6),16),d=parseInt(l.substring(6,8),16);else return 0;return(c<<24|f<<16|p<<8|d)>>>0}let r=t.match(/^rgba?\s*\(\s*([^)]+)\s*\)$/);if(r){let l=r[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0,p=parseFloat(l[2])||0;l[0].includes("%")||l[1].includes("%")||l[2].includes("%")?(l[0].includes("%")&&(c=c/100*255),l[1].includes("%")&&(f=f/100*255),l[2].includes("%")&&(p=p/100*255)):c<=1&&f<=1&&p<=1&&(c=c*255,f=f*255,p=p*255),c=Math.round(Math.max(0,Math.min(255,c))),f=Math.round(Math.max(0,Math.min(255,f))),p=Math.round(Math.max(0,Math.min(255,p)));let d=255;if(l.length>=4){let b=parseFloat(l[3]);l[3].includes("%")?b=b/100:b>1&&(b=b/255),d=Math.round(Math.max(0,Math.min(255,b*255)))}return(c<<24|f<<16|p<<8|d)>>>0}let s=t.match(/^oklch\s*\(\s*([^)]+)\s*\)$/);if(s){let l=s[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);l[0].includes("%")?c=c/100:c<=1||(c=c/100);let f=parseFloat(l[1])||0,p=parseFloat(l[2])||0,d=1;l.length>=4&&(d=parseFloat(l[3]),l[3].includes("%")?d=d/100:d>1&&(d=d/255));let b=jn(c*100,f,p),y=Math.round(d*255);return b&4294967040|y}let o=t.match(/^oklab\s*\(\s*([^)]+)\s*\)$/);if(o){let l=o[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);(l[0].includes("%")||c>1)&&(c=c/100);let f=parseFloat(l[1])||0,p=parseFloat(l[2])||0,d=1;l.length>=4&&(d=parseFloat(l[3]),l[3].includes("%")?d=d/100:d>1&&(d=d/255));let b=es({L:c,a:f,b:p}),y=b.r,v=b.g,N=b.b,M=Math.round(d*255);return(y<<24|v<<16|N<<8|M)>>>0}let a=t.match(/^hsl\s*\(\s*([^)]+)\s*\)$/);if(a){let l=a[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0;l[1].includes("%")?f=f/100:f<=1||(f=f/100);let p=parseFloat(l[2])||0;l[2].includes("%")?p=p/100:p<=1||(p=p/100);let d=1;l.length>=4&&(d=parseFloat(l[3]),l[3].includes("%")?d=d/100:d>1&&(d=d/255));let{r:b,g:y,b:v}=Ai(c,f,p),N=Math.round(d*255);return(b<<24|y<<16|v<<8|N)>>>0}if(t==="transparent")return 0;let u=t.match(/^([a-z]+)-(\d+)$/);if(u){let l=xm()[u[1]];if(l){let c=gm(l,parseInt(u[2],10));return n?dm(c):c}}return t in al?rn(al[t]):(console.warn(`parseColor: unrecognized color "${e}"`),0)}function wi(e,n){let t=Mi(e),i=Mi(n),r=.56,s=.57,o=.62,a=.65,u=.022,l=1.414,c=.1,f=5e-4,p=1.14,d=.027,b=1.14,y=.027;function v(P){return P>=u?P:P+(u-P)**l}function N(P){return(P<0?-1:1)*Math.pow(Math.abs(P),2.4)}let M=v(N(i.r/255)*.2126729+N(i.g/255)*.7151522+N(i.b/255)*.072175),$=v(N(t.r/255)*.2126729+N(t.g/255)*.7151522+N(t.b/255)*.072175),L,F;return Math.abs($-M)<f?F=0:$>M?(L=$**r-M**s,F=L*p):(L=$**a-M**o,F=L*b),Math.abs(F)<c?0:F>0?F-y:F+d}function ts(e){let n,t,i;typeof e!="object"||!("bg"in e)?(n=Mi(e),t="#ffffff",i="#000000"):(n=e.bg,t=e.fg1,i=e.fg2);let r=Math.abs(wi(t,n)),s=Math.abs(wi(i,n));return r>=s?ol(t):ol(i)}function _l(e,n){let t=e.L-n.L,i=e.a-n.a,r=e.b-n.b;return Math.sqrt(t*t+i*i+r*r)}var vm=["#4e79a7","#f28e2b","#59a14f","#e15759","#b07aa1","#9c755f","#ff9da7","#edc948","#76b7b2","#6b8fd6","#c07bc4"],Em=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],Nm=["#4e79a7","#f28e2b","#2ca58d","#d13a3c","#b07aa1","#9c755f","#ff9da7","#e3c13b","#5fb8b2","#6b8fd6","#c07bc4"],Tm=["#8fb1d4","#f6b878","#8ecf86","#f08a8b","#d3a9cc","#c3a492","#ffc6cc","#f3e08a","#a8d8d4","#a9c0ea","#e0b4e4"],Im=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],_m=["#2f6fb0","#ff7a00","#2fa23a","#e02f2f","#9b4db5","#7f4f38","#ff6f86","#f2c200","#2daaa3","#4c79e0","#b84ac6"],Sm=["#4f93ff","#ff8c1a","#33c94a","#ff4f4f","#b86bff","#a86a4a","#ff7f9e","#ffd400","#2ec9c1","#6f9bff","#cc5bd9"],Mm=["#5E81B5","#E19C24","#8FB131","#EB6235","#8778B3","#C56E1A","#5E9EC9","#B23A3A","#4C9F70","#C979B7"],km=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],wm=["#007AFF","#FF9500","#34C759","#FF3B30","#AF52DE","#FF2D55","#30B0C7","#5856D6","#A2845E","#32ADE6","#00C7BE"],Am=["#0A84FF","#FF9F0A","#30D158","#FF453A","#BF5AF2","#FF375F","#40C8E0","#5E5CE6","#AC8E68","#64D2FF","#00D1C1"],Cm=["#fdfdfd","#1d1d1d","#ebce2b","#702c8c","#db6917","#96cde6","#ba1c30","#c0bd7f","#7f7e80","#5fa641","#d485b2","#4277b6","#df8461","#463397","#e1a11a","#91218c","#e8e948","#7e1510","#92ae31","#6f340d","#d32b1e","#2b3514"],$m=["#4148cc","#db3c80","#12b5b0","#ff8c14","#848aff","#78e16e","#1e78f0","#ebcd00","#beeb3c","#7828d2","#cd5f00","#00915f"],Sl={tycho11:vm,"tycho-dark11":Em,"tycho-robust11":Nm,"tycho-soft11":Tm,"tycho-soft-dark11":Im,"tycho-bold11":_m,"tycho-bold-dark11":Sm,tableau10:km,kelly22:Cm,mathematica10:Mm,cupertino10:wm,"cupertino-dark10":Am,spectrum12:$m},ul=["#033198","#053399","#07359a","#09379b","#0b399c","#0c3b9c","#0e3d9d","#0f3f9e","#11409f","#1242a0","#1344a0","#1446a1","#1548a2","#164aa3","#174ca4","#184da4","#194fa5","#1951a6","#1a53a7","#1b54a8","#1b56a8","#1c58a9","#1d5aaa","#1d5bab","#1e5dab","#1e5fac","#1f60ad","#2062ae","#2064ae","#2166af","#2167b0","#2269b0","#226ab1","#236cb2","#236eb3","#246fb3","#2471b4","#2573b5","#2574b5","#2676b6","#2677b7","#2779b7","#287ab8","#287cb9","#297eb9","#297fba","#2a81bb","#2b82bb","#2b84bc","#2c85bd","#2d87bd","#2d88be","#2e8abf","#2f8cbf","#308dc0","#308fc1","#3190c1","#3292c2","#3394c3","#3495c3","#3597c4","#3698c5","#379ac5","#389cc6","#399dc7","#3a9fc7","#3ca1c8","#3da2c9","#3ea4c9","#40a6ca","#41a7cb","#43a9cb","#44abcc","#46accc","#47aecd","#49b0ce","#4bb2ce","#4db3cf","#4fb5d0","#51b7d0","#53b8d1","#55bad1","#57bcd2","#59bdd2","#5bbfd3","#5dc1d3","#60c3d4","#62c4d4","#64c6d5","#67c7d5","#69c9d5","#6ccbd6","#6eccd6","#71ced6","#74cfd6","#76d1d7","#79d2d7","#7bd4d7","#7ed5d7","#81d7d7","#83d8d7","#86d9d7","#89dad7","#8bdcd7","#8eddd7","#90ded7","#93dfd6","#95e0d6","#98e1d6","#9be2d5","#9de3d5","#9fe4d4","#a2e5d4","#a4e5d3","#a6e6d2","#a9e7d2","#abe7d1","#ade8d0","#afe8cf","#b1e9ce","#b3e9cd","#b5eacc","#b7eaca","#b9eac9","#bbeac8","#bdeac6","#beeac5","#c0eac3","#c1eac2","#c3eac0","#c4eabe","#c6eabc","#c7e9ba","#c8e9b8","#c9e9b6","#cbe8b4","#cce7b2","#cce7b0","#cde6ad","#cee5ab","#cfe5a8","#d0e4a6","#d0e3a3","#d1e2a1","#d1e19e","#d1df9b","#d2de98","#d2dd96","#d2dc93","#d2da90","#d2d98d","#d2d78a","#d2d687","#d2d484","#d2d381","#d2d17e","#d1cf7b","#d1cd78","#d0cc75","#d0ca72","#cfc86f","#cfc66d","#cec46a","#cec267","#cdc064","#ccbe62","#cbbc5f","#cbba5d","#cab85a","#c9b658","#c8b455","#c7b253","#c7b051","#c6ae4f","#c5ac4c","#c4aa4a","#c3a848","#c2a647","#c1a545","#c1a343","#c0a141","#bf9f40","#be9d3e","#bd9b3c","#bc993b","#bb9739","#ba9538","#ba9437","#b99235","#b89034","#b78e33","#b68c32","#b58b31","#b58930","#b4872f","#b3862e","#b2842d","#b1822c","#b0802b","#b07f2a","#af7d29","#ae7c28","#ad7a27","#ad7826","#ac7726","#ab7525","#aa7324","#a97223","#a97023","#a86f22","#a76d21","#a66c20","#a66a20","#a5681f","#a4671e","#a3651e","#a2641d","#a2621c","#a1611c","#a05f1b","#9f5d1a","#9e5c19","#9e5a19","#9d5818","#9c5717","#9b5517","#9a5316","#995215","#995014","#984e14","#974d13","#964b12","#954912","#944711","#934610","#92440f","#91420f","#90400e","#903e0d","#8f3c0c","#8e3a0b","#8d380b","#8c360a","#8b3409","#8a3208","#883008","#872e07","#862c06","#852a06","#842705","#832504","#822204","#812003","#801d02","#7f1a01","#7e1700"],ll=["#0b3c78","#2366a8","#4f97cf","#9bc7e4","#f7f7f7","#e88fa0","#c23c6f","#8e1d4d","#5a0c2e"],cl=["#2c557f","#4a7fa8","#7aa8c9","#b5cfe3","#f7f7f7","#e4b0b0","#c96c72","#9b3d4f","#6b1a2b"],fl=["#053061","#11458c","#1f5fa5","#337ab7","#4f94c6","#6baed6","#8bbdd9","#a6cce3","#c1dbec","#dceaf4","#f7f7f7","#fbe3d6","#f9c8b2","#f5a993","#ee8a75","#e36b58","#d64b41","#c72c33","#af212d","#971628","#7f0b23","#67001f"],pl=["#3b4cc0","#465ecf","#5070de","#5c82ea","#6f96f5","#86aafc","#9dbdff","#b6d0f3","#cfe1e8","#e6efe1","#f1f1f1","#f7f7f7","#f6e1d3","#f4cbb3","#f1b594","#ee9f76","#ea8960","#e06b53","#d24f49","#c1363f","#ae2036","#b40426"],Mt=e=>e.slice().reverse(),Ml={roma:ul,"roma-reversed":Mt(ul),vik:ll,"vik-reversed":Mt(ll),broc:cl,"broc-reversed":Mt(cl),rdbu:fl,"rdbu-reversed":Mt(fl),coolwarm:pl,"coolwarm-reversed":Mt(pl)},ml=["#30123b","#321543","#33184a","#341b51","#351e58","#36215f","#372466","#38276d","#392a73","#3a2d79","#3b2f80","#3c3286","#3d358b","#3e3891","#3f3b97","#3f3e9c","#4040a2","#4143a7","#4146ac","#4249b1","#424bb5","#434eba","#4451bf","#4454c3","#4456c7","#4559cb","#455ccf","#455ed3","#4661d6","#4664da","#4666dd","#4669e0","#466be3","#476ee6","#4771e9","#4773eb","#4776ee","#4778f0","#477bf2","#467df4","#4680f6","#4682f8","#4685fa","#4687fb","#458afc","#458cfd","#448ffe","#4391fe","#4294ff","#4196ff","#4099ff","#3e9bfe","#3d9efe","#3ba0fd","#3aa3fc","#38a5fb","#37a8fa","#35abf8","#33adf7","#31aff5","#2fb2f4","#2eb4f2","#2cb7f0","#2ab9ee","#28bceb","#27bee9","#25c0e7","#23c3e4","#22c5e2","#20c7df","#1fc9dd","#1ecbda","#1ccdd8","#1bd0d5","#1ad2d2","#1ad4d0","#19d5cd","#18d7ca","#18d9c8","#18dbc5","#18ddc2","#18dec0","#18e0bd","#19e2bb","#19e3b9","#1ae4b6","#1ce6b4","#1de7b2","#1fe9af","#20eaac","#22ebaa","#25eca7","#27eea4","#2aefa1","#2cf09e","#2ff19b","#32f298","#35f394","#38f491","#3cf58e","#3ff68a","#43f787","#46f884","#4af880","#4ef97d","#52fa7a","#55fa76","#59fb73","#5dfc6f","#61fc6c","#65fd69","#69fd66","#6dfe62","#71fe5f","#75fe5c","#79fe59","#7dff56","#80ff53","#84ff51","#88ff4e","#8bff4b","#8fff49","#92ff47","#96fe44","#99fe42","#9cfe40","#9ffd3f","#a1fd3d","#a4fc3c","#a7fc3a","#a9fb39","#acfb38","#affa37","#b1f936","#b4f836","#b7f735","#b9f635","#bcf534","#bef434","#c1f334","#c3f134","#c6f034","#c8ef34","#cbed34","#cdec34","#d0ea34","#d2e935","#d4e735","#d7e535","#d9e436","#dbe236","#dde037","#dfdf37","#e1dd37","#e3db38","#e5d938","#e7d739","#e9d539","#ebd339","#ecd13a","#eecf3a","#efcd3a","#f1cb3a","#f2c93a","#f4c73a","#f5c53a","#f6c33a","#f7c13a","#f8be39","#f9bc39","#faba39","#fbb838","#fbb637","#fcb336","#fcb136","#fdae35","#fdac34","#fea933","#fea732","#fea431","#fea130","#fe9e2f","#fe9b2d","#fe992c","#fe962b","#fe932a","#fe9029","#fd8d27","#fd8a26","#fc8725","#fc8423","#fb8122","#fb7e21","#fa7b1f","#f9781e","#f9751d","#f8721c","#f76f1a","#f66c19","#f56918","#f46617","#f36315","#f26014","#f15d13","#f05b12","#ef5811","#ed5510","#ec530f","#eb500e","#ea4e0d","#e84b0c","#e7490c","#e5470b","#e4450a","#e2430a","#e14109","#df3f08","#dd3d08","#dc3b07","#da3907","#d83706","#d63506","#d43305","#d23105","#d02f05","#ce2d04","#cc2b04","#ca2a04","#c82803","#c52603","#c32503","#c12302","#be2102","#bc2002","#b91e02","#b71d02","#b41b01","#b21a01","#af1801","#ac1701","#a91601","#a71401","#a41301","#a11201","#9e1001","#9b0f01","#980e01","#950d01","#920b01","#8e0a01","#8b0902","#880802","#850702","#810602","#7e0502","#7a0403"],dl=["#000004","#010005","#010106","#010108","#020109","#02020b","#02020d","#03030f","#030312","#040414","#050416","#060518","#06051a","#07061c","#08071e","#090720","#0a0822","#0b0924","#0c0926","#0d0a29","#0e0b2b","#100b2d","#110c2f","#120d31","#130d34","#140e36","#150e38","#160f3b","#180f3d","#19103f","#1a1042","#1c1044","#1d1147","#1e1149","#20114b","#21114e","#221150","#241253","#251255","#271258","#29115a","#2a115c","#2c115f","#2d1161","#2f1163","#311165","#331067","#341069","#36106b","#38106c","#390f6e","#3b0f70","#3d0f71","#3f0f72","#400f74","#420f75","#440f76","#451077","#471078","#491078","#4a1079","#4c117a","#4e117b","#4f127b","#51127c","#52137c","#54137d","#56147d","#57157e","#59157e","#5a167e","#5c167f","#5d177f","#5f187f","#601880","#621980","#641a80","#651a80","#671b80","#681c81","#6a1c81","#6b1d81","#6d1d81","#6e1e81","#701f81","#721f81","#732081","#752181","#762181","#782281","#792282","#7b2382","#7c2382","#7e2482","#802582","#812581","#832681","#842681","#862781","#882781","#892881","#8b2981","#8c2981","#8e2a81","#902a81","#912b81","#932b80","#942c80","#962c80","#982d80","#992d80","#9b2e7f","#9c2e7f","#9e2f7f","#a02f7f","#a1307e","#a3307e","#a5317e","#a6317d","#a8327d","#aa337d","#ab337c","#ad347c","#ae347b","#b0357b","#b2357b","#b3367a","#b5367a","#b73779","#b83779","#ba3878","#bc3978","#bd3977","#bf3a77","#c03a76","#c23b75","#c43c75","#c53c74","#c73d73","#c83e73","#ca3e72","#cc3f71","#cd4071","#cf4070","#d0416f","#d2426f","#d3436e","#d5446d","#d6456c","#d8456c","#d9466b","#db476a","#dc4869","#de4968","#df4a68","#e04c67","#e24d66","#e34e65","#e44f64","#e55064","#e75263","#e85362","#e95462","#ea5661","#eb5760","#ec5860","#ed5a5f","#ee5b5e","#ef5d5e","#f05f5e","#f1605d","#f2625d","#f2645c","#f3655c","#f4675c","#f4695c","#f56b5c","#f66c5c","#f66e5c","#f7705c","#f7725c","#f8745c","#f8765c","#f9785d","#f9795d","#f97b5d","#fa7d5e","#fa7f5e","#fa815f","#fb835f","#fb8560","#fb8761","#fc8961","#fc8a62","#fc8c63","#fc8e64","#fc9065","#fd9266","#fd9467","#fd9668","#fd9869","#fd9a6a","#fd9b6b","#fe9d6c","#fe9f6d","#fea16e","#fea36f","#fea571","#fea772","#fea973","#feaa74","#feac76","#feae77","#feb078","#feb27a","#feb47b","#feb67c","#feb77e","#feb97f","#febb81","#febd82","#febf84","#fec185","#fec287","#fec488","#fec68a","#fec88c","#feca8d","#fecc8f","#fecd90","#fecf92","#fed194","#fed395","#fed597","#fed799","#fed89a","#fdda9c","#fddc9e","#fddea0","#fde0a1","#fde2a3","#fde3a5","#fde5a7","#fde7a9","#fde9aa","#fdebac","#fcecae","#fceeb0","#fcf0b2","#fcf2b4","#fcf4b6","#fcf6b8","#fcf7b9","#fcf9bb","#fcfbbd","#fcfdbf"],hl=["#000004","#010005","#010106","#010108","#02010a","#02020c","#02020e","#030210","#040312","#040314","#050417","#060419","#07051b","#08051d","#09061f","#0a0722","#0b0724","#0c0826","#0d0829","#0e092b","#10092d","#110a30","#120a32","#140b34","#150b37","#160b39","#180c3c","#190c3e","#1b0c41","#1c0c43","#1e0c45","#1f0c48","#210c4a","#230c4c","#240c4f","#260c51","#280b53","#290b55","#2b0b57","#2d0b59","#2f0a5b","#310a5c","#320a5e","#340a5f","#360961","#380962","#390963","#3b0964","#3d0965","#3e0966","#400a67","#420a68","#440a68","#450a69","#470b6a","#490b6a","#4a0c6b","#4c0c6b","#4d0d6c","#4f0d6c","#510e6c","#520e6d","#540f6d","#550f6d","#57106e","#59106e","#5a116e","#5c126e","#5d126e","#5f136e","#61136e","#62146e","#64156e","#65156e","#67166e","#69166e","#6a176e","#6c186e","#6d186e","#6f196e","#71196e","#721a6e","#741a6e","#751b6e","#771c6d","#781c6d","#7a1d6d","#7c1d6d","#7d1e6d","#7f1e6c","#801f6c","#82206c","#84206b","#85216b","#87216b","#88226a","#8a226a","#8c2369","#8d2369","#8f2469","#902568","#922568","#932667","#952667","#972766","#982766","#9a2865","#9b2964","#9d2964","#9f2a63","#a02a63","#a22b62","#a32c61","#a52c60","#a62d60","#a82e5f","#a92e5e","#ab2f5e","#ad305d","#ae305c","#b0315b","#b1325a","#b3325a","#b43359","#b63458","#b73557","#b93556","#ba3655","#bc3754","#bd3853","#bf3952","#c03a51","#c13a50","#c33b4f","#c43c4e","#c63d4d","#c73e4c","#c83f4b","#ca404a","#cb4149","#cc4248","#ce4347","#cf4446","#d04545","#d24644","#d34743","#d44842","#d54a41","#d74b3f","#d84c3e","#d94d3d","#da4e3c","#db503b","#dd513a","#de5238","#df5337","#e05536","#e15635","#e25734","#e35933","#e45a31","#e55c30","#e65d2f","#e75e2e","#e8602d","#e9612b","#ea632a","#eb6429","#eb6628","#ec6726","#ed6925","#ee6a24","#ef6c23","#ef6e21","#f06f20","#f1711f","#f1731d","#f2741c","#f3761b","#f37819","#f47918","#f57b17","#f57d15","#f67e14","#f68013","#f78212","#f78410","#f8850f","#f8870e","#f8890c","#f98b0b","#f98c0a","#f98e09","#fa9008","#fa9207","#fa9407","#fb9606","#fb9706","#fb9906","#fb9b06","#fb9d07","#fc9f07","#fca108","#fca309","#fca50a","#fca60c","#fca80d","#fcaa0f","#fcac11","#fcae12","#fcb014","#fcb216","#fcb418","#fbb61a","#fbb81d","#fbba1f","#fbbc21","#fbbe23","#fac026","#fac228","#fac42a","#fac62d","#f9c72f","#f9c932","#f9cb35","#f8cd37","#f8cf3a","#f7d13d","#f7d340","#f6d543","#f6d746","#f5d949","#f5db4c","#f4dd4f","#f4df53","#f4e156","#f3e35a","#f3e55d","#f2e661","#f2e865","#f2ea69","#f1ec6d","#f1ed71","#f1ef75","#f1f179","#f2f27d","#f2f482","#f3f586","#f3f68a","#f4f88e","#f5f992","#f6fa96","#f8fb9a","#f9fc9d","#fafda1","#fcffa4"],gl=["#0d0887","#100788","#130789","#16078a","#19068c","#1b068d","#1d068e","#20068f","#220690","#240691","#260591","#280592","#2a0593","#2c0594","#2e0595","#2f0596","#310597","#330597","#350498","#370499","#38049a","#3a049a","#3c049b","#3e049c","#3f049c","#41049d","#43039e","#44039e","#46039f","#48039f","#4903a0","#4b03a1","#4c02a1","#4e02a2","#5002a2","#5102a3","#5302a3","#5502a4","#5601a4","#5801a4","#5901a5","#5b01a5","#5c01a6","#5e01a6","#6001a6","#6100a7","#6300a7","#6400a7","#6600a7","#6700a8","#6900a8","#6a00a8","#6c00a8","#6e00a8","#6f00a8","#7100a8","#7201a8","#7401a8","#7501a8","#7701a8","#7801a8","#7a02a8","#7b02a8","#7d03a8","#7e03a8","#8004a8","#8104a7","#8305a7","#8405a7","#8606a6","#8707a6","#8808a6","#8a09a5","#8b0aa5","#8d0ba5","#8e0ca4","#8f0da4","#910ea3","#920fa3","#9410a2","#9511a1","#9613a1","#9814a0","#99159f","#9a169f","#9c179e","#9d189d","#9e199d","#a01a9c","#a11b9b","#a21d9a","#a31e9a","#a51f99","#a62098","#a72197","#a82296","#aa2395","#ab2494","#ac2694","#ad2793","#ae2892","#b02991","#b12a90","#b22b8f","#b32c8e","#b42e8d","#b52f8c","#b6308b","#b7318a","#b83289","#ba3388","#bb3488","#bc3587","#bd3786","#be3885","#bf3984","#c03a83","#c13b82","#c23c81","#c33d80","#c43e7f","#c5407e","#c6417d","#c7427c","#c8437b","#c9447a","#ca457a","#cb4679","#cc4778","#cc4977","#cd4a76","#ce4b75","#cf4c74","#d04d73","#d14e72","#d24f71","#d35171","#d45270","#d5536f","#d5546e","#d6556d","#d7566c","#d8576b","#d9586a","#da5a6a","#da5b69","#db5c68","#dc5d67","#dd5e66","#de5f65","#de6164","#df6263","#e06363","#e16462","#e26561","#e26660","#e3685f","#e4695e","#e56a5d","#e56b5d","#e66c5c","#e76e5b","#e76f5a","#e87059","#e97158","#e97257","#ea7457","#eb7556","#eb7655","#ec7754","#ed7953","#ed7a52","#ee7b51","#ef7c51","#ef7e50","#f07f4f","#f0804e","#f1814d","#f1834c","#f2844b","#f3854b","#f3874a","#f48849","#f48948","#f58b47","#f58c46","#f68d45","#f68f44","#f79044","#f79143","#f79342","#f89441","#f89540","#f9973f","#f9983e","#f99a3e","#fa9b3d","#fa9c3c","#fa9e3b","#fb9f3a","#fba139","#fba238","#fca338","#fca537","#fca636","#fca835","#fca934","#fdab33","#fdac33","#fdae32","#fdaf31","#fdb130","#fdb22f","#fdb42f","#fdb52e","#feb72d","#feb82c","#feba2c","#febb2b","#febd2a","#febe2a","#fec029","#fdc229","#fdc328","#fdc527","#fdc627","#fdc827","#fdca26","#fdcb26","#fccd25","#fcce25","#fcd025","#fcd225","#fbd324","#fbd524","#fbd724","#fad824","#fada24","#f9dc24","#f9dd25","#f8df25","#f8e125","#f7e225","#f7e425","#f6e626","#f6e826","#f5e926","#f5eb27","#f4ed27","#f3ee27","#f3f027","#f2f227","#f1f426","#f1f525","#f0f724","#f0f921"],bl=["#440154","#440256","#450457","#450559","#46075a","#46085c","#460a5d","#460b5e","#470d60","#470e61","#471063","#471164","#471365","#481467","#481668","#481769","#48186a","#481a6c","#481b6d","#481c6e","#481d6f","#481f70","#482071","#482173","#482374","#482475","#482576","#482677","#482878","#482979","#472a7a","#472c7a","#472d7b","#472e7c","#472f7d","#46307e","#46327e","#46337f","#463480","#453581","#453781","#453882","#443983","#443a83","#443b84","#433d84","#433e85","#423f85","#424086","#424186","#414287","#414487","#404588","#404688","#3f4788","#3f4889","#3e4989","#3e4a89","#3e4c8a","#3d4d8a","#3d4e8a","#3c4f8a","#3c508b","#3b518b","#3b528b","#3a538b","#3a548c","#39558c","#39568c","#38588c","#38598c","#375a8c","#375b8d","#365c8d","#365d8d","#355e8d","#355f8d","#34608d","#34618d","#33628d","#33638d","#32648e","#32658e","#31668e","#31678e","#31688e","#30698e","#306a8e","#2f6b8e","#2f6c8e","#2e6d8e","#2e6e8e","#2e6f8e","#2d708e","#2d718e","#2c718e","#2c728e","#2c738e","#2b748e","#2b758e","#2a768e","#2a778e","#2a788e","#29798e","#297a8e","#297b8e","#287c8e","#287d8e","#277e8e","#277f8e","#27808e","#26818e","#26828e","#26828e","#25838e","#25848e","#25858e","#24868e","#24878e","#23888e","#23898e","#238a8d","#228b8d","#228c8d","#228d8d","#218e8d","#218f8d","#21908d","#21918c","#20928c","#20928c","#20938c","#1f948c","#1f958b","#1f968b","#1f978b","#1f988b","#1f998a","#1f9a8a","#1e9b8a","#1e9c89","#1e9d89","#1f9e89","#1f9f88","#1fa088","#1fa188","#1fa187","#1fa287","#20a386","#20a486","#21a585","#21a685","#22a785","#22a884","#23a983","#24aa83","#25ab82","#25ac82","#26ad81","#27ad81","#28ae80","#29af7f","#2ab07f","#2cb17e","#2db27d","#2eb37c","#2fb47c","#31b57b","#32b67a","#34b679","#35b779","#37b878","#38b977","#3aba76","#3bbb75","#3dbc74","#3fbc73","#40bd72","#42be71","#44bf70","#46c06f","#48c16e","#4ac16d","#4cc26c","#4ec36b","#50c46a","#52c569","#54c568","#56c667","#58c765","#5ac864","#5cc863","#5ec962","#60ca60","#63cb5f","#65cb5e","#67cc5c","#69cd5b","#6ccd5a","#6ece58","#70cf57","#73d056","#75d054","#77d153","#7ad151","#7cd250","#7fd34e","#81d34d","#84d44b","#86d549","#89d548","#8bd646","#8ed645","#90d743","#93d741","#95d840","#98d83e","#9bd93c","#9dd93b","#a0da39","#a2da37","#a5db36","#a8db34","#aadc32","#addc30","#b0dd2f","#b2dd2d","#b5de2b","#b8de29","#bade28","#bddf26","#c0df25","#c2df23","#c5e021","#c8e020","#cae11f","#cde11d","#d0e11c","#d2e21b","#d5e21a","#d8e219","#dae319","#dde318","#dfe318","#e2e418","#e5e419","#e7e419","#eae51a","#ece51b","#efe51c","#f1e51d","#f4e61e","#f6e620","#f8e621","#fbe723","#fde725"],yl=["#00204d","#00214e","#002250","#002252","#002353","#002455","#002557","#002558","#00265a","#00275c","#00275e","#002860","#002961","#002a63","#002a65","#002b67","#002c69","#002c6a","#002d6c","#002e6e","#002e6f","#002f6f","#002f6f","#00306f","#00306f","#00316f","#00326f","#00336f","#00336f","#00346f","#00356e","#01366e","#06366e","#0b376e","#0f386e","#12386d","#15396d","#183a6d","#1a3b6d","#1d3b6d","#1f3c6d","#213d6d","#233e6c","#243e6c","#263f6c","#28406c","#2a406c","#2b416c","#2d426c","#2e436c","#30436c","#31446b","#32456b","#34456b","#35466b","#36476b","#38486b","#39486b","#3a496b","#3b4a6b","#3d4a6b","#3e4b6b","#3f4c6b","#404d6b","#414d6b","#424e6b","#434f6b","#444f6b","#46506b","#47516b","#48526b","#49526b","#4a536b","#4b546c","#4c546c","#4d556c","#4e566c","#4f576c","#50576c","#51586c","#52596c","#53596c","#545a6c","#555b6d","#565c6d","#575c6d","#585d6d","#595e6d","#595f6d","#5a5f6d","#5b606e","#5c616e","#5d616e","#5e626e","#5f636e","#60646f","#61646f","#62656f","#63666f","#64666f","#646770","#656870","#666970","#676970","#686a71","#696b71","#6a6c71","#6b6c71","#6c6d72","#6c6e72","#6d6e72","#6e6f73","#6f7073","#707173","#717174","#727274","#727374","#737475","#747475","#757575","#767676","#777776","#787777","#787877","#797977","#7a7a78","#7b7a78","#7c7b78","#7d7c78","#7e7d78","#7f7d78","#807e79","#817f79","#828079","#838079","#848179","#848279","#858379","#868379","#878479","#888579","#898679","#8a8779","#8b8779","#8c8879","#8d8979","#8e8a79","#8f8a79","#908b79","#918c78","#928d78","#938e78","#948e78","#958f78","#969078","#979178","#989278","#999278","#9a9377","#9b9477","#9c9577","#9d9677","#9e9677","#9f9777","#a09877","#a19976","#a29a76","#a39a76","#a49b76","#a59c76","#a69d75","#a89e75","#a99f75","#aa9f75","#aba074","#aca174","#ada274","#aea374","#afa473","#b0a473","#b1a573","#b2a672","#b3a772","#b4a872","#b5a971","#b6a971","#b7aa71","#b8ab70","#b9ac70","#baad70","#bbae6f","#bcaf6f","#beaf6f","#bfb06e","#c0b16e","#c1b26d","#c2b36d","#c3b46d","#c4b56c","#c5b56c","#c6b66b","#c7b76b","#c8b86a","#c9b96a","#cbba69","#ccbb69","#cdbc68","#cebc68","#cfbd67","#d0be67","#d1bf66","#d2c066","#d3c165","#d4c264","#d6c364","#d7c463","#d8c563","#d9c562","#dac661","#dbc761","#dcc860","#ddc95f","#deca5f","#e0cb5e","#e1cc5d","#e2cd5c","#e3ce5c","#e4cf5b","#e5d05a","#e6d159","#e8d259","#e9d358","#ead357","#ebd456","#ecd555","#edd654","#efd753","#f0d852","#f1d951","#f2da50","#f3db4f","#f4dc4e","#f6dd4d","#f7de4c","#f8df4b","#f9e04a","#fae149","#fbe248","#fde346","#fee445","#ffe544","#ffe642","#ffe742","#ffe843","#ffe944","#ffea46"],xl=["#03051a","#04051a","#05061b","#06071c","#07071d","#08081e","#0a091f","#0b0920","#0d0a21","#0e0b22","#100b23","#110c24","#130d25","#140e26","#160e27","#170f28","#180f29","#1a102a","#1b112b","#1d112c","#1e122d","#20122e","#211330","#221331","#241432","#251433","#271534","#281535","#2a1636","#2b1637","#2d1738","#2e1739","#30173a","#31183b","#33183c","#34193d","#35193e","#37193f","#381a40","#3a1a41","#3c1a42","#3d1a42","#3f1b43","#401b44","#421b45","#431c46","#451c47","#461c48","#481c48","#491d49","#4b1d4a","#4c1d4b","#4e1d4b","#501d4c","#511e4d","#531e4d","#541e4e","#561e4f","#581e4f","#591e50","#5b1e51","#5c1e51","#5e1f52","#601f52","#611f53","#631f53","#641f54","#661f54","#681f55","#691f55","#6b1f56","#6d1f56","#6e1f57","#701f57","#711f57","#731f58","#751f58","#761f58","#781f59","#7a1f59","#7b1f59","#7d1f5a","#7f1e5a","#811e5a","#821e5a","#841e5a","#861e5b","#871e5b","#891e5b","#8b1d5b","#8c1d5b","#8e1d5b","#901d5b","#921c5b","#931c5b","#951c5b","#971c5b","#981b5b","#9a1b5b","#9c1b5b","#9e1a5b","#9f1a5b","#a11a5b","#a3195b","#a4195b","#a6195a","#a8185a","#aa185a","#ab185a","#ad1759","#af1759","#b01759","#b21758","#b41658","#b51657","#b71657","#b91657","#ba1656","#bc1656","#bd1655","#bf1654","#c11754","#c21753","#c41753","#c51852","#c71951","#c81951","#ca1a50","#cb1b4f","#cd1c4e","#ce1d4e","#cf1e4d","#d11f4c","#d2204c","#d3214b","#d5224a","#d62449","#d72549","#d82748","#d92847","#db2946","#dc2b46","#dd2c45","#de2e44","#df2f44","#e03143","#e13342","#e23442","#e33641","#e43841","#e53940","#e63b40","#e73d3f","#e83f3f","#e8403e","#e9423e","#ea443e","#eb463e","#eb483e","#ec4a3e","#ec4c3e","#ed4e3e","#ed503e","#ee523f","#ee543f","#ef5640","#ef5840","#ef5a41","#f05c42","#f05e42","#f06043","#f16244","#f16445","#f16646","#f26747","#f26948","#f26b49","#f26d4b","#f26f4c","#f3714d","#f3734e","#f37450","#f37651","#f37852","#f47a54","#f47c55","#f47d57","#f47f58","#f4815a","#f4835b","#f4845d","#f4865e","#f58860","#f58a61","#f58b63","#f58d64","#f58f66","#f59067","#f59269","#f5946b","#f5966c","#f5976e","#f59970","#f69b71","#f69c73","#f69e75","#f6a077","#f6a178","#f6a37a","#f6a47c","#f6a67e","#f6a880","#f6a981","#f6ab83","#f6ad85","#f6ae87","#f6b089","#f6b18b","#f6b38d","#f6b48f","#f6b691","#f6b893","#f6b995","#f6bb97","#f6bc99","#f6be9b","#f6bf9d","#f6c19f","#f7c2a2","#f7c4a4","#f7c6a6","#f7c7a8","#f7c9aa","#f7caac","#f7ccaf","#f7cdb1","#f7cfb3","#f7d0b5","#f8d1b8","#f8d3ba","#f8d4bc","#f8d6be","#f8d7c0","#f8d9c3","#f8dac5","#f8dcc7","#f9ddc9","#f9dfcb","#f9e0cd","#f9e2d0","#f9e3d2","#f9e5d4","#fae6d6","#fae8d8","#fae9da","#faebdd"],vl=["#0b0405","#0d0406","#0e0508","#0f0609","#10060a","#11070c","#12080d","#13090f","#140910","#150a12","#160b13","#170c15","#180d16","#190e18","#1a0e19","#1b0f1a","#1c101c","#1d111d","#1e111f","#1f1220","#201322","#211423","#221425","#231526","#241628","#251729","#26172b","#27182d","#28192e","#291930","#291a31","#2a1b33","#2b1c35","#2c1c36","#2d1d38","#2e1e39","#2e1e3b","#2f1f3d","#30203e","#312140","#312142","#322243","#332345","#342447","#342548","#35254a","#35264c","#36274d","#37284f","#372851","#382953","#382a54","#392b56","#3a2c58","#3a2c59","#3b2d5b","#3b2e5d","#3b2f5f","#3c3060","#3c3162","#3d3164","#3d3266","#3e3367","#3e3469","#3e356b","#3f366d","#3f366f","#3f3770","#403872","#403974","#403a76","#403b78","#403c79","#413d7b","#413e7d","#413e7f","#413f80","#414082","#414184","#414285","#414387","#414488","#40468a","#40478b","#40488d","#40498e","#3f4a8f","#3f4b90","#3f4c92","#3e4d93","#3e4f94","#3e5095","#3d5195","#3d5296","#3c5397","#3c5598","#3b5698","#3b5799","#3b589a","#3a599a","#3a5b9b","#3a5c9b","#395d9c","#395e9c","#385f9c","#38619d","#38629d","#38639d","#37649e","#37659e","#37669e","#37689f","#36699f","#366a9f","#366b9f","#366ca0","#366da0","#366fa0","#3670a0","#3671a0","#3572a1","#3573a1","#3574a1","#3575a1","#3576a2","#3578a2","#3579a2","#357aa2","#357ba3","#357ca3","#357da3","#357ea4","#347fa4","#3480a4","#3482a4","#3483a5","#3484a5","#3485a5","#3486a5","#3487a6","#3488a6","#3489a6","#348ba6","#348ca7","#348da7","#348ea7","#348fa7","#3490a8","#3491a8","#3492a8","#3493a8","#3495a9","#3496a9","#3497a9","#3498a9","#3499aa","#349aaa","#359baa","#359caa","#359eaa","#359fab","#35a0ab","#35a1ab","#36a2ab","#36a3ab","#36a4ab","#37a5ac","#37a6ac","#37a8ac","#38a9ac","#38aaac","#39abac","#39acac","#3aadac","#3aaead","#3bafad","#3cb1ad","#3cb2ad","#3db3ad","#3eb4ad","#3fb5ad","#3fb6ad","#40b7ad","#41b8ad","#42b9ad","#43baad","#44bcad","#45bdad","#46bead","#47bfad","#48c0ad","#49c1ad","#4bc2ad","#4cc3ad","#4dc4ad","#4fc5ad","#50c6ad","#52c7ad","#53c9ad","#55caad","#57cbad","#59ccad","#5bcdad","#5ecdad","#60ceac","#62cfac","#65d0ad","#68d1ad","#6ad2ad","#6dd3ad","#70d4ad","#73d4ad","#76d5ae","#79d6ae","#7cd6af","#7fd7af","#82d8b0","#85d9b1","#88d9b1","#8bdab2","#8edbb3","#91dbb4","#94dcb5","#96ddb5","#99ddb6","#9cdeb7","#9edfb8","#a1dfb9","#a4e0bb","#a6e1bc","#a9e1bd","#abe2be","#aee3c0","#b0e4c1","#b2e4c2","#b5e5c4","#b7e6c5","#b9e6c7","#bbe7c8","#bee8ca","#c0e9cc","#c2e9cd","#c4eacf","#c6ebd1","#c8ecd2","#caedd4","#ccedd6","#ceeed7","#d0efd9","#d2f0db","#d4f1dc","#d6f1de","#d8f2e0","#daf3e1","#dcf4e3","#def5e5"],El=["#000000","#111111","#222222","#333333","#444444","#555555","#666666","#777777","#888888","#999999","#aaaaaa","#bbbbbb","#cccccc","#dddddd","#eeeeee","#ffffff"],Nl=["#a8780d","#b3701b","#be6828","#c75f35","#cf5643","#d54b53","#db4066","#de357b","#df2a93","#dc25ad","#d529c4","#cc34d7","#c041e5","#b24fef","#a25cf3","#9168f4","#7d73f0","#687ce8","#5285dc","#3d8bcd","#2c90bc","#2093ac","#19959c","#12978c","#0c987c","#119a69","#249a52","#409839","#5e9420","#778d12","#8b860d","#9b7f0d"],qe=e=>e.slice().reverse(),kl={turbo:ml,"turbo-reversed":qe(ml),grey:El,"grey-reversed":qe(El),magma:dl,"magma-reversed":qe(dl),inferno:hl,"inferno-reversed":qe(hl),plasma:gl,"plasma-reversed":qe(gl),viridis:bl,"viridis-reversed":qe(bl),cividis:yl,"cividis-reversed":qe(yl),rocket:xl,"rocket-reversed":qe(xl),mako:vl,"mako-reversed":qe(vl),"cmocean-phase":Nl,"cmocean-phase-reversed":qe(Nl)};var wl=7,Al=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function we(e){if(e<0)return NaN;let n=0;for(;e<10;)n+=Math.log(e),e+=1;let t=Math.PI,i=e*e*e;return e*Math.log(e)-e-.5*Math.log(e)+.5*Math.log(2*t)+1/(12*e)-1/(360*i)+1/(1260*i*e*e)-n}function U(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*U(1-e));if(e>100)return Math.exp(we(e));e-=1;let n=Al[0];for(let i=1;i<wl+2;i++)n+=Al[i]/(e+i);let t=e+wl+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,e+.5)*Math.exp(-t)*n}function Rm(e){let t=Math.log(1-e*e),i=2/(Math.PI*.147)+t/2;return Math.sign(e)*Math.sqrt(Math.sqrt(i*i-t/.147)-i)}function $l(e){if(Number.isNaN(e)||e<-1||e>1)return NaN;if(e===0)return 0;if(e===1)return 1/0;if(e===-1)return-1/0;let n=e<0?-1:1,t=Math.abs(e),i=Rm(t),r=Math.sqrt(Math.PI)/2;for(let s=0;s<4;s++)i-=($n(i)-t)*r*Math.exp(i*i);return n*i}function Yn(e){if(Number.isNaN(e))return NaN;if(!Number.isFinite(e))return e>0?0:2;if(e<0)return 2-Yn(-e);if(e<2)return 1-$n(e);let n=1e-300,t=e===0?n:e,i=t,r=0;for(let s=1;s<=500;s++){let o=s/2;r=e+o*r,r===0&&(r=n),r=1/r,i=e+o/i,i===0&&(i=n);let a=i*r;if(t*=a,Math.abs(a-1)<1e-17)break}return Math.exp(-e*e)/(Math.sqrt(Math.PI)*t)}function $n(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1:-1;let n=e<0?-1:1,t=Math.abs(e);if(t>=6)return n;let i=t*t,r=t,s=t;for(let o=1;o<200&&(r*=2*i/(2*o+1),s+=r,!(r<s*1e-18));o++);return n*(2/Math.sqrt(Math.PI))*Math.exp(-i)*s}var Ri=.5772156649015329,Zn=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function Di(e){if(!isFinite(e))return NaN;if(e<0)return Number.isInteger(e)?NaN:Di(1-e)-Math.PI/Math.tan(Math.PI*e);if(e===0)return NaN;let n=0,t=e;for(;t<7;)n-=1/t,t+=1;n+=Math.log(t)-1/(2*t);let i=t*t;for(let r=0;r<Zn.length;r++)n-=Zn[r]/(2*(r+1)*i),i*=t*t;return n}function Fi(e){if(!isFinite(e))return NaN;if(e<0){if(Number.isInteger(e))return NaN;let r=Math.sin(Math.PI*e);return Math.PI*Math.PI/(r*r)-Fi(1-e)}if(e===0)return NaN;let n=0,t=e;for(;t<7;)n+=1/(t*t),t+=1;n+=1/t+1/(2*t*t);let i=t*t*t;for(let r=0;r<Zn.length;r++)n+=Zn[r]/i,i*=t*t;return n}function is(e,n){if(!Number.isInteger(e)||e<0)return NaN;if(e===0)return Di(n);if(e===1)return Fi(n);if(!isFinite(n)||n===0)return NaN;if(n<0){if(Number.isInteger(n))return NaN;let a=0,u=n,l=e%2===0?1:-1;for(;u<1;)a+=l*Hn(e)/Math.pow(u,e+1),u+=1;return a+is(e,u)}let t=0,i=n,r=e%2===0?-1:1;for(;i<7;)t+=r*Hn(e)/Math.pow(i,e+1),i+=1;let s=e%2===0?-1:1;t+=s*Hn(e-1)/Math.pow(i,e),t+=s*Hn(e)/(2*Math.pow(i,e+1));let o=Math.pow(i,e+2);for(let a=0;a<Math.min(Zn.length,6);a++){let u=2*(a+1),l=1;for(let c=0;c<u;c++)l*=e+c;t+=s*Zn[a]*l/(Hn(u)*o),o*=i*i}return t}function Hn(e){if(e<=1)return 1;let n=1;for(let t=2;t<=e;t++)n*=t;return n}function Rl(e,n){return e>100||n>100||e+n>100?Math.exp(we(e)+we(n)-we(e+n)):U(e)*U(n)/U(e+n)}function rs(e){if(!isFinite(e))return NaN;if(e===1)return 1/0;if(e===0)return-.5;if(e===2)return Math.PI*Math.PI/6;if(e===4)return Math.PI**4/90;if(e===6)return Math.PI**6/945;if(e===8)return Math.PI**8/9450;if(e<0)return Math.pow(2,e)*Math.pow(Math.PI,e-1)*Math.sin(Math.PI*e/2)*U(1-e)*rs(1-e);let n=22,t=Pm(n),i=t[n],r=0;for(let s=0;s<=n;s++)r+=(s%2===0?1:-1)*(t[s]-i)/Math.pow(s+1,e);return-1/(i*(1-Math.pow(2,1-e)))*r}function Pm(e){let n=new Array(e+1);n[0]=1;for(let t=1;t<=e;t++)n[t]=n[t-1]+Dm(e,t);return n}function Dm(e,n){n>e-n&&(n=e-n);let t=1;for(let i=0;i<n;i++)t=t*(e-i)/(i+1);return t}function Pl(e){if(!isFinite(e))return e;if(e===0)return 0;let n=1/Math.E;if(e<-n)return NaN;if(Math.abs(e+n)<1e-15)return-1;let t;if(e<0){let i=Math.sqrt(2*(Math.E*e+1));t=-1+i-i*i/3+11/72*i*i*i}else if(e<=1)t=e*(1-e*(1-1.5*e));else if(e<100){let i=Math.log(e);t=i-Math.log(i)}else{let i=Math.log(e),r=Math.log(i);t=i-r+r/i}for(let i=0;i<30;i++){let r=Math.exp(t),o=t*r-e,a=r*(t+1),u=r*(t+2),l=o/(a-o*u/(2*a));if(t-=l,Math.abs(l)<1e-15*(1+Math.abs(t)))break}return t}function cn(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:e<0?(e=-e,e%2===0?cn(e,n):-cn(e,n)):n<0?e%2===0?cn(e,-n):-cn(e,-n):n>25+e*e/2?Om(e,n):n<5+e?Fm(e,n):Lm(e,n)}function Fm(e,n){let t=n/2,i=-(n*n)/4,r=1;for(let o=1;o<=e;o++)r/=o;let s=r;for(let o=1;o<=60&&(r*=i/(o*(e+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,e)}function Dl(e,n){let t=4*e*e,i=1,r=0,s=1,o=8*n;for(let a=1;a<=20;a++){s*=t-(2*a-1)*(2*a-1);let u=Hn(a)*Math.pow(o,a),l=s/u;if(a%2===1?r+=(a%4===1?1:-1)*l:i+=(a%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[i,r]}function Om(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=Dl(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.cos(t)-r*Math.sin(t))}function Lm(e,n){let t=Math.max(e+20,Math.ceil(n)+30),i=0,r=1,s=new Array(t+1);s[t]=r;for(let u=t;u>=1;u--){let l=2*u/n*r-i;i=r,r=l,s[u-1]=r}let o=s[0];for(let u=2;u<=t;u+=2)o+=2*s[u];let a=1/o;return s[e]*a}function Pi(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;if(e<0)return e=-e,e%2===0?Pi(e,n):-Pi(e,n);if(n>12+e*e/4)return qm(e,n);let t=Bm(n);if(e===0)return t;let i=Vm(n);if(e===1)return i;let r=t,s=i;for(let o=1;o<e;o++){let a=2*o/n*s-r;r=s,s=a}return s}function Bm(e){let n=e/2,t=n*n,i=cn(0,e),r=0,s=1,o=0;for(let a=1;a<=60&&(o+=1/a,s*=-t/(a*a),r-=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16));a++);return 2/Math.PI*(i*(Math.log(n)+Ri)+r)}function Vm(e){let n=e/2,t=n*n,i=cn(1,e),r=0,s=1,o=1;for(let a=0;a<=60;a++){a>0&&(o*=a,s*=t);let u=o*(a+1),l=0;for(let y=1;y<=a;y++)l+=1/y;let c=l+1/(a+1),f=-Ri+l,p=-Ri+c,b=(a%2===0?1:-1)*(f+p)*s/(o*u);if(r+=b,a>3&&Math.abs(b)<1e-16*Math.abs(r))break}return-2/(Math.PI*e)+2/Math.PI*Math.log(n)*i-n/Math.PI*r}function qm(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=Dl(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.sin(t)+r*Math.cos(t))}function Cn(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:(e<0&&(e=-e),n<0?e%2===0?Cn(e,-n):-Cn(e,-n):n>40?zm(e,n):Jm(e,n))}function Jm(e,n){let t=n/2,i=n*n/4,r=1;for(let o=1;o<=e;o++)r/=o;let s=r;for(let o=1;o<=80&&(r*=i/(o*(e+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,e)}function zm(e,n){let t=4*e*e,i=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(i*=o/(s*8*n),r+=i,Math.abs(i)<1e-15)break}return Math.exp(n)/Math.sqrt(2*Math.PI*n)*r}function Fl(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;if(e<0&&(e=-e),n>40)return jm(e,n);let t=Ol(n);if(e===0)return t;let i=Gm(n);if(e===1)return i;let r=t,s=i;for(let o=1;o<e;o++){let a=2*o/n*s+r;r=s,s=a}return s}function Ol(e){let n=e/2,t=n*n,i=Cn(0,e),r=0,s=1,o=0;for(let a=1;a<=60&&(o+=1/a,s*=t/(a*a),r+=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16&&a>3));a++);return-(Math.log(n)+Ri)*i+r}function Gm(e){let n=Cn(0,e),t=Cn(1,e),i=Ol(e);return(1/e-t*i)/n}function jm(e,n){let t=4*e*e,i=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(i*=o/(s*8*n),r+=i,Math.abs(i)<1e-15)break}return Math.sqrt(Math.PI/(2*n))*Math.exp(-n)*r}function Ll(e){if(!isFinite(e))return NaN;if(e>5){let a=.6666666666666666*Math.pow(e,1.5);return Hm(e,a)}if(e<-5){let a=-e,u=2/3*Math.pow(a,1.5);return Um(a,u)}let n=1/(Math.pow(3,2/3)*U(2/3)),t=1/(Math.pow(3,1/3)*U(1/3)),i=1,r=e,s=1,o=e;for(let a=1;a<=80;a++){let u=3*a;if(s*=e*e*e/((u-1)*u),o*=e*e*e/(u*(u+1)),i+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(i)+Math.abs(r)))break}return n*i-t*r}function Hm(e,n){let t=Math.pow(e,.25),i=1,r=1,s=[1,5/72,385/10368,85085/2239488,37182145/644972544];for(let o=1;o<s.length;o++)r=s[o]/Math.pow(n,o),i+=(o%2===0?1:-1)*r;return Math.exp(-n)/(2*Math.sqrt(Math.PI)*t)*i}function Um(e,n){let t=Math.pow(e,.25);return Math.sin(n+Math.PI/4)/(Math.sqrt(Math.PI)*t)}function Bl(e){if(!isFinite(e))return NaN;if(e>5){let a=.6666666666666666*Math.pow(e,1.5);return Zm(e,a)}if(e<-5){let a=-e,u=2/3*Math.pow(a,1.5);return Ym(a,u)}let n=1/(Math.pow(3,2/3)*U(2/3)),t=1/(Math.pow(3,1/3)*U(1/3)),i=1,r=e,s=1,o=e;for(let a=1;a<=80;a++){let u=3*a;if(s*=e*e*e/((u-1)*u),o*=e*e*e/(u*(u+1)),i+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(i)+Math.abs(r)))break}return Math.sqrt(3)*(n*i+t*r)}function Zm(e,n){let t=Math.pow(e,.25),i=1,r=1,s=[1,5/72,385/10368,85085/2239488,37182145/644972544];for(let o=1;o<s.length;o++)r=s[o]/Math.pow(n,o),i+=r;return Math.exp(n)/(Math.sqrt(Math.PI)*t)*i}function Ym(e,n){let t=Math.pow(e,.25);return Math.cos(n+Math.PI/4)/(Math.sqrt(Math.PI)*t)}var Wm=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],Xm=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Qm=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Km=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],Vl=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],ql=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],Jl=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],zl=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function ke(e,n){let t=n[0];for(let i=1;i<n.length;i++)t=t*e+n[i];return t}function fn(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*t*ke(i,Wm)/ke(i,Xm)}if(e<36974){let t=e*e,i=Math.PI*t,r=1/(i*i),s=1-r*ke(r,Vl)/ke(r,ql),o=1/i*ke(r,Jl)/ke(r,zl),a=Math.PI/2*t,u=Math.cos(a),l=Math.sin(a);return n*(.5-(s*u+o*l)/(Math.PI*e))}return n*.5}function pn(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*ke(i,Qm)/ke(i,Km)}if(e<36974){let t=e*e,i=Math.PI*t,r=1/(i*i),s=1-r*ke(r,Vl)/ke(r,ql),o=1/i*ke(r,Jl)/ke(r,zl),a=Math.PI/2*t,u=Math.cos(a),l=Math.sin(a);return n*(.5+(s*l-o*u)/(Math.PI*e))}return n*.5}function Gl(e){return e===0?1:Math.sin(e)/e}function jl(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1/0:-1/0;let n=e<0?-1:1,t=Math.abs(e),i=t*t,r=t,s=t;for(let o=1;o<1e3&&(r*=i*(2*o-1)/(o*(2*o+1)),s+=r,!(r<s*1e-18));o++);return n*(2/Math.sqrt(Math.PI))*s}var ss=.5772156649015329;function Hl(e){let r=Math.abs(e);if(r===0)return{si:0,ci:-1/0};if(!Number.isFinite(r))return{si:e>0?Math.PI/2:-Math.PI/2,ci:0};let s,o;if(r>2){let a=1,u=r,l=1e30,c=0,f=a*a+u*u,p=a/f,d=-u/f,b=p,y=d;for(let L=1;L<100;L++){let F=-L*L;a+=2;let P=F*p+a,Q=F*d+u;f=P*P+Q*Q,p=P/f,d=-Q/f,f=l*l+c*c,l=a+F*l/f,c=u-F*c/f;let V=l*p-c*d,q=l*d+c*p;if(P=b*V-y*q,Q=b*q+y*V,b=P,y=Q,Math.abs(V-1)+Math.abs(q)<=1e-16)break}let v=Math.cos(r),N=Math.sin(r),M=v*b+N*y,$=v*y-N*b;o=-M,s=Math.PI/2+$}else{let a=0,u=0,l=0,c=1,f=1,p=!0;for(let d=1;d<=100;d++){f*=r/d;let b=f/d;a+=c*b;let y=b/Math.abs(a);if(p?(c=-c,u=a,a=l):(l=a,a=u),y<1e-16)break;p=!p}s=u,o=l+Math.log(r)+ss}return e<0&&(s=-s),{si:s,ci:o}}function Ul(e){return Number.isNaN(e)?NaN:Hl(e).si}function Zl(e){return Number.isNaN(e)?NaN:Hl(e).ci}function ed(e){if(e<=0)return NaN;if(e<=1){let u=-Math.log(e)-ss,l=1;for(let c=1;c<=200;c++){l*=-e/c;let f=-l/c;if(u+=f,Math.abs(f)<Math.abs(u)*1e-16)break}return u}let i=1e30,r=e+1,s=i,o=1/r,a=o;for(let u=1;u<=200;u++){let l=-u*u;r+=2,o=1/(l*o+r),s=r+l/s;let c=s*o;if(a*=c,Math.abs(c-1)<=1e-16)break}return a*Math.exp(-e)}function os(e){if(Number.isNaN(e))return NaN;if(e===0)return-1/0;if(!Number.isFinite(e))return e>0?1/0:0;if(e<0)return-ed(-e);let n=1e-16,t=200,i=-Math.log(n);if(e<=i){let o=0,a=1;for(let u=1;u<=t;u++){a*=e/u;let l=a/u;if(o+=l,l<n*o)break}return o+Math.log(e)+ss}let r=0,s=1;for(let o=1;o<=t;o++){let a=s;if(s*=o/e,s<n)break;if(s<a)r+=s;else{r-=a;break}}return Math.exp(e)*(1+r)/e}function Yl(e){return Number.isNaN(e)?NaN:e===0?0:e===1?-1/0:e<0?NaN:os(Math.log(e))}function as(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(e<0||n<0)return NaN;if(e===0||n===0)return 0;if(!isFinite(e)||!isFinite(n))return 1/0;for(let t=0;t<64&&Math.abs(e-n)>1e-17*Math.abs(e);t++){let i=.5*(e+n);n=Math.sqrt(e*n),e=i}return .5*(e+n)}function us(e){return Number.isNaN(e)?NaN:e===1?1/0:e>1?NaN:Math.PI/(2*as(1,Math.sqrt(1-e)))}function ls(e){if(Number.isNaN(e))return NaN;if(e===1)return 1;if(e>1)return NaN;let n=1,t=Math.sqrt(1-e),i=.5*e,r=.5;for(let o=0;o<64&&Math.abs(n-t)>1e-17*n;o++){let a=.5*(n-t),u=.5*(n+t);t=Math.sqrt(n*t),n=u,r*=2,i+=r*a*a}return Math.PI/(2*n)*(1-i)}var Wl=1e-24;function Un(e,n){if(Number.isNaN(e)||Number.isNaN(n)||e<0)return NaN;if(n===0)return 1/0;if(e===0)return Math.PI/(2*Math.sqrt(n));if(n<0)return Math.sqrt(e/(e-n))*Un(e-n,-n);if(e===n)return 1/Math.sqrt(e);let t=(n-e)/e;if(Math.abs(t)<.01){let r=0,s=1;for(let o=0;o<10;o++)r+=s/(2*o+1),s*=-t;return r/Math.sqrt(e)}let i=Math.sqrt(e/n);return e<n?Math.acos(i)/Math.sqrt(n-e):Math.acosh(i)/Math.sqrt(e-n)}function Ct(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(e<0||n<0||t<0)return NaN;if((e===0?1:0)+(n===0?1:0)+(t===0?1:0)>1)return 1/0;if(n===t)return Un(e,n);if(e===t)return Un(n,e);if(e===n)return Un(t,e);let i=(e+n+t)/3,r=Math.pow(3*Wl,-1/6)*Math.max(Math.abs(i-e),Math.abs(i-n),Math.abs(i-t)),[s,o,a]=[e,n,t],u=i,l=1;for(let v=0;v<64&&l*r>=Math.abs(u);v++){let N=Math.sqrt(s),M=Math.sqrt(o),$=Math.sqrt(a),L=N*M+N*$+M*$;u=(u+L)/4,s=(s+L)/4,o=(o+L)/4,a=(a+L)/4,l/=4}let c=l/u,f=(i-e)*c,p=(i-n)*c,d=-f-p,b=f*p-d*d,y=f*p*d;return Math.pow(u,-.5)*(9240-924*b+385*b*b+660*y-630*b*y)/9240}function Oi(e,n,t,i){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t)||Number.isNaN(i))return NaN;if(e<0||n<0||t<0)return NaN;if(i===0||(e===0?1:0)+(n===0?1:0)+(t===0?1:0)>1)return 1/0;if(i<0){let[V,q,z]=[e,n,t].sort((sn,et)=>sn-et),Z=-i,ae=(z*(V+q+Z)-V*q)/(z+Z),ue=(ae-z)*Oi(V,q,z,ae);return ue-=3*Ct(V,q,z),ue+=3*Math.sqrt(V*q*z/(V*q+ae*Z))*Un(V*q+ae*Z,ae*Z),ue/(z+Z)}let r=(e+n+t+2*i)/5,s=(i-e)*(i-n)*(i-t),o=Math.pow(.25*Wl,-1/6)*Math.max(Math.abs(r-e),Math.abs(r-n),Math.abs(r-t),Math.abs(r-i)),[a,u,l,c]=[e,n,t,i],f=r,p=1,d=0;for(let V=0;V<64;V++){let q=Math.sqrt(a),z=Math.sqrt(u),Z=Math.sqrt(l),ae=Math.sqrt(c),ue=q*z+q*Z+z*Z,sn=(f+ue)/4;a=(a+ue)/4,u=(u+ue)/4,l=(l+ue)/4,c=(c+ue)/4;let et=(ae+q)*(ae+z)*(ae+Z),Fc=s*p*p*p/(et*et);if(p*o<Math.abs(f))break;d+=Un(1,1+Fc)*p/et,p/=4,f=sn}let b=p/f,y=(r-e)*b,v=(r-n)*b,N=(r-t)*b,M=(-y-v-N)/2,$=y*v+y*N+v*N-3*M*M,L=y*v*N+2*$*M+4*M*M*M,F=(2*y*v*N+$*M+3*M*M*M)*M,P=y*v*N*M*M,Q=(24024-5148*$+2457*$*$+4004*L-4158*$*L-3276*F+2772*P)/24024;return p*Math.pow(f,-1.5)*Q+6*d}function nd(e,n,t){return Oi(e,n,t,t)}function cs(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(Math.abs(e)>Math.PI/2){let s=Math.round(e/Math.PI),o=us(n);return Number.isFinite(o)?2*s*o+cs(e-s*Math.PI,n):NaN}let t=Math.sin(e),i=1-n*t*t;if(i<0)return NaN;let r=Math.cos(e);return t*Ct(r*r,i,1)}function fs(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(Math.abs(e)>Math.PI/2){let o=Math.round(e/Math.PI),a=ls(n);return Number.isFinite(a)?2*o*a+fs(e-o*Math.PI,n):NaN}let t=Math.sin(e),i=1-n*t*t;if(i<0)return NaN;let r=Math.cos(e),s=t*t*t;return t*Ct(r*r,i,1)-n/3*s*nd(r*r,i,1)}function ps(e,n){return Number.isNaN(e)||Number.isNaN(n)?NaN:e===1||n===1?1/0:n>1?NaN:Ct(0,1-n,1)+e/3*Oi(0,1-n,1,1-e)}function ms(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(Math.abs(n)>Math.PI/2){let u=Math.round(n/Math.PI),l=ps(e,t);return Number.isFinite(l)?2*u*l+ms(e,n-u*Math.PI,t):NaN}let i=Math.sin(n),r=1-t*i*i;if(r<0)return NaN;let s=Math.cos(n),o=i*i*i,a=1-e*i*i;return a===0?1/0:i*Ct(s*s,r,1)+e/3*o*Oi(s*s,r,1,a)}function At(e){return Number.isInteger(e)&&e<=0}function wt(e,n,t,i,r=1e4){let s=1,o=1;for(let a=0;a<r;a++)if(s*=(e+a)*(n+a)*i/((t+a)*(a+1)),s===0||(o+=s,a>2&&Math.abs(s)<=Number.EPSILON*Math.abs(o)))return o;return o}function ds(e,n,t,i){if([e,n,t,i].some(Number.isNaN))return NaN;let r=At(e)?-e:1/0,s=At(n)?-n:1/0,o=Math.min(r,s);if(At(t)&&(o===1/0||o>-t))return NaN;if(o!==1/0)return wt(e,n,t,i,o+1);if(i===0)return 1;if(i===1){let c=t-e-n;return c<=0?c===0?1/0:NaN:U(t)*U(c)/(U(t-e)*U(t-n))}if(i>1)return NaN;if(i<0)return Math.pow(1-i,-e)*ds(e,t-n,t,i/(i-1));if(i<=.5)return wt(e,n,t,i);let a=t-e-n;if(Number.isInteger(a))return i<=.95?wt(e,n,t,i,1e6):NaN;let u=U(t)*U(a)/(U(t-e)*U(t-n))*wt(e,n,1-a,1-i),l=U(t)*U(-a)/(U(e)*U(n))*Math.pow(1-i,a)*wt(t-e,t-n,1+a,1-i);return u+l}function Cl(e,n,t,i=2e4){let r=1,s=1;for(let o=0;o<i;o++)if(r*=(e+o)*t/((n+o)*(o+1)),r===0||(s+=r,o>2&&Math.abs(r)<=Number.EPSILON*Math.abs(s)))return s;return s}function hs(e,n,t){if([e,n,t].some(Number.isNaN))return NaN;let i=At(e)?-e:1/0;return At(n)&&(i===1/0||i>-n)?NaN:i!==1/0?Cl(e,n,t,i+1):t<0?Math.exp(t)*hs(n-e,n,-t):Cl(e,n,t)}var $t=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function Rt(e,n){for(;e>=$t.length;){let t=$t.length,i=[1],r=$t[t-1];for(let s=1;s<t;s++)i[s]=r[s-1]+r[s];i[t]=1,$t.push(i)}return $t[e][n]}function Ql(e){let n=0,t=0;for(let i of e)n+=i,t++;return t===0?NaN:n/t}function Pt(e){let n=[...e].sort((i,r)=>i-r),t=Math.floor(n.length/2);return n.length%2===0?(n[t-1]+n[t])/2:n[t]}function gs(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/(i-1)}function bs(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/i}function Kl(e){return Math.sqrt(gs(e))}function ec(e){return Math.sqrt(bs(e))}function nc(e){let n=0,t=0,i=0,r=0,s=0;for(let c of e){let f=c;if(!Number.isFinite(f))return NaN;n+=f,t+=f*f,i+=f*f*f,r+=f*f*f*f,s++}if(s===0)return NaN;let o=s,a=n/o,u=(t-n*n/o)/o;return(r-4*a*i+6*a*a*t-4*a*a*a*n+o*a*a*a*a)/o/(u*u)}function tc(e){let n=0,t=0,i=0,r=0;for(let l of e){let c=l;if(!Number.isFinite(c))return NaN;n+=c,t+=c*c,i+=c*c*c,r++}if(r===0)return NaN;let s=r,o=n/s,a=(t-n*n/s)/s;return(i-3*o*t+3*o*o*n-s*o*o*o)/s/Math.pow(a,3/2)}function ic(e){let n={};for(let r of e)n[r]=(n[r]??0)+1;let t=0,i=NaN;for(let r in n){let s=n[r];s>t&&(t=s,i=+r)}return i}function ys(e){let n=[...e].sort((o,a)=>o-a),t=Math.floor(n.length/2),i=Pt(n.slice(0,t)),r=Pt(n),s=Pt(n.slice(t));return[i,r,s]}function rc(e){let[n,,t]=ys(e);return t-n}function ud(e,n){if(n===0)return{estimate:e,error:n};let t=Math.abs(n),i=Math.floor(Math.log10(t)),r=2,s=Math.pow(10,i-(r-1)),o=Math.round(n/s)*s,a=Math.max(0,-(i-(r-1)));return{estimate:Number(e.toFixed(a)),error:o}}function sc(e,n,t,i=1e5,r){r??=Jt();let s;n===-1/0&&t===1/0?s=()=>{let v=Math.random(),N=Math.tan(Math.PI*(v-.5));return e(N)*Math.PI*(1+N*N)}:n===-1/0?s=()=>{let v=Math.random();return e(t+Math.log(v))/v}:t===1/0?s=()=>{let v=Math.random();return e(n-Math.log(v))/v}:s=()=>e(n+Math.random()*(t-n));let o=0,a=0,u=0;zt(r,()=>{for(let v=0;v<i;v++){if((v&63)===0&&r!==void 0&&Date.now()>=r){v===0&&nt(r);break}let N;try{N=s()}catch(M){if(M instanceof je&&u>0)break;throw M}o+=N,a+=N*N,u++}});let l=o/u,c=(a-u*l*l)/(u-1),f=Math.sqrt(c/u),p=isFinite(n)&&isFinite(t)?t-n:1,d=l*p,b=f*p;return ud(d,b)}var xs={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},vs={Abs:(e,n)=>x.isComplexValued(e[0])?`_SYS.cabs(${n(e[0])})`:x.isNonNegative(e[0])?n(e[0]):`Math.abs(${n(e[0])})`,Add:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(o=>x.isComplexValued(o))){let o=e.map(te);if(o.every(u=>u!==void 0))return String(o.reduce((u,l)=>u+l,0));let a=e.filter(u=>te(u)!==0);return a.length===0?"0":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" + ")})`}let i=e.map(o=>({code:n(o),isComplex:x.isComplexValued(o)})),r=i.map(o=>o.isComplex?`(${o.code}).re`:o.code),s=i.filter(o=>o.isComplex).map(o=>`(${o.code}).im`);return`({ re: ${r.join(" + ")}, im: ${s.join(" + ")} })`},Arccos:(e,n)=>x.isComplexValued(e[0])?`_SYS.cacos(${n(e[0])})`:`Math.acos(${n(e[0])})`,Arcosh:"Math.acosh",Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return x.isComplexValued(e)?`_SYS.cacot(${n(e)})`:`Math.atan(1 / (${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return x.isComplexValued(e)?`_SYS.cacoth(${n(e)})`:`Math.atanh(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return x.isComplexValued(e)?`_SYS.cacsc(${n(e)})`:`Math.asin(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return x.isComplexValued(e)?`_SYS.cacsch(${n(e)})`:`Math.asinh(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return x.isComplexValued(e)?`_SYS.casec(${n(e)})`:`Math.acos(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return x.isComplexValued(e)?`_SYS.casech(${n(e)})`:`Math.acosh(1 / (${n(e)}))`},Arcsin:(e,n)=>x.isComplexValued(e[0])?`_SYS.casin(${n(e[0])})`:`Math.asin(${n(e[0])})`,Arsinh:"Math.asinh",Arctan:(e,n)=>x.isComplexValued(e[0])?`_SYS.catan(${n(e[0])})`:`Math.atan(${n(e[0])})`,Artanh:"Math.atanh",Ceil:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`Math.ceil(${n(e[0])})`,Chop:"_SYS.chop",Cos:(e,n)=>x.isComplexValued(e[0])?`_SYS.ccos(${n(e[0])})`:`Math.cos(${n(e[0])})`,Cosh:(e,n)=>x.isComplexValued(e[0])?`_SYS.ccosh(${n(e[0])})`:`Math.cosh(${n(e[0])})`,Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return x.isComplexValued(e)?`_SYS.ccot(${n(e)})`:x.inlineExpression("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return x.isComplexValued(e)?`_SYS.ccoth(${n(e)})`:x.inlineExpression("(Math.cosh(${x}) / Math.sinh(${x}))",n(e))},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return x.isComplexValued(e)?`_SYS.ccsc(${n(e)})`:`1 / Math.sin(${n(e)})`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return x.isComplexValued(e)?`_SYS.ccsch(${n(e)})`:`1 / Math.sinh(${n(e)})`},Exp:(e,n)=>x.isComplexValued(e[0])?`_SYS.cexp(${n(e[0])})`:`Math.exp(${n(e[0])})`,First:(e,n)=>`${n(e[0])}[0]`,Floor:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`Math.floor(${n(e[0])})`,Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return x.inlineExpression("${x} - Math.floor(${x})",n(e))},Gamma:"_SYS.gamma",GCD:"_SYS.gcd",Integrate:(e,n,t)=>pd(e,n,t),LCM:"_SYS.lcm",Product:(e,n,t)=>ac("Product",e,n,t),Sum:(e,n,t)=>ac("Sum",e,n,t),Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:(e,n)=>x.isComplexValued(e[0])?`_SYS.cln(${n(e[0])})`:`Math.log(${n(e[0])})`,List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>n(e[0]),Tuple:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Log:(e,n)=>e.length===1?`Math.log10(${n(e[0])})`:`(Math.log(${n(e[0])}) / Math.log(${n(e[1])}))`,GammaLn:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Mean:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mean(${n(e[0])})`:`_SYS.mean([${e.map(t=>n(t)).join(", ")}])`,Median:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.median(${n(e[0])})`:`_SYS.median([${e.map(t=>n(t)).join(", ")}])`,Variance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.variance(${n(e[0])})`:`_SYS.variance([${e.map(t=>n(t)).join(", ")}])`,PopulationVariance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationVariance(${n(e[0])})`:`_SYS.populationVariance([${e.map(t=>n(t)).join(", ")}])`,StandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.standardDeviation(${n(e[0])})`:`_SYS.standardDeviation([${e.map(t=>n(t)).join(", ")}])`,PopulationStandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationStandardDeviation(${n(e[0])})`:`_SYS.populationStandardDeviation([${e.map(t=>n(t)).join(", ")}])`,Kurtosis:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.kurtosis(${n(e[0])})`:`_SYS.kurtosis([${e.map(t=>n(t)).join(", ")}])`,Skewness:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.skewness(${n(e[0])})`:`_SYS.skewness([${e.map(t=>n(t)).join(", ")}])`,Mode:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mode(${n(e[0])})`:`_SYS.mode([${e.map(t=>n(t)).join(", ")}])`,Quartiles:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.quartiles(${n(e[0])})`:`_SYS.quartiles([${e.map(t=>n(t)).join(", ")}])`,InterquartileRange:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.interquartileRange(${n(e[0])})`:`_SYS.interquartileRange([${e.map(t=>n(t)).join(", ")}])`,Min:"Math.min",Power:(e,n)=>{let t=e[0],i=e[1];if(t===null)throw new Error("Power: no argument");if(x.isComplexValued(t)||x.isComplexValued(i))return`_SYS.cpow(${n(t)}, ${n(i)})`;let r=te(t),s=te(i);if(r!==void 0&&s!==void 0)return String(Math.pow(r,s));if(s===0)return"1";if(s===1)return n(t);if(s===2&&(I(t)||D(t))){let o=n(t);return`(${o} * ${o})`}return s===-1?`(1 / (${n(t)}))`:s===.5?`Math.sqrt(${n(t)})`:s===1/3?`Math.cbrt(${n(t)})`:s===-.5?`(1 / Math.sqrt(${n(t)}))`:`Math.pow(${n(t)}, ${n(i)})`},Range:(e,n)=>{if(e.length===0)return"[]";if(e.length===1)return`Array.from({length: ${n(e[0])}}, (_, i) => i)`;let t=n(e[0]),i=n(e[1]),r=e[2]?n(e[2]):"1";if(t===null)throw new Error("Range: no start");if(i===null&&(i=t,t="1"),r==="0")throw new Error("Range: step cannot be zero");if(parseFloat(r)===1){let s=parseFloat(i),o=parseFloat(t);return!isNaN(s)&&!isNaN(o)?s-o<50?`[${Array.from({length:s-o+1},(a,u)=>o+u).join(", ")}]`:`Array.from({length: ${s-o+1}
50
50
  }, (_, i) => ${t} + i)`:`Array.from({length: ${i} - ${t} + 1
51
- }, (_e, i) => ${t} + i)`}return`Array.from({length: Math.floor((${i} - ${t}) / ${r}) + 1}, (_e, i) => ${t} + i * ${r})`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n===null)return`Math.sqrt(${t(e)})`;let i=W(e),r=W(n);return i!==void 0&&r!==void 0&&r!==0?String(Math.pow(i,1/r)):r===2?`Math.sqrt(${t(e)})`:r===3?`Math.cbrt(${t(e)})`:r!==void 0?`Math.pow(${t(e)}, ${1/r})`:`Math.pow(${t(e)}, 1 / (${t(n)}))`},Random:(e,n)=>{if(e.length===0)return"Math.random()";if(e.length===2){let r=n(e[0]),s=n(e[1]);return`((${r}) + Math.floor(Math.random() * ((${s}) - (${r}))))`}let t=e[0];return y.isIntegerValued(t)?`Math.floor(Math.random() * (${n(t)}))`:`(() => { const _s = (${n(t)}) * 12.9898; const _v = Math.sin(_s) * 43758.5453; return _v - Math.floor(_v); })()`},Round:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`Math.round(${n(e[0])})`,Square:(e,n)=>{let t=e[0];if(t===null)throw new Error("Square: no argument");let i=W(t);if(i!==void 0)return String(i*i);if(T(t)){let r=n(t);return`(${r} * ${r})`}return`Math.pow(${n(t)}, 2)`},Sec:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sec: no argument");return y.isComplexValued(t)?`_SYS.csec(${n(t)})`:`1 / Math.cos(${n(t)})`},Sech:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sech: no argument");return y.isComplexValued(t)?`_SYS.csech(${n(t)})`:`1 / Math.cosh(${n(t)})`},Second:(e,n)=>`${n(e[0])}[1]`,Heaviside:"_SYS.heaviside",Sign:"Math.sign",Sinc:"_SYS.sinc",FresnelS:"_SYS.fresnelS",FresnelC:"_SYS.fresnelC",Sin:(e,n)=>y.isComplexValued(e[0])?`_SYS.csin(${n(e[0])})`:`Math.sin(${n(e[0])})`,Sinh:(e,n)=>y.isComplexValued(e[0])?`_SYS.csinh(${n(e[0])})`:`Math.sinh(${n(e[0])})`,Sqrt:(e,n)=>{if(y.isComplexValued(e[0]))return`_SYS.csqrt(${n(e[0])})`;let t=W(e[0]);return t!==void 0?String(Math.sqrt(t)):`Math.sqrt(${n(e[0])})`},Tan:(e,n)=>y.isComplexValued(e[0])?`_SYS.ctan(${n(e[0])})`:`Math.tan(${n(e[0])})`,Tanh:(e,n)=>y.isComplexValued(e[0])?`_SYS.ctanh(${n(e[0])})`:`Math.tanh(${n(e[0])})`,Third:(e,n)=>`${n(e[0])}[2]`,Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");let i=t(e),r=t(n);return y.isIntegerValued(e)&&y.isIntegerValued(n)&&y.isNonNegative(e)?`(${i} % ${r})`:`((${i} % ${r}) + ${r}) % ${r}`},Truncate:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`Math.trunc(${n(e[0])})`,Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * Math.round(${t(e)} / ${t(n)}))`},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");let i=y.isComplexValued(e),r=y.isComplexValued(n);if(!i&&!r){let s=W(e),o=W(n);return s!==void 0&&o!==void 0&&o!==0?String(s/o):o===1?t(e):`(${t(e)} / ${t(n)})`}return i&&r?`(() => { const _a = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: (_a.re * _b.re + _a.im * _b.im) / _d, im: (_a.im * _b.re - _a.re * _b.im) / _d }; })()`:i&&!r?`(() => { const _a = ${t(e)}, _r = ${t(n)}; return { re: _a.re / _r, im: _a.im / _r }; })()`:`(() => { const _r = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: _r * _b.re / _d, im: -_r * _b.im / _d }; })()`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");if(!y.isComplexValued(e)){let t=W(e);return t!==void 0?String(-t):`(-${n(e)})`}return`_SYS.cneg(${n(e)})`},Multiply:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(o=>y.isComplexValued(o))){if(e.some(u=>W(u)===0))return"0";let o=e.map(W);if(o.every(u=>u!==void 0))return String(o.reduce((u,l)=>u*l,1));let a=e.filter(u=>W(u)!==1);return a.length===0?"1":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" * ")})`}if(e.length===2){let o=y.isComplexValued(e[0]),a=y.isComplexValued(e[1]),u=n(e[0]),l=n(e[1]);return o&&a?`(() => { const _a = ${u}, _b = ${l}; return { re: _a.re * _b.re - _a.im * _b.im, im: _a.re * _b.im + _a.im * _b.re }; })()`:o&&!a?`(() => { const _a = ${u}, _r = ${l}; return { re: _a.re * _r, im: _a.im * _r }; })()`:`(() => { const _r = ${u}, _b = ${l}; return { re: _r * _b.re, im: _r * _b.im }; })()`}let i=[],r=[];for(let o=0;o<e.length;o++){let a=`_v${o}`;r.push(a),i.push(`const ${a} = ${n(e[o])}`)}let s=y.isComplexValued(e[0]);i.push(`let _re = ${s?`${r[0]}.re`:r[0]}`),i.push(`let _im = ${s?`${r[0]}.im`:"0"}`);for(let o=1;o<e.length;o++){let a=r[o],u=y.isComplexValued(e[o]),l=u?`${a}.re`:a,c=u?`${a}.im`:"0";i.push(`const _nre${o} = _re * ${l} - _im * ${c}`),i.push(`const _nim${o} = _re * ${c} + _im * ${l}`),i.push(`_re = _nre${o}`),i.push(`_im = _nim${o}`)}return`(() => { ${i.join("; ")}; return { re: _re, im: _im }; })()`},Factorial:"_SYS.factorial",Factorial2:"_SYS.factorial2",Exp2:([e],n)=>{if(e===null)throw new Error("Exp2: no argument");return`Math.pow(2, ${n(e)})`},Log2:"Math.log2",Log10:"Math.log10",Lg:"Math.log10",Arctan2:"Math.atan2",Hypot:"Math.hypot",Degrees:([e],n)=>{if(e===null)throw new Error("Degrees: no argument");return`(${n(e)} * Math.PI / 180)`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return y.inlineExpression("(1 - Math.cos(${x})) / 2",n(e))},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2 * Math.asin(Math.sqrt(${n(e)})))`},Erf:"_SYS.erf",Erfc:"_SYS.erfc",ErfInv:"_SYS.erfInv",Beta:"_SYS.beta",Digamma:"_SYS.digamma",Trigamma:"_SYS.trigamma",PolyGamma:(e,n)=>`_SYS.polygamma(${n(e[0])}, ${n(e[1])})`,Zeta:"_SYS.zeta",LambertW:"_SYS.lambertW",BesselJ:(e,n)=>`_SYS.besselJ(${n(e[0])}, ${n(e[1])})`,BesselY:(e,n)=>`_SYS.besselY(${n(e[0])}, ${n(e[1])})`,BesselI:(e,n)=>`_SYS.besselI(${n(e[0])}, ${n(e[1])})`,BesselK:(e,n)=>`_SYS.besselK(${n(e[0])}, ${n(e[1])})`,AiryAi:"_SYS.airyAi",AiryBi:"_SYS.airyBi",Mandelbrot:([e,n],t)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");return`_SYS.mandelbrot(${t(e)}, ${t(n)})`},Julia:([e,n,t],i)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");return`_SYS.julia(${i(e)}, ${i(n)}, ${i(t)})`},Binomial:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Fibonacci:"_SYS.fibonacci",Real:(e,n)=>y.isComplexValued(e[0])?`(${n(e[0])}).re`:n(e[0]),Imaginary:(e,n)=>y.isComplexValued(e[0])?`(${n(e[0])}).im`:"0",Argument:(e,n)=>y.isComplexValued(e[0])?`_SYS.carg(${n(e[0])})`:`(${n(e[0])} >= 0 ? 0 : Math.PI)`,Conjugate:(e,n)=>y.isComplexValued(e[0])?`_SYS.cconj(${n(e[0])})`:n(e[0]),Color:([e],n)=>{if(e===null)throw new Error("Color: no argument");return`_SYS.color(${n(e)})`},ColorToString:(e,n)=>{if(e.length===0)throw new Error("ColorToString: no argument");return e.length>=2?`_SYS.colorToString(${n(e[0])}, ${n(e[1])})`:`_SYS.colorToString(${n(e[0])})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");return e.length>=3?`_SYS.colorMix(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.colorMix(${n(e[0])}, ${n(e[1])})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_SYS.colorContrast(${t(e)}, ${t(n)})`},ContrastingColor:(e,n)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");return e.length>=3?`_SYS.contrastingColor(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.contrastingColor(${n(e[0])})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");return`_SYS.colorToColorspace(${t(e)}, ${t(n)})`},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");return`_SYS.colorFromColorspace(${t(e)}, ${t(n)})`},Colormap:(e,n)=>{if(e.length===0)throw new Error("Colormap: no argument");return e.length>=2?`_SYS.colormap(${n(e[0])}, ${n(e[1])})`:`_SYS.colormap(${n(e[0])})`},Rgb:(e,n)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_SYS.rgb(${e.map(n).join(", ")})`},Hsv:(e,n)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_SYS.hsv(${e.map(n).join(", ")})`},Hsl:(e,n)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_SYS.hsl(${e.map(n).join(", ")})`},Oklab:(e,n)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_SYS.oklab(${e.map(n).join(", ")})`},Oklch:(e,n)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`_SYS.oklch(${e.map(n).join(", ")})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_SYS.asRgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_SYS.asHsv(${n(e)})`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_SYS.asHsl(${n(e)})`},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_SYS.asOklab(${n(e)})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},ColorDelta:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorDelta: need two colors");return`_SYS.colorDelta(${t(e)}, ${t(n)})`},Distance:([e,n],t)=>{if(e===null||n===null)throw new Error("Distance: need two points");return`_SYS.distance(${t(e)}, ${t(n)})`}};function Z(e){return{re:e.re,im:e.im}}function Ce(e){if(e!==void 0&&Number.isFinite(e)&&!(Math.abs(e-1)<1e-9))return e}function Ve(e){if(typeof e=="string"){let t=tn(e),i={r:t>>>24&255,g:t>>>16&255,b:t>>>8&255},r=Ce((t&255)/255);return r!==void 0&&(i.alpha=r),i}let n=Si({L:e[0],C:e[1],H:e[2]});if(e.length>=4){let t=Ce(e[3]);t!==void 0&&(n.alpha=t)}return n}function Mt(e){if(typeof e=="string"){let n=tn(e),t=n>>>24&255,i=n>>>16&255,r=n>>>8&255,s=Te({r:t,g:i,b:r}),o=Ce((n&255)/255);return o!==void 0&&(s.alpha=o),s}return{L:e[0],C:e[1],H:e[2],alpha:e.length>=4?Ce(e[3]):void 0}}function Ci(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=Te({r:n,g:t,b:i}),s=Ce((e&255)/255);return s!==void 0?[r.L,r.C,r.H,s]:[r.L,r.C,r.H]}var $m={color(e){return Ci(tn(e))},colorToString(e,n){let t=Ve(e),i=(n??"hex").toLowerCase();switch(i){case"hex":{let r=Math.round(Math.max(0,Math.min(255,t.r))),s=Math.round(Math.max(0,Math.min(255,t.g))),o=Math.round(Math.max(0,Math.min(255,t.b))),a=`#${r.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`;if(t.alpha!==void 0){let u=Math.round(Math.max(0,Math.min(255,t.alpha*255)));a+=u.toString(16).padStart(2,"0")}return a}case"rgb":{let r=Math.round(t.r),s=Math.round(t.g),o=Math.round(t.b);return t.alpha!==void 0?`rgb(${r} ${s} ${o} / ${t.alpha})`:`rgb(${r} ${s} ${o})`}case"hsl":{let r=_i(t.r,t.g,t.b),s=Math.round(r.h*10)/10,o=Math.round(r.s*1e3)/10,a=Math.round(r.l*1e3)/10;return t.alpha!==void 0?`hsl(${s} ${o}% ${a}% / ${t.alpha})`:`hsl(${s} ${o}% ${a}%)`}case"oklch":{let r=Te(t),s=Math.round(r.L*1e3)/1e3,o=Math.round(r.C*1e3)/1e3,a=Math.round(r.H*10)/10;return t.alpha!==void 0?`oklch(${s} ${o} ${a} / ${t.alpha})`:`oklch(${s} ${o} ${a})`}default:throw new Error(`Unknown color format: ${i}`)}},colorMix(e,n,t=.5){let i=Mt(e),r=Mt(n);t=Math.max(0,Math.min(1,t));let s=i.C<1e-6,o=r.C<1e-6,a;if(s&&o)a=i.H;else if(s)a=r.H;else if(o)a=i.H;else{let h=r.H-i.H;h>180&&(h-=360),h<-180&&(h+=360),a=i.H+h*t,a<0&&(a+=360),a>=360&&(a-=360)}let u=i.L+(r.L-i.L)*t,l=i.C+(r.C-i.C)*t,c=i.alpha??1,f=r.alpha??1,m=Ce(c+(f-c)*t);return m!==void 0?[u,l,a,m]:[u,l,a]},colorContrast(e,n){return Ti(Ve(e),Ve(n))},contrastingColor(e,n,t){let i=Ve(e);return Ci(n!==void 0&&t!==void 0?Zr({bg:i,fg1:Ve(n),fg2:Ve(t)}):Zr(i))},colorToColorspace(e,n){let t=Ve(e),i=t.alpha,r;switch(n.toLowerCase()){case"rgb":r=[t.r/255,t.g/255,t.b/255];break;case"hsl":{let s=_i(t.r,t.g,t.b);r=[s.h,s.s,s.l];break}case"oklch":{let s=Te(t);r=[s.L,s.C,s.H];break}case"oklab":case"lab":{let s=Ur(t);r=[s.L,s.a,s.b];break}default:throw new Error(`Unknown color space: ${n}`)}return i!==void 0&&r.push(i),r},colormap(e,n){let i={...ll,...al,...ul}[e];if(!i)throw new Error(`Unknown palette: ${e}`);let r=i.map(o=>Ci(tn(o)));if(n===void 0)return r;if(Number.isInteger(n)&&n>=2){let o=n,a=[];for(let u=0;u<o;u++){let l=o===1?0:u/(o-1);a.push(this._interpolatePalette(r,l))}return a}let s=Math.max(0,Math.min(1,n));return this._interpolatePalette(r,s)},_interpolatePalette(e,n){if(e.length===0)return[0,0,0];if(n<=0)return[...e[0]];if(n>=1)return[...e[e.length-1]];let t=n*(e.length-1),i=Math.floor(t),r=t-i;if(r===0||i>=e.length-1)return[...e[Math.min(i,e.length-1)]];let[s,o,a]=e[i],[u,l,c]=e[i+1],f=o<1e-6,m=l<1e-6,h;if(f&&m)h=a;else if(f)h=c;else if(m)h=a;else{let b=c-a;b>180&&(b-=360),b<-180&&(b+=360),h=a+b*r,h<0&&(h+=360),h>=360&&(h-=360)}return[s+(u-s)*r,o+(l-o)*r,h]},colorFromColorspace(e,n){let t=e[0],i=e[1],r=e[2],s=e.length>=4?e[3]:void 0,o;switch(n.toLowerCase()){case"rgb":o=Te({r:t*255,g:i*255,b:r*255});break;case"hsl":{let a=Ii(t,i,r);o=Te(a);break}case"oklch":o={L:t,C:i,H:r};break;case"oklab":case"lab":o=It({L:t,a:i,b:r});break;default:throw new Error(`Unknown color space: ${n}`)}return s!==void 0?[o.L,o.C,o.H,s]:[o.L,o.C,o.H]},rgb(e,n,t,i){let r=Te({r:e*255,g:n*255,b:t*255}),s=Ce(i);return s!==void 0?[r.L,r.C,r.H,s]:[r.L,r.C,r.H]},hsv(e,n,t,i){let r=rl(e,n,t),s=Te(r),o=Ce(i);return o!==void 0?[s.L,s.C,s.H,o]:[s.L,s.C,s.H]},hsl(e,n,t,i){let r=Ii(e,n,t),s=Te({r:r.r,g:r.g,b:r.b}),o=Ce(i);return o!==void 0?[s.L,s.C,s.H,o]:[s.L,s.C,s.H]},oklab(e,n,t,i){let r=It({L:e,a:n,b:t}),s=Ce(i);return s!==void 0?[r.L,r.C,r.H,s]:[r.L,r.C,r.H]},oklch(e,n,t,i){let r=Ce(i);return r!==void 0?[e,n,t,r]:[e,n,t]},asRgb(e){let n=Ve(e),t=n.r/255,i=n.g/255,r=n.b/255;return n.alpha!==void 0?[t,i,r,n.alpha]:[t,i,r]},asHsv(e){let n=Ve(e),t=sl(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.v,n.alpha]:[t.h,t.s,t.v]},asHsl(e){let n=Ve(e),t=_i(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.l,n.alpha]:[t.h,t.s,t.l]},asOklab(e){let n=Mt(e),t=Mn({L:n.L,C:n.C,H:n.H});return n.alpha!==void 0?[t.L,t.a,t.b,n.alpha]:[t.L,t.a,t.b]},colorDelta(e,n){let t=Mn(Mt(e)),i=Mn(Mt(n));return ol(t,i)},distance(e,n){if(!Array.isArray(e)||!Array.isArray(n))throw new Error("Distance: expected two arrays");if(e.length!==n.length)throw new Error("Distance: dimension mismatch");let t=0;for(let i=0;i<e.length;i++){let r=e[i]-n[i];t+=r*r}return Math.sqrt(t)}},Fl={chop:ot,factorial:rt,factorial2:st,gamma:te,gcd:bn,heaviside:e=>e<0?0:e===0?.5:1,integrate:(e,n,t)=>Rl(e,n,t,1e7).estimate,lcm:it,lngamma:ke,limit:Gt,mean:Sl,median:kt,variance:Xr,populationVariance:Qr,standardDeviation:kl,populationStandardDeviation:Ml,kurtosis:wl,skewness:Al,mode:Cl,quartiles:Kr,interquartileRange:$l,erf:An,erfc:Un,erfInv:pl,beta:ml,digamma:wi,trigamma:Ai,polygamma:Yr,zeta:Wr,lambertW:dl,besselJ:un,besselY:Mi,besselI:wn,besselK:gl,airyAi:yl,airyBi:xl,sinc:Il,fresnelS:ln,fresnelC:cn,mandelbrot:(e,n)=>{let t=0,i=0,r=typeof e=="number"?e:e.re,s=typeof e=="number"?0:e.im,o=Math.round(n);for(let a=0;a<o;a++){let u=t*t-i*i+r;i=2*t*i+s,t=u;let l=t*t+i*i;if(l>4){let c=(a-Math.log2(Math.log2(l))+4)/o;return Math.max(0,Math.min(1,c))}}return 1},julia:(e,n,t)=>{let i=typeof e=="number"?e:e.re,r=typeof e=="number"?0:e.im,s=typeof n=="number"?n:n.re,o=typeof n=="number"?0:n.im,a=Math.round(t);for(let u=0;u<a;u++){let l=i*i-r*r+s;r=2*i*r+o,i=l;let c=i*i+r*r;if(c>4){let f=(u-Math.log2(Math.log2(c))+4)/a;return Math.max(0,Math.min(1,f))}}return 1},binomial:St,fibonacci:rs,csin:e=>Z(new $(e.re,e.im).sin()),ccos:e=>Z(new $(e.re,e.im).cos()),ctan:e=>Z(new $(e.re,e.im).tan()),casin:e=>Z(new $(e.re,e.im).asin()),cacos:e=>Z(new $(e.re,e.im).acos()),catan:e=>Z(new $(e.re,e.im).atan()),csinh:e=>Z(new $(e.re,e.im).sinh()),ccosh:e=>Z(new $(e.re,e.im).cosh()),ctanh:e=>Z(new $(e.re,e.im).tanh()),csqrt:e=>Z(new $(e.re,e.im).sqrt()),cexp:e=>Z(new $(e.re,e.im).exp()),cln:e=>Z(new $(e.re,e.im).log()),cpow:(e,n)=>{let t=typeof e=="number"?new $(e,0):new $(e.re,e.im),i=typeof n=="number"?new $(n,0):new $(n.re,n.im);return Z(t.pow(i))},ccot:e=>Z(new $(e.re,e.im).cot()),csec:e=>Z(new $(e.re,e.im).sec()),ccsc:e=>Z(new $(e.re,e.im).csc()),ccoth:e=>Z(new $(e.re,e.im).coth()),csech:e=>Z(new $(e.re,e.im).sech()),ccsch:e=>Z(new $(e.re,e.im).csch()),cacot:e=>Z(new $(e.re,e.im).acot()),casec:e=>Z(new $(e.re,e.im).asec()),cacsc:e=>Z(new $(e.re,e.im).acsc()),cacoth:e=>Z(new $(e.re,e.im).acoth()),casech:e=>Z(new $(e.re,e.im).asech()),cacsch:e=>Z(new $(e.re,e.im).acsch()),cabs:e=>new $(e.re,e.im).abs(),carg:e=>new $(e.re,e.im).arg(),cconj:e=>Z(new $(e.re,e.im).conjugate()),cneg:e=>({re:-e.re,im:-e.im}),...$m},is=class extends Function{SYS=Fl;constructor(n,t=""){return super("_SYS","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,s)=>super.apply(r,[this.SYS,...s]),get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}},$i=class extends Function{SYS=Fl;constructor(n,t){return super("_SYS",...t,`return ${n}`),new Proxy(this,{apply:(i,r,s)=>super.apply(r,[this.SYS,...s]),get:(i,r)=>r==="toString"?()=>`(${t.join(", ")}) => ${n}`:r==="isCompiled"?!0:Reflect.get(i,r)})}},Ri=class{getOperators(){return es}getFunctions(){return ns}createTarget(n={}){return{language:"javascript",operators:t=>es[t],functions:t=>ns[t],var:t=>({Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"})[t],string:t=>JSON.stringify(t),number:t=>t.toString(),complex:(t,i)=>`({ re: ${t}, im: ${i} })`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){let{operators:i,functions:r,vars:s,imports:o=[],preamble:a,realOnly:u}=t,l=n.unknowns,c=o.map(b=>{if(typeof b=="function")return b.toString();throw new Error(`Unsupported import \`${b}\``)}).join(`
52
- `),f={};if(r)for(let[b,v]of Object.entries(r))typeof v=="function"?Fm(v)?(c+=`${v.toString()};
53
- `,f[b]=v.name):(c+=`const ${b} = ${v.toString()};
54
- `,f[b]=b):typeof v=="string"&&(f[b]=v);let m=b=>{if(i){let v=typeof i=="function"?i(b):i[b];if(v)return v}return es[b]},h=this.createTarget({operators:m,functions:b=>f?.[b]?f[b]:ns[b],var:b=>{if(s&&b in s)return JSON.stringify(s[b]);let v={Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"}[b];if(v!==void 0)return v;if(l.includes(b))return`_.${b}`},preamble:(a??"")+c});return Rm(n,h,u)}};function ts(e){let n=e.run;return{...e,run:((...i)=>{let r=n(...i);return typeof r=="object"&&r!==null&&"im"in r?r.im===0?r.re:NaN:r})}}function Rm(e,n,t){if(g(e,"Function")){let o=e.ops,a=o.slice(1).map(f=>T(f)?f.symbol:"_"),u=y.compile(o[0].canonical,{...n,var:f=>a.includes(f)?f:n.var(f)}),l=new $i(u,a),c={target:"javascript",success:!0,code:`(${a.join(", ")}) => ${u}`,calling:"lambda",run:l};return t?ts(c):c}if(T(e)){let o=n.operators?.(e.symbol);if(o){let a=new $i(`a ${o[0]} b`,["a","b"]),u={target:"javascript",success:!0,code:`(a, b) => a ${o[0]} b`,calling:"lambda",run:a};return t?ts(u):u}}let i=y.compile(e,n),r=new is(i,n.preamble),s={target:"javascript",success:!0,code:i,calling:"expression",run:r};return t?ts(s):s}var Pm=100;function Ol(e){e.operator;let n=e,t=T(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,s=i.re,o=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0,upperNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0}}function Pl(e,n,t){return n!==void 0?String(n):`Math.floor(${y.compile(e,t)})`}function Dl(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);let{index:r,lowerExpr:s,upperExpr:o,lowerNum:a,upperNum:u}=Ol(n[1]),l=e==="Sum",c=l?"+":"*",f=l?"0":"1",m=y.isComplexValued(n[0]),h=a!==void 0&&u!==void 0;if(h&&a>u)return f;if(h&&u-a+1<=Pm){let O=[];for(let X=a;X<=u;X++){let K={...i,var:Q=>Q===r?String(X):i.var(Q)};O.push(`(${y.compile(n[0],K)})`)}if(!m)return`(${O.join(` ${c} `)})`;let z=O.map((X,K)=>`_t${K}`),D=O.map((X,K)=>`const ${z[K]} = ${X}`).join("; ");if(l){let X=z.map(Q=>`${Q}.re`).join(" + "),K=z.map(Q=>`${Q}.im`).join(" + ");return`(() => { ${D}; return { re: ${X}, im: ${K} }; })()`}let F=z[0],oe=[D];for(let X=1;X<z.length;X++){let K=F;F=`_p${X}`,oe.push(`const ${F} = { re: ${K}.re * ${z[X]}.re - ${K}.im * ${z[X]}.im, im: ${K}.re * ${z[X]}.im + ${K}.im * ${z[X]}.re }`)}return`(() => { ${oe.join("; ")}; return ${F}; })()`}let b=Pl(s,a,i),v=Pl(o,u,i),E=y.compile(n[0],{...i,var:w=>w===r?r:i.var(w)}),I=y.tempVar();if(m){let w=y.tempVar();return l?`(() => { let ${I} = { re: 0, im: 0 }; let ${r} = ${b}; const _upper = ${v}; while (${r} <= _upper) { const ${w} = ${E}; ${I} = { re: ${I}.re + ${w}.re, im: ${I}.im + ${w}.im }; ${r}++; } return ${I}; })()`:`(() => { let ${I} = { re: 1, im: 0 }; let ${r} = ${b}; const _upper = ${v}; while (${r} <= _upper) { const ${w} = ${E}; ${I} = { re: ${I}.re * ${w}.re - ${I}.im * ${w}.im, im: ${I}.re * ${w}.im + ${I}.im * ${w}.re }; ${r}++; } return ${I}; })()`}return`(() => { let ${I} = ${f}; let ${r} = ${b}; const _upper = ${v}; while (${r} <= _upper) { ${I} ${c}= ${E}; ${r}++; } return ${I}; })()`}function Dm(e,n,t){let{index:i,lowerExpr:r,upperExpr:s}=Ol(e[1]),o=i,a=e[0];if(g(e[0],"Function")){let f=e[0].ops.slice(1).filter(m=>T(m));f.length>=1&&T(f[0])&&(o=f[0].symbol),a=e[0].ops[0]}let u=y.compile(a,{...t,var:f=>f===o?f:t.var(f)}),l=y.compile(r,t),c=y.compile(s,t);return`_SYS.integrate((${o}) => (${u}), ${l}, ${c})`}function Fm(e){let n=e.toString();return n.includes("=>")?!1:n.startsWith("function ")&&n.includes(e.name)}function rs(e){if(!Number.isInteger(e))return NaN;if(e<0)return e%2===0?-rs(-e):rs(-e);if(e<=1)return e;let n=0,t=1;for(let i=2;i<=e;i++){let r=n+t;n=t,t=r}return t}var Bl={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["==",8],NotEqual:["!=",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]};function Me(e){return e?.language==="wgsl"?"vec2f":"vec2"}function Zn(e){return e?.language==="wgsl"?"vec3f":"vec3"}function ss(e){return e?.language==="wgsl"?"bitcast<f32>(0x7fc00000u)":"(0.0 / 0.0)"}function os(e,n,t,i){return i?.language==="wgsl"?`select(${t}, ${n}, ${e})`:`((${e}) ? (${n}) : (${t}))`}function as(e){return le(e)?e.string?.toLowerCase()??null:null}function Ll(e,n,t){let i=W(e);return i!==void 0&&Number.isInteger(i)?i.toString():`${t?.language==="wgsl"?"i32":"int"}(${n(e)})`}var Om=100;function Vl(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);if(y.isComplexValued(n[0]))throw new Error(`${e}: complex-valued body not supported in GPU targets`);let r=n[1];if(!g(r,"Limits"))throw new Error(`${e}: expected Limits indexing set`);let s=r.ops,o=T(s[0])?s[0].symbol:"_",a=s[1].re,u=s[2].re,l=!isNaN(a)&&Number.isFinite(a)?Math.floor(a):void 0,c=!isNaN(u)&&Number.isFinite(u)?Math.floor(u):void 0,f=e==="Sum",m=f?"+":"*",h=f?"0.0":"1.0",b=i.language==="wgsl",v=l!==void 0&&c!==void 0;if(v&&l>c)return h;if(v&&c-l+1<=Om){let Q=[];for(let ie=l;ie<=c;ie++){let Je=Cn(ie),ze={...i,var:Pt=>Pt===o?Je:i.var(Pt)};Q.push(`(${y.compile(n[0],ze)})`)}return`(${Q.join(` ${m} `)})`}let E=y.tempVar(),I=b?"f32":"float",w=b?"i32":"int",O={...i,var:Q=>Q===o?b?`f32(${o})`:`float(${o})`:i.var(Q)},z=y.compile(n[0],O),D=l!==void 0?String(l):y.compile(s[1],i),F=c!==void 0?String(c):y.compile(s[2],i),oe=b?`var ${E}: ${I}`:`${I} ${E}`,X=b?`var ${o}: ${w}`:`${w} ${o}`;return[`${oe} = ${h};`,`for (${X} = ${D}; ${o} <= ${F}; ${o}++) {`,` ${E} ${m}= ${z};`,"}",`return ${E};`].join(`
55
- `)}var Bm={Add:(e,n,t)=>{if(e.length===0)return"0.0";if(e.length===1)return n(e[0]);if(!e.some(l=>y.isComplexValued(l)))return an(e.map(l=>n(l)),"0.0","+");let r=e.map(l=>Vu(l,n));if(r.some(l=>l===null)){let l=Me(t);return e.map(c=>{let f=n(c);return y.isComplexValued(c)?f:`${l}(${f}, 0.0)`}).join(" + ")}let s=[],o=[];for(let l of r)l.re!==null&&s.push(l.re),l.im!==null&&o.push(l.im);let a=an(s,"0.0","+"),u=an(o,"0.0","+");return`${Me(t)}(${a}, ${u})`},Multiply:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);if(!e.some(l=>y.isComplexValued(l)))return an(e.map(l=>n(l)),"1.0","*");let r=e.findIndex(l=>T(l,"ImaginaryUnit")||R(l)&&l.re===0&&l.im!==0);if(r>=0){let l=e[r],c=T(l,"ImaginaryUnit")?1:l.im,f=e.filter((v,E)=>E!==r),m=Me(t);if(f.length===0)return`${m}(0.0, ${ae(c)})`;let h=f.map(v=>yi(v,n(v)));c!==1&&h.unshift(ae(c));let b=an(h,"1.0","*");return`${m}(0.0, ${b})`}let s=[],o=[];for(let l of e)y.isComplexValued(l)?o.push(n(l)):s.push(yi(l,n(l)));let a=an(s,"1.0","*"),u=o[0];for(let l=1;l<o.length;l++)u=`_gpu_cmul(${u}, ${o[l]})`;return a!=="1.0"&&(u=`(${a} * ${u})`),u},Divide:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);let i=y.isComplexValued(e[0]),r=e.length>=2&&y.isComplexValued(e[1]);if(!i&&!r){if(e.length===2){let a=W(e[0]),u=W(e[1]);return a!==void 0&&u!==void 0&&u!==0?ae(a/u):u===1?n(e[0]):`${n(e[0])} / ${n(e[1])}`}let o=n(e[0]);for(let a=1;a<e.length;a++)o=`${o} / ${n(e[a])}`;return o}return i&&r?`_gpu_cdiv(${n(e[0])}, ${n(e[1])})`:i&&!r?`(${n(e[0])} / ${n(e[1])})`:`_gpu_cdiv(${Me(t)}(${n(e[0])}, 0.0), ${n(e[1])})`},Negate:([e],n,t)=>{if(e===null)throw new Error("Negate: no argument");let i=W(e);return i!==void 0?ae(-i):R(e)&&e.im!==0?`${Me(t)}(${ae(-e.re)}, ${ae(-e.im)})`:T(e,"ImaginaryUnit")?`${Me(t)}(0.0, -1.0)`:`(-${n(e)})`},Abs:(e,n)=>y.isComplexValued(e[0])?`length(${n(e[0])})`:y.isNonNegative(e[0])?n(e[0]):`abs(${n(e[0])})`,Arccos:(e,n)=>y.isComplexValued(e[0])?`_gpu_cacos(${n(e[0])})`:`acos(${n(e[0])})`,Arcsin:(e,n)=>y.isComplexValued(e[0])?`_gpu_casin(${n(e[0])})`:`asin(${n(e[0])})`,Arctan:(e,n)=>y.isComplexValued(e[0])?`_gpu_catan(${n(e[0])})`:`atan(${n(e[0])})`,Ceil:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`ceil(${n(e[0])})`,Clamp:"clamp",Cos:(e,n)=>y.isComplexValued(e[0])?`_gpu_ccos(${n(e[0])})`:`cos(${n(e[0])})`,Degrees:"radians",Exp:(e,n)=>y.isComplexValued(e[0])?`_gpu_cexp(${n(e[0])})`:`exp(${n(e[0])})`,Exp2:"exp2",First:(e,n)=>`${n(e[0])}.x`,Second:(e,n)=>`${n(e[0])}.y`,Third:(e,n)=>`${n(e[0])}.z`,Floor:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`floor(${n(e[0])})`,Fract:"fract",Ln:(e,n)=>y.isComplexValued(e[0])?`_gpu_cln(${n(e[0])})`:`log(${n(e[0])})`,Log2:"log2",Max:"max",Min:"min",Mix:"mix",If:(e,n,t)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return os(n(e[0]),n(e[1]),n(e[2]),t)},When:(e,n,t)=>{if(e.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");return T(e[1],"True")?`(${n(e[0])})`:T(e[1],"False")?ss(t):os(n(e[1]),n(e[0]),ss(t),t)},Which:(e,n,t)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected condition/value pairs");let i=r=>{if(r>=e.length)return ss(t);let s=e[r],o=e[r+1];return T(s,"True")?`(${n(o)})`:os(n(s),n(o),i(r+2),t)};return i(0)},Power:(e,n,t)=>{let i=e[0],r=e[1];if(i===null)throw new Error("Power: no argument");if(y.isComplexValued(i)||y.isComplexValued(r)){if(T(i,"ExponentialE"))return`_gpu_cexp(${n(r)})`;let a=Me(t),u=y.isComplexValued(i)?n(i):`${a}(${n(i)}, 0.0)`,l=y.isComplexValued(r)?n(r):`${a}(${n(r)}, 0.0)`;return`_gpu_cpow(${u}, ${l})`}let s=W(i),o=W(r);if(s!==void 0&&o!==void 0)return ae(Math.pow(s,o));if(o===0)return"1.0";if(o===1)return n(i);if(o===2&&(T(i)||R(i))){let a=n(i);return`(${a} * ${a})`}return o===-1?`(1.0 / ${n(i)})`:o===.5?`sqrt(${n(i)})`:`pow(${n(i)}, ${n(r)})`},Radians:"radians",Round:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`round(${n(e[0])})`,Sign:"sign",Sin:(e,n)=>y.isComplexValued(e[0])?`_gpu_csin(${n(e[0])})`:`sin(${n(e[0])})`,Smoothstep:"smoothstep",Sqrt:(e,n)=>{if(y.isComplexValued(e[0]))return`_gpu_csqrt(${n(e[0])})`;let t=W(e[0]);return t!==void 0?ae(Math.sqrt(t)):`sqrt(${n(e[0])})`},Step:"step",Tan:(e,n)=>y.isComplexValued(e[0])?`_gpu_ctan(${n(e[0])})`:`tan(${n(e[0])})`,Truncate:(e,n)=>y.isIntegerValued(e[0])?n(e[0]):`trunc(${n(e[0])})`,Real:(e,n)=>y.isComplexValued(e[0])?`(${n(e[0])}).x`:n(e[0]),Imaginary:(e,n)=>y.isComplexValued(e[0])?`(${n(e[0])}).y`:"0.0",Argument:(e,n)=>{if(y.isComplexValued(e[0])){let t=n(e[0]);return`atan(${t}.y, ${t}.x)`}return`(${n(e[0])} >= 0.0 ? 0.0 : 3.14159265359)`},Conjugate:(e,n,t)=>{if(y.isComplexValued(e[0])){let i=Me(t),r=n(e[0]);return`${i}(${r}.x, -${r}.y)`}return n(e[0])},Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * round(${t(e)} / ${t(n)}))`},Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");if(y.isComplexValued(e))return`_gpu_cdiv(_gpu_ccos(${n(e)}), _gpu_csin(${n(e)}))`;let t=n(e);return`(cos(${t}) / sin(${t}))`},Csc:([e],n,t)=>{if(e===null)throw new Error("Csc: no argument");return y.isComplexValued(e)?`_gpu_cdiv(${Me(t)}(1.0, 0.0), _gpu_csin(${n(e)}))`:`(1.0 / sin(${n(e)}))`},Sec:([e],n,t)=>{if(e===null)throw new Error("Sec: no argument");return y.isComplexValued(e)?`_gpu_cdiv(${Me(t)}(1.0, 0.0), _gpu_ccos(${n(e)}))`:`(1.0 / cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`atan(1.0 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`asin(1.0 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`acos(1.0 / (${n(e)}))`},Sinh:(e,n)=>y.isComplexValued(e[0])?`_gpu_csinh(${n(e[0])})`:`sinh(${n(e[0])})`,Cosh:(e,n)=>y.isComplexValued(e[0])?`_gpu_ccosh(${n(e[0])})`:`cosh(${n(e[0])})`,Tanh:(e,n)=>y.isComplexValued(e[0])?`_gpu_ctanh(${n(e[0])})`:`tanh(${n(e[0])})`,Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");if(y.isComplexValued(e))return`_gpu_cdiv(_gpu_ccosh(${n(e)}), _gpu_csinh(${n(e)}))`;let t=n(e);return`(cosh(${t}) / sinh(${t}))`},Csch:([e],n,t)=>{if(e===null)throw new Error("Csch: no argument");return y.isComplexValued(e)?`_gpu_cdiv(${Me(t)}(1.0, 0.0), _gpu_csinh(${n(e)}))`:`(1.0 / sinh(${n(e)}))`},Sech:([e],n,t)=>{if(e===null)throw new Error("Sech: no argument");return y.isComplexValued(e)?`_gpu_cdiv(${Me(t)}(1.0, 0.0), _gpu_ccosh(${n(e)}))`:`(1.0 / cosh(${n(e)}))`},Arcosh:(e,n)=>y.isComplexValued(e[0])?`_gpu_cacosh(${n(e[0])})`:`acosh(${n(e[0])})`,Arsinh:(e,n)=>y.isComplexValued(e[0])?`_gpu_casinh(${n(e[0])})`:`asinh(${n(e[0])})`,Artanh:(e,n)=>y.isComplexValued(e[0])?`_gpu_catanh(${n(e[0])})`:`atanh(${n(e[0])})`,Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`atanh(1.0 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`asinh(1.0 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`acosh(1.0 / (${n(e)}))`},Arctan2:(e,n)=>{if(e.length<2)throw new Error("Arctan2: need two arguments");return`atan(${n(e[0])}, ${n(e[1])})`},Hypot:([e,n],t)=>{if(e===null||n===null)throw new Error("Hypot: need two arguments");return`length(vec2(${t(e)}, ${t(n)}))`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return`((1.0 - cos(${n(e)})) * 0.5)`},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2.0 * asin(sqrt(${n(e)})))`},Gamma:([e],n)=>{if(e===null)throw new Error("Gamma: no argument");return`_gpu_gamma(${n(e)})`},GammaLn:([e],n)=>{if(e===null)throw new Error("GammaLn: no argument");return`_gpu_gammaln(${n(e)})`},Factorial:([e],n)=>{if(e===null)throw new Error("Factorial: no argument");return`_gpu_gamma(${n(e)} + 1.0)`},Beta:([e,n],t)=>{if(e===null||n===null)throw new Error("Beta: need two arguments");let i=t(e),r=t(n);return`(_gpu_gamma(${i}) * _gpu_gamma(${r}) / _gpu_gamma(${i} + ${r}))`},Erf:([e],n)=>{if(e===null)throw new Error("Erf: no argument");return`_gpu_erf(${n(e)})`},Erfc:([e],n)=>{if(e===null)throw new Error("Erfc: no argument");return`(1.0 - _gpu_erf(${n(e)}))`},ErfInv:([e],n)=>{if(e===null)throw new Error("ErfInv: no argument");return`_gpu_erfinv(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_gpu_heaviside(${n(e)})`},Sinc:([e],n)=>{if(e===null)throw new Error("Sinc: no argument");return`_gpu_sinc(${n(e)})`},FresnelC:([e],n)=>{if(e===null)throw new Error("FresnelC: no argument");return`_gpu_fresnelC(${n(e)})`},FresnelS:([e],n)=>{if(e===null)throw new Error("FresnelS: no argument");return`_gpu_fresnelS(${n(e)})`},BesselJ:([e,n],t,i)=>{if(e===null||n===null)throw new Error("BesselJ: need two arguments");return`_gpu_besselJ(${i?.language==="wgsl"?"i32":"int"}(${t(e)}), ${t(n)})`},Lb:"log2",Log:(e,n)=>{if(e.length===0)throw new Error("Log: no argument");return e.length===1?`(log(${n(e[0])}) / log(10.0))`:`(log(${n(e[0])}) / log(${n(e[1])}))`},Log10:([e],n)=>{if(e===null)throw new Error("Log10: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Lg:([e],n)=>{if(e===null)throw new Error("Lg: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");if(T(e)||R(e)){let t=n(e);return`(${t} * ${t})`}return`pow(${n(e)}, 2.0)`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n==null)return`sqrt(${t(e)})`;let i=W(n);if(i===2)return`sqrt(${t(e)})`;let r=W(e);return r!==void 0&&i!==void 0?ae(Math.pow(r,1/i)):`pow(${t(e)}, 1.0 / ${t(n)})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");let t=n(e[0]),i=n(e[1]),r=e.length>=3?n(e[2]):"0.5";return`_gpu_color_mix(${t}, ${i}, ${r})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_gpu_apca(${t(e)}, ${t(n)})`},ContrastingColor:(e,n,t)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");let i=n(e[0]);if(e.length>=3){let u=n(e[1]),l=n(e[2]);return`(abs(_gpu_apca(${i}, ${u})) >= abs(_gpu_apca(${i}, ${l})) ? ${u} : ${l})`}let s=t?.language==="wgsl"?"vec3f":"vec3",o=`${s}(0.0)`,a=`${s}(1.0, 0.0, 0.0)`;return`((_gpu_apca(${i}, ${o}) > 50.0) ? ${o} : ${a})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");let i=as(n);if(i===null)throw new Error("ColorToColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklch_to_oklab(${r})`;case"rgb":return`_gpu_oklch_to_srgb(${r})`;case"hsl":return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${r}))`;case"hsv":return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${r}))`;default:throw new Error(`ColorToColorspace: unsupported space "${i}" on GPU target`)}},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");let i=as(n);if(i===null)throw new Error("ColorFromColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklab_to_oklch(${r})`;case"rgb":return`_gpu_srgb_to_oklch(${r})`;case"hsl":return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${r}))`;case"hsv":return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${r}))`;default:throw new Error(`ColorFromColorspace: unsupported space "${i}" on GPU target`)}},Color:([e],n,t)=>{if(e===null)throw new Error("Color: no argument");let i=as(e);if(i===null)throw new Error("Color: argument must be a string literal on GPU target");let r=tn(i);if(r===0&&i.trim().toLowerCase()!=="transparent")throw new Error(`Color: invalid color string "${i}"`);let s=r>>>24&255,o=r>>>16&255,a=r>>>8&255,u=Te({r:s,g:o,b:a});return`${Zn(t)}(${ae(u.L)}, ${ae(u.C)}, ${ae(u.H)})`},Rgb:(e,n,t)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_gpu_srgb_to_oklch(${Zn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Hsv:(e,n,t)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${Zn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Hsl:(e,n,t)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${Zn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Oklab:(e,n,t)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_gpu_oklab_to_oklch(${Zn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Oklch:(e,n,t)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`${Zn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_gpu_oklch_to_oklab(${n(e)})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_gpu_oklch_to_srgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${n(e)}))`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${n(e)}))`},Mandelbrot:([e,n],t,i)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");let r=Ll(n,t,i);return`_fractal_mandelbrot(${t(e)}, ${r})`},Julia:([e,n,t],i,r)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");let s=Ll(t,i,r);return`_fractal_julia(${i(e)}, ${i(n)}, ${s})`},Cross:"cross",Distance:"distance",Dot:"dot",Length:"length",Normalize:"normalize",Reflect:"reflect",Refract:"refract",Sum:(e,n,t)=>Vl("Sum",e,n,t),Product:(e,n,t)=>Vl("Product",e,n,t),Range:(e,n,t)=>{if(e.length<2||e.length>3)throw new Error("Range: GPU compile expects 2 or 3 arguments (lo, hi, step?)");let i=e[0].re,r=e[1].re,s=e.length===3?e[2].re:1;if(!Number.isFinite(i)||!Number.isFinite(r)||!Number.isFinite(s))throw new Error("Range: GPU compile requires constant numeric bounds (non-constant ranges must be materialized at JS host then uploaded as a uniform)");if(s===0)throw new Error("Range: step cannot be zero");let o=Math.max(0,Math.floor((r-i)/s)+1);if(o===0)throw new Error("Range: empty range (lo > hi for positive step, or lo < hi for negative step)");if(o>256)throw new Error(`Range: GPU compile inlines ranges up to 256 elements (got ${o})`);let a=[];for(let c=0;c<o;c++)a.push(i+c*s);return`${t.language==="wgsl"?`array<f32, ${o}>`:`float[${o}]`}(${a.map(Cn).join(", ")})`},Loop:(e,n,t)=>{if(!e[0])throw new Error("Loop: no body");if(!e[1])throw new Error("Loop: no indexing set");let i=e[1];if(!g(i,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let r=i.ops[0],s=i.ops[1];if(!T(r))throw new Error("Loop: index must be a symbol");if(!g(s,"Range"))throw new Error("Loop: expected Range(lo, hi)");let o=r.symbol,a=Math.floor(s.ops[0].re),u=Math.floor(s.ops[1].re);if(!Number.isFinite(a)||!Number.isFinite(u))throw new Error("Loop: bounds must be finite numbers");let l=t.language==="wgsl",c=l?"i32":"int",f=y.compile(e[0],{...t,var:h=>h===o?o:t.var(h)});return`for (${l?`var ${o}: ${c}`:`${c} ${o}`} = ${a}; ${o} <= ${u}; ${o}++) {
51
+ }, (_e, i) => ${t} + i)`}return`Array.from({length: Math.floor((${i} - ${t}) / ${r}) + 1}, (_e, i) => ${t} + i * ${r})`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n===null)return`Math.sqrt(${t(e)})`;let i=te(e),r=te(n);return i!==void 0&&r!==void 0&&r!==0?String(Math.pow(i,1/r)):r===2?`Math.sqrt(${t(e)})`:r===3?`Math.cbrt(${t(e)})`:r!==void 0?`Math.pow(${t(e)}, ${1/r})`:`Math.pow(${t(e)}, 1 / (${t(n)}))`},Random:(e,n)=>{if(e.length===0)return"Math.random()";if(e.length===2){let r=n(e[0]),s=n(e[1]);return`((${r}) + Math.floor(Math.random() * ((${s}) - (${r}))))`}let t=e[0];return x.isIntegerValued(t)?`Math.floor(Math.random() * (${n(t)}))`:`(() => { const _s = (${n(t)}) * 12.9898; const _v = Math.sin(_s) * 43758.5453; return _v - Math.floor(_v); })()`},Round:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`Math.round(${n(e[0])})`,Square:(e,n)=>{let t=e[0];if(t===null)throw new Error("Square: no argument");let i=te(t);if(i!==void 0)return String(i*i);if(I(t)){let r=n(t);return`(${r} * ${r})`}return`Math.pow(${n(t)}, 2)`},Sec:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sec: no argument");return x.isComplexValued(t)?`_SYS.csec(${n(t)})`:`1 / Math.cos(${n(t)})`},Sech:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sech: no argument");return x.isComplexValued(t)?`_SYS.csech(${n(t)})`:`1 / Math.cosh(${n(t)})`},Second:(e,n)=>`${n(e[0])}[1]`,Heaviside:"_SYS.heaviside",Sign:"Math.sign",Sinc:"_SYS.sinc",FresnelS:"_SYS.fresnelS",FresnelC:"_SYS.fresnelC",Sin:(e,n)=>x.isComplexValued(e[0])?`_SYS.csin(${n(e[0])})`:`Math.sin(${n(e[0])})`,Sinh:(e,n)=>x.isComplexValued(e[0])?`_SYS.csinh(${n(e[0])})`:`Math.sinh(${n(e[0])})`,Sqrt:(e,n)=>{if(x.isComplexValued(e[0]))return`_SYS.csqrt(${n(e[0])})`;let t=te(e[0]);return t!==void 0?String(Math.sqrt(t)):`Math.sqrt(${n(e[0])})`},Tan:(e,n)=>x.isComplexValued(e[0])?`_SYS.ctan(${n(e[0])})`:`Math.tan(${n(e[0])})`,Tanh:(e,n)=>x.isComplexValued(e[0])?`_SYS.ctanh(${n(e[0])})`:`Math.tanh(${n(e[0])})`,Third:(e,n)=>`${n(e[0])}[2]`,Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");let i=t(e),r=t(n);return x.isIntegerValued(e)&&x.isIntegerValued(n)&&x.isNonNegative(e)?`(${i} % ${r})`:`((${i} % ${r}) + ${r}) % ${r}`},Truncate:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`Math.trunc(${n(e[0])})`,Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * Math.round(${t(e)} / ${t(n)}))`},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");let i=x.isComplexValued(e),r=x.isComplexValued(n);if(!i&&!r){let s=te(e),o=te(n);return s!==void 0&&o!==void 0&&o!==0?String(s/o):o===1?t(e):`(${t(e)} / ${t(n)})`}return i&&r?`(() => { const _a = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: (_a.re * _b.re + _a.im * _b.im) / _d, im: (_a.im * _b.re - _a.re * _b.im) / _d }; })()`:i&&!r?`(() => { const _a = ${t(e)}, _r = ${t(n)}; return { re: _a.re / _r, im: _a.im / _r }; })()`:`(() => { const _r = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: _r * _b.re / _d, im: -_r * _b.im / _d }; })()`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");if(!x.isComplexValued(e)){let t=te(e);return t!==void 0?String(-t):`(-${n(e)})`}return`_SYS.cneg(${n(e)})`},Multiply:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(o=>x.isComplexValued(o))){if(e.some(u=>te(u)===0))return"0";let o=e.map(te);if(o.every(u=>u!==void 0))return String(o.reduce((u,l)=>u*l,1));let a=e.filter(u=>te(u)!==1);return a.length===0?"1":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" * ")})`}if(e.length===2){let o=x.isComplexValued(e[0]),a=x.isComplexValued(e[1]),u=n(e[0]),l=n(e[1]);return o&&a?`(() => { const _a = ${u}, _b = ${l}; return { re: _a.re * _b.re - _a.im * _b.im, im: _a.re * _b.im + _a.im * _b.re }; })()`:o&&!a?`(() => { const _a = ${u}, _r = ${l}; return { re: _a.re * _r, im: _a.im * _r }; })()`:`(() => { const _r = ${u}, _b = ${l}; return { re: _r * _b.re, im: _r * _b.im }; })()`}let i=[],r=[];for(let o=0;o<e.length;o++){let a=`_v${o}`;r.push(a),i.push(`const ${a} = ${n(e[o])}`)}let s=x.isComplexValued(e[0]);i.push(`let _re = ${s?`${r[0]}.re`:r[0]}`),i.push(`let _im = ${s?`${r[0]}.im`:"0"}`);for(let o=1;o<e.length;o++){let a=r[o],u=x.isComplexValued(e[o]),l=u?`${a}.re`:a,c=u?`${a}.im`:"0";i.push(`const _nre${o} = _re * ${l} - _im * ${c}`),i.push(`const _nim${o} = _re * ${c} + _im * ${l}`),i.push(`_re = _nre${o}`),i.push(`_im = _nim${o}`)}return`(() => { ${i.join("; ")}; return { re: _re, im: _im }; })()`},Factorial:"_SYS.factorial",Factorial2:"_SYS.factorial2",Exp2:([e],n)=>{if(e===null)throw new Error("Exp2: no argument");return`Math.pow(2, ${n(e)})`},Log2:"Math.log2",Log10:"Math.log10",Lg:"Math.log10",Arctan2:"Math.atan2",Hypot:"Math.hypot",Degrees:([e],n)=>{if(e===null)throw new Error("Degrees: no argument");return`(${n(e)} * Math.PI / 180)`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return x.inlineExpression("(1 - Math.cos(${x})) / 2",n(e))},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2 * Math.asin(Math.sqrt(${n(e)})))`},Erf:"_SYS.erf",Erfc:"_SYS.erfc",ErfInv:"_SYS.erfInv",Erfi:"_SYS.erfi",Beta:"_SYS.beta",Digamma:"_SYS.digamma",Trigamma:"_SYS.trigamma",PolyGamma:(e,n)=>`_SYS.polygamma(${n(e[0])}, ${n(e[1])})`,Zeta:"_SYS.zeta",LambertW:"_SYS.lambertW",BesselJ:(e,n)=>`_SYS.besselJ(${n(e[0])}, ${n(e[1])})`,BesselY:(e,n)=>`_SYS.besselY(${n(e[0])}, ${n(e[1])})`,BesselI:(e,n)=>`_SYS.besselI(${n(e[0])}, ${n(e[1])})`,BesselK:(e,n)=>`_SYS.besselK(${n(e[0])}, ${n(e[1])})`,AiryAi:"_SYS.airyAi",AiryBi:"_SYS.airyBi",SinIntegral:"_SYS.sinIntegral",CosIntegral:"_SYS.cosIntegral",ExpIntegralEi:"_SYS.expIntegralEi",LogIntegral:"_SYS.logIntegral",AGM:(e,n)=>e.length===1?`_SYS.agm(1, ${n(e[0])})`:`_SYS.agm(${n(e[0])}, ${n(e[1])})`,EllipticK:"_SYS.ellipticK",EllipticE:(e,n)=>e.length===2?`_SYS.ellipticEIncomplete(${n(e[0])}, ${n(e[1])})`:`_SYS.ellipticE(${n(e[0])})`,EllipticF:(e,n)=>`_SYS.ellipticF(${n(e[0])}, ${n(e[1])})`,EllipticPi:(e,n)=>e.length===3?`_SYS.ellipticPiIncomplete(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.ellipticPiComplete(${n(e[0])}, ${n(e[1])})`,Hypergeometric2F1:(e,n)=>`_SYS.hypergeometric2F1(${n(e[0])}, ${n(e[1])}, ${n(e[2])}, ${n(e[3])})`,Hypergeometric1F1:(e,n)=>`_SYS.hypergeometric1F1(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`,Mandelbrot:([e,n],t)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");return`_SYS.mandelbrot(${t(e)}, ${t(n)})`},Julia:([e,n,t],i)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");return`_SYS.julia(${i(e)}, ${i(n)}, ${i(t)})`},Binomial:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Choose:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Fibonacci:"_SYS.fibonacci",Real:(e,n)=>x.isComplexValued(e[0])?`(${n(e[0])}).re`:n(e[0]),Imaginary:(e,n)=>x.isComplexValued(e[0])?`(${n(e[0])}).im`:"0",Argument:(e,n)=>x.isComplexValued(e[0])?`_SYS.carg(${n(e[0])})`:`(${n(e[0])} >= 0 ? 0 : Math.PI)`,Conjugate:(e,n)=>x.isComplexValued(e[0])?`_SYS.cconj(${n(e[0])})`:n(e[0]),Color:([e],n)=>{if(e===null)throw new Error("Color: no argument");return`_SYS.color(${n(e)})`},ColorToString:(e,n)=>{if(e.length===0)throw new Error("ColorToString: no argument");return e.length>=2?`_SYS.colorToString(${n(e[0])}, ${n(e[1])})`:`_SYS.colorToString(${n(e[0])})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");return e.length>=3?`_SYS.colorMix(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.colorMix(${n(e[0])}, ${n(e[1])})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_SYS.colorContrast(${t(e)}, ${t(n)})`},ContrastingColor:(e,n)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");return e.length>=3?`_SYS.contrastingColor(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.contrastingColor(${n(e[0])})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");return`_SYS.colorToColorspace(${t(e)}, ${t(n)})`},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");return`_SYS.colorFromColorspace(${t(e)}, ${t(n)})`},Colormap:(e,n)=>{if(e.length===0)throw new Error("Colormap: no argument");return e.length>=2?`_SYS.colormap(${n(e[0])}, ${n(e[1])})`:`_SYS.colormap(${n(e[0])})`},Rgb:(e,n)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_SYS.rgb(${e.map(n).join(", ")})`},Hsv:(e,n)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_SYS.hsv(${e.map(n).join(", ")})`},Hsl:(e,n)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_SYS.hsl(${e.map(n).join(", ")})`},Oklab:(e,n)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_SYS.oklab(${e.map(n).join(", ")})`},Oklch:(e,n)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`_SYS.oklch(${e.map(n).join(", ")})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_SYS.asRgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_SYS.asHsv(${n(e)})`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_SYS.asHsl(${n(e)})`},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_SYS.asOklab(${n(e)})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},ColorDelta:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorDelta: need two colors");return`_SYS.colorDelta(${t(e)}, ${t(n)})`},Distance:([e,n],t)=>{if(e===null||n===null)throw new Error("Distance: need two points");return`_SYS.distance(${t(e)}, ${t(n)})`}};function ee(e){return{re:e.re,im:e.im}}function Pe(e){if(e!==void 0&&Number.isFinite(e)&&!(Math.abs(e-1)<1e-9))return e}function ze(e){if(typeof e=="string"){let t=rn(e),i={r:t>>>24&255,g:t>>>16&255,b:t>>>8&255},r=Pe((t&255)/255);return r!==void 0&&(i.alpha=r),i}let n=$i({L:e[0],C:e[1],H:e[2]});if(e.length>=4){let t=Pe(e[3]);t!==void 0&&(n.alpha=t)}return n}function Dt(e){if(typeof e=="string"){let n=rn(e),t=n>>>24&255,i=n>>>16&255,r=n>>>8&255,s=_e({r:t,g:i,b:r}),o=Pe((n&255)/255);return o!==void 0&&(s.alpha=o),s}return{L:e[0],C:e[1],H:e[2],alpha:e.length>=4?Pe(e[3]):void 0}}function Li(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=_e({r:n,g:t,b:i}),s=Pe((e&255)/255);return s!==void 0?[r.L,r.C,r.H,s]:[r.L,r.C,r.H]}var ld={color(e){return Li(rn(e))},colorToString(e,n){let t=ze(e),i=(n??"hex").toLowerCase();switch(i){case"hex":{let r=Math.round(Math.max(0,Math.min(255,t.r))),s=Math.round(Math.max(0,Math.min(255,t.g))),o=Math.round(Math.max(0,Math.min(255,t.b))),a=`#${r.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`;if(t.alpha!==void 0){let u=Math.round(Math.max(0,Math.min(255,t.alpha*255)));a+=u.toString(16).padStart(2,"0")}return a}case"rgb":{let r=Math.round(t.r),s=Math.round(t.g),o=Math.round(t.b);return t.alpha!==void 0?`rgb(${r} ${s} ${o} / ${t.alpha})`:`rgb(${r} ${s} ${o})`}case"hsl":{let r=Ci(t.r,t.g,t.b),s=Math.round(r.h*10)/10,o=Math.round(r.s*1e3)/10,a=Math.round(r.l*1e3)/10;return t.alpha!==void 0?`hsl(${s} ${o}% ${a}% / ${t.alpha})`:`hsl(${s} ${o}% ${a}%)`}case"oklch":{let r=_e(t),s=Math.round(r.L*1e3)/1e3,o=Math.round(r.C*1e3)/1e3,a=Math.round(r.H*10)/10;return t.alpha!==void 0?`oklch(${s} ${o} ${a} / ${t.alpha})`:`oklch(${s} ${o} ${a})`}default:throw new Error(`Unknown color format: ${i}`)}},colorMix(e,n,t=.5){let i=Dt(e),r=Dt(n);t=Math.max(0,Math.min(1,t));let s=i.C<1e-6,o=r.C<1e-6,a;if(s&&o)a=i.H;else if(s)a=r.H;else if(o)a=i.H;else{let d=r.H-i.H;d>180&&(d-=360),d<-180&&(d+=360),a=i.H+d*t,a<0&&(a+=360),a>=360&&(a-=360)}let u=i.L+(r.L-i.L)*t,l=i.C+(r.C-i.C)*t,c=i.alpha??1,f=r.alpha??1,p=Pe(c+(f-c)*t);return p!==void 0?[u,l,a,p]:[u,l,a]},colorContrast(e,n){return wi(ze(e),ze(n))},contrastingColor(e,n,t){let i=ze(e);return Li(n!==void 0&&t!==void 0?ts({bg:i,fg1:ze(n),fg2:ze(t)}):ts(i))},colorToColorspace(e,n){let t=ze(e),i=t.alpha,r;switch(n.toLowerCase()){case"rgb":r=[t.r/255,t.g/255,t.b/255];break;case"hsl":{let s=Ci(t.r,t.g,t.b);r=[s.h,s.s,s.l];break}case"oklch":{let s=_e(t);r=[s.L,s.C,s.H];break}case"oklab":case"lab":{let s=ns(t);r=[s.L,s.a,s.b];break}default:throw new Error(`Unknown color space: ${n}`)}return i!==void 0&&r.push(i),r},colormap(e,n){let i={...kl,...Sl,...Ml}[e];if(!i)throw new Error(`Unknown palette: ${e}`);let r=i.map(o=>Li(rn(o)));if(n===void 0)return r;if(Number.isInteger(n)&&n>=2){let o=n,a=[];for(let u=0;u<o;u++){let l=o===1?0:u/(o-1);a.push(this._interpolatePalette(r,l))}return a}let s=Math.max(0,Math.min(1,n));return this._interpolatePalette(r,s)},_interpolatePalette(e,n){if(e.length===0)return[0,0,0];if(n<=0)return[...e[0]];if(n>=1)return[...e[e.length-1]];let t=n*(e.length-1),i=Math.floor(t),r=t-i;if(r===0||i>=e.length-1)return[...e[Math.min(i,e.length-1)]];let[s,o,a]=e[i],[u,l,c]=e[i+1],f=o<1e-6,p=l<1e-6,d;if(f&&p)d=a;else if(f)d=c;else if(p)d=a;else{let b=c-a;b>180&&(b-=360),b<-180&&(b+=360),d=a+b*r,d<0&&(d+=360),d>=360&&(d-=360)}return[s+(u-s)*r,o+(l-o)*r,d]},colorFromColorspace(e,n){let t=e[0],i=e[1],r=e[2],s=e.length>=4?e[3]:void 0,o;switch(n.toLowerCase()){case"rgb":o=_e({r:t*255,g:i*255,b:r*255});break;case"hsl":{let a=Ai(t,i,r);o=_e(a);break}case"oklch":o={L:t,C:i,H:r};break;case"oklab":case"lab":o=kt({L:t,a:i,b:r});break;default:throw new Error(`Unknown color space: ${n}`)}return s!==void 0?[o.L,o.C,o.H,s]:[o.L,o.C,o.H]},rgb(e,n,t,i){let r=_e({r:e*255,g:n*255,b:t*255}),s=Pe(i);return s!==void 0?[r.L,r.C,r.H,s]:[r.L,r.C,r.H]},hsv(e,n,t,i){let r=Tl(e,n,t),s=_e(r),o=Pe(i);return o!==void 0?[s.L,s.C,s.H,o]:[s.L,s.C,s.H]},hsl(e,n,t,i){let r=Ai(e,n,t),s=_e({r:r.r,g:r.g,b:r.b}),o=Pe(i);return o!==void 0?[s.L,s.C,s.H,o]:[s.L,s.C,s.H]},oklab(e,n,t,i){let r=kt({L:e,a:n,b:t}),s=Pe(i);return s!==void 0?[r.L,r.C,r.H,s]:[r.L,r.C,r.H]},oklch(e,n,t,i){let r=Pe(i);return r!==void 0?[e,n,t,r]:[e,n,t]},asRgb(e){let n=ze(e),t=n.r/255,i=n.g/255,r=n.b/255;return n.alpha!==void 0?[t,i,r,n.alpha]:[t,i,r]},asHsv(e){let n=ze(e),t=Il(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.v,n.alpha]:[t.h,t.s,t.v]},asHsl(e){let n=ze(e),t=Ci(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.l,n.alpha]:[t.h,t.s,t.l]},asOklab(e){let n=Dt(e),t=An({L:n.L,C:n.C,H:n.H});return n.alpha!==void 0?[t.L,t.a,t.b,n.alpha]:[t.L,t.a,t.b]},colorDelta(e,n){let t=An(Dt(e)),i=An(Dt(n));return _l(t,i)},distance(e,n){if(!Array.isArray(e)||!Array.isArray(n))throw new Error("Distance: expected two arrays");if(e.length!==n.length)throw new Error("Distance: dimension mismatch");let t=0;for(let i=0;i<e.length;i++){let r=e[i]-n[i];t+=r*r}return Math.sqrt(t)}},uc={chop:ct,factorial:ut,factorial2:lt,gamma:U,gcd:xn,heaviside:e=>e<0?0:e===0?.5:1,integrate:(e,n,t)=>sc(e,n,t,1e7).estimate,lcm:at,lngamma:we,limit:Wt,mean:Ql,median:Pt,variance:gs,populationVariance:bs,standardDeviation:Kl,populationStandardDeviation:ec,kurtosis:nc,skewness:tc,mode:ic,quartiles:ys,interquartileRange:rc,erf:$n,erfc:Yn,erfInv:$l,beta:Rl,digamma:Di,trigamma:Fi,polygamma:is,zeta:rs,lambertW:Pl,besselJ:cn,besselY:Pi,besselI:Cn,besselK:Fl,airyAi:Ll,airyBi:Bl,sinc:Gl,fresnelS:fn,fresnelC:pn,sinIntegral:Ul,cosIntegral:Zl,expIntegralEi:os,logIntegral:Yl,erfi:jl,agm:as,ellipticK:us,ellipticE:ls,ellipticEIncomplete:fs,ellipticF:cs,ellipticPiComplete:ps,ellipticPiIncomplete:ms,hypergeometric2F1:ds,hypergeometric1F1:hs,mandelbrot:(e,n)=>{let t=0,i=0,r=typeof e=="number"?e:e.re,s=typeof e=="number"?0:e.im,o=Math.round(n);for(let a=0;a<o;a++){let u=t*t-i*i+r;i=2*t*i+s,t=u;let l=t*t+i*i;if(l>4){let c=(a-Math.log2(Math.log2(l))+4)/o;return Math.max(0,Math.min(1,c))}}return 1},julia:(e,n,t)=>{let i=typeof e=="number"?e:e.re,r=typeof e=="number"?0:e.im,s=typeof n=="number"?n:n.re,o=typeof n=="number"?0:n.im,a=Math.round(t);for(let u=0;u<a;u++){let l=i*i-r*r+s;r=2*i*r+o,i=l;let c=i*i+r*r;if(c>4){let f=(u-Math.log2(Math.log2(c))+4)/a;return Math.max(0,Math.min(1,f))}}return 1},binomial:Rt,fibonacci:Ts,csin:e=>ee(new R(e.re,e.im).sin()),ccos:e=>ee(new R(e.re,e.im).cos()),ctan:e=>ee(new R(e.re,e.im).tan()),casin:e=>ee(new R(e.re,e.im).asin()),cacos:e=>ee(new R(e.re,e.im).acos()),catan:e=>ee(new R(e.re,e.im).atan()),csinh:e=>ee(new R(e.re,e.im).sinh()),ccosh:e=>ee(new R(e.re,e.im).cosh()),ctanh:e=>ee(new R(e.re,e.im).tanh()),csqrt:e=>ee(new R(e.re,e.im).sqrt()),cexp:e=>ee(new R(e.re,e.im).exp()),cln:e=>ee(new R(e.re,e.im).log()),cpow:(e,n)=>{let t=typeof e=="number"?new R(e,0):new R(e.re,e.im),i=typeof n=="number"?new R(n,0):new R(n.re,n.im);return ee(t.pow(i))},ccot:e=>ee(new R(e.re,e.im).cot()),csec:e=>ee(new R(e.re,e.im).sec()),ccsc:e=>ee(new R(e.re,e.im).csc()),ccoth:e=>ee(new R(e.re,e.im).coth()),csech:e=>ee(new R(e.re,e.im).sech()),ccsch:e=>ee(new R(e.re,e.im).csch()),cacot:e=>ee(new R(e.re,e.im).acot()),casec:e=>ee(new R(e.re,e.im).asec()),cacsc:e=>ee(new R(e.re,e.im).acsc()),cacoth:e=>ee(new R(e.re,e.im).acoth()),casech:e=>ee(new R(e.re,e.im).asech()),cacsch:e=>ee(new R(e.re,e.im).acsch()),cabs:e=>new R(e.re,e.im).abs(),carg:e=>new R(e.re,e.im).arg(),cconj:e=>ee(new R(e.re,e.im).conjugate()),cneg:e=>({re:-e.re,im:-e.im}),...ld},Ns=class extends Function{SYS=uc;constructor(n,t=""){return super("_SYS","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,s)=>super.apply(r,[this.SYS,...s]),get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}},Bi=class extends Function{SYS=uc;constructor(n,t){return super("_SYS",...t,`return ${n}`),new Proxy(this,{apply:(i,r,s)=>super.apply(r,[this.SYS,...s]),get:(i,r)=>r==="toString"?()=>`(${t.join(", ")}) => ${n}`:r==="isCompiled"?!0:Reflect.get(i,r)})}},Vi=class{getOperators(){return xs}getFunctions(){return vs}createTarget(n={}){return{language:"javascript",operators:t=>xs[t],functions:t=>vs[t],var:t=>({Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"})[t],string:t=>JSON.stringify(t),number:t=>t.toString(),complex:(t,i)=>`({ re: ${t}, im: ${i} })`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){let{operators:i,functions:r,vars:s,imports:o=[],preamble:a,realOnly:u}=t,l=n.unknowns,c=o.map(y=>{if(typeof y=="function")return y.toString();throw new Error(`Unsupported import \`${y}\``)}).join(`
52
+ `),f={};if(r)for(let[y,v]of Object.entries(r))typeof v=="function"?md(v)?(c+=`${v.toString()};
53
+ `,f[y]=v.name):(c+=`const ${y} = ${v.toString()};
54
+ `,f[y]=y):typeof v=="string"&&(f[y]=v);let p=y=>{if(i){let v=typeof i=="function"?i(y):i[y];if(v)return v}return xs[y]},d=this.createTarget({operators:p,functions:y=>f?.[y]?f[y]:vs[y],var:y=>{if(s&&y in s)return JSON.stringify(s[y]);let v={Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"}[y];if(v!==void 0)return v;if(l.includes(y))return`_.${y}`;if(n.engine._getSymbolValue(y)===void 0)return`_.${y}`},preamble:(a??"")+c}),b=cd(n,d,u);return x.withReferences(b,n,d,s?new Set(Object.keys(s)):void 0)}};function Es(e){let n=e.run;return{...e,run:((...i)=>{let r=n(...i);return typeof r=="object"&&r!==null&&"im"in r?r.im===0?r.re:NaN:r})}}function cd(e,n,t){if(g(e,"Function")){let o=e.ops,a=o.slice(1).map(f=>I(f)?f.symbol:"_"),u=x.compile(o[0].canonical,{...n,var:f=>a.includes(f)?f:n.var(f)}),l=new Bi(u,a),c={target:"javascript",success:!0,code:`(${a.join(", ")}) => ${u}`,calling:"lambda",run:l};return t?Es(c):c}if(I(e)){let o=n.operators?.(e.symbol);if(o){let a=new Bi(`a ${o[0]} b`,["a","b"]),u={target:"javascript",success:!0,code:`(a, b) => a ${o[0]} b`,calling:"lambda",run:a};return t?Es(u):u}}let i=x.compile(e,n),r=new Ns(i,n.preamble),s={target:"javascript",success:!0,code:i,calling:"expression",run:r};return t?Es(s):s}var fd=100;function lc(e){e.operator;let n=e,t=I(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,s=i.re,o=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0,upperNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0}}function oc(e,n,t){return n!==void 0?String(n):`Math.floor(${x.compile(e,t)})`}function ac(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);let{index:r,lowerExpr:s,upperExpr:o,lowerNum:a,upperNum:u}=lc(n[1]),l=e==="Sum",c=l?"+":"*",f=l?"0":"1",p=x.isComplexValued(n[0]),d=a!==void 0&&u!==void 0;if(d&&a>u)return f;if(d&&u-a+1<=fd){let $=[];for(let V=a;V<=u;V++){let q={...i,var:z=>z===r?String(V):i.var(z)};$.push(`(${x.compile(n[0],q)})`)}if(!p)return`(${$.join(` ${c} `)})`;let L=$.map((V,q)=>`_t${q}`),F=$.map((V,q)=>`const ${L[q]} = ${V}`).join("; ");if(l){let V=L.map(z=>`${z}.re`).join(" + "),q=L.map(z=>`${z}.im`).join(" + ");return`(() => { ${F}; return { re: ${V}, im: ${q} }; })()`}let P=L[0],Q=[F];for(let V=1;V<L.length;V++){let q=P;P=`_p${V}`,Q.push(`const ${P} = { re: ${q}.re * ${L[V]}.re - ${q}.im * ${L[V]}.im, im: ${q}.re * ${L[V]}.im + ${q}.im * ${L[V]}.re }`)}return`(() => { ${Q.join("; ")}; return ${P}; })()`}let b=oc(s,a,i),y=oc(o,u,i),v=x.compile(n[0],{...i,var:M=>M===r?r:i.var(M)}),N=x.tempVar();if(p){let M=x.tempVar();return l?`(() => { let ${N} = { re: 0, im: 0 }; let ${r} = ${b}; const _upper = ${y}; while (${r} <= _upper) { const ${M} = ${v}; ${N} = { re: ${N}.re + ${M}.re, im: ${N}.im + ${M}.im }; ${r}++; } return ${N}; })()`:`(() => { let ${N} = { re: 1, im: 0 }; let ${r} = ${b}; const _upper = ${y}; while (${r} <= _upper) { const ${M} = ${v}; ${N} = { re: ${N}.re * ${M}.re - ${N}.im * ${M}.im, im: ${N}.re * ${M}.im + ${N}.im * ${M}.re }; ${r}++; } return ${N}; })()`}return`(() => { let ${N} = ${f}; let ${r} = ${b}; const _upper = ${y}; while (${r} <= _upper) { ${N} ${c}= ${v}; ${r}++; } return ${N}; })()`}function pd(e,n,t){let{index:i,lowerExpr:r,upperExpr:s}=lc(e[1]),o=i,a=e[0];if(g(e[0],"Function")){let f=e[0].ops.slice(1).filter(p=>I(p));f.length>=1&&I(f[0])&&(o=f[0].symbol),a=e[0].ops[0]}let u=x.compile(a,{...t,var:f=>f===o?f:t.var(f)}),l=x.compile(r,t),c=x.compile(s,t);return`_SYS.integrate((${o}) => (${u}), ${l}, ${c})`}function md(e){let n=e.toString();return n.includes("=>")?!1:n.startsWith("function ")&&n.includes(e.name)}function Ts(e){if(!Number.isInteger(e))return NaN;if(e<0)return e%2===0?-Ts(-e):Ts(-e);if(e<=1)return e;let n=0,t=1;for(let i=2;i<=e;i++){let r=n+t;n=t,t=r}return t}var cc={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["==",8],NotEqual:["!=",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]};function Ae(e){return e?.language==="wgsl"?"vec2f":"vec2"}function Wn(e){return e?.language==="wgsl"?"vec3f":"vec3"}function Is(e){return e?.language==="wgsl"?"bitcast<f32>(0x7fc00000u)":"(0.0 / 0.0)"}function _s(e,n,t,i){return i?.language==="wgsl"?`select(${t}, ${n}, ${e})`:`((${e}) ? (${n}) : (${t}))`}function Ss(e){return fe(e)?e.string?.toLowerCase()??null:null}function fc(e,n,t){let i=te(e);return i!==void 0&&Number.isInteger(i)?i.toString():`${t?.language==="wgsl"?"i32":"int"}(${n(e)})`}var dd=100;function pc(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);if(x.isComplexValued(n[0]))throw new Error(`${e}: complex-valued body not supported in GPU targets`);let r=n[1];if(!g(r,"Limits"))throw new Error(`${e}: expected Limits indexing set`);let s=r.ops,o=I(s[0])?s[0].symbol:"_",a=s[1].re,u=s[2].re,l=!isNaN(a)&&Number.isFinite(a)?Math.floor(a):void 0,c=!isNaN(u)&&Number.isFinite(u)?Math.floor(u):void 0,f=e==="Sum",p=f?"+":"*",d=f?"0.0":"1.0",b=i.language==="wgsl",y=l!==void 0&&c!==void 0;if(y&&l>c)return d;if(y&&c-l+1<=dd){let z=[];for(let Z=l;Z<=c;Z++){let ae=Ce(Z),ue={...i,var:sn=>sn===o?ae:i.var(sn)};z.push(`(${x.compile(n[0],ue)})`)}return`(${z.join(` ${p} `)})`}let v=x.tempVar(),N=b?"f32":"float",M=b?"i32":"int",$={...i,var:z=>z===o?b?`f32(${o})`:`float(${o})`:i.var(z)},L=x.compile(n[0],$),F=l!==void 0?String(l):x.compile(s[1],i),P=c!==void 0?String(c):x.compile(s[2],i),Q=b?`var ${v}: ${N}`:`${N} ${v}`,V=b?`var ${o}: ${M}`:`${M} ${o}`;return[`${Q} = ${d};`,`for (${V} = ${F}; ${o} <= ${P}; ${o}++) {`,` ${v} ${p}= ${L};`,"}",`return ${v};`].join(`
55
+ `)}var hd={Add:(e,n,t)=>{if(e.length===0)return"0.0";if(e.length===1)return n(e[0]);if(!e.some(l=>x.isComplexValued(l)))return ln(e.map(l=>n(l)),"0.0","+");let r=e.map(l=>sl(l,n));if(r.some(l=>l===null)){let l=Ae(t);return e.map(c=>{let f=n(c);return x.isComplexValued(c)?f:`${l}(${f}, 0.0)`}).join(" + ")}let s=[],o=[];for(let l of r)l.re!==null&&s.push(l.re),l.im!==null&&o.push(l.im);let a=ln(s,"0.0","+"),u=ln(o,"0.0","+");return`${Ae(t)}(${a}, ${u})`},Multiply:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);if(!e.some(l=>x.isComplexValued(l)))return ln(e.map(l=>n(l)),"1.0","*");let r=e.findIndex(l=>I(l,"ImaginaryUnit")||D(l)&&l.re===0&&l.im!==0);if(r>=0){let l=e[r],c=I(l,"ImaginaryUnit")?1:l.im,f=e.filter((y,v)=>v!==r),p=Ae(t);if(f.length===0)return`${p}(0.0, ${le(c)})`;let d=f.map(y=>Ii(y,n(y)));c!==1&&d.unshift(le(c));let b=ln(d,"1.0","*");return`${p}(0.0, ${b})`}let s=[],o=[];for(let l of e)x.isComplexValued(l)?o.push(n(l)):s.push(Ii(l,n(l)));let a=ln(s,"1.0","*"),u=o[0];for(let l=1;l<o.length;l++)u=`_gpu_cmul(${u}, ${o[l]})`;return a!=="1.0"&&(u=`(${a} * ${u})`),u},Divide:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);let i=x.isComplexValued(e[0]),r=e.length>=2&&x.isComplexValued(e[1]);if(!i&&!r){if(e.length===2){let a=te(e[0]),u=te(e[1]);return a!==void 0&&u!==void 0&&u!==0?le(a/u):u===1?n(e[0]):`${n(e[0])} / ${n(e[1])}`}let o=n(e[0]);for(let a=1;a<e.length;a++)o=`${o} / ${n(e[a])}`;return o}return i&&r?`_gpu_cdiv(${n(e[0])}, ${n(e[1])})`:i&&!r?`(${n(e[0])} / ${n(e[1])})`:`_gpu_cdiv(${Ae(t)}(${n(e[0])}, 0.0), ${n(e[1])})`},Negate:([e],n,t)=>{if(e===null)throw new Error("Negate: no argument");let i=te(e);return i!==void 0?le(-i):D(e)&&e.im!==0?`${Ae(t)}(${le(-e.re)}, ${le(-e.im)})`:I(e,"ImaginaryUnit")?`${Ae(t)}(0.0, -1.0)`:`(-${n(e)})`},Abs:(e,n)=>x.isComplexValued(e[0])?`length(${n(e[0])})`:x.isNonNegative(e[0])?n(e[0]):`abs(${n(e[0])})`,Arccos:(e,n)=>x.isComplexValued(e[0])?`_gpu_cacos(${n(e[0])})`:`acos(${n(e[0])})`,Arcsin:(e,n)=>x.isComplexValued(e[0])?`_gpu_casin(${n(e[0])})`:`asin(${n(e[0])})`,Arctan:(e,n)=>x.isComplexValued(e[0])?`_gpu_catan(${n(e[0])})`:`atan(${n(e[0])})`,Ceil:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`ceil(${n(e[0])})`,Clamp:"clamp",Cos:(e,n)=>x.isComplexValued(e[0])?`_gpu_ccos(${n(e[0])})`:`cos(${n(e[0])})`,Degrees:"radians",Exp:(e,n)=>x.isComplexValued(e[0])?`_gpu_cexp(${n(e[0])})`:`exp(${n(e[0])})`,Exp2:"exp2",First:(e,n)=>`${n(e[0])}.x`,Second:(e,n)=>`${n(e[0])}.y`,Third:(e,n)=>`${n(e[0])}.z`,Floor:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`floor(${n(e[0])})`,Fract:"fract",Ln:(e,n)=>x.isComplexValued(e[0])?`_gpu_cln(${n(e[0])})`:`log(${n(e[0])})`,Log2:"log2",Max:"max",Min:"min",Mix:"mix",If:(e,n,t)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return _s(n(e[0]),n(e[1]),n(e[2]),t)},When:(e,n,t)=>{if(e.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");return I(e[1],"True")?`(${n(e[0])})`:I(e[1],"False")?Is(t):_s(n(e[1]),n(e[0]),Is(t),t)},Which:(e,n,t)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected condition/value pairs");let i=r=>{if(r>=e.length)return Is(t);let s=e[r],o=e[r+1];return I(s,"True")?`(${n(o)})`:_s(n(s),n(o),i(r+2),t)};return i(0)},Power:(e,n,t)=>{let i=e[0],r=e[1];if(i===null)throw new Error("Power: no argument");if(x.isComplexValued(i)||x.isComplexValued(r)){if(I(i,"ExponentialE"))return`_gpu_cexp(${n(r)})`;let a=Ae(t),u=x.isComplexValued(i)?n(i):`${a}(${n(i)}, 0.0)`,l=x.isComplexValued(r)?n(r):`${a}(${n(r)}, 0.0)`;return`_gpu_cpow(${u}, ${l})`}let s=te(i),o=te(r);if(s!==void 0&&o!==void 0)return le(Math.pow(s,o));if(o===0)return"1.0";if(o===1)return n(i);if(o===2&&(I(i)||D(i))){let a=n(i);return`(${a} * ${a})`}return o===-1?`(1.0 / ${n(i)})`:o===.5?`sqrt(${n(i)})`:`pow(${n(i)}, ${n(r)})`},Radians:"radians",Round:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`round(${n(e[0])})`,Sign:"sign",Sin:(e,n)=>x.isComplexValued(e[0])?`_gpu_csin(${n(e[0])})`:`sin(${n(e[0])})`,Smoothstep:"smoothstep",Sqrt:(e,n)=>{if(x.isComplexValued(e[0]))return`_gpu_csqrt(${n(e[0])})`;let t=te(e[0]);return t!==void 0?le(Math.sqrt(t)):`sqrt(${n(e[0])})`},Step:"step",Tan:(e,n)=>x.isComplexValued(e[0])?`_gpu_ctan(${n(e[0])})`:`tan(${n(e[0])})`,Truncate:(e,n)=>x.isIntegerValued(e[0])?n(e[0]):`trunc(${n(e[0])})`,Real:(e,n)=>x.isComplexValued(e[0])?`(${n(e[0])}).x`:n(e[0]),Imaginary:(e,n)=>x.isComplexValued(e[0])?`(${n(e[0])}).y`:"0.0",Argument:(e,n)=>{if(x.isComplexValued(e[0])){let t=n(e[0]);return`atan(${t}.y, ${t}.x)`}return`(${n(e[0])} >= 0.0 ? 0.0 : 3.14159265359)`},Conjugate:(e,n,t)=>{if(x.isComplexValued(e[0])){let i=Ae(t),r=n(e[0]);return`${i}(${r}.x, -${r}.y)`}return n(e[0])},Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * round(${t(e)} / ${t(n)}))`},Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");if(x.isComplexValued(e))return`_gpu_cdiv(_gpu_ccos(${n(e)}), _gpu_csin(${n(e)}))`;let t=n(e);return`(cos(${t}) / sin(${t}))`},Csc:([e],n,t)=>{if(e===null)throw new Error("Csc: no argument");return x.isComplexValued(e)?`_gpu_cdiv(${Ae(t)}(1.0, 0.0), _gpu_csin(${n(e)}))`:`(1.0 / sin(${n(e)}))`},Sec:([e],n,t)=>{if(e===null)throw new Error("Sec: no argument");return x.isComplexValued(e)?`_gpu_cdiv(${Ae(t)}(1.0, 0.0), _gpu_ccos(${n(e)}))`:`(1.0 / cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`atan(1.0 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`asin(1.0 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`acos(1.0 / (${n(e)}))`},Sinh:(e,n)=>x.isComplexValued(e[0])?`_gpu_csinh(${n(e[0])})`:`sinh(${n(e[0])})`,Cosh:(e,n)=>x.isComplexValued(e[0])?`_gpu_ccosh(${n(e[0])})`:`cosh(${n(e[0])})`,Tanh:(e,n)=>x.isComplexValued(e[0])?`_gpu_ctanh(${n(e[0])})`:`tanh(${n(e[0])})`,Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");if(x.isComplexValued(e))return`_gpu_cdiv(_gpu_ccosh(${n(e)}), _gpu_csinh(${n(e)}))`;let t=n(e);return`(cosh(${t}) / sinh(${t}))`},Csch:([e],n,t)=>{if(e===null)throw new Error("Csch: no argument");return x.isComplexValued(e)?`_gpu_cdiv(${Ae(t)}(1.0, 0.0), _gpu_csinh(${n(e)}))`:`(1.0 / sinh(${n(e)}))`},Sech:([e],n,t)=>{if(e===null)throw new Error("Sech: no argument");return x.isComplexValued(e)?`_gpu_cdiv(${Ae(t)}(1.0, 0.0), _gpu_ccosh(${n(e)}))`:`(1.0 / cosh(${n(e)}))`},Arcosh:(e,n)=>x.isComplexValued(e[0])?`_gpu_cacosh(${n(e[0])})`:`acosh(${n(e[0])})`,Arsinh:(e,n)=>x.isComplexValued(e[0])?`_gpu_casinh(${n(e[0])})`:`asinh(${n(e[0])})`,Artanh:(e,n)=>x.isComplexValued(e[0])?`_gpu_catanh(${n(e[0])})`:`atanh(${n(e[0])})`,Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`atanh(1.0 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`asinh(1.0 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`acosh(1.0 / (${n(e)}))`},Arctan2:(e,n)=>{if(e.length<2)throw new Error("Arctan2: need two arguments");return`atan(${n(e[0])}, ${n(e[1])})`},Hypot:([e,n],t)=>{if(e===null||n===null)throw new Error("Hypot: need two arguments");return`length(vec2(${t(e)}, ${t(n)}))`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return`((1.0 - cos(${n(e)})) * 0.5)`},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2.0 * asin(sqrt(${n(e)})))`},Gamma:([e],n)=>{if(e===null)throw new Error("Gamma: no argument");return`_gpu_gamma(${n(e)})`},GammaLn:([e],n)=>{if(e===null)throw new Error("GammaLn: no argument");return`_gpu_gammaln(${n(e)})`},Factorial:([e],n)=>{if(e===null)throw new Error("Factorial: no argument");return`_gpu_gamma(${n(e)} + 1.0)`},Beta:([e,n],t)=>{if(e===null||n===null)throw new Error("Beta: need two arguments");let i=t(e),r=t(n);return`(_gpu_gamma(${i}) * _gpu_gamma(${r}) / _gpu_gamma(${i} + ${r}))`},Erf:([e],n)=>{if(e===null)throw new Error("Erf: no argument");return`_gpu_erf(${n(e)})`},Erfc:([e],n)=>{if(e===null)throw new Error("Erfc: no argument");return`(1.0 - _gpu_erf(${n(e)}))`},ErfInv:([e],n)=>{if(e===null)throw new Error("ErfInv: no argument");return`_gpu_erfinv(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_gpu_heaviside(${n(e)})`},Sinc:([e],n)=>{if(e===null)throw new Error("Sinc: no argument");return`_gpu_sinc(${n(e)})`},FresnelC:([e],n)=>{if(e===null)throw new Error("FresnelC: no argument");return`_gpu_fresnelC(${n(e)})`},FresnelS:([e],n)=>{if(e===null)throw new Error("FresnelS: no argument");return`_gpu_fresnelS(${n(e)})`},BesselJ:([e,n],t,i)=>{if(e===null||n===null)throw new Error("BesselJ: need two arguments");return`_gpu_besselJ(${i?.language==="wgsl"?"i32":"int"}(${t(e)}), ${t(n)})`},Lb:"log2",Log:(e,n)=>{if(e.length===0)throw new Error("Log: no argument");return e.length===1?`(log(${n(e[0])}) / log(10.0))`:`(log(${n(e[0])}) / log(${n(e[1])}))`},Log10:([e],n)=>{if(e===null)throw new Error("Log10: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Lg:([e],n)=>{if(e===null)throw new Error("Lg: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");if(I(e)||D(e)){let t=n(e);return`(${t} * ${t})`}return`pow(${n(e)}, 2.0)`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n==null)return`sqrt(${t(e)})`;let i=te(n);if(i===2)return`sqrt(${t(e)})`;let r=te(e);return r!==void 0&&i!==void 0?le(Math.pow(r,1/i)):`pow(${t(e)}, 1.0 / ${t(n)})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");let t=n(e[0]),i=n(e[1]),r=e.length>=3?n(e[2]):"0.5";return`_gpu_color_mix(${t}, ${i}, ${r})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_gpu_apca(${t(e)}, ${t(n)})`},ContrastingColor:(e,n,t)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");let i=n(e[0]);if(e.length>=3){let u=n(e[1]),l=n(e[2]);return`(abs(_gpu_apca(${i}, ${u})) >= abs(_gpu_apca(${i}, ${l})) ? ${u} : ${l})`}let s=t?.language==="wgsl"?"vec3f":"vec3",o=`${s}(0.0)`,a=`${s}(1.0, 0.0, 0.0)`;return`((_gpu_apca(${i}, ${o}) > 50.0) ? ${o} : ${a})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");let i=Ss(n);if(i===null)throw new Error("ColorToColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklch_to_oklab(${r})`;case"rgb":return`_gpu_oklch_to_srgb(${r})`;case"hsl":return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${r}))`;case"hsv":return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${r}))`;default:throw new Error(`ColorToColorspace: unsupported space "${i}" on GPU target`)}},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");let i=Ss(n);if(i===null)throw new Error("ColorFromColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklab_to_oklch(${r})`;case"rgb":return`_gpu_srgb_to_oklch(${r})`;case"hsl":return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${r}))`;case"hsv":return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${r}))`;default:throw new Error(`ColorFromColorspace: unsupported space "${i}" on GPU target`)}},Color:([e],n,t)=>{if(e===null)throw new Error("Color: no argument");let i=Ss(e);if(i===null)throw new Error("Color: argument must be a string literal on GPU target");let r=rn(i);if(r===0&&i.trim().toLowerCase()!=="transparent")throw new Error(`Color: invalid color string "${i}"`);let s=r>>>24&255,o=r>>>16&255,a=r>>>8&255,u=_e({r:s,g:o,b:a});return`${Wn(t)}(${le(u.L)}, ${le(u.C)}, ${le(u.H)})`},Rgb:(e,n,t)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_gpu_srgb_to_oklch(${Wn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Hsv:(e,n,t)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${Wn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Hsl:(e,n,t)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${Wn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Oklab:(e,n,t)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_gpu_oklab_to_oklch(${Wn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Oklch:(e,n,t)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`${Wn(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_gpu_oklch_to_oklab(${n(e)})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_gpu_oklch_to_srgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${n(e)}))`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${n(e)}))`},Mandelbrot:([e,n],t,i)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");let r=fc(n,t,i);return`_fractal_mandelbrot(${t(e)}, ${r})`},Julia:([e,n,t],i,r)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");let s=fc(t,i,r);return`_fractal_julia(${i(e)}, ${i(n)}, ${s})`},Cross:"cross",Distance:"distance",Dot:"dot",Length:"length",Normalize:"normalize",Reflect:"reflect",Refract:"refract",Sum:(e,n,t)=>pc("Sum",e,n,t),Product:(e,n,t)=>pc("Product",e,n,t),Range:(e,n,t)=>{if(e.length<2||e.length>3)throw new Error("Range: GPU compile expects 2 or 3 arguments (lo, hi, step?)");let i=e[0].re,r=e[1].re,s=e.length===3?e[2].re:1;if(!Number.isFinite(i)||!Number.isFinite(r)||!Number.isFinite(s))throw new Error("Range: GPU compile requires constant numeric bounds (non-constant ranges must be materialized at JS host then uploaded as a uniform)");if(s===0)throw new Error("Range: step cannot be zero");let o=Math.max(0,Math.floor((r-i)/s)+1);if(o===0)throw new Error("Range: empty range (lo > hi for positive step, or lo < hi for negative step)");if(o>256)throw new Error(`Range: GPU compile inlines ranges up to 256 elements (got ${o})`);let a=[];for(let c=0;c<o;c++)a.push(i+c*s);return`${t.language==="wgsl"?`array<f32, ${o}>`:`float[${o}]`}(${a.map(Ce).join(", ")})`},Loop:(e,n,t)=>{if(!e[0])throw new Error("Loop: no body");if(!e[1])throw new Error("Loop: no indexing set");let i=e[1];if(!g(i,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let r=i.ops[0],s=i.ops[1];if(!I(r))throw new Error("Loop: index must be a symbol");if(!g(s,"Range"))throw new Error("Loop: expected Range(lo, hi)");let o=r.symbol,a=Math.floor(s.ops[0].re),u=Math.floor(s.ops[1].re);if(!Number.isFinite(a)||!Number.isFinite(u))throw new Error("Loop: bounds must be finite numbers");let l=t.language==="wgsl",c=l?"i32":"int",f=x.compile(e[0],{...t,var:d=>d===o?o:t.var(d)});return`for (${l?`var ${o}: ${c}`:`${c} ${o}`} = ${a}; ${o} <= ${u}; ${o}++) {
56
56
  ${f};
57
- }`},GCD:(e,n)=>{if(e.length<2)throw new Error("GCD: need at least two arguments");if(e.length>2)throw new Error("GCD: GPU target supports only two-argument GCD");let t=e[0],i=e[1];if(t===null||i===null)throw new Error("GCD: missing argument");return`_gpu_gcd(${n(t)}, ${n(i)})`},Variance:(e,n)=>{let t;if(e.length===1&&g(e[0],"List"))t=e[0].ops;else if(e.length>=2)t=e;else throw new Error("Variance: GPU target requires a List argument or at least 2 scalar arguments");let i=t.length;if(i<2)throw new Error("Variance: need at least 2 elements");let r=t.map(u=>n(u)),o=`((${r.join(" + ")}) / ${Cn(i)})`;return`((${r.map(u=>`(${u} - ${o}) * (${u} - ${o})`).join(" + ")}) / ${Cn(i-1)})`},Median:(e,n)=>{let t;if(e.length===1&&g(e[0],"List"))t=e[0].ops;else if(e.length>=1)t=e;else throw new Error("Median: GPU target requires a List argument or at least 1 scalar argument");let i=t.length;if(i===0)throw new Error("Median: empty list");if(i>8)throw new Error(`Median: GPU target supports up to 8 elements via inline sorting network (got ${i}). For larger lists, compute on the CPU and pass the result as a uniform.`);let r=t.map(s=>n(s));return i===1?r[0]:`_gpu_median_${i}(${r.join(", ")})`},Random:(e,n,t)=>{if(e.length===0){if(t.language==="wgsl")throw new Error("Random(): WGSL compile requires an explicit seed argument. WGSL has no gl_FragCoord built-in outside fragment entry points, so the no-arg fallback used in GLSL is unavailable. Use Random(seed) where seed is a deterministic per-invocation value.");return"_gpu_random(gl_FragCoord.x + gl_FragCoord.y * 1024.0)"}if(e.length===1){let i=e[0];if(y.isIntegerValued(i)){let r=n(i);return`floor(_gpu_random(float(${r})) * float(${r}))`}return`_gpu_random(${n(i)})`}if(e.length===2){if(t.language==="wgsl")throw new Error("Random(m, n): WGSL compile requires explicit seeding. Use a seeded variant or compute the integer range manually.");let i=n(e[0]),r=n(e[1]);return`(float(${i}) + floor(_gpu_random(gl_FragCoord.x + gl_FragCoord.y * 1024.0) * float((${r}) - (${i}))))`}throw new Error("Random: GPU compile expects 0, 1, or 2 arguments")},Function:()=>{throw new Error("Anonymous functions (Function) are not supported in GPU targets")}};function Pi(e,n,t,i,r){let s=e[0];if(!g(s))return n(s);let o=s.ops;if(o.length===0)return n(s);let a=o.length,u=o[0],l=g(u)?u.nops:0;if(l===1&&o.every(c=>g(c)&&c.nops===1)){let c=o.map(f=>n(g(f)?f.ops[0]:f));return a>=2&&a<=4?`${t(a)}(${c.join(", ")})`:`${r(a)}(${c.join(", ")})`}if(a===l&&a>=2&&a<=4&&o.every(c=>g(c)&&c.nops===l)){let c=[];for(let f=0;f<l;f++){let m=o.map(h=>n(g(h)?h.ops[f]:h));c.push(`${t(a)}(${m.join(", ")})`)}return`${i(a)}(${c.join(", ")})`}return n(s)}var Lm=`
57
+ }`},GCD:(e,n)=>{if(e.length<2)throw new Error("GCD: need at least two arguments");if(e.length>2)throw new Error("GCD: GPU target supports only two-argument GCD");let t=e[0],i=e[1];if(t===null||i===null)throw new Error("GCD: missing argument");return`_gpu_gcd(${n(t)}, ${n(i)})`},Variance:(e,n)=>{let t;if(e.length===1&&g(e[0],"List"))t=e[0].ops;else if(e.length>=2)t=e;else throw new Error("Variance: GPU target requires a List argument or at least 2 scalar arguments");let i=t.length;if(i<2)throw new Error("Variance: need at least 2 elements");let r=t.map(u=>n(u)),o=`((${r.join(" + ")}) / ${Ce(i)})`;return`((${r.map(u=>`(${u} - ${o}) * (${u} - ${o})`).join(" + ")}) / ${Ce(i-1)})`},Median:(e,n)=>{let t;if(e.length===1&&g(e[0],"List"))t=e[0].ops;else if(e.length>=1)t=e;else throw new Error("Median: GPU target requires a List argument or at least 1 scalar argument");let i=t.length;if(i===0)throw new Error("Median: empty list");if(i>8)throw new Error(`Median: GPU target supports up to 8 elements via inline sorting network (got ${i}). For larger lists, compute on the CPU and pass the result as a uniform.`);let r=t.map(s=>n(s));return i===1?r[0]:`_gpu_median_${i}(${r.join(", ")})`},Random:(e,n,t)=>{if(e.length===0){if(t.language==="wgsl")throw new Error("Random(): WGSL compile requires an explicit seed argument. WGSL has no gl_FragCoord built-in outside fragment entry points, so the no-arg fallback used in GLSL is unavailable. Use Random(seed) where seed is a deterministic per-invocation value.");return"_gpu_random(gl_FragCoord.x + gl_FragCoord.y * 1024.0)"}if(e.length===1){let i=e[0];if(x.isIntegerValued(i)){let r=n(i);return`floor(_gpu_random(float(${r})) * float(${r}))`}return`_gpu_random(${n(i)})`}if(e.length===2){if(t.language==="wgsl")throw new Error("Random(m, n): WGSL compile requires explicit seeding. Use a seeded variant or compute the integer range manually.");let i=n(e[0]),r=n(e[1]);return`(float(${i}) + floor(_gpu_random(gl_FragCoord.x + gl_FragCoord.y * 1024.0) * float((${r}) - (${i}))))`}throw new Error("Random: GPU compile expects 0, 1, or 2 arguments")},Function:()=>{throw new Error("Anonymous functions (Function) are not supported in GPU targets")}};function qi(e,n,t,i,r){let s=e[0];if(!g(s))return n(s);let o=s.ops;if(o.length===0)return n(s);let a=o.length,u=o[0],l=g(u)?u.nops:0;if(l===1&&o.every(c=>g(c)&&c.nops===1)){let c=o.map(f=>n(g(f)?f.ops[0]:f));return a>=2&&a<=4?`${t(a)}(${c.join(", ")})`:`${r(a)}(${c.join(", ")})`}if(a===l&&a>=2&&a<=4&&o.every(c=>g(c)&&c.nops===l)){let c=[];for(let f=0;f<l;f++){let p=o.map(d=>n(g(d)?d.ops[f]:d));c.push(`${t(a)}(${p.join(", ")})`)}return`${i(a)}(${c.join(", ")})`}return n(s)}var gd=`
58
58
  float _gpu_gamma(float z) {
59
59
  const float PI = 3.14159265358979;
60
60
  // For z < 0.5, use reflection formula with inlined Lanczos (non-recursive)
@@ -85,7 +85,7 @@ float _gpu_gammaln(float z) {
85
85
  - 1.0 / (360.0 * z3)
86
86
  + 1.0 / (1260.0 * z3 * z * z);
87
87
  }
88
- `,Vm=`
88
+ `,bd=`
89
89
  fn _gpu_gamma(z: f32) -> f32 {
90
90
  let PI = 3.14159265358979;
91
91
  var w = z;
@@ -114,7 +114,7 @@ fn _gpu_gammaln(z: f32) -> f32 {
114
114
  - 1.0 / (360.0 * z3)
115
115
  + 1.0 / (1260.0 * z3 * z * z);
116
116
  }
117
- `,qm=`
117
+ `,yd=`
118
118
  float _gpu_erf(float x) {
119
119
  float ax = abs(x);
120
120
  float t = 1.0 / (1.0 + 0.3275911 * ax);
@@ -132,7 +132,7 @@ float _gpu_erfinv(float x) {
132
132
  float x9 = x7 * x2;
133
133
  return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);
134
134
  }
135
- `,Jm=`
135
+ `,xd=`
136
136
  fn _gpu_erf(x: f32) -> f32 {
137
137
  let ax = abs(x);
138
138
  let t = 1.0 / (1.0 + 0.3275911 * ax);
@@ -151,41 +151,41 @@ fn _gpu_erfinv(x: f32) -> f32 {
151
151
  let x9 = x7 * x2;
152
152
  return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);
153
153
  }
154
- `,zm=`
154
+ `,vd=`
155
155
  float _gpu_heaviside(float x) {
156
156
  if (x < 0.0) return 0.0;
157
157
  if (x > 0.0) return 1.0;
158
158
  return 0.5;
159
159
  }
160
- `,Gm=`
160
+ `,Ed=`
161
161
  fn _gpu_heaviside(x: f32) -> f32 {
162
162
  if (x < 0.0) { return 0.0; }
163
163
  if (x > 0.0) { return 1.0; }
164
164
  return 0.5;
165
165
  }
166
- `,jm=`
166
+ `,Nd=`
167
167
  float _gpu_sinc(float x) {
168
168
  if (abs(x) < 1e-10) return 1.0;
169
169
  return sin(x) / x;
170
170
  }
171
- `,Hm=`
171
+ `,Td=`
172
172
  fn _gpu_sinc(x: f32) -> f32 {
173
173
  if (abs(x) < 1e-10) { return 1.0; }
174
174
  return sin(x) / x;
175
175
  }
176
- `,Um=`
176
+ `,Id=`
177
177
  float _gpu_polevl(float x, float c[12], int n) {
178
178
  float ans = c[0];
179
179
  for (int i = 1; i < n; i++) ans = ans * x + c[i];
180
180
  return ans;
181
181
  }
182
- `,Zm=`
182
+ `,_d=`
183
183
  fn _gpu_polevl(x: f32, c: array<f32, 12>, n: i32) -> f32 {
184
184
  var ans = c[0];
185
185
  for (var i: i32 = 1; i < n; i++) { ans = ans * x + c[i]; }
186
186
  return ans;
187
187
  }
188
- `,Ym=`
188
+ `,Sd=`
189
189
  float _gpu_fresnelC(float x_in) {
190
190
  float sgn = x_in < 0.0 ? -1.0 : 1.0;
191
191
  float x = abs(x_in);
@@ -251,7 +251,7 @@ float _gpu_fresnelC(float x_in) {
251
251
 
252
252
  return sgn * 0.5;
253
253
  }
254
- `,Wm=`
254
+ `,Md=`
255
255
  fn _gpu_fresnelC(x_in: f32) -> f32 {
256
256
  let sgn: f32 = select(1.0, -1.0, x_in < 0.0);
257
257
  let x = abs(x_in);
@@ -320,7 +320,7 @@ fn _gpu_fresnelC(x_in: f32) -> f32 {
320
320
 
321
321
  return sgn * 0.5;
322
322
  }
323
- `,Xm=`
323
+ `,kd=`
324
324
  float _gpu_fresnelS(float x_in) {
325
325
  float sgn = x_in < 0.0 ? -1.0 : 1.0;
326
326
  float x = abs(x_in);
@@ -386,7 +386,7 @@ float _gpu_fresnelS(float x_in) {
386
386
 
387
387
  return sgn * 0.5;
388
388
  }
389
- `,Qm=`
389
+ `,wd=`
390
390
  fn _gpu_fresnelS(x_in: f32) -> f32 {
391
391
  let sgn: f32 = select(1.0, -1.0, x_in < 0.0);
392
392
  let x = abs(x_in);
@@ -455,7 +455,7 @@ fn _gpu_fresnelS(x_in: f32) -> f32 {
455
455
 
456
456
  return sgn * 0.5;
457
457
  }
458
- `,Km=`
458
+ `,Ad=`
459
459
  float _gpu_factorial(int n) {
460
460
  float f = 1.0;
461
461
  for (int i = 2; i <= n; i++) f *= float(i);
@@ -532,7 +532,7 @@ float _gpu_besselJ(int n, float x) {
532
532
  for (int k = 2; k <= M; k += 2) norm += 2.0 * vals[k];
533
533
  return sgn * vals[n] / norm;
534
534
  }
535
- `,ed=`
535
+ `,Cd=`
536
536
  fn _gpu_factorial(n: i32) -> f32 {
537
537
  var f: f32 = 1.0;
538
538
  for (var i: i32 = 2; i <= n; i++) { f *= f32(i); }
@@ -609,7 +609,7 @@ fn _gpu_besselJ(n_in: i32, x_in: f32) -> f32 {
609
609
  for (var k2: i32 = 2; k2 <= M; k2 += 2) { norm += 2.0 * vals[k2]; }
610
610
  return sgn * vals[n] / norm;
611
611
  }
612
- `,nd=`
612
+ `,$d=`
613
613
  float _fractal_mandelbrot(vec2 c, int maxIter) {
614
614
  vec2 z = vec2(0.0, 0.0);
615
615
  for (int i = 0; i < maxIter; i++) {
@@ -628,7 +628,7 @@ float _fractal_julia(vec2 z, vec2 c, int maxIter) {
628
628
  }
629
629
  return 1.0;
630
630
  }
631
- `,td=`
631
+ `,Rd=`
632
632
  fn _fractal_mandelbrot(c: vec2f, maxIter: i32) -> f32 {
633
633
  var z = vec2f(0.0, 0.0);
634
634
  for (var i: i32 = 0; i < maxIter; i++) {
@@ -650,7 +650,7 @@ fn _fractal_julia(z_in: vec2f, c: vec2f, maxIter: i32) -> f32 {
650
650
  }
651
651
  return 1.0;
652
652
  }
653
- `,id=`
653
+ `,Pd=`
654
654
  float _gpu_gcd(float a, float b) {
655
655
  a = abs(a); b = abs(b);
656
656
  for (int i = 0; i < 32; i++) {
@@ -661,7 +661,7 @@ float _gpu_gcd(float a, float b) {
661
661
  }
662
662
  return a;
663
663
  }
664
- `,rd=`
664
+ `,Dd=`
665
665
  fn _gpu_gcd(a_in: f32, b_in: f32) -> f32 {
666
666
  var a = abs(a_in); var b = abs(b_in);
667
667
  for (var i: i32 = 0; i < 32; i++) {
@@ -672,7 +672,7 @@ fn _gpu_gcd(a_in: f32, b_in: f32) -> f32 {
672
672
  }
673
673
  return a;
674
674
  }
675
- `,sd=`
675
+ `,Fd=`
676
676
  // Deterministic pseudorandom in [0, 1) from a float seed.
677
677
  // Standard fract-sin hash; reproducible across runs for the same seed.
678
678
  // Note: this hash exhibits visible banding near seed \u2248 k\u03C0 for integer k.
@@ -681,7 +681,7 @@ fn _gpu_gcd(a_in: f32, b_in: f32) -> f32 {
681
681
  float _gpu_random(float seed) {
682
682
  return fract(sin(seed * 12.9898) * 43758.5453);
683
683
  }
684
- `,od=`
684
+ `,Od=`
685
685
  // Deterministic pseudorandom in [0, 1) from a float seed.
686
686
  // Standard fract-sin hash; reproducible across runs for the same seed.
687
687
  // Note: this hash exhibits visible banding near seed \u2248 k\u03C0 for integer k.
@@ -690,7 +690,7 @@ float _gpu_random(float seed) {
690
690
  fn _gpu_random(seed: f32) -> f32 {
691
691
  return fract(sin(seed * 12.9898) * 43758.5453);
692
692
  }
693
- `,ad=`
693
+ `,Ld=`
694
694
  float _gpu_median_2(float a, float b) {
695
695
  return (a + b) * 0.5;
696
696
  }
@@ -770,7 +770,7 @@ float _gpu_median_8(float a, float b, float c, float d, float e, float f, float
770
770
  t=min(v3,v4); v4=max(v3,v4); v3=t;
771
771
  return (v3 + v4) * 0.5;
772
772
  }
773
- `,ud=`
773
+ `,Bd=`
774
774
  fn _gpu_median_2(a: f32, b: f32) -> f32 {
775
775
  return (a + b) * 0.5;
776
776
  }
@@ -850,7 +850,7 @@ fn _gpu_median_8(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32, g: f32, h: f32)
850
850
  t=min(v3,v4); v4=max(v3,v4); v3=t;
851
851
  return (v3 + v4) * 0.5;
852
852
  }
853
- `,ld=`
853
+ `,Vd=`
854
854
  float _gpu_srgb_to_linear(float c) {
855
855
  if (c <= 0.04045) return c / 12.92;
856
856
  return pow((c + 0.055) / 1.055, 2.4);
@@ -1021,7 +1021,7 @@ float _gpu_apca(vec3 lch_bg, vec3 lch_fg) {
1021
1021
  float contrast = (bgC - fgC) * 1.14;
1022
1022
  return contrast * 100.0;
1023
1023
  }
1024
- `,cd=`
1024
+ `,qd=`
1025
1025
  fn _gpu_srgb_to_linear(c: f32) -> f32 {
1026
1026
  if (c <= 0.04045) { return c / 12.92; }
1027
1027
  return pow((c + 0.055) / 1.055, 2.4);
@@ -1201,7 +1201,7 @@ fn _gpu_apca(lch_bg: vec3f, lch_fg: vec3f) -> f32 {
1201
1201
  let contrast = (bgC - fgC) * 1.14;
1202
1202
  return contrast * 100.0;
1203
1203
  }
1204
- `,us={_gpu_cmul:{deps:[],glsl:`vec2 _gpu_cmul(vec2 a, vec2 b) {
1204
+ `,Ms={_gpu_cmul:{deps:[],glsl:`vec2 _gpu_cmul(vec2 a, vec2 b) {
1205
1205
  return vec2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
1206
1206
  }`,wgsl:`fn _gpu_cmul(a: vec2f, b: vec2f) -> vec2f {
1207
1207
  return vec2f(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
@@ -1309,12 +1309,12 @@ fn _gpu_apca(lch_bg: vec3f, lch_fg: vec3f) -> f32 {
1309
1309
  let a = _gpu_cln(vec2f(1.0 + z.x, z.y));
1310
1310
  let b = _gpu_cln(vec2f(1.0 - z.x, -z.y));
1311
1311
  return vec2f(0.5 * (a.x - b.x), 0.5 * (a.y - b.y));
1312
- }`}};function fd(e,n){let t=new Set;for(let a of Object.keys(us))e.includes(a)&&t.add(a);if(t.size===0)return"";let i=new Set;function r(a){if(i.has(a))return;let u=us[a];if(u){for(let l of u.deps)r(l);i.add(a)}}for(let a of t)r(a);let s=n==="wgsl"?"wgsl":"glsl",o=[];for(let a of i)o.push(us[a][s]);return`
1312
+ }`}};function Jd(e,n){let t=new Set;for(let a of Object.keys(Ms))e.includes(a)&&t.add(a);if(t.size===0)return"";let i=new Set;function r(a){if(i.has(a))return;let u=Ms[a];if(u){for(let l of u.deps)r(l);i.add(a)}}for(let a of t)r(a);let s=n==="wgsl"?"wgsl":"glsl",o=[];for(let a of i)o.push(Ms[a][s]);return`
1313
1313
  `+o.join(`
1314
1314
 
1315
1315
  `)+`
1316
- `}var pd={Pi:"3.14159265359",ExponentialE:"2.71828182846",GoldenRatio:"1.61803398875",CatalanConstant:"0.91596559417",EulerGamma:"0.57721566490"};function Cn(e){let n=e.toString();return!n.includes(".")&&!n.includes("e")&&!n.includes("E")?`${n}.0`:n}var fn=class{getOperators(){return Bl}getFunctions(){return{...Bm,...this.getLanguageSpecificFunctions()}}getConstants(){return pd}createTarget(n={}){let t=this.getFunctions(),i=this.getConstants(),r=this.languageId==="wgsl"?"vec2f":"vec2";return{language:this.languageId,operators:s=>Bl[s],functions:s=>t[s],var:s=>s==="ImaginaryUnit"?`${r}(0.0, 1.0)`:s in i?i[s]:s,string:s=>JSON.stringify(s),number:Cn,complex:(s,o)=>`${r}(${Cn(s)}, ${Cn(o)})`,indent:0,ws:s=>s??"",preamble:"",declare:(s,o)=>{let a=o??(this.languageId==="wgsl"?"f32":"float");return this.languageId==="wgsl"?`var ${s}: ${a}`:`${a} ${s}`},block:s=>{if(s.length===0)return"";let o=s.length-1;return s[o]=`return ${s[o]}`,s.join(`;
1317
- `)+";"},...n}}compile(n,t={}){let{functions:i,vars:r}=t,s=this.getFunctions(),o=this.getConstants(),a=this.languageId==="wgsl"?"vec2f":"vec2",u=this.createTarget({functions:m=>{if(i&&m in i){let h=i[m];if(typeof h=="string")return h;if(typeof h=="function")return h.name||m}return s[m]},var:m=>r&&m in r?r[m]:m==="ImaginaryUnit"?`${a}(0.0, 1.0)`:m in o?o[m]:m}),l=y.compile(n,u),c={target:this.languageId,success:!0,code:l},f="";return f+=fd(l,this.languageId),l.includes("_gpu_gamma")&&(f+=this.languageId==="wgsl"?Vm:Lm),l.includes("_gpu_erf")&&(f+=this.languageId==="wgsl"?Jm:qm),l.includes("_gpu_heaviside")&&(f+=this.languageId==="wgsl"?Gm:zm),l.includes("_gpu_sinc")&&(f+=this.languageId==="wgsl"?Hm:jm),l.includes("_gpu_fresnel")&&(f+=this.languageId==="wgsl"?Zm:Um),l.includes("_gpu_fresnelC")&&(f+=this.languageId==="wgsl"?Wm:Ym),l.includes("_gpu_fresnelS")&&(f+=this.languageId==="wgsl"?Qm:Xm),l.includes("_gpu_besselJ")&&(f+=this.languageId==="wgsl"?ed:Km),l.includes("_fractal_")&&(f+=this.languageId==="wgsl"?td:nd),l.includes("_gpu_random")&&(f+=this.languageId==="wgsl"?od:sd),l.includes("_gpu_gcd")&&(f+=this.languageId==="wgsl"?rd:id),l.includes("_gpu_median_")&&(f+=this.languageId==="wgsl"?ud:ad),(l.includes("_gpu_srgb_to")||l.includes("_gpu_oklab")||l.includes("_gpu_oklch")||l.includes("_gpu_color_mix")||l.includes("_gpu_apca"))&&(f+=this.languageId==="wgsl"?cd:ld),f&&(c.preamble=f),c}compileToSource(n,t={}){let i=this.createTarget();return y.compile(n,i)}};function ql(e,n){return e.length===2?`vec2(${e.map(t=>n(t)).join(", ")})`:e.length===3?`vec3(${e.map(t=>n(t)).join(", ")})`:e.length===4?`vec4(${e.map(t=>n(t)).join(", ")})`:`float[${e.length}](${e.map(t=>n(t)).join(", ")})`}var md={Inversesqrt:"inversesqrt",Mod:"mod",List:ql,Matrix:(e,n)=>Pi(e,n,t=>`vec${t}`,t=>`mat${t}`,t=>`float[${t}]`),Tuple:ql},Di=class extends fn{languageId="glsl";getLanguageSpecificFunctions(){return md}compileFunction(n,t,i,r){let s=this.createTarget(),o=y.compile(n,s),a=r.map(([u,l])=>`${l} ${u}`).join(", ");if(o.includes(`
1316
+ `}var zd={Pi:"3.14159265359",ExponentialE:"2.71828182846",GoldenRatio:"1.61803398875",CatalanConstant:"0.91596559417",EulerGamma:"0.57721566490"};function Ce(e){if(!Number.isFinite(e))throw new Error(`Cannot compile the non-finite value \`${e}\` to a GPU shader: GLSL/WGSL have no infinity or NaN literals.`);let n=e.toString();return!n.includes(".")&&!n.includes("e")&&!n.includes("E")?`${n}.0`:n}var mn=class{getOperators(){return cc}getFunctions(){return{...hd,...this.getLanguageSpecificFunctions()}}getConstants(){return zd}createTarget(n={}){let t=this.getFunctions(),i=this.getConstants(),r=this.languageId==="wgsl"?"vec2f":"vec2";return{language:this.languageId,operators:s=>cc[s],functions:s=>t[s],var:s=>{if(s==="ImaginaryUnit")return`${r}(0.0, 1.0)`;if(s in i)return i[s]},string:s=>JSON.stringify(s),number:Ce,complex:(s,o)=>`${r}(${Ce(s)}, ${Ce(o)})`,indent:0,ws:s=>s??"",preamble:"",declare:(s,o)=>{let a=o??(this.languageId==="wgsl"?"f32":"float");return this.languageId==="wgsl"?`var ${s}: ${a}`:`${a} ${s}`},block:s=>{if(s.length===0)return"";let o=s.length-1;return s[o]=`return ${s[o]}`,s.join(`;
1317
+ `)+";"},...n}}compile(n,t={}){let{functions:i,vars:r}=t,s=this.getFunctions(),o=this.getConstants(),a=this.languageId==="wgsl"?"vec2f":"vec2",u=this.createTarget({functions:p=>{if(i&&p in i){let d=i[p];if(typeof d=="string")return d;if(typeof d=="function")return d.name||p}return s[p]},var:p=>{if(r&&p in r)return r[p];if(p==="ImaginaryUnit")return`${a}(0.0, 1.0)`;if(p in o)return o[p]}}),l=x.compile(n,u),c={target:this.languageId,success:!0,code:l},f="";return f+=Jd(l,this.languageId),l.includes("_gpu_gamma")&&(f+=this.languageId==="wgsl"?bd:gd),l.includes("_gpu_erf")&&(f+=this.languageId==="wgsl"?xd:yd),l.includes("_gpu_heaviside")&&(f+=this.languageId==="wgsl"?Ed:vd),l.includes("_gpu_sinc")&&(f+=this.languageId==="wgsl"?Td:Nd),l.includes("_gpu_fresnel")&&(f+=this.languageId==="wgsl"?_d:Id),l.includes("_gpu_fresnelC")&&(f+=this.languageId==="wgsl"?Md:Sd),l.includes("_gpu_fresnelS")&&(f+=this.languageId==="wgsl"?wd:kd),l.includes("_gpu_besselJ")&&(f+=this.languageId==="wgsl"?Cd:Ad),l.includes("_fractal_")&&(f+=this.languageId==="wgsl"?Rd:$d),l.includes("_gpu_random")&&(f+=this.languageId==="wgsl"?Od:Fd),l.includes("_gpu_gcd")&&(f+=this.languageId==="wgsl"?Dd:Pd),l.includes("_gpu_median_")&&(f+=this.languageId==="wgsl"?Bd:Ld),(l.includes("_gpu_srgb_to")||l.includes("_gpu_oklab")||l.includes("_gpu_oklch")||l.includes("_gpu_color_mix")||l.includes("_gpu_apca"))&&(f+=this.languageId==="wgsl"?qd:Vd),f&&(c.preamble=f),x.withReferences(c,n,u,r?new Set(Object.keys(r)):void 0)}compileToSource(n,t={}){let i=this.createTarget();return x.compile(n,i)}};function mc(e,n){return e.length===2?`vec2(${e.map(t=>n(t)).join(", ")})`:e.length===3?`vec3(${e.map(t=>n(t)).join(", ")})`:e.length===4?`vec4(${e.map(t=>n(t)).join(", ")})`:`float[${e.length}](${e.map(t=>n(t)).join(", ")})`}var Gd={Inversesqrt:"inversesqrt",Mod:"mod",List:mc,Matrix:(e,n)=>qi(e,n,t=>`vec${t}`,t=>`mat${t}`,t=>`float[${t}]`),Tuple:mc},Xn=class extends mn{languageId="glsl";getLanguageSpecificFunctions(){return Gd}compileFunction(n,t,i,r){let s=this.createTarget(),o=x.compile(n,s),a=r.map(([u,l])=>`${l} ${u}`).join(", ");if(o.includes(`
1318
1318
  `)){let u=o.split(`
1319
1319
  `).map(l=>` ${l}`).join(`
1320
1320
  `);return`${i} ${t}(${a}) {
@@ -1332,37 +1332,37 @@ ${u}
1332
1332
  `);for(let f of o)u+=`uniform ${f.type} ${f.name};
1333
1333
  `;o.length>0&&(u+=`
1334
1334
  `),u+=`void main() {
1335
- `;for(let f of a){let m=this.compileToSource(f.expression);u+=` ${f.variable} = ${m};
1335
+ `;for(let f of a){let p=this.compileToSource(f.expression);u+=` ${f.variable} = ${p};
1336
1336
  `}return u+=`}
1337
- `,u}};function Jl(e,n){return e.length===2?`vec2f(${e.map(t=>n(t)).join(", ")})`:e.length===3?`vec3f(${e.map(t=>n(t)).join(", ")})`:e.length===4?`vec4f(${e.map(t=>n(t)).join(", ")})`:`array<f32, ${e.length}>(${e.map(t=>n(t)).join(", ")})`}var dd={Inversesqrt:"inverseSqrt",Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");return`(${t(e)} % ${t(n)})`},Hypot:([e,n],t)=>{if(e===null||n===null)throw new Error("Hypot: need two arguments");return`length(vec2f(${t(e)}, ${t(n)}))`},List:Jl,Matrix:(e,n)=>Pi(e,n,t=>`vec${t}f`,t=>`mat${t}x${t}f`,t=>`array<f32, ${t}>`),Tuple:Jl},hd={float:"f32",int:"i32",uint:"u32",bool:"bool",vec2:"vec2f",vec3:"vec3f",vec4:"vec4f",mat2:"mat2x2f",mat3:"mat3x3f",mat4:"mat4x4f"};function Yn(e){return hd[e]??e}var Fi=class extends fn{languageId="wgsl";getLanguageSpecificFunctions(){return dd}compileFunction(n,t,i,r){let s=this.createTarget(),o=y.compile(n,s),a=r.map(([u,l])=>`${u}: ${Yn(l)}`).join(", ");if(o.includes(`
1337
+ `,u}};function dc(e,n){return e.length===2?`vec2f(${e.map(t=>n(t)).join(", ")})`:e.length===3?`vec3f(${e.map(t=>n(t)).join(", ")})`:e.length===4?`vec4f(${e.map(t=>n(t)).join(", ")})`:`array<f32, ${e.length}>(${e.map(t=>n(t)).join(", ")})`}var jd={Inversesqrt:"inverseSqrt",Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");return`(${t(e)} % ${t(n)})`},Hypot:([e,n],t)=>{if(e===null||n===null)throw new Error("Hypot: need two arguments");return`length(vec2f(${t(e)}, ${t(n)}))`},List:dc,Matrix:(e,n)=>qi(e,n,t=>`vec${t}f`,t=>`mat${t}x${t}f`,t=>`array<f32, ${t}>`),Tuple:dc},Hd={float:"f32",int:"i32",uint:"u32",bool:"bool",vec2:"vec2f",vec3:"vec3f",vec4:"vec4f",mat2:"mat2x2f",mat3:"mat3x3f",mat4:"mat4x4f"};function Qn(e){return Hd[e]??e}var Ji=class extends mn{languageId="wgsl";getLanguageSpecificFunctions(){return jd}compileFunction(n,t,i,r){let s=this.createTarget(),o=x.compile(n,s),a=r.map(([u,l])=>`${u}: ${Qn(l)}`).join(", ");if(o.includes(`
1338
1338
  `)){let u=o.split(`
1339
1339
  `).map(l=>` ${l}`).join(`
1340
- `);return`fn ${t}(${a}) -> ${Yn(i)} {
1340
+ `);return`fn ${t}(${a}) -> ${Qn(i)} {
1341
1341
  ${u}
1342
- }`}return`fn ${t}(${a}) -> ${Yn(i)} {
1342
+ }`}return`fn ${t}(${a}) -> ${Qn(i)} {
1343
1343
  return ${o};
1344
1344
  }`}compileShader(n){let{type:t,inputs:i=[],outputs:r=[],uniforms:s=[],workgroupSize:o,body:a}=n,u="";if(i.length>0){u+=`struct VertexInput {
1345
- `;for(let E of i){let I=E.builtin?`@builtin(${E.builtin})`:`@location(${E.location??0})`;u+=` ${I} ${E.name}: ${Yn(E.type)},
1345
+ `;for(let v of i){let N=v.builtin?`@builtin(${v.builtin})`:`@location(${v.location??0})`;u+=` ${N} ${v.name}: ${Qn(v.type)},
1346
1346
  `}u+=`};
1347
1347
 
1348
1348
  `}if(r.length>0){u+=`struct ${t==="vertex"?"VertexOutput":"FragmentOutput"} {
1349
- `;for(let I of r){let w=I.builtin?`@builtin(${I.builtin})`:`@location(${I.location??0})`;u+=` ${w} ${I.name}: ${Yn(I.type)},
1349
+ `;for(let N of r){let M=N.builtin?`@builtin(${N.builtin})`:`@location(${N.location??0})`;u+=` ${M} ${N.name}: ${Qn(N.type)},
1350
1350
  `}u+=`};
1351
1351
 
1352
- `}for(let E of s){let I=E.group??0,w=E.binding??0;u+=`@group(${I}) @binding(${w}) var<uniform> ${E.name}: ${Yn(E.type)};
1352
+ `}for(let v of s){let N=v.group??0,M=v.binding??0;u+=`@group(${N}) @binding(${M}) var<uniform> ${v.name}: ${Qn(v.type)};
1353
1353
  `}s.length>0&&(u+=`
1354
1354
  `);let l=`@${t}`,c=t==="compute"&&o?`@workgroup_size(${o.join(", ")})
1355
- `:"",f=i.length>0,m=r.length>0,h=t==="vertex"?"VertexOutput":"FragmentOutput",b=f?"input: VertexInput":"",v=m?` -> ${h}`:"";u+=`${l}
1356
- ${c}fn main(${b})${v} {
1357
- `,m&&(u+=` var output: ${h};
1358
- `);for(let E of a){let I=this.compileToSource(E.expression);u+=` ${E.variable} = ${I};
1359
- `}return m&&(u+=` return output;
1355
+ `:"",f=i.length>0,p=r.length>0,d=t==="vertex"?"VertexOutput":"FragmentOutput",b=f?"input: VertexInput":"",y=p?` -> ${d}`:"";u+=`${l}
1356
+ ${c}fn main(${b})${y} {
1357
+ `,p&&(u+=` var output: ${d};
1358
+ `);for(let v of a){let N=this.compileToSource(v.expression);u+=` ${v.variable} = ${N};
1359
+ `}return p&&(u+=` return output;
1360
1360
  `),u+=`}
1361
- `,u}};var zl={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Power:["**",15],Equal:["==",8],NotEqual:["!=",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["and",4],Or:["or",3],Not:["not",14]},Gl={Add:(e,n)=>e.length===0?"0":e.length===1?n(e[0]):e.map(t=>n(t)).join(" + "),Multiply:(e,n)=>e.length===0?"1":e.length===1?n(e[0]):e.map(t=>n(t)).join(" * "),Divide:(e,n)=>{if(e.length===0)return"1";if(e.length===1)return n(e[0]);if(e.length===2)return`${n(e[0])} / ${n(e[1])}`;let t=n(e[0]);for(let i=1;i<e.length;i++)t=`${t} / ${n(e[i])}`;return t},Sin:(e,n)=>y.isComplexValued(e[0])?`cmath.sin(${n(e[0])})`:`np.sin(${n(e[0])})`,Cos:(e,n)=>y.isComplexValued(e[0])?`cmath.cos(${n(e[0])})`:`np.cos(${n(e[0])})`,Tan:(e,n)=>y.isComplexValued(e[0])?`cmath.tan(${n(e[0])})`:`np.tan(${n(e[0])})`,Arcsin:(e,n)=>y.isComplexValued(e[0])?`cmath.asin(${n(e[0])})`:`np.arcsin(${n(e[0])})`,Arccos:(e,n)=>y.isComplexValued(e[0])?`cmath.acos(${n(e[0])})`:`np.arccos(${n(e[0])})`,Arctan:(e,n)=>y.isComplexValued(e[0])?`cmath.atan(${n(e[0])})`:`np.arctan(${n(e[0])})`,Arctan2:"np.arctan2",Sinh:(e,n)=>y.isComplexValued(e[0])?`cmath.sinh(${n(e[0])})`:`np.sinh(${n(e[0])})`,Cosh:(e,n)=>y.isComplexValued(e[0])?`cmath.cosh(${n(e[0])})`:`np.cosh(${n(e[0])})`,Tanh:(e,n)=>y.isComplexValued(e[0])?`cmath.tanh(${n(e[0])})`:`np.tanh(${n(e[0])})`,Arsinh:"np.arcsinh",Arcosh:"np.arccosh",Artanh:"np.arctanh",Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return`(np.cos(${n(e)}) / np.sin(${n(e)}))`},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return`(1 / np.sin(${n(e)}))`},Sec:([e],n)=>{if(e===null)throw new Error("Sec: no argument");return`(1 / np.cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`np.arctan(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`np.arcsin(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`np.arccos(1 / (${n(e)}))`},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return`(np.cosh(${n(e)}) / np.sinh(${n(e)}))`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return`(1 / np.sinh(${n(e)}))`},Sech:([e],n)=>{if(e===null)throw new Error("Sech: no argument");return`(1 / np.cosh(${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`np.arctanh(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`np.arcsinh(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`np.arccosh(1 / (${n(e)}))`},Lb:"np.log2",Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`np.square(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`np.modf(${n(e)})[0]`},Exp:(e,n)=>y.isComplexValued(e[0])?`cmath.exp(${n(e[0])})`:`np.exp(${n(e[0])})`,Ln:(e,n)=>y.isComplexValued(e[0])?`cmath.log(${n(e[0])})`:`np.log(${n(e[0])})`,Log:(e,n)=>e.length===1?`np.log10(${n(e[0])})`:e.length===2?`(np.log(${n(e[0])}) / np.log(${n(e[1])}))`:"np.log10",Log10:"np.log10",Log2:"np.log2",Exp2:"np.exp2",Power:(e,n)=>e.length!==2?"np.power":y.isComplexValued(e[0])||y.isComplexValued(e[1])?`(${n(e[0])} ** ${n(e[1])})`:`np.power(${n(e[0])}, ${n(e[1])})`,Sqrt:(e,n)=>y.isComplexValued(e[0])?`cmath.sqrt(${n(e[0])})`:`np.sqrt(${n(e[0])})`,Root:(e,n)=>e.length!==2?"np.power":`np.power(${n(e[0])}, 1.0 / ${n(e[1])})`,Abs:(e,n)=>y.isComplexValued(e[0])?`abs(${n(e[0])})`:`np.abs(${n(e[0])})`,Sign:"np.sign",Floor:"np.floor",Ceil:"np.ceil",Round:"np.round",Truncate:"np.trunc",Min:"np.minimum",Max:"np.maximum",Mod:"np.mod",Remainder:"np.remainder",Real:"np.real",Imaginary:"np.imag",Argument:"np.angle",Conjugate:"np.conj",Sum:"np.sum",Product:"np.prod",Mean:"np.mean",Median:"np.median",Variance:"np.var",StandardDeviation:"np.std",Dot:"np.dot",Cross:"np.cross",Norm:"np.linalg.norm",Determinant:"np.linalg.det",Inverse:"np.linalg.inv",Transpose:"np.transpose",MatrixMultiply:"np.matmul",Equal:"np.equal",NotEqual:"np.not_equal",Less:"np.less",LessEqual:"np.less_equal",Greater:"np.greater",GreaterEqual:"np.greater_equal",And:"np.logical_and",Or:"np.logical_or",Not:"np.logical_not",Erf:"scipy.special.erf",Erfc:"scipy.special.erfc",Gamma:"scipy.special.gamma",GammaLn:"scipy.special.loggamma",Factorial:"scipy.special.factorial",List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>`np.array(${n(e[0])})`,Tuple:(e,n)=>`(${e.map(t=>n(t)).join(", ")})`,Sequence:(e,n)=>`np.array([${e.map(t=>n(t)).join(", ")}])`,Range:(e,n)=>e.length===1?`np.arange(${n(e[0])})`:e.length===2?`np.arange(${n(e[0])}, ${n(e[1])})`:e.length===3?`np.arange(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:"np.arange"},Oi=class{includeImports;useScipy;constructor(n={}){this.includeImports=n.includeImports??!1,this.useScipy=n.useScipy??!1}getOperators(){return zl}getFunctions(){return Gl}createTarget(n={}){return{language:"python",operators:t=>zl[t],functions:t=>Gl[t],var:t=>{let i={Pi:"np.pi",ExponentialE:"np.e",ImaginaryUnit:"1j",Infinity:"np.inf",NaN:"np.nan",GoldenRatio:"((1 + np.sqrt(5)) / 2)",CatalanConstant:"0.915965594177219015054603514932384110774",EulerGamma:"0.5772156649015328606065120900824024310421"};return t in i?i[t]:t},complex:(t,i)=>`complex(${t}, ${i})`,string:t=>JSON.stringify(t),number:t=>isFinite(t)?t.toString():t===1/0?"np.inf":t===-1/0?"-np.inf":"np.nan",indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){return{target:"python",success:!0,code:this.compileToSource(n,t)}}compileToSource(n,t={}){let i=this.createTarget(),r=y.compile(n,i);if(this.includeImports){let s=`import numpy as np
1361
+ `,u}};var hc={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Power:["**",15],Equal:["==",8],NotEqual:["!=",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["and",4],Or:["or",3],Not:["not",14]},gc={Add:(e,n)=>e.length===0?"0":e.length===1?n(e[0]):e.map(t=>n(t)).join(" + "),Multiply:(e,n)=>e.length===0?"1":e.length===1?n(e[0]):e.map(t=>n(t)).join(" * "),Divide:(e,n)=>{if(e.length===0)return"1";if(e.length===1)return n(e[0]);if(e.length===2)return`${n(e[0])} / ${n(e[1])}`;let t=n(e[0]);for(let i=1;i<e.length;i++)t=`${t} / ${n(e[i])}`;return t},Sin:(e,n)=>x.isComplexValued(e[0])?`cmath.sin(${n(e[0])})`:`np.sin(${n(e[0])})`,Cos:(e,n)=>x.isComplexValued(e[0])?`cmath.cos(${n(e[0])})`:`np.cos(${n(e[0])})`,Tan:(e,n)=>x.isComplexValued(e[0])?`cmath.tan(${n(e[0])})`:`np.tan(${n(e[0])})`,Arcsin:(e,n)=>x.isComplexValued(e[0])?`cmath.asin(${n(e[0])})`:`np.arcsin(${n(e[0])})`,Arccos:(e,n)=>x.isComplexValued(e[0])?`cmath.acos(${n(e[0])})`:`np.arccos(${n(e[0])})`,Arctan:(e,n)=>x.isComplexValued(e[0])?`cmath.atan(${n(e[0])})`:`np.arctan(${n(e[0])})`,Arctan2:"np.arctan2",Sinh:(e,n)=>x.isComplexValued(e[0])?`cmath.sinh(${n(e[0])})`:`np.sinh(${n(e[0])})`,Cosh:(e,n)=>x.isComplexValued(e[0])?`cmath.cosh(${n(e[0])})`:`np.cosh(${n(e[0])})`,Tanh:(e,n)=>x.isComplexValued(e[0])?`cmath.tanh(${n(e[0])})`:`np.tanh(${n(e[0])})`,Arsinh:"np.arcsinh",Arcosh:"np.arccosh",Artanh:"np.arctanh",Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return`(np.cos(${n(e)}) / np.sin(${n(e)}))`},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return`(1 / np.sin(${n(e)}))`},Sec:([e],n)=>{if(e===null)throw new Error("Sec: no argument");return`(1 / np.cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`np.arctan(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`np.arcsin(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`np.arccos(1 / (${n(e)}))`},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return`(np.cosh(${n(e)}) / np.sinh(${n(e)}))`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return`(1 / np.sinh(${n(e)}))`},Sech:([e],n)=>{if(e===null)throw new Error("Sech: no argument");return`(1 / np.cosh(${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`np.arctanh(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`np.arcsinh(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`np.arccosh(1 / (${n(e)}))`},Lb:"np.log2",Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`np.square(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`np.modf(${n(e)})[0]`},Exp:(e,n)=>x.isComplexValued(e[0])?`cmath.exp(${n(e[0])})`:`np.exp(${n(e[0])})`,Ln:(e,n)=>x.isComplexValued(e[0])?`cmath.log(${n(e[0])})`:`np.log(${n(e[0])})`,Log:(e,n)=>e.length===1?`np.log10(${n(e[0])})`:e.length===2?`(np.log(${n(e[0])}) / np.log(${n(e[1])}))`:"np.log10",Log10:"np.log10",Log2:"np.log2",Exp2:"np.exp2",Power:(e,n)=>e.length!==2?"np.power":x.isComplexValued(e[0])||x.isComplexValued(e[1])?`(${n(e[0])} ** ${n(e[1])})`:`np.power(${n(e[0])}, ${n(e[1])})`,Sqrt:(e,n)=>x.isComplexValued(e[0])?`cmath.sqrt(${n(e[0])})`:`np.sqrt(${n(e[0])})`,Root:(e,n)=>e.length!==2?"np.power":`np.power(${n(e[0])}, 1.0 / ${n(e[1])})`,Abs:(e,n)=>x.isComplexValued(e[0])?`abs(${n(e[0])})`:`np.abs(${n(e[0])})`,Sign:"np.sign",Floor:"np.floor",Ceil:"np.ceil",Round:"np.round",Truncate:"np.trunc",Min:"np.minimum",Max:"np.maximum",Mod:"np.mod",Remainder:"np.remainder",Real:"np.real",Imaginary:"np.imag",Argument:"np.angle",Conjugate:"np.conj",Sum:"np.sum",Product:"np.prod",Mean:"np.mean",Median:"np.median",Variance:"np.var",StandardDeviation:"np.std",Dot:"np.dot",Cross:"np.cross",Norm:"np.linalg.norm",Determinant:"np.linalg.det",Inverse:"np.linalg.inv",Transpose:"np.transpose",MatrixMultiply:"np.matmul",Equal:"np.equal",NotEqual:"np.not_equal",Less:"np.less",LessEqual:"np.less_equal",Greater:"np.greater",GreaterEqual:"np.greater_equal",And:"np.logical_and",Or:"np.logical_or",Not:"np.logical_not",Erf:"scipy.special.erf",Erfc:"scipy.special.erfc",Gamma:"scipy.special.gamma",GammaLn:"scipy.special.loggamma",Factorial:"scipy.special.factorial",List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>`np.array(${n(e[0])})`,Tuple:(e,n)=>`(${e.map(t=>n(t)).join(", ")})`,Sequence:(e,n)=>`np.array([${e.map(t=>n(t)).join(", ")}])`,Range:(e,n)=>e.length===1?`np.arange(${n(e[0])})`:e.length===2?`np.arange(${n(e[0])}, ${n(e[1])})`:e.length===3?`np.arange(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:"np.arange"},zi=class{includeImports;useScipy;constructor(n={}){this.includeImports=n.includeImports??!1,this.useScipy=n.useScipy??!1}getOperators(){return hc}getFunctions(){return gc}createTarget(n={}){return{language:"python",operators:t=>hc[t],functions:t=>gc[t],var:t=>{let i={Pi:"np.pi",ExponentialE:"np.e",ImaginaryUnit:"1j",Infinity:"np.inf",NaN:"np.nan",GoldenRatio:"((1 + np.sqrt(5)) / 2)",CatalanConstant:"0.915965594177219015054603514932384110774",EulerGamma:"0.5772156649015328606065120900824024310421"};return t in i?i[t]:t},complex:(t,i)=>`complex(${t}, ${i})`,string:t=>JSON.stringify(t),number:t=>isFinite(t)?t.toString():t===1/0?"np.inf":t===-1/0?"-np.inf":"np.nan",indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){let r={target:"python",success:!0,code:this.compileToSource(n,t)};return x.withReferences(r,n,this.createTarget(),t.vars?new Set(Object.keys(t.vars)):void 0)}compileToSource(n,t={}){let i=this.createTarget(),r=x.compile(n,i);if(this.includeImports){let s=`import numpy as np
1362
1362
  `;return s+=`import cmath
1363
1363
  `,this.useScipy&&(s+=`import scipy.special
1364
1364
  `),`${s}
1365
- ${r}`}return r}compileFunction(n,t,i,r){let s=this.createTarget(),o=y.compile(n,s),a=i.join(", "),u="";return this.includeImports&&(u+=`import numpy as np
1365
+ ${r}`}return r}compileFunction(n,t,i,r){let s=this.createTarget(),o=x.compile(n,s),a=i.join(", "),u="";return this.includeImports&&(u+=`import numpy as np
1366
1366
  `,u+=`import cmath
1367
1367
  `,this.useScipy&&(u+=`import scipy.special
1368
1368
  `),u+=`
@@ -1372,16 +1372,262 @@ ${r}`}return r}compileFunction(n,t,i,r){let s=this.createTarget(),o=y.compile(n,
1372
1372
  `,u}compileVectorized(n,t,i,r){let o=this.compileFunction(n,`_${t}_scalar`,i,r)+`
1373
1373
  `;return o+=`# Vectorized version
1374
1374
  `,o+=`${t} = np.vectorize(_${t}_scalar)
1375
- `,o}compileLambda(n,t){let i=this.createTarget(),r=y.compile(n,i);return`lambda ${t.join(", ")}: ${r}`}};function N(e){return{kind:"interval",value:e}}function ls(e){return{lo:e,hi:e}}function fe(e,n,t){let i=Math.ceil((e.lo-n)/t),r=n+i*t,s=1e-15;return r>=e.lo-s&&r<=e.hi+s}function Wn(e,n){if(e.kind==="empty")return n;if(n.kind==="empty")return e;if(e.kind==="singular"||n.kind==="singular")return{kind:"singular"};if(e.kind==="entire"||n.kind==="entire")return{kind:"entire"};let t=e.value,i=n.value,r=e.kind==="partial"?e.domainClipped:null,s=n.kind==="partial"?n.domainClipped:null,o={lo:Math.min(t.lo,i.lo),hi:Math.max(t.hi,i.hi)};if(r||s){let a=Bi(r,s);return{kind:"partial",value:o,domainClipped:a}}return{kind:"interval",value:o}}function Bi(e,n){return e==="both"||n==="both"?"both":e===null?n:n===null||e===n?e:"both"}function cs(e){return e.lo===e.hi}function de(e){return e.lo<=0&&e.hi>=0}function fs(e){return e.lo>0}function wt(e){return e.hi<0}function ps(e){return e.lo>=0}function ms(e){return e.hi<=0}function ds(e){return e.hi-e.lo}function hs(e){return(e.lo+e.hi)/2}function gs(e){if(e.kind==="interval"||e.kind==="partial")return e.value}function bs(e){return"kind"in e?e.kind==="interval"||e.kind==="partial"?e.value:void 0:e}function k(...e){let n=[];for(let t of e)if("kind"in t){if(t.kind==="empty")return{kind:"empty"};if(t.kind==="entire")return{kind:"entire"};if(t.kind==="singular")return t;n.push(t.value)}else n.push(t);return n}function ys(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return N({lo:i.lo+r.lo,hi:i.hi+r.hi})}function At(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return N({lo:i.lo-r.hi,hi:i.hi-r.lo})}function xs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:-t.hi,hi:-t.lo})}function vs(e,n){let t=[Li(e.lo,n.lo),Li(e.lo,n.hi),Li(e.hi,n.lo),Li(e.hi,n.hi)];return{lo:Math.min(...t),hi:Math.max(...t)}}function Li(e,n){return e===0||n===0?0:e*n}function Ct(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return N(vs(i,r))}function he(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return gd(i,r)}function gd(e,n){return n.lo>0||n.hi<0?N(vs(e,{lo:1/n.hi,hi:1/n.lo})):n.lo<0&&n.hi>0?{kind:"singular"}:n.lo===0&&n.hi>0?e.lo>=0?{kind:"partial",value:{lo:e.lo/n.hi,hi:1/0},domainClipped:"hi"}:e.hi<=0?{kind:"partial",value:{lo:-1/0,hi:e.hi/n.hi},domainClipped:"lo"}:{kind:"entire"}:n.hi===0&&n.lo<0?e.lo>=0?{kind:"partial",value:{lo:-1/0,hi:e.lo/n.lo},domainClipped:"lo"}:e.hi<=0?{kind:"partial",value:{lo:e.hi/n.lo,hi:1/0},domainClipped:"hi"}:{kind:"entire"}:{kind:"empty"}}function Ns(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return bd(t)}function bd(e){return e.hi<0?{kind:"empty"}:e.lo>=0?N({lo:Math.sqrt(e.lo),hi:Math.sqrt(e.hi)}):{kind:"partial",value:{lo:0,hi:Math.sqrt(e.hi)},domainClipped:"lo"}}function Ts(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>=0?N({lo:t.lo*t.lo,hi:t.hi*t.hi}):t.hi<=0?N({lo:t.hi*t.hi,hi:t.lo*t.lo}):N({lo:0,hi:Math.max(t.lo*t.lo,t.hi*t.hi)})}function jl(e,n){return n===0?{lo:1,hi:1}:n===1?e:n%2===0?e.lo>=0?{lo:Math.pow(e.lo,n),hi:Math.pow(e.hi,n)}:e.hi<=0?{lo:Math.pow(e.hi,n),hi:Math.pow(e.lo,n)}:{lo:0,hi:Math.max(Math.pow(e.lo,n),Math.pow(e.hi,n))}:{lo:Math.pow(e.lo,n),hi:Math.pow(e.hi,n)}}function Vi(e,n){let t=k(e);if(!Array.isArray(t))return t;let[i]=t;if(Number.isInteger(n)){if(n>=0)return N(jl(i,n));{if(de(i))return{kind:"singular"};let r=jl(i,-n);return N({lo:1/r.hi,hi:1/r.lo})}}else return wt(i)?{kind:"empty"}:i.lo<0?{kind:"partial",value:n>0?{lo:0,hi:Math.pow(i.hi,n)}:{lo:Math.pow(i.hi,n),hi:1/0},domainClipped:"lo"}:n>0?N({lo:Math.pow(i.lo,n),hi:Math.pow(i.hi,n)}):i.lo===0?{kind:"partial",value:{lo:Math.pow(i.hi,n),hi:1/0},domainClipped:"hi"}:N({lo:Math.pow(i.hi,n),hi:Math.pow(i.lo,n)})}function Is(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;if(r.lo===r.hi&&Number.isInteger(r.lo))return Vi(i,r.lo);if(i.hi<=0)return i.lo===-1&&i.hi===-1&&Math.floor(r.hi)>Math.floor(r.lo)?N({lo:-1,hi:1}):{kind:"empty"};if(i.lo<=0){let o={lo:Math.max(i.lo,Number.EPSILON),hi:i.hi},a=[Math.pow(o.lo,r.lo),Math.pow(o.lo,r.hi),Math.pow(o.hi,r.lo),Math.pow(o.hi,r.hi)];return{kind:"partial",value:{lo:Math.min(...a),hi:Math.max(...a)},domainClipped:"lo"}}let s=[Math.pow(i.lo,r.lo),Math.pow(i.lo,r.hi),Math.pow(i.hi,r.lo),Math.pow(i.hi,r.hi)];return N({lo:Math.min(...s),hi:Math.max(...s)})}function _s(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Math.exp(t.lo),hi:Math.exp(t.hi)})}function Ss(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<=0?{kind:"empty"}:t.lo>0?N({lo:Math.log(t.lo),hi:Math.log(t.hi)}):{kind:"partial",value:{lo:-1/0,hi:Math.log(t.hi)},domainClipped:"lo"}}function ks(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<=0?{kind:"empty"}:t.lo>0?N({lo:Math.log10(t.lo),hi:Math.log10(t.hi)}):{kind:"partial",value:{lo:-1/0,hi:Math.log10(t.hi)},domainClipped:"lo"}}function Ms(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<=0?{kind:"empty"}:t.lo>0?N({lo:Math.log2(t.lo),hi:Math.log2(t.hi)}):{kind:"partial",value:{lo:-1/0,hi:Math.log2(t.hi)},domainClipped:"lo"}}function ws(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>=0?N(t):t.hi<=0?N({lo:-t.hi,hi:-t.lo}):N({lo:0,hi:Math.max(-t.lo,t.hi)})}function As(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.floor(t.lo),r=Math.floor(t.hi);return i===r?N({lo:i,hi:r}):{kind:"singular",at:i+1,continuity:"right"}}function Cs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.ceil(t.lo),r=Math.ceil(t.hi);return i===r?N({lo:i,hi:r}):{kind:"singular",at:i,continuity:"left"}}function qi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.round(t.lo),r=Math.round(t.hi);return i===r?N({lo:i,hi:r}):{kind:"singular",at:i+.5,continuity:"right"}}function $s(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.floor(t.lo),r=Math.floor(t.hi);return i===r?N({lo:t.lo-i,hi:t.hi-i}):{kind:"singular",at:i+1,continuity:"right"}}function Rs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.trunc(t.lo),r=Math.trunc(t.hi);if(i===r)return N({lo:i,hi:r});if(t.lo>=0)return{kind:"singular",at:i+1,continuity:"right"};let s=Math.ceil(t.lo);return s!==0?{kind:"singular",at:s,continuity:"left"}:{kind:"singular",at:1,continuity:"right"}}function Ps(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return N({lo:Math.min(i.lo,r.lo),hi:Math.min(i.hi,r.hi)})}function Ds(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return N({lo:Math.max(i.lo,r.lo),hi:Math.max(i.hi,r.hi)})}function Fs(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;if(de(r))return{kind:"singular"};let s=Math.abs(r.lo===r.hi?r.lo:Math.max(Math.abs(r.lo),Math.abs(r.hi))),o=r.hi<0,a=Math.floor(i.lo/s),u=Math.floor(i.hi/s);if(a!==u)return{kind:"singular",at:(a+1)*s,continuity:"right"};let l=i.lo-s*a,c=i.hi-s*a;return o?l===0?{kind:"singular",at:i.lo,continuity:"right"}:N({lo:l-s,hi:c-s}):N({lo:Math.min(l,c),hi:Math.max(l,c)})}function Os(e,n){return At(e,Ct(n,qi(he(e,n))))}function Bs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>0?N({lo:1,hi:1}):t.hi<0?N({lo:0,hi:0}):t.lo===0&&t.hi===0?N({lo:.5,hi:.5}):{kind:"singular",at:0}}function Ls(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>0?N({lo:1,hi:1}):t.hi<0?N({lo:-1,hi:-1}):t.lo===0&&t.hi===0?N({lo:0,hi:0}):{kind:"singular",at:0}}var Hl=1.4616321449683622,yd=.8856031944108887;function Vs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return xd(t)}var Ul=[-.504083008264455,-1.573498473162391,-2.610720868444145,-3.635293366436901,-4.653163765628266,-5.667162441556885,-6.678418213073426,-7.687788325031709,-8.695764163640956,-9.702672540001863];function Yl(e){let t=-Math.floor(e)-1;return t>=0&&t<Ul.length?Ul[t]:null}function xd(e){if(e.hi>=0&&e.lo<=0)return{kind:"singular",at:0};if(e.lo<0){let n=Math.ceil(e.lo),t=Math.floor(e.hi);if(n<=t)return{kind:"singular",at:n};let i=te(e.lo),r=te(e.hi),s=Math.min(i,r),o=Math.max(i,r),a=Yl(e.lo);if(a!==null){if(a>=e.lo&&a<=e.hi){let u=te(a);s=Math.min(s,u),o=Math.max(o,u)}}else Math.floor(e.lo)%2===0?s=Math.min(s,0):o=Math.max(o,0);return N({lo:s,hi:o})}return e.lo>=Hl?N({lo:te(e.lo),hi:te(e.hi)}):e.hi<=Hl?N({lo:te(e.hi),hi:te(e.lo)}):N({lo:yd,hi:Math.max(te(e.lo),te(e.hi))})}function qs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return vd(t)}function vd(e){if(e.hi>=0&&e.lo<=0)return{kind:"singular",at:0};if(e.lo<0){let n=Math.ceil(e.lo),t=Math.floor(e.hi);if(n<=t)return{kind:"singular",at:n};let i=ke(e.lo),r=ke(e.hi),s=Math.min(i,r),o=Math.max(i,r),a=Yl(e.lo);return a!==null?a>=e.lo&&a<=e.hi&&(s=Math.min(s,ke(a))):s=-1/0,N({lo:s,hi:o})}return N({lo:ke(e.lo),hi:ke(e.hi)})}function Js(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo<0)return{kind:"empty"};let i=rt(Math.round(t.lo)),r=rt(Math.round(t.hi));return!Number.isFinite(i)||!Number.isFinite(r)?N({lo:Math.min(i,r),hi:Math.max(i,r)}):N({lo:i,hi:r})}function zs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo<0)return{kind:"empty"};let i=st(Math.round(t.lo)),r=st(Math.round(t.hi));return!Number.isFinite(i)||!Number.isFinite(r)?N({lo:Math.min(i,r),hi:Math.max(i,r)}):N({lo:i,hi:r})}var Es=4096;function Zl(e,n,t){let i=Math.round(e),r=Math.round(n);if(!Number.isFinite(i)||!Number.isFinite(r)||r-i+1>t)return null;let s=[];for(let o=i;o<=r;o++)s.push(o);return s}function Gs(e,n,t){let i=Zl(e.lo,e.hi,Es),r=Zl(n.lo,n.hi,Es);if(!i||!r||i.length*r.length>Es)return null;let s=1/0,o=-1/0;for(let a of i)for(let u of r){let l=t(a,u);Number.isFinite(l)&&(l<s&&(s=l),l>o&&(o=l))}return s===1/0?null:N({lo:s,hi:o})}function js(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=Gs(r,s,St);if(o)return o;let a=Math.round(r.hi);return N({lo:0,hi:St(a,Math.floor(a/2))})}function Hs(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=Gs(r,s,bn);if(o)return o;let a=Math.max(Math.abs(Math.round(r.lo)),Math.abs(Math.round(r.hi)),Math.abs(Math.round(s.lo)),Math.abs(Math.round(s.hi)));return N({lo:0,hi:a})}function Us(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=Gs(r,s,it);if(o)return o;let a=Math.max(Math.abs(Math.round(r.lo)),Math.abs(Math.round(r.hi))),u=Math.max(Math.abs(Math.round(s.lo)),Math.abs(Math.round(s.hi)));return N({lo:0,hi:a*u})}function Wl(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:ot(t.lo),hi:ot(t.hi)})}function Xl(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:An(t.lo),hi:An(t.hi)})}function Ql(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Un(t.hi),hi:Un(t.lo)})}function Kl(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Math.pow(2,t.lo),hi:Math.pow(2,t.hi)})}function ec(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=[Math.hypot(r.lo,s.lo),Math.hypot(r.lo,s.hi),Math.hypot(r.hi,s.lo),Math.hypot(r.hi,s.hi)],a=Math.min(...o);return r.lo<=0&&r.hi>=0&&(a=Math.min(a,Math.abs(s.lo),Math.abs(s.hi))),s.lo<=0&&s.hi>=0&&(a=Math.min(a,Math.abs(r.lo),Math.abs(r.hi))),r.lo<=0&&r.hi>=0&&s.lo<=0&&s.hi>=0&&(a=0),N({lo:a,hi:Math.max(...o)})}var qe=2*Math.PI,se=Math.PI,pn=Math.PI/2,nc=3*Math.PI/2;function Xs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=qe)return N({lo:-1,hi:1});let i=Math.sin(t.lo),r=Math.sin(t.hi),s=Math.min(i,r),o=Math.max(i,r);return fe(t,pn,qe)&&(o=1),fe(t,nc,qe)&&(s=-1),N({lo:s,hi:o})}function Qs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=qe)return N({lo:-1,hi:1});let i=Math.cos(t.lo),r=Math.cos(t.hi),s=Math.min(i,r),o=Math.max(i,r);return fe(t,0,qe)&&(o=1),fe(t,se,qe)&&(s=-1),N({lo:s,hi:o})}function Ks(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=se)return{kind:"singular"};if(fe(t,pn,se)){let s=Math.ceil((t.lo-pn)/se);return{kind:"singular",at:pn+s*se}}let i=Math.tan(t.lo),r=Math.tan(t.hi);return i>1e10&&r<-1e10||i<-1e10&&r>1e10?{kind:"singular"}:N({lo:i,hi:r})}function eo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=se)return{kind:"singular"};if(fe(t,0,se))return{kind:"singular",at:Math.ceil(t.lo/se)*se};let i=1/Math.tan(t.lo),r=1/Math.tan(t.hi);return N({lo:Math.min(i,r),hi:Math.max(i,r)})}function no(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=se)return{kind:"singular"};if(fe(t,pn,se)){let a=Math.ceil((t.lo-pn)/se);return{kind:"singular",at:pn+a*se}}let i=1/Math.cos(t.lo),r=1/Math.cos(t.hi),s=Math.min(i,r),o=Math.max(i,r);return fe(t,0,qe)&&(s=Math.min(s,1),o=Math.max(o,1)),fe(t,se,qe)&&(s=Math.min(s,-1),o=Math.max(o,-1)),N({lo:s,hi:o})}function to(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=se)return{kind:"singular"};if(fe(t,0,se))return{kind:"singular",at:Math.ceil(t.lo/se)*se};let i=1/Math.sin(t.lo),r=1/Math.sin(t.hi),s=Math.min(i,r),o=Math.max(i,r);return fe(t,pn,qe)&&(s=Math.min(s,1),o=Math.max(o,1)),fe(t,nc,qe)&&(s=Math.min(s,-1),o=Math.max(o,-1)),N({lo:s,hi:o})}function Ji(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo>1||t.hi<-1)return{kind:"empty"};if(t.lo<-1||t.hi>1){let i=Math.max(t.lo,-1),r=Math.min(t.hi,1);return{kind:"partial",value:{lo:Math.asin(i),hi:Math.asin(r)},domainClipped:t.lo<-1&&t.hi>1?"both":t.lo<-1?"lo":"hi"}}return N({lo:Math.asin(t.lo),hi:Math.asin(t.hi)})}function zi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo>1||t.hi<-1)return{kind:"empty"};if(t.lo<-1||t.hi>1){let i=Math.max(t.lo,-1),r=Math.min(t.hi,1);return{kind:"partial",value:{lo:Math.acos(r),hi:Math.acos(i)},domainClipped:t.lo<-1&&t.hi>1?"both":t.lo<-1?"lo":"hi"}}return N({lo:Math.acos(t.hi),hi:Math.acos(t.lo)})}function Gi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Math.atan(t.lo),hi:Math.atan(t.hi)})}function io(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;if(i.lo===i.hi&&r.lo===r.hi){let o=Math.atan2(i.lo,r.lo);return N({lo:o,hi:o})}let s=[];return s.push(Math.atan2(i.lo,r.lo)),s.push(Math.atan2(i.lo,r.hi)),s.push(Math.atan2(i.hi,r.lo)),s.push(Math.atan2(i.hi,r.hi)),r.lo<0&&i.lo<0&&i.hi>0?N({lo:-se,hi:se}):N({lo:Math.min(...s),hi:Math.max(...s)})}function $t(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Math.sinh(t.lo),hi:Math.sinh(t.hi)})}function Rt(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>=0?N({lo:Math.cosh(t.lo),hi:Math.cosh(t.hi)}):t.hi<=0?N({lo:Math.cosh(t.hi),hi:Math.cosh(t.lo)}):N({lo:1,hi:Math.max(Math.cosh(t.lo),Math.cosh(t.hi))})}function ro(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Math.tanh(t.lo),hi:Math.tanh(t.hi)})}function ji(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return N({lo:Math.asinh(t.lo),hi:Math.asinh(t.hi)})}function Hi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<1?{kind:"empty"}:t.lo<1?{kind:"partial",value:{lo:0,hi:Math.acosh(t.hi)},domainClipped:"lo"}:N({lo:Math.acosh(t.lo),hi:Math.acosh(t.hi)})}function Ui(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo>=1||t.hi<=-1)return{kind:"empty"};if(t.lo<=-1||t.hi>=1){let i=Math.max(t.lo,-1+Number.EPSILON),r=Math.min(t.hi,1-Number.EPSILON);return{kind:"partial",value:{lo:Math.atanh(i),hi:Math.atanh(r)},domainClipped:t.lo<=-1&&t.hi>=1?"both":t.lo<=-1?"lo":"hi"}}return N({lo:Math.atanh(t.lo),hi:Math.atanh(t.hi)})}function so(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:Gi(he(N({lo:1,hi:1}),N(t)))}function oo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:Ji(he(N({lo:1,hi:1}),N(t)))}function ao(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:zi(he(N({lo:1,hi:1}),N(t)))}function uo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:he(Rt(t),$t(t))}function lo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:he(N({lo:1,hi:1}),$t(t))}function co(e){return he(N({lo:1,hi:1}),Rt(e))}function fo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:Ui(he(N({lo:1,hi:1}),N(t)))}function po(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:ji(he(N({lo:1,hi:1}),N(t)))}function mo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return de(t)?{kind:"singular",at:0}:Hi(he(N({lo:1,hi:1}),N(t)))}var Zs=[4.49341,7.72525,10.90412,14.06619,17.22076,20.3713,23.51945,26.66605,29.8116,32.95639];function ho(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=l=>l===0?1:Math.sin(l)/l,r=i(t.lo),s=r,o=l=>{l<r&&(r=l),l>s&&(s=l)};o(i(t.hi)),t.lo<=0&&t.hi>=0&&o(1);let a=Zs[Zs.length-1];for(let l of Zs)l>=t.lo&&l<=t.hi&&o(i(l)),-l>=t.lo&&-l<=t.hi&&o(i(-l));let u=1/0;return t.hi>a&&(u=Math.min(u,Math.max(t.lo,a))),t.lo<-a&&(u=Math.min(u,-Math.min(t.hi,-a))),Number.isFinite(u)&&u>0&&(o(1/u),o(-1/u)),N({lo:r,hi:s})}var Ys=[],Ws=[];for(let e=1;e<=20;e++)Ys.push(Math.sqrt(2*e)),Ws.push(Math.sqrt(2*e-1));function go(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=ln(t.lo),r=i,s=o=>{o<i&&(i=o),o>r&&(r=o)};s(ln(t.hi)),t.lo<=0&&t.hi>=0&&s(0);for(let o of Ys)o>=t.lo&&o<=t.hi&&s(ln(o)),-o>=t.lo&&-o<=t.hi&&s(ln(-o));return tc(t,Ys,ln,s),N({lo:i,hi:r})}function tc(e,n,t,i){let r=n[n.length-1],s=Math.abs(t(r)-.5);e.hi>r&&(i(.5+s),i(.5-s)),e.lo<-r&&(i(-.5-s),i(-.5+s))}function bo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=cn(t.lo),r=i,s=o=>{o<i&&(i=o),o>r&&(r=o)};s(cn(t.hi)),t.lo<=0&&t.hi>=0&&s(0);for(let o of Ws)o>=t.lo&&o<=t.hi&&s(cn(o)),-o>=t.lo&&-o<=t.hi&&s(cn(-o));return tc(t,Ws,cn,s),N({lo:i,hi:r})}function mn(e){return"kind"in e?e:{kind:"interval",value:e}}function yo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.hi<r.lo?"true":i.lo>=r.hi?"false":"maybe"}function xo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.hi<=r.lo?"true":i.lo>r.hi?"false":"maybe"}function vo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.lo>r.hi?"true":i.hi<=r.lo?"false":"maybe"}function Eo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.lo>=r.hi?"true":i.hi<r.lo?"false":"maybe"}function Zi(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.lo===i.hi&&r.lo===r.hi&&i.lo===r.lo?"true":i.hi<r.lo||r.hi<i.lo?"false":"maybe"}function No(e,n){let t=Zi(e,n);return t==="true"?"false":t==="false"?"true":"maybe"}function To(e,n){return e==="false"||n==="false"?"false":e==="true"&&n==="true"?"true":"maybe"}function Io(e,n){return e==="true"||n==="true"?"true":e==="false"&&n==="false"?"false":"maybe"}function _o(e){return e==="true"?"false":e==="false"?"true":"maybe"}function So(e,n,t,i){if(e==="true"||e==="false"||e==="maybe"){let f=e,m=n,h=t;switch(f){case"true":return mn(m());case"false":return mn(h());case"maybe":return Wn(mn(m()),mn(h()))}}let r=e,s=n,o=t,a=i,u=k(r);if(!Array.isArray(u))return u;let[l]=u;switch(s(l)){case"true":return mn(o(l));case"false":return mn(a(l));case"maybe":let f=mn(o(l)),m=mn(a(l));return Wn(f,m)}}function ko(e,n,t){let i=k(e,n,t);if(!Array.isArray(i))return i;let[r,s,o]=i,a={lo:Math.max(r.lo,s.lo),hi:Math.max(r.hi,s.hi)},u=Math.min(a.lo,o.lo),l=Math.min(a.hi,o.hi);return{kind:"interval",value:{lo:u,hi:l}}}var ic={ok:N,point:ls,containsExtremum:fe,unionResults:Wn,mergeDomainClip:Bi,isPoint:cs,containsZero:de,isPositive:fs,isNegative:wt,isNonNegative:ps,isNonPositive:ms,width:ds,midpoint:hs,getValue:gs,unwrap:bs,unwrapOrPropagate:k,add:ys,sub:At,mul:Ct,div:he,negate:xs,sqrt:Ns,square:Ts,pow:Vi,powInterval:Is,exp:_s,ln:Ss,log10:ks,log2:Ms,abs:ws,floor:As,ceil:Cs,round:qi,fract:$s,trunc:Rs,min:Ps,max:Ds,mod:Fs,remainder:Os,heaviside:Bs,sign:Ls,gamma:Vs,gammaln:qs,factorial:Js,factorial2:zs,binomial:js,gcd:Hs,lcm:Us,chop:Wl,erf:Xl,erfc:Ql,exp2:Kl,hypot:ec,sin:Xs,cos:Qs,tan:Ks,cot:eo,sec:no,csc:to,asin:Ji,acos:zi,atan:Gi,atan2:io,sinh:$t,cosh:Rt,tanh:ro,asinh:ji,acosh:Hi,atanh:Ui,acot:so,acsc:oo,asec:ao,coth:uo,csch:lo,sech:co,acoth:fo,acsch:po,asech:mo,sinc:ho,fresnelS:go,fresnelC:bo,less:yo,lessEqual:xo,greater:vo,greaterEqual:Eo,equal:Zi,notEqual:No,and:To,or:Io,not:_o,piecewise:So,clamp:ko};var Ed={Add:["_IA.add",20],Negate:["_IA.negate",20],Subtract:["_IA.sub",20],Multiply:["_IA.mul",20],Divide:["_IA.div",20],Equal:["_IA.equal",20],NotEqual:["_IA.notEqual",20],LessEqual:["_IA.lessEqual",20],GreaterEqual:["_IA.greaterEqual",20],Less:["_IA.less",20],Greater:["_IA.greater",20],And:["_IA.and",20],Or:["_IA.or",20],Not:["_IA.not",20]},Mo={Add:(e,n)=>{if(e.length===0)return"_IA.point(0)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.add(${t}, ${n(e[i])})`;return t},Multiply:(e,n)=>{if(e.length===0)return"_IA.point(1)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.mul(${t}, ${n(e[i])})`;return t},Divide:(e,n)=>{if(e.length===0)return"_IA.point(1)";if(e.length===1)return n(e[0]);if(e.length===2)return`_IA.div(${n(e[0])}, ${n(e[1])})`;let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.div(${t}, ${n(e[i])})`;return t},Negate:(e,n)=>`_IA.negate(${n(e[0])})`,Abs:(e,n)=>`_IA.abs(${n(e[0])})`,Ceil:(e,n)=>`_IA.ceil(${n(e[0])})`,Exp:(e,n)=>`_IA.exp(${n(e[0])})`,Floor:(e,n)=>`_IA.floor(${n(e[0])})`,Ln:(e,n)=>`_IA.ln(${n(e[0])})`,Log:(e,n)=>e.length===1?`_IA.log10(${n(e[0])})`:`_IA.div(_IA.ln(${n(e[0])}), _IA.ln(${n(e[1])}))`,Lb:(e,n)=>`_IA.log2(${n(e[0])})`,Max:(e,n)=>{if(e.length===0)return"_IA.point(-Infinity)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.max(${t}, ${n(e[i])})`;return t},Min:(e,n)=>{if(e.length===0)return"_IA.point(Infinity)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.min(${t}, ${n(e[i])})`;return t},Power:(e,n)=>{let t=e[0],i=e[1];if(t===null)throw new Error("Power: no argument");if(T(t,"ExponentialE"))return`_IA.exp(${n(i)})`;if(R(i)&&i.im===0){let r=i.re;return r===.5?`_IA.sqrt(${n(t)})`:r===2?`_IA.square(${n(t)})`:`_IA.pow(${n(t)}, ${r})`}return`_IA.powInterval(${n(t)}, ${n(i)})`},Root:(e,n)=>{let[t,i]=e;if(t===null)throw new Error("Root: no argument");return i===null?`_IA.sqrt(${n(t)})`:i?.re===2?`_IA.sqrt(${n(t)})`:R(i)&&i.im===0?`_IA.pow(${n(t)}, ${1/i.re})`:`_IA.powInterval(${n(t)}, _IA.div(_IA.point(1), ${n(i)}))`},Round:(e,n)=>`_IA.round(${n(e[0])})`,Heaviside:(e,n)=>`_IA.heaviside(${n(e[0])})`,Sign:(e,n)=>`_IA.sign(${n(e[0])})`,Sqrt:(e,n)=>`_IA.sqrt(${n(e[0])})`,Square:(e,n)=>`_IA.square(${n(e[0])})`,Sin:(e,n)=>`_IA.sin(${n(e[0])})`,Cos:(e,n)=>`_IA.cos(${n(e[0])})`,Tan:(e,n)=>`_IA.tan(${n(e[0])})`,Cot:(e,n)=>`_IA.cot(${n(e[0])})`,Sec:(e,n)=>`_IA.sec(${n(e[0])})`,Csc:(e,n)=>`_IA.csc(${n(e[0])})`,Arcsin:(e,n)=>`_IA.asin(${n(e[0])})`,Arccos:(e,n)=>`_IA.acos(${n(e[0])})`,Arctan:(e,n)=>`_IA.atan(${n(e[0])})`,Arccot:(e,n)=>`_IA.acot(${n(e[0])})`,Arccsc:(e,n)=>`_IA.acsc(${n(e[0])})`,Arcsec:(e,n)=>`_IA.asec(${n(e[0])})`,Sinh:(e,n)=>`_IA.sinh(${n(e[0])})`,Cosh:(e,n)=>`_IA.cosh(${n(e[0])})`,Tanh:(e,n)=>`_IA.tanh(${n(e[0])})`,Coth:(e,n)=>`_IA.coth(${n(e[0])})`,Csch:(e,n)=>`_IA.csch(${n(e[0])})`,Sech:(e,n)=>`_IA.sech(${n(e[0])})`,Arsinh:(e,n)=>`_IA.asinh(${n(e[0])})`,Arcosh:(e,n)=>`_IA.acosh(${n(e[0])})`,Artanh:(e,n)=>`_IA.atanh(${n(e[0])})`,Arcoth:(e,n)=>`_IA.acoth(${n(e[0])})`,Arcsch:(e,n)=>`_IA.acsch(${n(e[0])})`,Arsech:(e,n)=>`_IA.asech(${n(e[0])})`,Sinc:(e,n)=>`_IA.sinc(${n(e[0])})`,FresnelS:(e,n)=>`_IA.fresnelS(${n(e[0])})`,FresnelC:(e,n)=>`_IA.fresnelC(${n(e[0])})`,Factorial:(e,n)=>`_IA.factorial(${n(e[0])})`,Factorial2:(e,n)=>`_IA.factorial2(${n(e[0])})`,Gamma:(e,n)=>`_IA.gamma(${n(e[0])})`,GammaLn:(e,n)=>`_IA.gammaln(${n(e[0])})`,Binomial:(e,n)=>`_IA.binomial(${n(e[0])}, ${n(e[1])})`,GCD:(e,n)=>`_IA.gcd(${n(e[0])}, ${n(e[1])})`,LCM:(e,n)=>`_IA.lcm(${n(e[0])}, ${n(e[1])})`,Chop:(e,n)=>`_IA.chop(${n(e[0])})`,Erf:(e,n)=>`_IA.erf(${n(e[0])})`,Erfc:(e,n)=>`_IA.erfc(${n(e[0])})`,Exp2:(e,n)=>`_IA.exp2(${n(e[0])})`,Arctan2:(e,n)=>`_IA.atan2(${n(e[0])}, ${n(e[1])})`,Hypot:(e,n)=>`_IA.hypot(${n(e[0])}, ${n(e[1])})`,Fract:(e,n)=>`_IA.fract(${n(e[0])})`,Truncate:(e,n)=>`_IA.trunc(${n(e[0])})`,Mod:(e,n)=>`_IA.mod(${n(e[0])}, ${n(e[1])})`,Remainder:(e,n)=>`_IA.remainder(${n(e[0])}, ${n(e[1])})`,Sum:(e,n,t)=>sc("Sum",e,n,t),Product:(e,n,t)=>sc("Product",e,n,t),If:(e,n)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return`_IA.piecewise(
1375
+ `,o}compileLambda(n,t){let i=this.createTarget(),r=x.compile(n,i);return`lambda ${t.join(", ")}: ${r}`}};function T(e){return{kind:"interval",value:e}}function ks(e){return{lo:e,hi:e}}function me(e,n,t){let i=Math.ceil((e.lo-n)/t),r=n+i*t,s=1e-15;return r>=e.lo-s&&r<=e.hi+s}function Kn(e,n){if(e.kind==="empty")return n;if(n.kind==="empty")return e;if(e.kind==="singular"||n.kind==="singular")return{kind:"singular"};if(e.kind==="entire"||n.kind==="entire")return{kind:"entire"};let t=e.value,i=n.value,r=e.kind==="partial"?e.domainClipped:null,s=n.kind==="partial"?n.domainClipped:null,o={lo:Math.min(t.lo,i.lo),hi:Math.max(t.hi,i.hi)};if(r||s){let a=Gi(r,s);return{kind:"partial",value:o,domainClipped:a}}return{kind:"interval",value:o}}function Gi(e,n){return e==="both"||n==="both"?"both":e===null?n:n===null||e===n?e:"both"}function ws(e){return e.lo===e.hi}function ge(e){return e.lo<=0&&e.hi>=0}function As(e){return e.lo>0}function Ft(e){return e.hi<0}function Cs(e){return e.lo>=0}function $s(e){return e.hi<=0}function Rs(e){return e.hi-e.lo}function Ps(e){return(e.lo+e.hi)/2}function Ds(e){if(e.kind==="interval"||e.kind==="partial")return e.value}function Fs(e){return"kind"in e?e.kind==="interval"||e.kind==="partial"?e.value:void 0:e}function k(...e){let n=[];for(let t of e)if("kind"in t){if(t.kind==="empty")return{kind:"empty"};if(t.kind==="entire")return{kind:"entire"};if(t.kind==="singular")return t;n.push(t.value)}else n.push(t);return n}function Os(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return T({lo:i.lo+r.lo,hi:i.hi+r.hi})}function Ot(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return T({lo:i.lo-r.hi,hi:i.hi-r.lo})}function Ls(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:-t.hi,hi:-t.lo})}function Bs(e,n){let t=[ji(e.lo,n.lo),ji(e.lo,n.hi),ji(e.hi,n.lo),ji(e.hi,n.hi)];return{lo:Math.min(...t),hi:Math.max(...t)}}function ji(e,n){return e===0||n===0?0:e*n}function Lt(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return T(Bs(i,r))}function be(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return Ud(i,r)}function Ud(e,n){return n.lo>0||n.hi<0?T(Bs(e,{lo:1/n.hi,hi:1/n.lo})):n.lo<0&&n.hi>0?{kind:"singular"}:n.lo===0&&n.hi>0?e.lo>=0?{kind:"partial",value:{lo:e.lo/n.hi,hi:1/0},domainClipped:"hi"}:e.hi<=0?{kind:"partial",value:{lo:-1/0,hi:e.hi/n.hi},domainClipped:"lo"}:{kind:"entire"}:n.hi===0&&n.lo<0?e.lo>=0?{kind:"partial",value:{lo:-1/0,hi:e.lo/n.lo},domainClipped:"lo"}:e.hi<=0?{kind:"partial",value:{lo:e.hi/n.lo,hi:1/0},domainClipped:"hi"}:{kind:"entire"}:{kind:"empty"}}function qs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return Zd(t)}function Zd(e){return e.hi<0?{kind:"empty"}:e.lo>=0?T({lo:Math.sqrt(e.lo),hi:Math.sqrt(e.hi)}):{kind:"partial",value:{lo:0,hi:Math.sqrt(e.hi)},domainClipped:"lo"}}function Js(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>=0?T({lo:t.lo*t.lo,hi:t.hi*t.hi}):t.hi<=0?T({lo:t.hi*t.hi,hi:t.lo*t.lo}):T({lo:0,hi:Math.max(t.lo*t.lo,t.hi*t.hi)})}function bc(e,n){return n===0?{lo:1,hi:1}:n===1?e:n%2===0?e.lo>=0?{lo:Math.pow(e.lo,n),hi:Math.pow(e.hi,n)}:e.hi<=0?{lo:Math.pow(e.hi,n),hi:Math.pow(e.lo,n)}:{lo:0,hi:Math.max(Math.pow(e.lo,n),Math.pow(e.hi,n))}:{lo:Math.pow(e.lo,n),hi:Math.pow(e.hi,n)}}function Hi(e,n){let t=k(e);if(!Array.isArray(t))return t;let[i]=t;if(Number.isInteger(n)){if(n>=0)return T(bc(i,n));{if(ge(i))return{kind:"singular"};let r=bc(i,-n);return T({lo:1/r.hi,hi:1/r.lo})}}else return Ft(i)?{kind:"empty"}:i.lo<0?{kind:"partial",value:n>0?{lo:0,hi:Math.pow(i.hi,n)}:{lo:Math.pow(i.hi,n),hi:1/0},domainClipped:"lo"}:n>0?T({lo:Math.pow(i.lo,n),hi:Math.pow(i.hi,n)}):i.lo===0?{kind:"partial",value:{lo:Math.pow(i.hi,n),hi:1/0},domainClipped:"hi"}:T({lo:Math.pow(i.hi,n),hi:Math.pow(i.lo,n)})}function zs(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;if(r.lo===r.hi&&Number.isInteger(r.lo))return Hi(i,r.lo);if(i.hi<=0)return i.lo===-1&&i.hi===-1&&Math.floor(r.hi)>Math.floor(r.lo)?T({lo:-1,hi:1}):{kind:"empty"};if(i.lo<=0){let o={lo:Math.max(i.lo,Number.EPSILON),hi:i.hi},a=[Math.pow(o.lo,r.lo),Math.pow(o.lo,r.hi),Math.pow(o.hi,r.lo),Math.pow(o.hi,r.hi)];return{kind:"partial",value:{lo:Math.min(...a),hi:Math.max(...a)},domainClipped:"lo"}}let s=[Math.pow(i.lo,r.lo),Math.pow(i.lo,r.hi),Math.pow(i.hi,r.lo),Math.pow(i.hi,r.hi)];return T({lo:Math.min(...s),hi:Math.max(...s)})}function Gs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Math.exp(t.lo),hi:Math.exp(t.hi)})}function js(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<=0?{kind:"empty"}:t.lo>0?T({lo:Math.log(t.lo),hi:Math.log(t.hi)}):{kind:"partial",value:{lo:-1/0,hi:Math.log(t.hi)},domainClipped:"lo"}}function Hs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<=0?{kind:"empty"}:t.lo>0?T({lo:Math.log10(t.lo),hi:Math.log10(t.hi)}):{kind:"partial",value:{lo:-1/0,hi:Math.log10(t.hi)},domainClipped:"lo"}}function Us(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<=0?{kind:"empty"}:t.lo>0?T({lo:Math.log2(t.lo),hi:Math.log2(t.hi)}):{kind:"partial",value:{lo:-1/0,hi:Math.log2(t.hi)},domainClipped:"lo"}}function Zs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>=0?T(t):t.hi<=0?T({lo:-t.hi,hi:-t.lo}):T({lo:0,hi:Math.max(-t.lo,t.hi)})}function Ys(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.floor(t.lo),r=Math.floor(t.hi);return i===r?T({lo:i,hi:r}):{kind:"singular",at:i+1,continuity:"right"}}function Ws(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.ceil(t.lo),r=Math.ceil(t.hi);return i===r?T({lo:i,hi:r}):{kind:"singular",at:i,continuity:"left"}}function Ui(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.round(t.lo),r=Math.round(t.hi);return i===r?T({lo:i,hi:r}):{kind:"singular",at:i+.5,continuity:"right"}}function Xs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.floor(t.lo),r=Math.floor(t.hi);return i===r?T({lo:t.lo-i,hi:t.hi-i}):{kind:"singular",at:i+1,continuity:"right"}}function Qs(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=Math.trunc(t.lo),r=Math.trunc(t.hi);if(i===r)return T({lo:i,hi:r});if(t.lo>=0)return{kind:"singular",at:i+1,continuity:"right"};let s=Math.ceil(t.lo);return s!==0?{kind:"singular",at:s,continuity:"left"}:{kind:"singular",at:1,continuity:"right"}}function Ks(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return T({lo:Math.min(i.lo,r.lo),hi:Math.min(i.hi,r.hi)})}function eo(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;return T({lo:Math.max(i.lo,r.lo),hi:Math.max(i.hi,r.hi)})}function no(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;if(ge(r))return{kind:"singular"};let s=Math.abs(r.lo===r.hi?r.lo:Math.max(Math.abs(r.lo),Math.abs(r.hi))),o=r.hi<0,a=Math.floor(i.lo/s),u=Math.floor(i.hi/s);if(a!==u)return{kind:"singular",at:(a+1)*s,continuity:"right"};let l=i.lo-s*a,c=i.hi-s*a;return o?l===0?{kind:"singular",at:i.lo,continuity:"right"}:T({lo:l-s,hi:c-s}):T({lo:Math.min(l,c),hi:Math.max(l,c)})}function to(e,n){return Ot(e,Lt(n,Ui(be(e,n))))}function io(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>0?T({lo:1,hi:1}):t.hi<0?T({lo:0,hi:0}):t.lo===0&&t.hi===0?T({lo:.5,hi:.5}):{kind:"singular",at:0}}function ro(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>0?T({lo:1,hi:1}):t.hi<0?T({lo:-1,hi:-1}):t.lo===0&&t.hi===0?T({lo:0,hi:0}):{kind:"singular",at:0}}var yc=1.4616321449683622,Yd=.8856031944108887;function so(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return Wd(t)}var xc=[-.504083008264455,-1.573498473162391,-2.610720868444145,-3.635293366436901,-4.653163765628266,-5.667162441556885,-6.678418213073426,-7.687788325031709,-8.695764163640956,-9.702672540001863];function Ec(e){let t=-Math.floor(e)-1;return t>=0&&t<xc.length?xc[t]:null}function Wd(e){if(e.hi>=0&&e.lo<=0)return{kind:"singular",at:0};if(e.lo<0){let n=Math.ceil(e.lo),t=Math.floor(e.hi);if(n<=t)return{kind:"singular",at:n};let i=U(e.lo),r=U(e.hi),s=Math.min(i,r),o=Math.max(i,r),a=Ec(e.lo);if(a!==null){if(a>=e.lo&&a<=e.hi){let u=U(a);s=Math.min(s,u),o=Math.max(o,u)}}else Math.floor(e.lo)%2===0?s=Math.min(s,0):o=Math.max(o,0);return T({lo:s,hi:o})}return e.lo>=yc?T({lo:U(e.lo),hi:U(e.hi)}):e.hi<=yc?T({lo:U(e.hi),hi:U(e.lo)}):T({lo:Yd,hi:Math.max(U(e.lo),U(e.hi))})}function oo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return Xd(t)}function Xd(e){if(e.hi>=0&&e.lo<=0)return{kind:"singular",at:0};if(e.lo<0){let n=Math.ceil(e.lo),t=Math.floor(e.hi);if(n<=t)return{kind:"singular",at:n};let i=we(e.lo),r=we(e.hi),s=Math.min(i,r),o=Math.max(i,r),a=Ec(e.lo);return a!==null?a>=e.lo&&a<=e.hi&&(s=Math.min(s,we(a))):s=-1/0,T({lo:s,hi:o})}return T({lo:we(e.lo),hi:we(e.hi)})}function ao(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo<0)return{kind:"empty"};let i=ut(Math.round(t.lo)),r=ut(Math.round(t.hi));return!Number.isFinite(i)||!Number.isFinite(r)?T({lo:Math.min(i,r),hi:Math.max(i,r)}):T({lo:i,hi:r})}function uo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo<0)return{kind:"empty"};let i=lt(Math.round(t.lo)),r=lt(Math.round(t.hi));return!Number.isFinite(i)||!Number.isFinite(r)?T({lo:Math.min(i,r),hi:Math.max(i,r)}):T({lo:i,hi:r})}var Vs=4096;function vc(e,n,t){let i=Math.round(e),r=Math.round(n);if(!Number.isFinite(i)||!Number.isFinite(r)||r-i+1>t)return null;let s=[];for(let o=i;o<=r;o++)s.push(o);return s}function lo(e,n,t){let i=vc(e.lo,e.hi,Vs),r=vc(n.lo,n.hi,Vs);if(!i||!r||i.length*r.length>Vs)return null;let s=1/0,o=-1/0;for(let a of i)for(let u of r){let l=t(a,u);Number.isFinite(l)&&(l<s&&(s=l),l>o&&(o=l))}return s===1/0?null:T({lo:s,hi:o})}function co(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=lo(r,s,Rt);if(o)return o;let a=Math.round(r.hi);return T({lo:0,hi:Rt(a,Math.floor(a/2))})}function fo(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=lo(r,s,xn);if(o)return o;let a=Math.max(Math.abs(Math.round(r.lo)),Math.abs(Math.round(r.hi)),Math.abs(Math.round(s.lo)),Math.abs(Math.round(s.hi)));return T({lo:0,hi:a})}function po(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=lo(r,s,at);if(o)return o;let a=Math.max(Math.abs(Math.round(r.lo)),Math.abs(Math.round(r.hi))),u=Math.max(Math.abs(Math.round(s.lo)),Math.abs(Math.round(s.hi)));return T({lo:0,hi:a*u})}function Nc(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:ct(t.lo),hi:ct(t.hi)})}function Tc(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:$n(t.lo),hi:$n(t.hi)})}function Ic(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Yn(t.hi),hi:Yn(t.lo)})}function _c(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Math.pow(2,t.lo),hi:Math.pow(2,t.hi)})}function Sc(e,n){let t=k(e);if(!Array.isArray(t))return t;let i=k(n);if(!Array.isArray(i))return i;let[r]=t,[s]=i,o=[Math.hypot(r.lo,s.lo),Math.hypot(r.lo,s.hi),Math.hypot(r.hi,s.lo),Math.hypot(r.hi,s.hi)],a=Math.min(...o);return r.lo<=0&&r.hi>=0&&(a=Math.min(a,Math.abs(s.lo),Math.abs(s.hi))),s.lo<=0&&s.hi>=0&&(a=Math.min(a,Math.abs(r.lo),Math.abs(r.hi))),r.lo<=0&&r.hi>=0&&s.lo<=0&&s.hi>=0&&(a=0),T({lo:a,hi:Math.max(...o)})}var Ge=2*Math.PI,oe=Math.PI,dn=Math.PI/2,Mc=3*Math.PI/2;function bo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=Ge)return T({lo:-1,hi:1});let i=Math.sin(t.lo),r=Math.sin(t.hi),s=Math.min(i,r),o=Math.max(i,r);return me(t,dn,Ge)&&(o=1),me(t,Mc,Ge)&&(s=-1),T({lo:s,hi:o})}function yo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=Ge)return T({lo:-1,hi:1});let i=Math.cos(t.lo),r=Math.cos(t.hi),s=Math.min(i,r),o=Math.max(i,r);return me(t,0,Ge)&&(o=1),me(t,oe,Ge)&&(s=-1),T({lo:s,hi:o})}function xo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=oe)return{kind:"singular"};if(me(t,dn,oe)){let s=Math.ceil((t.lo-dn)/oe);return{kind:"singular",at:dn+s*oe}}let i=Math.tan(t.lo),r=Math.tan(t.hi);return i>1e10&&r<-1e10||i<-1e10&&r>1e10?{kind:"singular"}:T({lo:i,hi:r})}function vo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=oe)return{kind:"singular"};if(me(t,0,oe))return{kind:"singular",at:Math.ceil(t.lo/oe)*oe};let i=1/Math.tan(t.lo),r=1/Math.tan(t.hi);return T({lo:Math.min(i,r),hi:Math.max(i,r)})}function Eo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=oe)return{kind:"singular"};if(me(t,dn,oe)){let a=Math.ceil((t.lo-dn)/oe);return{kind:"singular",at:dn+a*oe}}let i=1/Math.cos(t.lo),r=1/Math.cos(t.hi),s=Math.min(i,r),o=Math.max(i,r);return me(t,0,Ge)&&(s=Math.min(s,1),o=Math.max(o,1)),me(t,oe,Ge)&&(s=Math.min(s,-1),o=Math.max(o,-1)),T({lo:s,hi:o})}function No(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.hi-t.lo>=oe)return{kind:"singular"};if(me(t,0,oe))return{kind:"singular",at:Math.ceil(t.lo/oe)*oe};let i=1/Math.sin(t.lo),r=1/Math.sin(t.hi),s=Math.min(i,r),o=Math.max(i,r);return me(t,dn,Ge)&&(s=Math.min(s,1),o=Math.max(o,1)),me(t,Mc,Ge)&&(s=Math.min(s,-1),o=Math.max(o,-1)),T({lo:s,hi:o})}function Zi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo>1||t.hi<-1)return{kind:"empty"};if(t.lo<-1||t.hi>1){let i=Math.max(t.lo,-1),r=Math.min(t.hi,1);return{kind:"partial",value:{lo:Math.asin(i),hi:Math.asin(r)},domainClipped:t.lo<-1&&t.hi>1?"both":t.lo<-1?"lo":"hi"}}return T({lo:Math.asin(t.lo),hi:Math.asin(t.hi)})}function Yi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo>1||t.hi<-1)return{kind:"empty"};if(t.lo<-1||t.hi>1){let i=Math.max(t.lo,-1),r=Math.min(t.hi,1);return{kind:"partial",value:{lo:Math.acos(r),hi:Math.acos(i)},domainClipped:t.lo<-1&&t.hi>1?"both":t.lo<-1?"lo":"hi"}}return T({lo:Math.acos(t.hi),hi:Math.acos(t.lo)})}function Wi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Math.atan(t.lo),hi:Math.atan(t.hi)})}function To(e,n){let t=k(e,n);if(!Array.isArray(t))return t;let[i,r]=t;if(i.lo===i.hi&&r.lo===r.hi){let o=Math.atan2(i.lo,r.lo);return T({lo:o,hi:o})}let s=[];return s.push(Math.atan2(i.lo,r.lo)),s.push(Math.atan2(i.lo,r.hi)),s.push(Math.atan2(i.hi,r.lo)),s.push(Math.atan2(i.hi,r.hi)),r.lo<0&&i.lo<0&&i.hi>0?T({lo:-oe,hi:oe}):T({lo:Math.min(...s),hi:Math.max(...s)})}function Bt(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Math.sinh(t.lo),hi:Math.sinh(t.hi)})}function Vt(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.lo>=0?T({lo:Math.cosh(t.lo),hi:Math.cosh(t.hi)}):t.hi<=0?T({lo:Math.cosh(t.hi),hi:Math.cosh(t.lo)}):T({lo:1,hi:Math.max(Math.cosh(t.lo),Math.cosh(t.hi))})}function Io(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Math.tanh(t.lo),hi:Math.tanh(t.hi)})}function Xi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return T({lo:Math.asinh(t.lo),hi:Math.asinh(t.hi)})}function Qi(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return t.hi<1?{kind:"empty"}:t.lo<1?{kind:"partial",value:{lo:0,hi:Math.acosh(t.hi)},domainClipped:"lo"}:T({lo:Math.acosh(t.lo),hi:Math.acosh(t.hi)})}function Ki(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;if(t.lo>=1||t.hi<=-1)return{kind:"empty"};if(t.lo<=-1||t.hi>=1){let i=Math.max(t.lo,-1+Number.EPSILON),r=Math.min(t.hi,1-Number.EPSILON);return{kind:"partial",value:{lo:Math.atanh(i),hi:Math.atanh(r)},domainClipped:t.lo<=-1&&t.hi>=1?"both":t.lo<=-1?"lo":"hi"}}return T({lo:Math.atanh(t.lo),hi:Math.atanh(t.hi)})}function _o(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:Wi(be(T({lo:1,hi:1}),T(t)))}function So(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:Zi(be(T({lo:1,hi:1}),T(t)))}function Mo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:Yi(be(T({lo:1,hi:1}),T(t)))}function ko(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:be(Vt(t),Bt(t))}function wo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:be(T({lo:1,hi:1}),Bt(t))}function Ao(e){return be(T({lo:1,hi:1}),Vt(e))}function Co(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:Ki(be(T({lo:1,hi:1}),T(t)))}function $o(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:Xi(be(T({lo:1,hi:1}),T(t)))}function Ro(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n;return ge(t)?{kind:"singular",at:0}:Qi(be(T({lo:1,hi:1}),T(t)))}var mo=[4.49341,7.72525,10.90412,14.06619,17.22076,20.3713,23.51945,26.66605,29.8116,32.95639];function Po(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=l=>l===0?1:Math.sin(l)/l,r=i(t.lo),s=r,o=l=>{l<r&&(r=l),l>s&&(s=l)};o(i(t.hi)),t.lo<=0&&t.hi>=0&&o(1);let a=mo[mo.length-1];for(let l of mo)l>=t.lo&&l<=t.hi&&o(i(l)),-l>=t.lo&&-l<=t.hi&&o(i(-l));let u=1/0;return t.hi>a&&(u=Math.min(u,Math.max(t.lo,a))),t.lo<-a&&(u=Math.min(u,-Math.min(t.hi,-a))),Number.isFinite(u)&&u>0&&(o(1/u),o(-1/u)),T({lo:r,hi:s})}var ho=[],go=[];for(let e=1;e<=20;e++)ho.push(Math.sqrt(2*e)),go.push(Math.sqrt(2*e-1));function Do(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=fn(t.lo),r=i,s=o=>{o<i&&(i=o),o>r&&(r=o)};s(fn(t.hi)),t.lo<=0&&t.hi>=0&&s(0);for(let o of ho)o>=t.lo&&o<=t.hi&&s(fn(o)),-o>=t.lo&&-o<=t.hi&&s(fn(-o));return kc(t,ho,fn,s),T({lo:i,hi:r})}function kc(e,n,t,i){let r=n[n.length-1],s=Math.abs(t(r)-.5);e.hi>r&&(i(.5+s),i(.5-s)),e.lo<-r&&(i(-.5-s),i(-.5+s))}function Fo(e){let n=k(e);if(!Array.isArray(n))return n;let[t]=n,i=pn(t.lo),r=i,s=o=>{o<i&&(i=o),o>r&&(r=o)};s(pn(t.hi)),t.lo<=0&&t.hi>=0&&s(0);for(let o of go)o>=t.lo&&o<=t.hi&&s(pn(o)),-o>=t.lo&&-o<=t.hi&&s(pn(-o));return kc(t,go,pn,s),T({lo:i,hi:r})}function hn(e){return"kind"in e?e:{kind:"interval",value:e}}function Oo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.hi<r.lo?"true":i.lo>=r.hi?"false":"maybe"}function Lo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.hi<=r.lo?"true":i.lo>r.hi?"false":"maybe"}function Bo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.lo>r.hi?"true":i.hi<=r.lo?"false":"maybe"}function Vo(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.lo>=r.hi?"true":i.hi<r.lo?"false":"maybe"}function er(e,n){let t=k(e,n);if(!Array.isArray(t))return"maybe";let[i,r]=t;return i.lo===i.hi&&r.lo===r.hi&&i.lo===r.lo?"true":i.hi<r.lo||r.hi<i.lo?"false":"maybe"}function qo(e,n){let t=er(e,n);return t==="true"?"false":t==="false"?"true":"maybe"}function Jo(e,n){return e==="false"||n==="false"?"false":e==="true"&&n==="true"?"true":"maybe"}function zo(e,n){return e==="true"||n==="true"?"true":e==="false"&&n==="false"?"false":"maybe"}function Go(e){return e==="true"?"false":e==="false"?"true":"maybe"}function jo(e,n,t,i){if(e==="true"||e==="false"||e==="maybe"){let f=e,p=n,d=t;switch(f){case"true":return hn(p());case"false":return hn(d());case"maybe":return Kn(hn(p()),hn(d()))}}let r=e,s=n,o=t,a=i,u=k(r);if(!Array.isArray(u))return u;let[l]=u;switch(s(l)){case"true":return hn(o(l));case"false":return hn(a(l));case"maybe":let f=hn(o(l)),p=hn(a(l));return Kn(f,p)}}function Ho(e,n,t){let i=k(e,n,t);if(!Array.isArray(i))return i;let[r,s,o]=i,a={lo:Math.max(r.lo,s.lo),hi:Math.max(r.hi,s.hi)},u=Math.min(a.lo,o.lo),l=Math.min(a.hi,o.hi);return{kind:"interval",value:{lo:u,hi:l}}}var wc={ok:T,point:ks,containsExtremum:me,unionResults:Kn,mergeDomainClip:Gi,isPoint:ws,containsZero:ge,isPositive:As,isNegative:Ft,isNonNegative:Cs,isNonPositive:$s,width:Rs,midpoint:Ps,getValue:Ds,unwrap:Fs,unwrapOrPropagate:k,add:Os,sub:Ot,mul:Lt,div:be,negate:Ls,sqrt:qs,square:Js,pow:Hi,powInterval:zs,exp:Gs,ln:js,log10:Hs,log2:Us,abs:Zs,floor:Ys,ceil:Ws,round:Ui,fract:Xs,trunc:Qs,min:Ks,max:eo,mod:no,remainder:to,heaviside:io,sign:ro,gamma:so,gammaln:oo,factorial:ao,factorial2:uo,binomial:co,gcd:fo,lcm:po,chop:Nc,erf:Tc,erfc:Ic,exp2:_c,hypot:Sc,sin:bo,cos:yo,tan:xo,cot:vo,sec:Eo,csc:No,asin:Zi,acos:Yi,atan:Wi,atan2:To,sinh:Bt,cosh:Vt,tanh:Io,asinh:Xi,acosh:Qi,atanh:Ki,acot:_o,acsc:So,asec:Mo,coth:ko,csch:wo,sech:Ao,acoth:Co,acsch:$o,asech:Ro,sinc:Po,fresnelS:Do,fresnelC:Fo,less:Oo,lessEqual:Lo,greater:Bo,greaterEqual:Vo,equal:er,notEqual:qo,and:Jo,or:zo,not:Go,piecewise:jo,clamp:Ho};var Qd={Add:["_IA.add",20],Negate:["_IA.negate",20],Subtract:["_IA.sub",20],Multiply:["_IA.mul",20],Divide:["_IA.div",20],Equal:["_IA.equal",20],NotEqual:["_IA.notEqual",20],LessEqual:["_IA.lessEqual",20],GreaterEqual:["_IA.greaterEqual",20],Less:["_IA.less",20],Greater:["_IA.greater",20],And:["_IA.and",20],Or:["_IA.or",20],Not:["_IA.not",20]},Uo={Add:(e,n)=>{if(e.length===0)return"_IA.point(0)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.add(${t}, ${n(e[i])})`;return t},Multiply:(e,n)=>{if(e.length===0)return"_IA.point(1)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.mul(${t}, ${n(e[i])})`;return t},Divide:(e,n)=>{if(e.length===0)return"_IA.point(1)";if(e.length===1)return n(e[0]);if(e.length===2)return`_IA.div(${n(e[0])}, ${n(e[1])})`;let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.div(${t}, ${n(e[i])})`;return t},Negate:(e,n)=>`_IA.negate(${n(e[0])})`,Abs:(e,n)=>`_IA.abs(${n(e[0])})`,Ceil:(e,n)=>`_IA.ceil(${n(e[0])})`,Exp:(e,n)=>`_IA.exp(${n(e[0])})`,Floor:(e,n)=>`_IA.floor(${n(e[0])})`,Ln:(e,n)=>`_IA.ln(${n(e[0])})`,Log:(e,n)=>e.length===1?`_IA.log10(${n(e[0])})`:`_IA.div(_IA.ln(${n(e[0])}), _IA.ln(${n(e[1])}))`,Lb:(e,n)=>`_IA.log2(${n(e[0])})`,Max:(e,n)=>{if(e.length===0)return"_IA.point(-Infinity)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.max(${t}, ${n(e[i])})`;return t},Min:(e,n)=>{if(e.length===0)return"_IA.point(Infinity)";if(e.length===1)return n(e[0]);let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_IA.min(${t}, ${n(e[i])})`;return t},Power:(e,n)=>{let t=e[0],i=e[1];if(t===null)throw new Error("Power: no argument");if(I(t,"ExponentialE"))return`_IA.exp(${n(i)})`;if(D(i)&&i.im===0){let r=i.re;return r===.5?`_IA.sqrt(${n(t)})`:r===2?`_IA.square(${n(t)})`:`_IA.pow(${n(t)}, ${r})`}return`_IA.powInterval(${n(t)}, ${n(i)})`},Root:(e,n)=>{let[t,i]=e;if(t===null)throw new Error("Root: no argument");return i===null?`_IA.sqrt(${n(t)})`:i?.re===2?`_IA.sqrt(${n(t)})`:D(i)&&i.im===0?`_IA.pow(${n(t)}, ${1/i.re})`:`_IA.powInterval(${n(t)}, _IA.div(_IA.point(1), ${n(i)}))`},Round:(e,n)=>`_IA.round(${n(e[0])})`,Heaviside:(e,n)=>`_IA.heaviside(${n(e[0])})`,Sign:(e,n)=>`_IA.sign(${n(e[0])})`,Sqrt:(e,n)=>`_IA.sqrt(${n(e[0])})`,Square:(e,n)=>`_IA.square(${n(e[0])})`,Sin:(e,n)=>`_IA.sin(${n(e[0])})`,Cos:(e,n)=>`_IA.cos(${n(e[0])})`,Tan:(e,n)=>`_IA.tan(${n(e[0])})`,Cot:(e,n)=>`_IA.cot(${n(e[0])})`,Sec:(e,n)=>`_IA.sec(${n(e[0])})`,Csc:(e,n)=>`_IA.csc(${n(e[0])})`,Arcsin:(e,n)=>`_IA.asin(${n(e[0])})`,Arccos:(e,n)=>`_IA.acos(${n(e[0])})`,Arctan:(e,n)=>`_IA.atan(${n(e[0])})`,Arccot:(e,n)=>`_IA.acot(${n(e[0])})`,Arccsc:(e,n)=>`_IA.acsc(${n(e[0])})`,Arcsec:(e,n)=>`_IA.asec(${n(e[0])})`,Sinh:(e,n)=>`_IA.sinh(${n(e[0])})`,Cosh:(e,n)=>`_IA.cosh(${n(e[0])})`,Tanh:(e,n)=>`_IA.tanh(${n(e[0])})`,Coth:(e,n)=>`_IA.coth(${n(e[0])})`,Csch:(e,n)=>`_IA.csch(${n(e[0])})`,Sech:(e,n)=>`_IA.sech(${n(e[0])})`,Arsinh:(e,n)=>`_IA.asinh(${n(e[0])})`,Arcosh:(e,n)=>`_IA.acosh(${n(e[0])})`,Artanh:(e,n)=>`_IA.atanh(${n(e[0])})`,Arcoth:(e,n)=>`_IA.acoth(${n(e[0])})`,Arcsch:(e,n)=>`_IA.acsch(${n(e[0])})`,Arsech:(e,n)=>`_IA.asech(${n(e[0])})`,Sinc:(e,n)=>`_IA.sinc(${n(e[0])})`,FresnelS:(e,n)=>`_IA.fresnelS(${n(e[0])})`,FresnelC:(e,n)=>`_IA.fresnelC(${n(e[0])})`,Factorial:(e,n)=>`_IA.factorial(${n(e[0])})`,Factorial2:(e,n)=>`_IA.factorial2(${n(e[0])})`,Gamma:(e,n)=>`_IA.gamma(${n(e[0])})`,GammaLn:(e,n)=>`_IA.gammaln(${n(e[0])})`,Binomial:(e,n)=>`_IA.binomial(${n(e[0])}, ${n(e[1])})`,GCD:(e,n)=>`_IA.gcd(${n(e[0])}, ${n(e[1])})`,LCM:(e,n)=>`_IA.lcm(${n(e[0])}, ${n(e[1])})`,Chop:(e,n)=>`_IA.chop(${n(e[0])})`,Erf:(e,n)=>`_IA.erf(${n(e[0])})`,Erfc:(e,n)=>`_IA.erfc(${n(e[0])})`,Exp2:(e,n)=>`_IA.exp2(${n(e[0])})`,Arctan2:(e,n)=>`_IA.atan2(${n(e[0])}, ${n(e[1])})`,Hypot:(e,n)=>`_IA.hypot(${n(e[0])}, ${n(e[1])})`,Fract:(e,n)=>`_IA.fract(${n(e[0])})`,Truncate:(e,n)=>`_IA.trunc(${n(e[0])})`,Mod:(e,n)=>`_IA.mod(${n(e[0])}, ${n(e[1])})`,Remainder:(e,n)=>`_IA.remainder(${n(e[0])}, ${n(e[1])})`,Sum:(e,n,t)=>Cc("Sum",e,n,t),Product:(e,n,t)=>Cc("Product",e,n,t),If:(e,n)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return`_IA.piecewise(
1376
1376
  ${n(e[0])},
1377
1377
  () => ${n(e[1])},
1378
1378
  () => ${n(e[2])}
1379
- )`},Which:(e,n)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let t=i=>{if(i>=e.length)return"{ kind: 'empty' }";let r=e[i],s=e[i+1];return T(r,"True")?n(s):`_IA.piecewise(
1379
+ )`},Which:(e,n)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let t=i=>{if(i>=e.length)return"{ kind: 'empty' }";let r=e[i],s=e[i+1];return I(r,"True")?n(s):`_IA.piecewise(
1380
1380
  ${n(r)},
1381
1381
  () => ${n(s)},
1382
1382
  () => ${t(i+2)}
1383
- )`};return t(0)},Equal:(e,n)=>`_IA.equal(${n(e[0])}, ${n(e[1])})`,NotEqual:(e,n)=>`_IA.notEqual(${n(e[0])}, ${n(e[1])})`,LessEqual:(e,n)=>`_IA.lessEqual(${n(e[0])}, ${n(e[1])})`,GreaterEqual:(e,n)=>`_IA.greaterEqual(${n(e[0])}, ${n(e[1])})`,Less:(e,n)=>`_IA.less(${n(e[0])}, ${n(e[1])})`,Greater:(e,n)=>`_IA.greater(${n(e[0])}, ${n(e[1])})`,And:(e,n)=>`_IA.and(${n(e[0])}, ${n(e[1])})`,Or:(e,n)=>`_IA.or(${n(e[0])}, ${n(e[1])})`,Not:(e,n)=>`_IA.not(${n(e[0])})`},Nd=100;function Td(e){e.operator;let n=e,t=T(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,s=i.re,o=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0,upperNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0}}function rc(e,n,t){return n!==void 0?String(n):`Math.floor(((_b) => (_b && _b.value ? _b.value.hi : _b.hi))(${y.compile(e,t)}))`}function sc(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);let{index:r,lowerExpr:s,upperExpr:o,lowerNum:a,upperNum:u}=Td(n[1]),l=e==="Sum",c=l?"_IA.add":"_IA.mul",f=l?"_IA.point(0)":"_IA.point(1)",m=a!==void 0&&u!==void 0;if(m&&a>u)return f;if(m&&u-a+1<=Nd){let w=[];for(let z=a;z<=u;z++){let D={...i,var:F=>F===r?`_IA.point(${z})`:i.var(F)};w.push(y.compile(n[0],D))}let O=w[w.length-1];for(let z=w.length-2;z>=0;z--)O=`${c}(${w[z]}, ${O})`;return O}let h=rc(s,a,i),b=rc(o,u,i),v=y.tempVar(),E=y.compile(n[0],{...i,var:I=>I===r?`_IA.point(${r})`:i.var(I)});return`(() => { let ${v} = ${f}; const _upper = ${b}; for (let ${r} = ${h}; ${r} <= _upper; ${r}++) { ${v} = ${c}(${v}, ${E}); } return ${v}; })()`}var wo=class extends Function{IA=ic;constructor(n,t=""){return super("_IA","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,s)=>{try{let o=s.map(ac);return super.apply(r,[this.IA,...o])}catch{return{kind:"entire"}}},get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}};function oc(e){return e!==null&&typeof e=="object"}function Id(e){return oc(e)&&"lo"in e&&"hi"in e}function ac(e){if(e==null||Id(e))return e;if(oc(e)){let n={};for(let[t,i]of Object.entries(e))n[t]=ac(i);return n}return typeof e=="number"?{lo:e,hi:e}:e}var Yi=class{getOperators(){return Ed}getFunctions(){return Mo}createTarget(n={}){return{language:"interval-javascript",operators:()=>{},functions:t=>Mo[t],var:t=>({Pi:"_IA.point(Math.PI)",ExponentialE:"_IA.point(Math.E)",NaN:"{ lo: NaN, hi: NaN }",ImaginaryUnit:"{ lo: NaN, hi: NaN }",Half:"_IA.point(0.5)",MachineEpsilon:"_IA.point(Number.EPSILON)",GoldenRatio:"_IA.point((1 + Math.sqrt(5)) / 2)",CatalanConstant:"_IA.point(0.91596559417721901)",EulerGamma:"_IA.point(0.57721566490153286)"})[t],string:t=>JSON.stringify(t),number:t=>`_IA.point(${t})`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){let{functions:i,vars:r,preamble:s}=t,o=n.unknowns,a={},u="";if(i)for(let[c,f]of Object.entries(i))typeof f=="function"?(u+=`const ${c} = ${f.toString()};
1384
- `,a[c]=c):typeof f=="string"&&(a[c]=f);let l=this.createTarget({functions:c=>a?.[c]?a[c]:Mo[c],var:c=>{if(r&&c in r)return r[c];let f={Pi:"_IA.point(Math.PI)",ExponentialE:"_IA.point(Math.E)",NaN:"{ lo: NaN, hi: NaN }",ImaginaryUnit:"{ lo: NaN, hi: NaN }",Half:"_IA.point(0.5)",MachineEpsilon:"_IA.point(Number.EPSILON)",GoldenRatio:"_IA.point((1 + Math.sqrt(5)) / 2)",CatalanConstant:"_IA.point(0.91596559417721901)",EulerGamma:"_IA.point(0.57721566490153286)"};if(c in f)return f[c];if(o.includes(c))return`_.${c}`},preamble:(s??"")+u});return _d(n,l)}};function _d(e,n){let t;try{t=y.compile(e,n)}catch{return{target:"interval-js",success:!1,code:""}}let i=new wo(t,n.preamble);return{target:"interval-js",success:!0,code:t,calling:"expression",run:i}}var Sd="0.60.0";return mc(kd);})();
1383
+ )`};return t(0)},Equal:(e,n)=>`_IA.equal(${n(e[0])}, ${n(e[1])})`,NotEqual:(e,n)=>`_IA.notEqual(${n(e[0])}, ${n(e[1])})`,LessEqual:(e,n)=>`_IA.lessEqual(${n(e[0])}, ${n(e[1])})`,GreaterEqual:(e,n)=>`_IA.greaterEqual(${n(e[0])}, ${n(e[1])})`,Less:(e,n)=>`_IA.less(${n(e[0])}, ${n(e[1])})`,Greater:(e,n)=>`_IA.greater(${n(e[0])}, ${n(e[1])})`,And:(e,n)=>`_IA.and(${n(e[0])}, ${n(e[1])})`,Or:(e,n)=>`_IA.or(${n(e[0])}, ${n(e[1])})`,Not:(e,n)=>`_IA.not(${n(e[0])})`},Kd=100;function eh(e){e.operator;let n=e,t=I(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,s=i.re,o=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0,upperNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0}}function Ac(e,n,t){return n!==void 0?String(n):`Math.floor(((_b) => (_b && _b.value ? _b.value.hi : _b.hi))(${x.compile(e,t)}))`}function Cc(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);let{index:r,lowerExpr:s,upperExpr:o,lowerNum:a,upperNum:u}=eh(n[1]),l=e==="Sum",c=l?"_IA.add":"_IA.mul",f=l?"_IA.point(0)":"_IA.point(1)",p=a!==void 0&&u!==void 0;if(p&&a>u)return f;if(p&&u-a+1<=Kd){let M=[];for(let L=a;L<=u;L++){let F={...i,var:P=>P===r?`_IA.point(${L})`:i.var(P)};M.push(x.compile(n[0],F))}let $=M[M.length-1];for(let L=M.length-2;L>=0;L--)$=`${c}(${M[L]}, ${$})`;return $}let d=Ac(s,a,i),b=Ac(o,u,i),y=x.tempVar(),v=x.compile(n[0],{...i,var:N=>N===r?`_IA.point(${r})`:i.var(N)});return`(() => { let ${y} = ${f}; const _upper = ${b}; for (let ${r} = ${d}; ${r} <= _upper; ${r}++) { ${y} = ${c}(${y}, ${v}); } return ${y}; })()`}var Zo=class extends Function{IA=wc;constructor(n,t=""){return super("_IA","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,s)=>{try{let o=s.map(Rc);return super.apply(r,[this.IA,...o])}catch{return{kind:"entire"}}},get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}};function $c(e){return e!==null&&typeof e=="object"}function nh(e){return $c(e)&&"lo"in e&&"hi"in e}function Rc(e){if(e==null||nh(e))return e;if($c(e)){let n={};for(let[t,i]of Object.entries(e))n[t]=Rc(i);return n}return typeof e=="number"?{lo:e,hi:e}:e}var nr=class{getOperators(){return Qd}getFunctions(){return Uo}createTarget(n={}){return{language:"interval-javascript",operators:()=>{},functions:t=>Uo[t],var:t=>({Pi:"_IA.point(Math.PI)",ExponentialE:"_IA.point(Math.E)",NaN:"{ lo: NaN, hi: NaN }",ImaginaryUnit:"{ lo: NaN, hi: NaN }",Half:"_IA.point(0.5)",MachineEpsilon:"_IA.point(Number.EPSILON)",GoldenRatio:"_IA.point((1 + Math.sqrt(5)) / 2)",CatalanConstant:"_IA.point(0.91596559417721901)",EulerGamma:"_IA.point(0.57721566490153286)"})[t],string:t=>JSON.stringify(t),number:t=>`_IA.point(${t})`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){let{functions:i,vars:r,preamble:s}=t,o=n.unknowns,a={},u="";if(i)for(let[f,p]of Object.entries(i))typeof p=="function"?(u+=`const ${f} = ${p.toString()};
1384
+ `,a[f]=f):typeof p=="string"&&(a[f]=p);let l=this.createTarget({functions:f=>a?.[f]?a[f]:Uo[f],var:f=>{if(r&&f in r)return r[f];let p={Pi:"_IA.point(Math.PI)",ExponentialE:"_IA.point(Math.E)",NaN:"{ lo: NaN, hi: NaN }",ImaginaryUnit:"{ lo: NaN, hi: NaN }",Half:"_IA.point(0.5)",MachineEpsilon:"_IA.point(Number.EPSILON)",GoldenRatio:"_IA.point((1 + Math.sqrt(5)) / 2)",CatalanConstant:"_IA.point(0.91596559417721901)",EulerGamma:"_IA.point(0.57721566490153286)"};if(f in p)return p[f];if(o.includes(f))return`_.${f}`;if(n.engine._getSymbolValue(f)===void 0)return`_.${f}`},preamble:(s??"")+u}),c=th(n,l);return x.withReferences(c,n,l,r?new Set(Object.keys(r)):void 0)}};function th(e,n){let t;try{t=x.compile(e,n)}catch{return{target:"interval-js",success:!1,code:""}}let i=new Zo(t,n.preamble);return{target:"interval-js",success:!0,code:t,calling:"expression",run:i}}var ih="1e18",Pc=`
1385
+ const float IV_INF = ${ih};
1386
+ const vec2 IV_ENTIRE = vec2(-IV_INF, IV_INF);
1387
+ const vec2 IV_EMPTY = vec2(IV_INF, -IV_INF);
1388
+
1389
+ bool _iv_is_empty(vec2 a) { return a.x > a.y; }
1390
+
1391
+ // Clamp bounds to the finite sentinel range. Preserves IV_EMPTY (its components
1392
+ // already sit at the sentinels) and folds any overflowed intermediate back to
1393
+ // the sentinel (min(inf, IV_INF) = IV_INF), so a real \`inf\` never escapes an op.
1394
+ vec2 _iv_clamp(vec2 a) { return clamp(a, -IV_INF, IV_INF); }
1395
+
1396
+ // Exact empty propagation: force empty if any operand is empty.
1397
+ vec2 _iv_guard1(vec2 r, vec2 a) { return _iv_is_empty(a) ? IV_EMPTY : r; }
1398
+ vec2 _iv_guard2(vec2 r, vec2 a, vec2 b) {
1399
+ return (_iv_is_empty(a) || _iv_is_empty(b)) ? IV_EMPTY : r;
1400
+ }
1401
+
1402
+ vec2 _iv_negate(vec2 a) { return _iv_guard1(_iv_clamp(vec2(-a.y, -a.x)), a); }
1403
+
1404
+ vec2 _iv_add(vec2 a, vec2 b) {
1405
+ return _iv_guard2(_iv_clamp(vec2(a.x + b.x, a.y + b.y)), a, b);
1406
+ }
1407
+
1408
+ vec2 _iv_sub(vec2 a, vec2 b) {
1409
+ return _iv_guard2(_iv_clamp(vec2(a.x - b.y, a.y - b.x)), a, b);
1410
+ }
1411
+
1412
+ vec2 _iv_mul(vec2 a, vec2 b) {
1413
+ float p1 = a.x * b.x, p2 = a.x * b.y, p3 = a.y * b.x, p4 = a.y * b.y;
1414
+ vec2 r = vec2(min(min(p1, p2), min(p3, p4)), max(max(p1, p2), max(p3, p4)));
1415
+ return _iv_guard2(_iv_clamp(r), a, b);
1416
+ }
1417
+
1418
+ vec2 _iv_div(vec2 a, vec2 b) {
1419
+ // Denominator spanning 0 \u2192 entire (wide, never narrow): the CPU pass turns
1420
+ // the pole into a proper asymptote break.
1421
+ bool spansZero = (b.x <= 0.0 && b.y >= 0.0);
1422
+ float q1 = a.x / b.x, q2 = a.x / b.y, q3 = a.y / b.x, q4 = a.y / b.y;
1423
+ vec2 r = vec2(min(min(q1, q2), min(q3, q4)), max(max(q1, q2), max(q3, q4)));
1424
+ r = spansZero ? IV_ENTIRE : r;
1425
+ return _iv_guard2(_iv_clamp(r), a, b);
1426
+ }
1427
+
1428
+ vec2 _iv_square(vec2 a) {
1429
+ float lo2 = a.x * a.x, hi2 = a.y * a.y;
1430
+ // Straddles 0 \u21D2 min is 0; otherwise the smaller endpoint\xB2 is the min.
1431
+ float lo = (a.x <= 0.0 && a.y >= 0.0) ? 0.0 : min(lo2, hi2);
1432
+ return _iv_guard1(_iv_clamp(vec2(lo, max(lo2, hi2))), a);
1433
+ }
1434
+
1435
+ // Scalar integer power that is correct for negative bases (GLSL \`pow\` requires
1436
+ // a non-negative base): keep the sign for odd exponents, drop it for even.
1437
+ float _iv_powi_scalar(float x, float n) {
1438
+ float a = pow(abs(x), n);
1439
+ return (mod(n, 2.0) == 1.0 && x < 0.0) ? -a : a;
1440
+ }
1441
+
1442
+ vec2 _iv_powi(vec2 a, float n) {
1443
+ float pl = _iv_powi_scalar(a.x, n);
1444
+ float ph = _iv_powi_scalar(a.y, n);
1445
+ bool even = (mod(n, 2.0) == 0.0);
1446
+ bool straddle = (a.x <= 0.0 && a.y >= 0.0);
1447
+ float lo = even ? (straddle ? 0.0 : min(pl, ph)) : pl;
1448
+ float hi = even ? max(pl, ph) : ph;
1449
+ return _iv_guard1(_iv_clamp(vec2(lo, hi)), a);
1450
+ }
1451
+
1452
+ // \u2500\u2500 Phase 2: elementary functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
1453
+
1454
+ vec2 _iv_abs(vec2 a) {
1455
+ float al = abs(a.x), ah = abs(a.y);
1456
+ bool straddle = (a.x <= 0.0 && a.y >= 0.0);
1457
+ return _iv_guard1(_iv_clamp(vec2(straddle ? 0.0 : min(al, ah), max(al, ah))), a);
1458
+ }
1459
+
1460
+ // Domain x \u2265 0: fully-negative box \u2192 empty; a box straddling 0 clamps lo to 0.
1461
+ vec2 _iv_sqrt(vec2 a) {
1462
+ vec2 r = vec2(sqrt(max(a.x, 0.0)), sqrt(max(a.y, 0.0)));
1463
+ r = (a.y < 0.0) ? IV_EMPTY : r;
1464
+ return _iv_guard1(_iv_clamp(r), a);
1465
+ }
1466
+
1467
+ vec2 _iv_exp(vec2 a) {
1468
+ return _iv_guard1(_iv_clamp(vec2(exp(a.x), exp(a.y))), a);
1469
+ }
1470
+
1471
+ // Domain x > 0: fully-\u22640 box \u2192 empty; straddling box \u2192 lo clamped to \u2212IV_INF
1472
+ // (ln \u2192 \u2212\u221E as x \u2192 0\u207A, never a real \u2212inf).
1473
+ vec2 _iv_ln(vec2 a) {
1474
+ vec2 r = vec2(a.x > 0.0 ? log(a.x) : -IV_INF, log(a.y));
1475
+ r = (a.y <= 0.0) ? IV_EMPTY : r;
1476
+ return _iv_guard1(_iv_clamp(r), a);
1477
+ }
1478
+
1479
+ const float _IV_INV_LN10 = 0.43429448190325176;
1480
+ const float _IV_INV_LN2 = 1.4426950408889634;
1481
+
1482
+ vec2 _iv_log10(vec2 a) {
1483
+ vec2 r = vec2(a.x > 0.0 ? log(a.x) * _IV_INV_LN10 : -IV_INF, log(a.y) * _IV_INV_LN10);
1484
+ r = (a.y <= 0.0) ? IV_EMPTY : r;
1485
+ return _iv_guard1(_iv_clamp(r), a);
1486
+ }
1487
+
1488
+ vec2 _iv_log2(vec2 a) {
1489
+ vec2 r = vec2(a.x > 0.0 ? log(a.x) * _IV_INV_LN2 : -IV_INF, log(a.y) * _IV_INV_LN2);
1490
+ r = (a.y <= 0.0) ? IV_EMPTY : r;
1491
+ return _iv_guard1(_iv_clamp(r), a);
1492
+ }
1493
+
1494
+ // Non-integer power. Real only for base \u2265 0: fully-negative box \u2192 empty; a box
1495
+ // straddling 0 clamps the base low end to 0. \`p\` is a compile-time constant, so
1496
+ // the \`p >= 0\` test is a constant branch.
1497
+ vec2 _iv_powf(vec2 a, float p) {
1498
+ float lob = max(a.x, 0.0);
1499
+ float e0 = pow(lob, p), e1 = pow(a.y, p);
1500
+ vec2 r = (p >= 0.0) ? vec2(e0, e1) : vec2(e1, e0);
1501
+ r = (a.y < 0.0) ? IV_EMPTY : r;
1502
+ return _iv_guard1(_iv_clamp(r), a);
1503
+ }
1504
+
1505
+ // \u2500\u2500 Phase 3: trigonometric & inverse-trigonometric functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
1506
+ // Mirrors interval-js (interval/trigonometric.ts): exact endpoints with
1507
+ // extremum snapping (no outward epsilon). Per the Option-A contract, a tan pole
1508
+ // yields \`entire\` (interval-js returns \`singular\`; entire \u2287 singular and the
1509
+ // CPU classifies the asymptote).
1510
+
1511
+ const float _IV_PI = 3.141592653589793;
1512
+ const float _IV_TWO_PI = 6.283185307179586;
1513
+ const float _IV_HALF_PI = 1.5707963267948966;
1514
+ const float _IV_THREE_HALF_PI = 4.71238898038469;
1515
+
1516
+ // True if [a] contains an extremum of the family { ext + n\xB7period }.
1517
+ bool _iv_has_ext(vec2 a, float ext, float period) {
1518
+ float n = ceil((a.x - ext) / period);
1519
+ float cand = ext + n * period;
1520
+ return cand >= a.x - 1e-15 && cand <= a.y + 1e-15;
1521
+ }
1522
+
1523
+ vec2 _iv_sin(vec2 a) {
1524
+ vec2 r;
1525
+ if (a.y - a.x >= _IV_TWO_PI) r = vec2(-1.0, 1.0);
1526
+ else {
1527
+ float sl = sin(a.x), sh = sin(a.y);
1528
+ float lo = min(sl, sh), hi = max(sl, sh);
1529
+ if (_iv_has_ext(a, _IV_HALF_PI, _IV_TWO_PI)) hi = 1.0;
1530
+ if (_iv_has_ext(a, _IV_THREE_HALF_PI, _IV_TWO_PI)) lo = -1.0;
1531
+ r = vec2(lo, hi);
1532
+ }
1533
+ return _iv_guard1(_iv_clamp(r), a);
1534
+ }
1535
+
1536
+ vec2 _iv_cos(vec2 a) {
1537
+ vec2 r;
1538
+ if (a.y - a.x >= _IV_TWO_PI) r = vec2(-1.0, 1.0);
1539
+ else {
1540
+ float cl = cos(a.x), ch = cos(a.y);
1541
+ float lo = min(cl, ch), hi = max(cl, ch);
1542
+ if (_iv_has_ext(a, 0.0, _IV_TWO_PI)) hi = 1.0;
1543
+ if (_iv_has_ext(a, _IV_PI, _IV_TWO_PI)) lo = -1.0;
1544
+ r = vec2(lo, hi);
1545
+ }
1546
+ return _iv_guard1(_iv_clamp(r), a);
1547
+ }
1548
+
1549
+ vec2 _iv_tan(vec2 a) {
1550
+ // A pole in the interval \u2192 entire (cannot exclude).
1551
+ bool pole =
1552
+ (a.y - a.x >= _IV_PI) || _iv_has_ext(a, _IV_HALF_PI, _IV_PI);
1553
+ float tl = tan(a.x), th = tan(a.y);
1554
+ // Floating-point branch-cross sanity (large opposite-sign endpoints).
1555
+ bool crossed = (tl > 1e10 && th < -1e10) || (tl < -1e10 && th > 1e10);
1556
+ vec2 r = (pole || crossed) ? IV_ENTIRE : vec2(tl, th);
1557
+ return _iv_guard1(_iv_clamp(r), a);
1558
+ }
1559
+
1560
+ // asin: domain [\u22121, 1]. Fully outside \u2192 empty; straddling clamps to the valid
1561
+ // sub-range. Monotonic increasing.
1562
+ vec2 _iv_asin(vec2 a) {
1563
+ vec2 r = vec2(asin(max(a.x, -1.0)), asin(min(a.y, 1.0)));
1564
+ r = (a.x > 1.0 || a.y < -1.0) ? IV_EMPTY : r;
1565
+ return _iv_guard1(_iv_clamp(r), a);
1566
+ }
1567
+
1568
+ // acos: domain [\u22121, 1], monotonic decreasing (bounds swap).
1569
+ vec2 _iv_acos(vec2 a) {
1570
+ vec2 r = vec2(acos(min(a.y, 1.0)), acos(max(a.x, -1.0)));
1571
+ r = (a.x > 1.0 || a.y < -1.0) ? IV_EMPTY : r;
1572
+ return _iv_guard1(_iv_clamp(r), a);
1573
+ }
1574
+
1575
+ vec2 _iv_atan(vec2 a) {
1576
+ return _iv_guard1(_iv_clamp(vec2(atan(a.x), atan(a.y))), a);
1577
+ }
1578
+
1579
+ // \u2500\u2500 Discontinuous / step functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
1580
+ // Bounded jump-discontinuity functions return the TIGHT value-range enclosure
1581
+ // (sound, and excludable when the range misses 0) rather than \`entire\` \u2014 only
1582
+ // genuine poles are entire. Per the Option-A division of labor, the CPU still
1583
+ // classifies the discontinuity on the (kept) live cells; the GPU only needs a
1584
+ // sound bound for the exclusion test. These functions are monotone, so the
1585
+ // enclosure is just [f(lo), f(hi)] unless noted.
1586
+
1587
+ vec2 _iv_floor(vec2 a) { return _iv_guard1(_iv_clamp(vec2(floor(a.x), floor(a.y))), a); }
1588
+ vec2 _iv_ceil(vec2 a) { return _iv_guard1(_iv_clamp(vec2(ceil(a.x), ceil(a.y))), a); }
1589
+ vec2 _iv_round(vec2 a) { return _iv_guard1(_iv_clamp(vec2(floor(a.x + 0.5), floor(a.y + 0.5))), a); }
1590
+ vec2 _iv_trunc(vec2 a) { return _iv_guard1(_iv_clamp(vec2(trunc(a.x), trunc(a.y))), a); }
1591
+ vec2 _iv_sign(vec2 a) { return _iv_guard1(vec2(sign(a.x), sign(a.y)), a); }
1592
+
1593
+ vec2 _iv_heaviside(vec2 a) {
1594
+ float hl = a.x < 0.0 ? 0.0 : (a.x > 0.0 ? 1.0 : 0.5);
1595
+ float hh = a.y < 0.0 ? 0.0 : (a.y > 0.0 ? 1.0 : 0.5);
1596
+ return _iv_guard1(vec2(hl, hh), a);
1597
+ }
1598
+
1599
+ // fract(x) = x \u2212 floor(x): continuous within an integer cell, sawtooth across
1600
+ // one (\u2192 full [0, 1] range).
1601
+ vec2 _iv_fract(vec2 a) {
1602
+ float fl = floor(a.x);
1603
+ vec2 r = (fl == floor(a.y)) ? vec2(a.x - fl, a.y - fl) : vec2(0.0, 1.0);
1604
+ return _iv_guard1(_iv_clamp(r), a);
1605
+ }
1606
+
1607
+ vec2 _iv_min(vec2 a, vec2 b) {
1608
+ return _iv_guard2(_iv_clamp(vec2(min(a.x, b.x), min(a.y, b.y))), a, b);
1609
+ }
1610
+ vec2 _iv_max(vec2 a, vec2 b) {
1611
+ return _iv_guard2(_iv_clamp(vec2(max(a.x, b.x), max(a.y, b.y))), a, b);
1612
+ }
1613
+
1614
+ // mod(x, y) = x \u2212 y\xB7floor(x/y). A modulus straddling 0 is a pole \u2192 entire. For
1615
+ // a constant (point) modulus the fast path is exact; otherwise compose (the
1616
+ // tight floor keeps it sound).
1617
+ vec2 _iv_mod(vec2 a, vec2 b) {
1618
+ if (b.x <= 0.0 && b.y >= 0.0) return _iv_guard2(IV_ENTIRE, a, b);
1619
+ if (b.x == b.y) {
1620
+ float p = abs(b.x);
1621
+ float flo = floor(a.x / p);
1622
+ vec2 r = (flo == floor(a.y / p)) ? vec2(a.x - p * flo, a.y - p * flo)
1623
+ : vec2(0.0, p);
1624
+ return _iv_guard2(_iv_clamp(r), a, b);
1625
+ }
1626
+ return _iv_sub(a, _iv_mul(b, _iv_floor(_iv_div(a, b))));
1627
+ }
1628
+ `,Dc={Add:(e,n)=>{if(e.length===0)return"vec2(0.0, 0.0)";let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_add(${t}, ${n(e[i])})`;return t},Subtract:([e,n],t)=>{if(e===null||n===null)throw new Error("Subtract: missing argument");return`_iv_sub(${t(e)}, ${t(n)})`},Multiply:(e,n)=>{if(e.length===0)return"vec2(1.0, 1.0)";let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_mul(${t}, ${n(e[i])})`;return t},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");return`_iv_div(${t(e)}, ${t(n)})`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");return`_iv_negate(${n(e)})`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`_iv_square(${n(e)})`},Sqrt:([e],n)=>{if(e===null)throw new Error("Sqrt: no argument");return`_iv_sqrt(${n(e)})`},Abs:([e],n)=>{if(e===null)throw new Error("Abs: no argument");return`_iv_abs(${n(e)})`},Exp:([e],n)=>{if(e===null)throw new Error("Exp: no argument");return`_iv_exp(${n(e)})`},Ln:([e],n)=>{if(e===null)throw new Error("Ln: no argument");return`_iv_ln(${n(e)})`},Log:(e,n)=>e.length===1?`_iv_log10(${n(e[0])})`:`_iv_div(_iv_ln(${n(e[0])}), _iv_ln(${n(e[1])}))`,Lb:([e],n)=>{if(e===null)throw new Error("Lb: no argument");return`_iv_log2(${n(e)})`},Sin:([e],n)=>{if(e===null)throw new Error("Sin: no argument");return`_iv_sin(${n(e)})`},Cos:([e],n)=>{if(e===null)throw new Error("Cos: no argument");return`_iv_cos(${n(e)})`},Tan:([e],n)=>{if(e===null)throw new Error("Tan: no argument");return`_iv_tan(${n(e)})`},Arcsin:([e],n)=>{if(e===null)throw new Error("Arcsin: no argument");return`_iv_asin(${n(e)})`},Arccos:([e],n)=>{if(e===null)throw new Error("Arccos: no argument");return`_iv_acos(${n(e)})`},Arctan:([e],n)=>{if(e===null)throw new Error("Arctan: no argument");return`_iv_atan(${n(e)})`},Floor:([e],n)=>{if(e===null)throw new Error("Floor: no argument");return`_iv_floor(${n(e)})`},Ceil:([e],n)=>{if(e===null)throw new Error("Ceil: no argument");return`_iv_ceil(${n(e)})`},Round:([e],n)=>{if(e===null)throw new Error("Round: no argument");return`_iv_round(${n(e)})`},Truncate:([e],n)=>{if(e===null)throw new Error("Truncate: no argument");return`_iv_trunc(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`_iv_fract(${n(e)})`},Sign:([e],n)=>{if(e===null)throw new Error("Sign: no argument");return`_iv_sign(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_iv_heaviside(${n(e)})`},Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");return`_iv_mod(${t(e)}, ${t(n)})`},Min:(e,n)=>{if(e.length===0)throw new Error("Min: no argument");let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_min(${t}, ${n(e[i])})`;return t},Max:(e,n)=>{if(e.length===0)throw new Error("Max: no argument");let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_max(${t}, ${n(e[i])})`;return t},Power:([e,n],t)=>{if(e===null||n===null)throw new Error("Power: missing argument");if(I(e,"ExponentialE"))return`_iv_exp(${t(n)})`;if(D(n)&&n.im===0){let i=n.re;if(i===.5)return`_iv_sqrt(${t(e)})`;if(i===2)return`_iv_square(${t(e)})`;if(Number.isInteger(i)&&i>=0)return`_iv_powi(${t(e)}, ${Ce(i)})`;if(!Number.isInteger(i)&&i>0)return`_iv_powf(${t(e)}, ${Ce(i)})`;throw new Error(`interval-glsl: Power with exponent \`${n.toString()}\` is not yet supported`)}throw new Error("interval-glsl: Power with a variable exponent is not yet supported")}},tr={Pi:"vec2(3.14159265359, 3.14159265359)",ExponentialE:"vec2(2.71828182846, 2.71828182846)",GoldenRatio:"vec2(1.61803398875, 1.61803398875)",CatalanConstant:"vec2(0.91596559417, 0.91596559417)",EulerGamma:"vec2(0.57721566490, 0.57721566490)"},ir=class extends Xn{languageId="interval-glsl";getOperators(){return{}}getFunctions(){return Dc}getConstants(){return tr}createTarget(n={}){return super.createTarget({operators:()=>{},functions:t=>Dc[t],number:t=>`vec2(${Ce(t)}, ${Ce(t)})`,complex:()=>{throw new Error("interval-glsl: complex values are not supported")},var:t=>tr[t],...n})}compile(n,t={}){let{vars:i}=t,r=this.createTarget({var:a=>{if(i&&a in i)return i[a];if(a in tr)return tr[a]}}),s=x.compile(n,r),o={target:"interval-glsl",success:!0,code:s};return s.includes("_iv_")&&(o.preamble=Pc),x.withReferences(o,n,r,i?new Set(Object.keys(i)):void 0)}compileExclusionShader(n,t={}){let{version:i="300 es",precision:r="highp"}=t,s=this.compile(n),o=s.freeSymbols??[];if(o.length>2)throw new Error(`interval-glsl exclusion shader supports at most 2 free variables (got ${o.length}: ${o.join(", ")})`);let a=o.map(p=>`vec2 ${p}`).join(", "),[u,l]=o,c=["void main() {"];c.push(" vec2 _cell = gl_FragCoord.xy / u_resolution;"),c.push(" vec2 _step = 1.0 / u_resolution;");let f=[];return u!==void 0&&(c.push(" float _xlo = mix(u_domainX.x, u_domainX.y, _cell.x);"),c.push(" float _xhi = mix(u_domainX.x, u_domainX.y, _cell.x + _step.x);"),f.push("vec2(_xlo, _xhi)")),l!==void 0&&(c.push(" float _ylo = mix(u_domainY.x, u_domainY.y, _cell.y);"),c.push(" float _yhi = mix(u_domainY.x, u_domainY.y, _cell.y + _step.y);"),f.push("vec2(_ylo, _yhi)")),c.push(` vec2 _f = _implicit(${f.join(", ")});`),c.push(" bool _excluded = (_f.x > 0.0 || _f.y < 0.0);"),c.push(" fragColor = _excluded ? vec4(0.0, 0.0, 0.0, 1.0) : vec4(1.0);"),c.push("}"),[`#version ${i}`,`precision ${r} float;`,"",Pc.trim(),"","uniform vec2 u_domainX; // [min, max] for the 1st free variable","uniform vec2 u_domainY; // [min, max] for the 2nd free variable","uniform vec2 u_resolution; // render target size, in pixels","","out vec4 fragColor;","","// Interval evaluation of the implicit field f over a cell box.",`vec2 _implicit(${a}) {`,` return ${s.code};`,"}","",c.join(`
1629
+ `),""].join(`
1630
+ `)}};var rh="0.61.0";return Jc(sh);})();
1385
1631
  /*! Bundled license information:
1386
1632
 
1387
1633
  complex-esm/dist/src/complex.js: