@cortex-js/compute-engine 0.58.0 → 0.59.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 (270) hide show
  1. package/README.md +4 -0
  2. package/dist/compile.esm.js +1721 -483
  3. package/dist/compile.min.esm.js +122 -74
  4. package/dist/compile.min.umd.cjs +122 -74
  5. package/dist/compile.umd.cjs +1721 -483
  6. package/dist/compute-engine.esm.js +25209 -22883
  7. package/dist/compute-engine.min.esm.js +135 -87
  8. package/dist/compute-engine.min.umd.cjs +135 -87
  9. package/dist/compute-engine.umd.cjs +24952 -22626
  10. package/dist/core.esm.js +25208 -22882
  11. package/dist/core.min.esm.js +134 -86
  12. package/dist/core.min.umd.cjs +134 -86
  13. package/dist/core.umd.cjs +24951 -22625
  14. package/dist/identities.esm.js +1921 -0
  15. package/dist/identities.min.esm.js +2 -0
  16. package/dist/identities.min.umd.cjs +4 -0
  17. package/dist/identities.umd.cjs +1946 -0
  18. package/dist/interval.esm.js +653 -330
  19. package/dist/interval.min.esm.js +8 -8
  20. package/dist/interval.min.umd.cjs +8 -8
  21. package/dist/interval.umd.cjs +653 -330
  22. package/dist/latex-syntax.esm.js +758 -512
  23. package/dist/latex-syntax.min.esm.js +7 -7
  24. package/dist/latex-syntax.min.umd.cjs +7 -7
  25. package/dist/latex-syntax.umd.cjs +758 -512
  26. package/dist/math-json.esm.js +8 -12
  27. package/dist/math-json.min.esm.js +2 -2
  28. package/dist/math-json.min.umd.cjs +2 -2
  29. package/dist/math-json.umd.cjs +8 -12
  30. package/dist/numerics.esm.js +1349 -228
  31. package/dist/numerics.min.esm.js +16 -5
  32. package/dist/numerics.min.umd.cjs +16 -5
  33. package/dist/numerics.umd.cjs +1349 -228
  34. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  35. package/dist/types/big-decimal/index.d.ts +1 -1
  36. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  37. package/dist/types/big-decimal/utils.d.ts +1 -1
  38. package/dist/types/common/ansi-codes.d.ts +1 -1
  39. package/dist/types/common/configuration-change.d.ts +1 -1
  40. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  41. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  42. package/dist/types/common/interruptible.d.ts +1 -1
  43. package/dist/types/common/one-of.d.ts +1 -1
  44. package/dist/types/common/signals.d.ts +1 -1
  45. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  46. package/dist/types/common/type/boxed-type.d.ts +1 -1
  47. package/dist/types/common/type/lexer.d.ts +1 -1
  48. package/dist/types/common/type/parse.d.ts +1 -208
  49. package/dist/types/common/type/parser.d.ts +124 -2
  50. package/dist/types/common/type/primitive.d.ts +5 -1
  51. package/dist/types/common/type/reduce.d.ts +1 -1
  52. package/dist/types/common/type/serialize.d.ts +1 -1
  53. package/dist/types/common/type/subtype.d.ts +18 -1
  54. package/dist/types/common/type/type-builder.d.ts +1 -1
  55. package/dist/types/common/type/types.d.ts +1 -1
  56. package/dist/types/common/type/utils.d.ts +1 -1
  57. package/dist/types/common/utils.d.ts +1 -1
  58. package/dist/types/compile.d.ts +1 -1
  59. package/dist/types/compute-engine/assume.d.ts +13 -6
  60. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +3 -3
  74. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +140 -0
  82. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +14 -4
  88. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +112 -0
  99. package/dist/types/compute-engine/boxed-expression/rules.d.ts +2 -1
  100. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  103. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  104. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  105. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  106. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  107. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  108. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  109. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  110. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
  112. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/constant-folding.d.ts +16 -1
  114. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  115. package/dist/types/compute-engine/compilation/gpu-target.d.ts +15 -5
  116. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +4 -4
  117. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  118. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  119. package/dist/types/compute-engine/compilation/types.d.ts +1 -1
  120. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  121. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  133. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  134. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  135. package/dist/types/compute-engine/engine-simplification-rules.d.ts +10 -2
  136. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  137. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  138. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  139. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  140. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  141. package/dist/types/compute-engine/fungrim/loader.d.ts +13 -0
  142. package/dist/types/compute-engine/fungrim/types.d.ts +160 -0
  143. package/dist/types/compute-engine/global-types.d.ts +1 -1
  144. package/dist/types/compute-engine/index.d.ts +48 -2
  145. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  146. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  147. package/dist/types/compute-engine/interval/elementary.d.ts +10 -2
  148. package/dist/types/compute-engine/interval/index.d.ts +2 -2
  149. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  150. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  151. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +4 -1
  170. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  172. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  173. package/dist/types/compute-engine/latex-syntax/parse.d.ts +3 -2
  174. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  175. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -11
  176. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  177. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  178. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  179. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  180. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  181. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  182. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  183. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  184. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  185. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  186. package/dist/types/compute-engine/library/complex.d.ts +13 -1
  187. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  188. package/dist/types/compute-engine/library/core.d.ts +1 -1
  189. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  190. package/dist/types/compute-engine/library/library.d.ts +1 -1
  191. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  192. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  193. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  194. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  195. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  196. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  197. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  198. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  199. package/dist/types/compute-engine/library/sets.d.ts +27 -1
  200. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  201. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  202. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  203. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  204. package/dist/types/compute-engine/library/units.d.ts +1 -1
  205. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  206. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  207. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +7 -1
  208. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  209. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  210. package/dist/types/compute-engine/numerics/bernoulli.d.ts +39 -0
  211. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  212. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  218. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +12 -1
  219. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  220. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  221. package/dist/types/compute-engine/numerics/random.d.ts +1 -1
  222. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  223. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  224. package/dist/types/compute-engine/numerics/special-functions.d.ts +78 -10
  225. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  226. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  227. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  228. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  229. package/dist/types/compute-engine/oeis.d.ts +1 -1
  230. package/dist/types/compute-engine/sequence.d.ts +1 -1
  231. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  232. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  233. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  234. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  235. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  236. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  237. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  238. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  239. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  240. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  241. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  242. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  243. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  244. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  245. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  246. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  247. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  248. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  249. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  250. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  251. package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
  252. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  253. package/dist/types/compute-engine/types-engine.d.ts +19 -3
  254. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  255. package/dist/types/compute-engine/types-expression.d.ts +17 -14
  256. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +32 -1
  257. package/dist/types/compute-engine/types-kernel-serialization.d.ts +45 -3
  258. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  259. package/dist/types/compute-engine/types.d.ts +1 -1
  260. package/dist/types/compute-engine.d.ts +1 -1
  261. package/dist/types/core.d.ts +1 -1
  262. package/dist/types/identities.d.ts +3 -0
  263. package/dist/types/interval.d.ts +1 -1
  264. package/dist/types/latex-syntax.d.ts +2 -2
  265. package/dist/types/math-json/symbols.d.ts +1 -1
  266. package/dist/types/math-json/types.d.ts +1 -1
  267. package/dist/types/math-json/utils.d.ts +1 -1
  268. package/dist/types/math-json.d.ts +2 -2
  269. package/dist/types/numerics.d.ts +1 -1
  270. package/package.json +9 -3
@@ -1,7 +1,18 @@
1
- /** Numerics 0.58.0 */
1
+ /** Numerics 0.59.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.Numerics = {}));})(this, (function (exports) { 'use strict';
3
- var Numerics=(()=>{var Qe=Object.defineProperty;var Wt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var Xt=Object.prototype.hasOwnProperty;var zt=(i,e)=>{for(var t in e)Qe(i,t,{get:e[t],enumerable:!0})},Ht=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Yt(e))!Xt.call(i,r)&&r!==t&&Qe(i,r,{get:()=>e[r],enumerable:!(n=Wt(e,r))||n.enumerable});return i};var Kt=i=>Ht(Qe({},"__esModule",{value:!0}),i);var xr={};zt(xr,{BigNumericValue:()=>Ce,DEFAULT_PRECISION:()=>Ci,DEFAULT_TOLERANCE:()=>ui,ExactNumericValue:()=>q,LARGEST_SMALL_PRIME:()=>si,MACHINE_PRECISION:()=>Li,MACHINE_PRECISION_BITS:()=>ai,MAX_BIGINT_DIGITS:()=>Zi,MAX_ITERATION:()=>Ui,MAX_SYMBOLIC_TERMS:()=>$i,MachineNumericValue:()=>Le,NumericValue:()=>D,SMALL_INTEGER:()=>S,add:()=>z,airyAi:()=>_t,airyBi:()=>Vt,areCompatibleUnits:()=>Hn,asMachineRational:()=>mn,besselI:()=>ee,besselJ:()=>j,besselK:()=>At,besselY:()=>We,beta:()=>Rt,bigBeta:()=>wt,bigDigamma:()=>Xe,bigGamma:()=>Q,bigGammaln:()=>Ye,bigInterquartileRange:()=>Yn,bigKurtosis:()=>Zn,bigLambertW:()=>Dt,bigMean:()=>An,bigMedian:()=>re,bigMode:()=>jn,bigPolygamma:()=>St,bigPopulationStandardDeviation:()=>Cn,bigPopulationVariance:()=>bt,bigPrimeFactors:()=>oi,bigQuartiles:()=>Gn,bigSkewness:()=>$n,bigStandardDeviation:()=>_n,bigTrigamma:()=>ze,bigVariance:()=>gt,bigZeta:()=>ki,bigint:()=>F,bigintCanonicalInteger:()=>fe,bigintFactorial:()=>li,bigintGcd:()=>Y,bigintLcm:()=>Se,bigintValue:()=>yn,bignumFactorial2:()=>ft,bignumGcd:()=>Ei,bignumLcm:()=>lt,canonicalInteger:()=>W,cantorEnumerateComplexNumbers:()=>zi,cantorEnumerateIntegers:()=>Hi,cantorEnumerateNaturalNumbers:()=>Ki,cantorEnumeratePositiveRationals:()=>Xi,cantorEnumerateRationals:()=>Yi,centeredDiff8thOrder:()=>Wi,chop:()=>Gi,complexGamma:()=>Jt,complexGammaln:()=>Gt,convertCompoundUnit:()=>tr,convertUnit:()=>It,determinant:()=>ht,digamma:()=>He,dimensionsEqual:()=>je,div:()=>fn,erf:()=>vi,erfInv:()=>Mt,erfc:()=>Bt,extrapolate:()=>ke,factorial:()=>ji,factorial2:()=>Ji,findNamedUnit:()=>Qn,fresnelC:()=>qt,fresnelS:()=>$t,fromDigits:()=>pi,gamma:()=>C,gammaln:()=>oe,gcd:()=>P,getExpressionDimension:()=>H,getExpressionScale:()=>K,getUnitDimension:()=>qe,getUnitScale:()=>Tt,interquartileRange:()=>Wn,interval:()=>Sn,intervalContains:()=>wn,intervalSubset:()=>Dn,inverse:()=>de,isBigRational:()=>we,isDimensionless:()=>Xn,isInMachineRange:()=>ge,isInteger:()=>ie,isMachineRational:()=>A,isNeg:()=>ln,isNegativeOne:()=>Fe,isOne:()=>Re,isPositive:()=>De,isPrime:()=>Vi,isPrimeBigint:()=>tn,isRational:()=>an,isZero:()=>X,kurtosis:()=>Ln,lambertW:()=>Ft,lcm:()=>Be,limit:()=>Me,machineDenominator:()=>cn,machineNumerator:()=>un,mean:()=>Pn,median:()=>ne,mode:()=>qn,monteCarloEstimate:()=>Fn,mul:()=>V,neg:()=>mi,nextDown:()=>qi,nextUp:()=>ci,numberToExpression:()=>R,numberToString:()=>M,parseUnitDSL:()=>ir,polygamma:()=>xi,populationStandardDeviation:()=>Vn,populationVariance:()=>Nt,pow:()=>dn,primeFactors:()=>xe,quartiles:()=>Jn,rationalAsFloat:()=>fi,rationalGcd:()=>di,rationalize:()=>pn,reduceRationalSquareRoot:()=>gn,reducedInteger:()=>Qi,reducedRational:()=>me,sinc:()=>jt,skewness:()=>Un,sqrt:()=>hn,standardDeviation:()=>On,trigamma:()=>Ke,variance:()=>pt,version:()=>kr,zeta:()=>Mi});var D=class{get bignumRe(){}im;get bignumIm(){}isZeroWithTolerance(e){return this.isZero}valueOf(){return this.im===0?this.bignumRe?this.bignumRe.toNumber():this.re:this.toString()}[Symbol.toPrimitive](e){return e==="string"?this.toString():this.valueOf()}toJSON(){if(this.im===0){let e=this.re;if(Number.isFinite(e))return e}return this.N().toString()}print(){let e=console.log;e?.(this.toString())}};var Bi=new Map;function I(i){if(i<=100){let e=Bi.get(i);return e===void 0&&(e=10n**BigInt(i),Bi.set(i,e)),e}return 10n**BigInt(i)}function wi(i,e,t){return i*e/t}function Di(i,e,t){return i*t/e}function le(i,e){if(i===0n)return 0n;if(i<0n)throw new RangeError("fpsqrt: negative input");let t,n=Number(i),r=Number(e);if(Number.isFinite(n)&&Number.isFinite(r)&&n>0&&r>0){let d=Math.sqrt(n/r)*r;Number.isFinite(d)&&d>0?(t=BigInt(Math.floor(d)),t===0n&&(t=1n)):t=Si(i,e)}else t=Si(i,e);let s=i*e,o;do o=t,t=(t+s/t)/2n;while(_(t-o)>1n);let u=(t+s/t)/2n,c=_(t*t-s);return _(u*u-s)<c?u:t}function Si(i,e){let n=x(i),r=Math.max(0,n-15),s=Number(r>0?i/I(r):i),o=x(e),u=Math.max(0,o-15),c=Number(u>0?e/I(u):e),l=r+u,d=Math.floor(l/2),f=Math.sqrt(s*c);l%2!==0&&(f*=3.1622776601683795);let p=BigInt(Math.round(f))*I(d);return p>0n?p:1n}function _(i){return i<0n?-i:i}function x(i){if(i===0n)return 1;if(i<0n&&(i=-i),i<0x20000000000000n)return Math.floor(Math.log10(Number(i)))+1;let e=0,t=i,n=1;for(;t>>BigInt(n)>0n;)n*=2;for(let s=n>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(e+=s,t>>=BigInt(s));e+=1;let r=Math.ceil(e*.30102999566398);return i<I(r-1)?r-1:i>=I(r)?r+1:r}function ti(i,e){if(i===0n)return e;let t=0,n=i,r=e/2n;for(;_(n)>r;)n=n/2n,t++;let s=e,o=n;s+=o;for(let u=2;o=o*n/(BigInt(u)*e),_(o)!==0n;u++)s+=o;for(let u=0;u<t;u++)s=s*s/e;return s}function Ri(i,e){if(i===e)return 0n;let t=Number(i),n=Number(e),r,s=i,o=0;if(Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0){let c=t/n;if(Number.isFinite(c)&&c>0){let l=Math.log(c);Number.isFinite(l)?r=BigInt(Math.round(l*n)):r=ei(i,e)}else r=ei(i,e)}else{s=i;let c=2n*e,l=e/2n;for(;s>c||s<l;)s=le(s,e),o++;r=ei(s,e)}let u=0n;for(let c=0;c<100;c++){let l=ti(r,e);if(l===0n){r=r/2n;continue}let d=r+s*e/l-e,f=_(d-r);if(f<=1n||f<100000n&&u>0n&&u<100000n&&f*4n>=u)break;u=f,r=d}for(let c=0;c<o;c++)r=2n*r;return r}function ei(i,e){let t=x(i),n=x(e);return BigInt(t-n)*2302585n*e/1000000n}var Ie="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",Te=null;function ii(i){if(Te!==null&&Te.scale===i)return Te.value;let t=x(i)-1+10,n=Ie.slice(0,t+1),r=BigInt(n),s=n.length-1,o=r*i/I(s);return Te={scale:i,value:o},o}function Ee(i,e){if(i===0n)return[0n,e];let t=ii(e),n=2n*t,r=t/2n,s,o=_(i);if(o>e*(1n<<30n)){let E=x(o)-x(e)+20,B=e*I(E),w=i*I(E),J=2n*ii(B),L=w%J;L<0n&&(L+=J),s=L/I(E)}else s=i%n;s<0n&&(s+=n);let u=1n,c=1n;s>3n*r?(s=n-s,u=-1n):s>t?(s=s-t,u=-1n,c=-1n):s>r&&(s=t-s,c=-1n);let l=x(e)-1,d=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(l)))),f=0,p=e>>BigInt(d);for(;s>p;)s=s/2n,f++;let m=s,h=e,g=s,b=e,y=s*s,T=e*e;for(let E=2;;E+=2){if(b=b*y/(BigInt(E)*BigInt(E-1)*T),b===0n){g=g*y/(BigInt(E+1)*BigInt(E)*T),g!==0n&&(E%4===2?(h-=b,m-=g):(h+=b,m+=g));break}if(g=g*y/(BigInt(E+1)*BigInt(E)*T),E%4===2?(h-=b,m-=g):(h+=b,m+=g),g===0n)break}for(let E=0;E<f;E++){let B=2n*m*h/e,w=2n*h*h/e-e;m=B,h=w}return[u*m,c*h]}function ce(i,e){if(i===0n)return 0n;if(i<0n)return-ce(-i,e);let n=ii(e)/2n;if(i>e){let f=e*e/i;return n-ce(f,e)}let r=4n*e/10n,s=0,o=i;for(;o>r;){let f=o*o,p=(e*e+f)/e,m=le(p,e);o=o*e/(e+m),s++}let u=o,c=o,l=o*o,d=e*e;for(let f=3;c=c*l/d,c!==0n;f+=2)f%4===3?u-=c/BigInt(f):u+=c/BigInt(f);for(let f=0;f<s;f++)u=2n*u;return u}var ni=NaN,a=class i{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(i.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(i.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(i.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(i.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(i.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(i.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(i.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(i.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static get PI(){i._piFullPrecision===null&&(i._piFullPrecision=new i(Ie[0]+"."+Ie.slice(1)));let e=i.precision;return(i._piCache===null||i._piCachePrecision!==e)&&(i._piCache=i._piFullPrecision.toPrecision(e+4),i._piCachePrecision=e),i._piCache}significand;exponent;constructor(e){if(e instanceof i){this.significand=e.significand,this.exponent=e.exponent;return}if(typeof e=="bigint"){[this.significand,this.exponent]=ve(e,0);return}if(typeof e=="number"){[this.significand,this.exponent]=Qt(e);return}[this.significand,this.exponent]=Ai(e)}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(e){if(typeof e=="number"){if(Number.isNaN(e))return ni;let m=this.exponent;if(Number.isNaN(m))return ni;if(e===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(m))return e===1/0?this.significand>0n?0:-1:e===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return e>0?-1:1;if(e===1/0)return-1;if(e===-1/0)return 1;if(this.significand>0n!=e>0)return this.significand>0n?1:-1;if(Number.isInteger(e)&&m>=0&&m<=15){let h=this.significand*I(m),g=BigInt(e);return h<g?-1:h>g?1:0}e=new i(e)}let t=this.exponent,n=e.exponent,r=this.significand,s=e.significand;if(t!==t||n!==n)return ni;if(!Number.isFinite(t)||!Number.isFinite(n))return!Number.isFinite(t)&&!Number.isFinite(n)?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===n)return r<s?-1:r>s?1:0;let o=x(r),u=x(s),c=o+t,l=u+n;if(c!==l){let m=r>0n?1:-1;return c>l?m:-m}let d=r,f=s,p=Math.abs(t-n);if(p>1e3){let m=o,h=u,g=Math.max(m,h)+1;m<g&&(d=d*I(g-m)),h<g&&(f=f*I(g-h))}else t<n?f=f*I(p):d=d*I(p);return d<f?-1:d>f?1:0}eq(e){return typeof e=="number"?e===0?this.significand===0n&&this.exponent===0:e===1?this.significand===1n&&this.exponent===0:e===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(e)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*I(this.exponent)===BigInt(e):this.cmp(e)===0:this.significand===e.significand&&this.exponent===e.exponent}lt(e){return this.cmp(e)===-1}lte(e){let t=this.cmp(e);return t===-1||t===0}gt(e){return this.cmp(e)===1}gte(e){let t=this.cmp(e);return t===1||t===0}add(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(t===n)return v(this.significand+e.significand,t);let o=t-n;return o>0?v(this.significand*I(o)+e.significand,n):v(this.significand+e.significand*I(-o),t)}if(t!==t||n!==n)return i.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(n);return r&&s?this.significand!==e.significand?i.NAN:this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:r?this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:e.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}sub(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(t===n)return v(this.significand-e.significand,t);let o=t-n;return o>0?v(this.significand*I(o)-e.significand,n):v(this.significand-e.significand*I(-o),t)}if(t!==t||n!==n)return i.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(n);return r&&s?this.significand===e.significand?i.NAN:this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:r?this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:e.significand>0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY}mul(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n))return v(this.significand*e.significand,t+n);if(t!==t||n!==n||this.significand===0n||e.significand===0n)return i.NAN;let r=this.significand>0n?1n:-1n,s=e.significand>0n?1n:-1n;return r*s>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}neg(){let e=this.significand;return e===0n?this:Number.isFinite(this.exponent)?v(-e,this.exponent):e>0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?v(-this.significand,this.exponent):i.POSITIVE_INFINITY}floor(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.trunc();return this.significand<0n?t.sub(v(1n,0)):t}return this}ceil(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.trunc();return this.significand>0n?t.add(v(1n,0)):t}return this}round(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=v(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.significand/I(-e);return v(t===0n?0n:t,0)}return this}div(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent,r=this.significand,s=e.significand;if(Number.isFinite(t)&&Number.isFinite(n)){if(s===0n)return r===0n?i.NAN:r>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY;if(r===0n)return v(0n,0);let c=i.precision,l=10,d=r<0n?-r:r,f=s<0n?-s:s,p=x(d),m=x(f),h=c+l+Math.max(0,m-p),g=I(h),b=r*g/s,y=t-n-h;return v(b,y).toPrecision(c)}if(t!==t||n!==n)return i.NAN;let o=!Number.isFinite(t),u=!Number.isFinite(n);if(o&&u)return i.NAN;if(o){let c=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return c*l>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}return v(0n,0)}inv(){return v(1n,0).div(this)}mod(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;return Number.isFinite(t)&&Number.isFinite(n)?e.significand===0n?i.NAN:this.significand===0n?v(0n,0):this.sub(this.div(e).trunc().mul(e)).toPrecision(i.precision):t!==t||n!==n||!Number.isFinite(t)?i.NAN:new i(this)}pow(e){if(typeof e=="number"&&(e=new i(e)),this.isNaN()||e.isNaN()||!e.isFinite())return i.NAN;if(e.isInteger()){let t=e.toBigInt();if(t===0n)return v(1n,0);if(!this.isFinite())return t>0n?this.significand<0n&&t%2n!==0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY:v(0n,0);if(this.isZero())return t>0n?v(0n,0):i.POSITIVE_INFINITY;if(t<0n)return this.pow(e.neg()).inv();let n=this.significand<0n?-this.significand:this.significand,r=x(n)+this.exponent,s=Number(t)*r;if(s>9e15)return this.significand<0n&&t%2n!==0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY;if(s<-9e15)return v(0n,0);let o=i.precision,u=v(1n,0),c=this,l=t;for(;l>0n;)l&1n&&(u=u.mul(c).toPrecision(o)),l>>=1n,l>0n&&(c=c.mul(c).toPrecision(o));return u}return this.isFinite()?this.isZero()?e.significand>0n?i.ZERO:i.POSITIVE_INFINITY:this.significand<0n?i.NAN:e.mul(this.ln()).exp():this.significand<0n?i.NAN:e.significand>0n?i.POSITIVE_INFINITY:i.ZERO}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 e=this.significand<0n,t=(e?-this.significand:this.significand).toString(),n=t.length,r=n+this.exponent-1,s=e?"-":"";if(r>20||r<-6){let c=n===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${c}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<n){let c=t.slice(0,n-o),l=t.slice(n-o);return`${s}${c}.${l}`}let u=o-n;return`${s}0.${"0".repeat(u)}${t}`}toFixed(e){let t=e??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let n=this.significand<0n,r=n?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*I(s);else{let f=I(-s),p=r/f,m=r%f,h=f/2n;m>h?o=p+1n:m<h||f%2n!==0n||p%2n===0n?o=p:o=p+1n}let u=n&&o!==0n?"-":"",c=o.toString();if(t===0)return`${u}${c}`;if(c.length<=t){let f=c.padStart(t,"0");return`${u}0.${f}`}let l=c.slice(0,c.length-t),d=c.slice(c.length-t);return`${u}${l}.${d}`}toPrecision(e){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,n=x(t);if(n<=e)return this;let r=n-e,s=I(r),o=t/s,u=t%s,c=s/2n;(u>c||u===c&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return v(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*I(this.exponent);let e=I(-this.exponent);return this.significand/e}};function v(i,e){let[t,n]=ve(i,e),r=Object.create(a.prototype);return r.significand=t,r.exponent=n,r}var Fi=1000000000n,Pi=1000n;function ve(i,e){if(i===0n)return[0n,0];for(;i%Fi===0n;)i/=Fi,e+=9;for(;i%Pi===0n;)i/=Pi,e+=3;for(;i%10n===0n;)i/=10n,e+=1;return[i,e]}function Qt(i){return Number.isNaN(i)?[0n,NaN]:i===1/0?[1n,1/0]:i===-1/0?[-1n,1/0]:Number.isInteger(i)?ve(BigInt(i),0):Ai(i.toString())}function Ai(i){if(i=i.trim(),i===""||i==="NaN")return[0n,NaN];if(i==="Infinity"||i==="+Infinity")return[1n,1/0];if(i==="-Infinity")return[-1n,1/0];let e,t=0,n=i.search(/[eE]/);if(n!==-1){if(e=i.slice(0,n),t=Number(i.slice(n+1)),!Number.isFinite(t))return[0n,NaN]}else e=i;let r=!1;e.startsWith("-")?(r=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s=e.indexOf("."),o,u;s===-1?(o=e,u=""):(o=e.slice(0,s),u=e.slice(s+1)),o=o.replace(/^0+/,"")||"0";let c=o+u;if(c.length===0||!/^\d+$/.test(c))return[0n,NaN];let l=BigInt(c);r&&(l=-l);let d=-u.length;return ve(l,d+t)}function Z(i,e){let t=I(e),n=i.exponent+e;return n>=0?[i.significand*I(n),t]:[i.significand/I(-n),t]}function U(i,e,t){if(i===0n)return a.ZERO;let n=i<0n,r=n?-i:i,s=x(r);if(s>t){let l=s-t,d=I(l),f=d/2n,p=r%d;r=r/d,p>=f&&(r+=1n);let m=x(e)-1,h=l-m,g=n?-r:r;return v(g,h)}let u=-(x(e)-1),c=n?-r:r;return v(c,u)}a.prototype.sqrt=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NAN;if(this.significand<0n)return a.NAN;let i=a.precision,e=i+10,[t,n]=Z(this,e),r=le(t,n);return U(r,n,i)};a.prototype.cbrt=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let i=a.precision,e=i+10,[t,n]=Z(this,e),r=t*n*n,s,o=this.toNumber(),u=Number(n);if(Number.isFinite(o)&&o>0&&Number.isFinite(u)){let l=Math.cbrt(o);Number.isFinite(l)&&l>0?(s=BigInt(Math.floor(l*u)),s===0n&&(s=1n)):s=Oi(t,n)}else s=Oi(t,n);let c;do{c=s;let l=s*s;if(l===0n){s=1n;break}s=(2n*s+r/l)/3n}while(_(s-c)>1n);{let l=(2n*s+r/(s*s))/3n,d=_(s*s*s-r);_(l*l*l-r)<d&&(s=l)}return U(s,n,i)};a.sqrt=function(i){return i.sqrt()};a.cbrt=function(i){return i.cbrt()};a.prototype.exp=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.ZERO;if(this.isZero())return a.ONE;let i=a.precision,e=i+15,[t,n]=Z(this,e),r=ti(t,n);return U(r,n,i)};a.prototype.ln=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NAN;if(this.isZero())return a.NEGATIVE_INFINITY;if(this.significand<0n)return a.NAN;if(this.eq(1))return a.ZERO;let i=a.precision,e=i+15,[t,n]=Z(this,e),r=Ri(t,n);return U(r,n,i)};a.prototype.log=function(i){let e=i instanceof a?i:new a(i);return this.ln().div(e.ln())};a.exp=function(i){return i.exp()};a.ln=function(i){return i.ln()};a.log10=function(i){return i.log(10)};a.prototype.sin=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ZERO;let i=a.precision,e=i+15,[t,n]=Z(this,e),[r]=Ee(t,n);return U(r,n,i)};a.prototype.cos=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ONE;let i=a.precision,e=i+15,[t,n]=Z(this,e),[,r]=Ee(t,n);return U(r,n,i)};a.prototype.tan=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ZERO;let i=a.precision,e=i+15,[t,n]=Z(this,e),[r,s]=Ee(t,n);if(s===0n)return r>0n?a.POSITIVE_INFINITY:a.NEGATIVE_INFINITY;let o=r*n/s;return U(o,n,i)};a.prototype.atan=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite()){let s=a.PI.div(a.TWO);return this.significand>0n?s:s.neg()}let i=a.precision,e=i+15,[t,n]=Z(this,e),r=ce(t,n);return U(r,n,i)};a.prototype.asin=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ZERO;let i=this.abs(),e=a.ONE;if(i.gt(e))return a.NAN;if(i.eq(e)){let f=a.PI.div(a.TWO);return this.significand>0n?f:f.neg()}let t=a.precision,n=t+20,[r,s]=Z(this,n),o=wi(r,r,s),u=s-o,c=le(u,s),l=Di(r,c,s),d=ce(l,s);return U(d,s,t)};a.prototype.acos=function(){return this.isNaN()?a.NAN:this.isFinite()?this.abs().gt(a.ONE)?a.NAN:this.eq(1)?a.ZERO:this.eq(-1)?a.PI:a.PI.div(a.TWO).sub(this.asin()):a.NAN};a.sin=function(i){return i.sin()};a.cos=function(i){return i.cos()};a.tan=function(i){return i.tan()};a.asin=function(i){return i.asin()};a.acos=function(i){return i.acos()};a.atan=function(i){return i.atan()};a.atan2=function(i,e){let t=i instanceof a?i:new a(i);if(t.isNaN()||e.isNaN())return a.NAN;let n=a.PI,r=n.div(a.TWO);if(e.isZero())return t.isZero()?a.ZERO:t.significand>0n?r:r.neg();let s=t.div(e);return e.significand>0n?s.atan():t.significand>=0n?s.atan().add(n):s.atan().sub(n)};a.prototype.sinh=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NEGATIVE_INFINITY;let i=this.exp(),e=i.inv();return i.sub(e).div(a.TWO)};a.prototype.cosh=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ONE;if(!this.isFinite())return a.POSITIVE_INFINITY;let i=this.exp(),e=i.inv();return i.add(e).div(a.TWO)};a.prototype.tanh=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.ONE:a.NEGATIVE_ONE;let i=this.mul(a.TWO).exp();return i.sub(a.ONE).div(i.add(a.ONE))};a.sinh=function(i){return i.sinh()};a.cosh=function(i){return i.cosh()};a.tanh=function(i){return i.tanh()};function Oi(i,e){let n=x(i),r=Math.max(0,n-15),s=Number(r>0?i/I(r):i),o=x(e),u=Math.max(0,o-15),c=Number(u>0?e/I(u):e),l=r+2*u,d=Math.floor(l/3),f=l%3,p=Math.cbrt(s*c*c);f===1&&(p*=2.154434690031882),f===2&&(p*=4.641588833612779);let m=BigInt(Math.round(p))*I(d);return m>0n?m:1n}function ke(i,e,t={}){let{contract:n=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:u=o>0?0:Math.sqrt(Number.EPSILON),maxeval:c=1e6,breaktol:l=2}=t;if(!isFinite(e))return ke(b=>i(1/b),1/e,{rtol:u,atol:o,maxeval:c,contract:Math.abs(n)>1?1/n:n,step:1/r,power:s});let d=r,f=Math.pow(1/n,s),p=i(e+d),m=[p],h=1/0,g=1;for(;g<c;){g+=1,d*=n,m.push(i(e+d));let b=f,y=1/0;for(let T=m.length-2;T>=0;T--){let E=m[T];m[T]=m[T+1]+(m[T+1]-m[T])/(b-1);let B=Math.abs(m[T]-E);y=Math.min(y,B),B<h&&(p=m[T],h=B),b*=f}if(y>l*h||!isFinite(y)||h<=Math.max(u*Math.abs(p),o))break}return[p,h]}function F(i){if(typeof i=="bigint")return i;if(typeof i=="number")return Number.isInteger(i)?i>=Number.MAX_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?BigInt(i):F(i.toString()):null;if(i instanceof a)return i.isInteger()?BigInt(i.toFixed(0)):null;let e=i.toLowerCase(),t=e.match(/^([+-]?[0-9]+)e([+-]?[0-9]+)$/);if(t){let r=parseInt(t[2]);if(r<0)return null;e=t[1]+"0".repeat(r)}if(e.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(e))return null;try{return BigInt(e)}catch(r){return console.error(r.message),null}}var _i=0x3ffffffffffe5,ri=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),si=7919;function xe(i){if(Number.isInteger(i)&&i>=0&&i<Number.MAX_SAFE_INTEGER,i<=3)return{[i]:1};let e={},t=0;for(;i%2===0;)t+=1,i/=2;for(t>0&&(e[2]=t),t=0;i%3===0;)t+=1,i/=3;t>0&&(e[3]=t);let n=!1;for(;!n;){if(i===1)return e;let r=Math.sqrt(i);n=!0;for(let s=6;s<=r+6;s+=6){if(i%(s-1)===0){e[s-1]=(e[s-1]??0)+1,i/=s-1,n=!1;break}if(i%(s+1)===0){e[s+1]=(e[s+1]??0)+1,i/=s+1,n=!1;break}}}return e[i]!==void 0?e[i]+=1:e[i]=1,e}function Vi(i){if(!Number.isInteger(i)||!Number.isFinite(i)||Number.isNaN(i)||i<=1)return!1;if(i<=si)return ri.has(i);for(let e of ri)if(i%e===0)return!1;return i<_i?i===en(i)||void 0:rn(i,30)?void 0:!1}function en(i){if(i===1)return 1;if(i%2===0)return 2;if(i%3===0)return 3;if(i%5===0)return 5;let e=Math.floor(Math.sqrt(i)),t=7;for(;t<=e;){if(i%t===0)return t;if(i%(t+4)===0)return t+4;if(i%(t+6)===0)return t+6;if(i%(t+10)===0)return t+10;if(i%(t+12)===0)return t+12;if(i%(t+16)===0)return t+16;if(i%(t+22)===0)return t+22;if(i%(t+24)===0)return t+24;t+=30}return i}function tn(i){if(i<=1)return!1;if(i<=si)return Vi(Number(i));for(let e of ri)if(i%BigInt(e)===BigInt(0))return!1;return i<_i&&(i=nn(i)),sn(i,30)?void 0:!1}function nn(i){if(i===BigInt(1))return BigInt(1);if(i%BigInt(2)===BigInt(0))return BigInt(2);if(i%BigInt(3)===BigInt(0))return BigInt(3);if(i%BigInt(5)===BigInt(0))return BigInt(5);let e=BigInt(Math.floor(Math.sqrt(Number(i)))),t=BigInt(7);for(;t<=e;){if(i%t===BigInt(0))return t;if(i%(t+BigInt(4))===BigInt(0))return t+BigInt(4);if(i%(t+BigInt(6))===BigInt(0))return t+BigInt(6);if(i%(t+BigInt(10))===BigInt(0))return t+BigInt(10);if(i%(t+BigInt(12))===BigInt(0))return t+BigInt(12);if(i%(t+BigInt(16))===BigInt(0))return t+BigInt(16);if(i%(t+BigInt(22))===BigInt(0))return t+BigInt(22);if(i%(t+BigInt(24))===BigInt(0))return t+BigInt(24);t+=BigInt(30)}return i}function rn(i,e){let t=0,n=i-1;for(;n%2===0;)n/=2,++t;e:do{let r=Math.pow(2+Math.floor(Math.random()*(i-3)),n)%i;if(!(r===1||r===i-1)){for(let s=t-1;s--;){if(r=r*r%i,r===1)return!1;if(r===i-1)continue e}return!1}}while(--e);return!0}function sn(i,e){let t=0,n=i-BigInt(1);for(;n%BigInt(2)===BigInt(0);)n=n/BigInt(2),++t;e:do{let r=BigInt(2+Math.floor(Math.random()*(Number(i)-3)))**n%i;if(!(r===BigInt(1)||r===i-BigInt(1))){for(let s=t-1;s--;){if(r=r*r%i,r===BigInt(1))return!1;if(r===i-BigInt(1))continue e}return!1}}while(--e);return!0}var on=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function oi(i){if(i<Number.MAX_SAFE_INTEGER){let d=xe(Number(i)),f=new Map;for(let p of Object.keys(d))f.set(F(p),d[p]);return f}let e=i,t=new Map,n=0,r=0,s=0,o=BigInt(10);for(;e%o===BigInt(0);)n+=1,s+=1,e=e/o;for(o=BigInt(5);e%o===BigInt(0);)s+=1,e=e/o;for(o=BigInt(3);e%o===BigInt(0);)r+=1,e=e/o;for(o=BigInt(2);e%o===BigInt(0);)n+=1,e=e/o;n>0&&t.set("2",n),r>0&&t.set("3",r),s>0&&t.set("5",s),o=BigInt(7);let u="",c=0;for(;o*o<e;)e%o===BigInt(0)?(u||(u=o.toString()),t.set(u,(t.get(u)??0)+1),e=e/o):(o=o+on[c],u="",c=c<7?c+1:0);e!==BigInt(1)&&t.set(e.toString(),(t.get(e.toString())??0)+1);let l=new Map;for(let[d,f]of t)l.set(F(d),f);return l}var Ci=21,ai=53,Li=Math.floor(Math.log10(Math.pow(2,ai))),ui=1e-10,S=1e6,Zi=1024,Ui=1e4,$i=200;function ci(i){if(i!==i)return i;if(i===-1/0)return-Number.MAX_VALUE;if(i===1/0||i===Number.MAX_VALUE)return 1/0;let e=i*(i<0?1-Number.EPSILON/2:1+Number.EPSILON);e===i&&(e=Number.MIN_VALUE*Number.EPSILON>0?i+Number.MIN_VALUE*Number.EPSILON:i+Number.MIN_VALUE),e===1/0&&(e=+Number.MAX_VALUE);let t=i+(e-i)/2;i<t&&t<e&&(e=t);let n=(e+i)/2;return i<n&&n<e&&(e=n),e===0?-0:e}function qi(i){return-ci(-i)}function W(i,e){if(i>=Number.MAX_SAFE_INTEGER)return[1,i];if(i===0)return[0,0];if(i===1)return[1,1];if(Number.isInteger(i)&&i>0&&i<Number.MAX_SAFE_INTEGER,e===2){let s=[[0,0],[1,1],[1,2],[1,3],[2,1],[1,5],[1,6],[1,7],[1,8],[3,1],[1,10],[1,11],[2,3],[1,13],[1,14],[1,15],[4,1],[1,17],[3,2],[1,19],[1,20]][i];if(s)return s}let t=xe(i),n=BigInt(1),r=BigInt(1);for(let s of Object.keys(t)){let o=BigInt(parseInt(s)),u=BigInt(e);n=n*o**(BigInt(t[s])/u),r=r*o**(BigInt(t[s])%u)}return[Number(n),Number(r)]}function P(i,e){if(i===0)return e;if(e===0||i===e)return i;if(!Number.isInteger(i)||!Number.isInteger(e))return NaN;for(;e!==0;)[i,e]=[e,i%e];return i<0?-i:i}function Be(i,e){if(i===0||e===0)return 0;let t=BigInt(i)*BigInt(e)/BigInt(P(i,e));return Number(t)}function ji(i){if(!Number.isInteger(i)||i<0)return NaN;if(i>=170)return 1/0;let e=1;for(let t=2;t<=i;t++)e=e*t;return e}function Ji(i){if(!Number.isInteger(i)||i<0)return NaN;if(i<0)return NaN;if(i<=1)return 1;let e=i;for(;i>2;)i-=2,e*=i;return e}function Gi(i,e=ui){return typeof i=="number"&&Math.abs(i)<=e?0:i}function Wi(i,e,t=.1){return(i(e-4*t)/280-4*i(e-3*t)/105+i(e-2*t)/5-4*i(e-t)/5+4*i(e+t)/5-i(e+2*t)/5+4*i(e+3*t)/105-i(e+4*t)/280)/t}function Me(i,e,t=1){if(t===0){let s=Me(i,e,-1),o=Me(i,e,1);return s===void 0||o===void 0?NaN:Math.abs(s-o)>1e-5?NaN:(s+o)/2}let[n,r]=ke(i,e,{step:t>0?1:-1});return n}function*Yi(){yield[0,1];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;t!==0&&P(e,t)===1&&(yield[e,t],yield[-e,t])}}function*Xi(){yield[0,1];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;t!==0&&P(e,t)===1&&(yield[e,t])}}function*zi(){yield[0,0];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;if(t===0||P(e,t)!==1)continue;let n=e/t;for(let r=0;r<=i;r++){let s=i-r;if(s===0||P(r,s)!==1)continue;let o=r/s;yield[n,o],yield[-n,o],yield[n,-o],yield[-n,-o]}}}function*Hi(){yield 0;for(let i=1;;i++)yield i,yield-i}function*Ki(){for(let i=0;;i++)yield i}function Y(i,e){for(;e!==BigInt(0);)[i,e]=[e,i%e];return i<0?-i:i}function Se(i,e){return i*e/Y(i,e)}function fe(i,e){let t=oi(i),n=BigInt(1),r=BigInt(1),s=BigInt(e);for(let[o,u]of t){let c=F(u);n=n*o**(c/s),r=r*o**(c%s)}return[n,r]}function Qi(i){return i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?Number(i):i}function*li(i){if(i<0)return BigInt(0);if(i<10)return BigInt([1,1,2,6,24,120,720,5040,40320,362880][Number(i)]);if(i%BigInt(2)===BigInt(1))return i*(yield*li(i-BigInt(1)));let e=i,t=i,n=i;for(;e>2;)e-=BigInt(2),t+=e,n*=t,yield n;return n}function an(i){return i!==null&&Array.isArray(i)}function A(i){return i!==null&&Array.isArray(i)&&typeof i[0]=="number"}function we(i){return i!==null&&Array.isArray(i)&&typeof i[0]=="bigint"}function X(i){return i[0]==0}function De(i){return i[0]>0}function Re(i){return i[0]==i[1]}function Fe(i){return i[0]===-i[1]}function ie(i){return i[1]==1}function un(i){return Number(i[0])}function cn(i){return Number(i[1])}function fi(i){return Number(i[0])/Number(i[1])}function ln(i){return i[0]<0}function fn(i,e){return V(i,de(e))}function z(i,e){if(typeof i[0]=="number"&&!Number.isFinite(i[0]))return i;let t=e;if(t===null)return i;if(we(t))return i=[BigInt(i[0]),BigInt(i[1])],[t[1]*i[0]+t[0]*i[1],t[1]*i[1]];if(!Number.isFinite(t[0]))return t;if(we(i)){let s=[BigInt(t[0]),BigInt(t[1])];return[s[1]*i[0]+s[0]*i[1],s[1]*i[1]]}let n=t[1]*i[0]+t[0]*i[1],r=t[1]*i[1];return n<=9007199254740991&&n>=-9007199254740991&&r<=9007199254740991?[n,r]:!Number.isFinite(n)||!Number.isFinite(r)?[NaN,1]:[BigInt(t[1])*BigInt(i[0])+BigInt(t[0])*BigInt(i[1]),BigInt(t[1])*BigInt(i[1])]}function V(i,e){if(A(i)&&A(e)){let t=i[0]*e[0],n=i[1]*e[1];return t<=9007199254740991&&t>=-9007199254740991&&n<=9007199254740991?[t,n]:!Number.isFinite(t)||!Number.isFinite(n)?[NaN,1]:[BigInt(i[0])*BigInt(e[0]),BigInt(i[1])*BigInt(e[1])]}return A(i)?[BigInt(i[0])*e[0],BigInt(i[1])*e[1]]:A(e)?[BigInt(e[0])*i[0],BigInt(e[1])*i[1]]:[i[0]*e[0],i[1]*e[1]]}function mi(i){return[-i[0],i[1]]}function de(i){return i[0]<0?[-i[1],-i[0]]:[i[1],i[0]]}function mn(i){return[Number(i[0]),Number(i[1])]}function dn(i,e){if(Number.isInteger(e),e===0)return[1,1];if(e<0&&(i=de(i),e=-e),e===1)return i;let t=BigInt(e);return[BigInt(i[0])**t,BigInt(i[1])**t]}function hn(i){let e=Math.sqrt(Number(i[0])),t=Math.sqrt(Number(i[1]));if(Number.isInteger(e)&&Number.isInteger(t))return[e,t]}function di(i,e){return A(i)&&A(e)?i[1]===1&&e[1]===1?[P(i[0],e[0]),1]:[P(i[0],e[0]),Be(i[1],e[1])]:i[1]===1&&e[1]===1?[Y(BigInt(i[0]),BigInt(e[0])),BigInt(1)]:[Y(BigInt(i[0]),BigInt(e[0])),Se(BigInt(i[1]),BigInt(e[1]))]}function me(i){if(A(i)){if(i[1]<0&&(i=[-i[0],-i[1]]),i[0]===1||i[1]===1)return i;if(!Number.isFinite(i[1]))return[0,1];let r=P(i[0],i[1]);return r<=1?i:[i[0]/r,i[1]/r]}i[1]<0&&(i=[-i[0],-i[1]]);let e=Y(i[0],i[1]),[t,n]=e<=1?i:[i[0]/e,i[1]/e];return t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&n<=Number.MAX_SAFE_INTEGER?[Number(t),Number(n)]:[t,n]}function pn(i){if(!Number.isFinite(i)||i%1===0)return i;let t=1e-15,n=Math.floor(i),r=1,s=0,o=n,u=1;for(;i-n>t*u*u;){i=1/(i-n),n=Math.floor(i);let c=r;r=o;let l=s;s=u,o=c+n*r,u=l+n*s}return[o,u]}function gn(i){if(we(i)){let[u,c]=i,[l,d]=fe(u,2),[f,p]=fe(c,2);return[me([l,f*p]),d*p]}let[e,t]=i,[n,r]=W(e,2),[s,o]=W(t,2);return[me([n,s*o]),r*o]}function et(i){return!!(typeof i=="number"||hi(i)||typeof i=="string"&&Nn(i))}function hi(i){return i!==null&&typeof i=="object"&&"num"in i}function Nn(i){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(i)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(i)}function bn(i){if(i==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},t=0,n=0;i=i.toUpperCase();for(let r=i.length-1;r>=0;r--){let s=e[i[r]];if(s===void 0)return[t,i.slice(r)];s<n?t-=s:t+=s,n=s}return[t,""]}function pi(i,e){if(i=i.trim(),i.length===0)return[NaN,""];if(i.startsWith("+"))return pi(i.slice(1),e);if(i.startsWith("-")){let[r,s]=pi(i.slice(1),e);return[-r,s]}let t=10;if(typeof e=="string"&&(e=e.toLowerCase()),i.startsWith("0x"))t=16,i=i.slice(2);else if(i.startsWith("0b"))t=2,i=i.slice(2);else{if(e==="roman")return bn(i);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(i)),""]}catch{return[NaN,""]}else typeof e=="number"?t=e:typeof e=="string"&&(t=parseInt(e))}let n=0;for(let r=0;r<i.length;r++){let s={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[i[r]];if(s!==-1){if(s===void 0)return[n,i.substring(r)];if(s>=t)return[n,i.substring(r)];n=n*t+s}}return[n,""]}function M(i,e){if(typeof e=="number"&&typeof i=="number")return i.toFixed(e);let t=i.toString();if(typeof i=="number"&&Number.isInteger(i)&&t.includes("e")){let n=BigInt(i).toString(),r=n.match(/0+$/);if((r?r[0].length:0)<=5)return n}else if(typeof i=="bigint"){let n=t.match(/0+$/),r=n?n[0].length:0;if(r>5)return`${t.slice(0,-r)}e+${r}`}return t}function yn(i){if(typeof i=="number")return Number.isInteger(i)?BigInt(i):null;if(i==null||!et(i))return null;let e=hi(i)?i.num:i;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return t==="nan"||/^(infinity|\+infinity|oo|\+oo|-infinity|-oo)$/.test(t)?null:F(t)}function R(i,e){if(typeof i=="number")return isNaN(i)?"NaN":Number.isFinite(i)?typeof e=="number"?{num:i.toFixed(e)}:i:i<0?"NegativeInfinity":"PositiveInfinity";if(i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER)return Number(i);let t=M(i);return Number(i).toString()===t?Number(i):{num:t}}var he=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],gi=["indexed_collection","list","tuple"],Pe=[...gi,"collection","set","record","dictionary"],Ae=["scalar",...he,"boolean","string"],Ni=["value","color",...Pe,...Ae],bi=["expression","symbol","function",...Ni],$=["any","unknown","nothing","never","error",...bi];function it(i){return typeof i=="string"?$.includes(i):typeof i!="object"||!("kind"in i)?!1:i.kind==="signature"||i.kind==="union"||i.kind==="intersection"||i.kind==="negation"||i.kind==="tuple"||i.kind==="list"||i.kind==="record"||i.kind==="dictionary"||i.kind==="set"||i.kind==="function"||i.kind==="collection"||i.kind==="indexed_collection"||i.kind==="reference"}var Oe=class{input;pos=0;line=1;column=1;tokens=[];constructor(e){this.input=e}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(e){this.pos=e.pos,this.line=e.line,this.column=e.column,this.tokens=e.tokens}error(e){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${e}`)}peek(e=0){let t=this.pos+e;return t<this.input.length?this.input[t]:""}advance(){let e=this.input[this.pos++];return e===`
4
- `?(this.line++,this.column=1):this.column++,e}match(e){if(this.input.slice(this.pos,this.pos+e.length)===e){for(let t=0;t<e.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 e="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)e+=this.advance();return e}readVerbatimString(){if(!this.match("`"))return"";let e="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?e+="`":this.match("\\\\")?e+="\\":e+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),e}readStringLiteral(){let e=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==e;)this.match("\\"+e)?t+=e:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let e="";if((this.peek()==="-"||this.peek()==="+")&&(e+=this.advance()),this.match("0x")||this.match("0X")){for(e+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)e+=this.advance();return"0"+e}if(this.match("0b")||this.match("0B")){for(e+="b";!this.isEOF()&&/[01]/.test(this.peek());)e+=this.advance();return"0"+e}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(e+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(e+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(e+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();return e}createToken(e,t){return{type:e,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 e=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(e,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(e,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 n=this.readIdentifier();switch(n){case"true":return this.createToken("TRUE",n);case"false":return this.createToken("FALSE",n);case"nan":return this.createToken("NAN",n);case"infinity":return this.createToken("INFINITY",n);case"oo":return this.createToken("INFINITY",n);default:return this.createToken("IDENTIFIER",n)}}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 n=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",n)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let e=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(e.push(t),t.type==="EOF"))break}return e}peekToken(){if(this.tokens.length===0){let e=this.nextToken();e&&this.tokens.push(e)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let e=this.nextToken();if(e)return e}return this.tokens.shift()||this.createToken("EOF","")}matchToken(e){return this.peekToken().type===e?(this.consumeToken(),!0):!1}expectToken(e){let t=this.consumeToken();return t.type!==e&&this.error(`Expected ${e}, got ${t.type}`),t}};var _e=class{lexer;typeResolver;current;constructor(e,t){this.lexer=new Oe(e),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(e,t){this.errorAtToken(this.current,e,t)}errorAtToken(e,t,n){let r=this.lexer.input,o=r.split(`
5
- `)[e.line-1]||r,u=e.column,c=" ".repeat(Math.max(0,u-1))+"^",l=["","Invalid type",`| ${o}`,`| ${c}`,"|",`| ${t}`];throw n&&l.push(`| ${n}`),l.push(""),new Error(l.join(`
6
- `))}advance(){let e=this.current;return this.current=this.lexer.consumeToken(),e}match(e){return this.current.type===e?(this.advance(),!0):!1}expect(e){return this.current.type!==e&&this.error(`Expected ${e}, got ${this.current.type}`),this.advance()}createNode(e,t={}){return{kind:e,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let e=this.parseUnionType();if(e||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 e}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let e=this.lexer.saveState(),t=this.current;try{let n=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(e),this.current=t,this.errorAtToken(n,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(e),this.current=t}catch(n){if(this.lexer.restoreState(e),this.current=t,n instanceof Error&&n.message.includes("Function signatures must be enclosed"))throw n}}}parseUnionType(){let e=this.parseIntersectionType();if(!e)return;let t=[e];for(;this.match("|");){let n=this.parseIntersectionType();n||this.error("Expected type after |"),t.push(n)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let e=this.parsePrimaryType();if(!e)return;let t=[e];for(;this.match("&");){let n=this.parsePrimaryType();n||this.error("Expected type after &"),t.push(n)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let e=this.parsePrimaryType();return e||this.error("Expected type after !"),this.createNode("negation",{type:e})}if(this.current.type==="("){let e=this.parseFunctionSignature();if(e)return e;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let n=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),n.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:n})}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 e=this.lexer.saveState(),t=this.current;this.advance();let n=1;for(;n>0&&this.current.type!=="EOF";)this.current.type==="("?n++:this.current.type===")"&&n--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(e),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let e=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),e.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let n=e.some(o=>o.modifier==="optional"),r=e.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=e.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return n&&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:e,returnType:t})}parseArgument(){let e=this.parseNamedElement();if(!e)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:e,modifier:t})}parseNamedElement(){let e;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let n=this.current;if(this.lexer.peekToken().type===":"){e=n.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:e,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 e=this.current,n=this.lexer.peekToken().type==="<";switch(e.value){case"list":return n?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return n?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return n?(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 n?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let e=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let n=this.parseUnionType();n&&(e=n,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}return this.createNode("list",{elementType:e,dimensions:t})}parseVectorType(){let e=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let n=this.parseUnionType();n&&(e=n,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:e,size:t})}parseMatrixType(){let e=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let n=this.parseUnionType();n&&(e=n,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:e,dimensions:t})}parseTensorType(){let e=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("tensor",{elementType:e})}parseDimensions(){let e=[],t=this.parseDimension();if(t){for(e.push(t);this.match("x");){let n=this.parseDimension();n||this.error("Expected dimension after x"),e.push(n)}return e}}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let e=parseInt(this.advance().value);return this.createNode("dimension",{size:e})}}parseDimensionWithX(){if(this.current.type==="NUMBER_LITERAL"){let e=[],t=parseInt(this.advance().value);if(e.push(this.createNode("dimension",{size:t})),this.current.type==="IDENTIFIER"&&this.current.value.startsWith("x")){let n=this.current.value,r=n.match(/x(\d+)/g);if(r&&r.join("")===n){this.advance();for(let s of r){let o=parseInt(s.substring(1));e.push(this.createNode("dimension",{size:o}))}}else(n==="x"||n.startsWith("x"))&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`")}if(e.length>1)return e}}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 n=this.parseNamedElement();n||this.error("Expected tuple element"),t.push(n);let r=n.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 e=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),e.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:e})}}parseRecordEntry(){let e;if(this.current.type==="IDENTIFIER")e=this.advance().value;else if(this.current.type==="VERBATIM_STRING")e=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:e,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("dictionary",{valueType:e})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("set",{elementType:e})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value==="indexed_collection",t=this.current.value==="collection";if(e||t){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(n=r),this.expect(">")}return this.createNode("collection",{elementType:n,indexed:e})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:n})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:n})}}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 n=this.parseValue();this.expect("..");let r=this.parseValue();return this.expect(">"),this.createNode("numeric",{baseType:t,lowerBound:n,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value;if($.includes(e))return this.advance(),this.createNode("primitive",{name:e})}}parseValue(){let e,t;switch(this.current.type){case"STRING_LITERAL":e=this.advance().value,t="string";break;case"NUMBER_LITERAL":e=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),e=!0,t="boolean";break;case"FALSE":this.advance(),e=!1,t="boolean";break;case"NAN":this.advance(),e=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),e=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),e=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:e,valueType:t})}parseTypeReference(){let e=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(e&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,n=this.advance().value;return this.typeResolver.resolve(n)?this.createNode("type_reference",{name:n,isForward:e}):e&&this.typeResolver.forward(n)?this.createNode("type_reference",{name:n,isForward:!0}):(e||this.errorAtToken(t,`Unknown type "${n}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:n,isForward:e}))}}};function tt(i,e){switch(i.kind){case"function_signature":return e.visitFunctionSignature(i);case"union":return e.visitUnionType(i);case"intersection":return e.visitIntersectionType(i);case"negation":return e.visitNegationType(i);case"group":return e.visitGroupType(i);case"list":return e.visitListType(i);case"vector":return e.visitVectorType(i);case"matrix":return e.visitMatrixType(i);case"tensor":return e.visitTensorType(i);case"tuple":return e.visitTupleType(i);case"record":return e.visitRecordType(i);case"dictionary":return e.visitDictionaryType(i);case"set":return e.visitSetType(i);case"collection":return e.visitCollectionType(i);case"expression":return e.visitExpressionType(i);case"symbol":return e.visitSymbolType(i);case"numeric":return e.visitNumericType(i);case"primitive":return e.visitPrimitiveType(i);case"type_reference":return e.visitTypeReference(i);case"value":return e.visitValue(i);default:throw new Error(`Unknown node kind: ${i.kind}`)}}var yi=class{typeResolver;constructor(e){this.typeResolver=e??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(e){return tt(e,this)}visitFunctionSignature(e){let t=[],n=[],r,s;for(let c of e.arguments){let l=this.buildNamedElement(c.element);switch(c.modifier){case"optional":n.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(e.returnType),u={kind:"signature",args:t.length>0?t:void 0,result:o};return n.length>0&&(u.optArgs=n),r&&(u.variadicArg=r,u.variadicMin=s),u}visitUnionType(e){return{kind:"union",types:e.types.map(n=>this.buildType(n))}}visitIntersectionType(e){return{kind:"intersection",types:e.types.map(n=>this.buildType(n))}}visitNegationType(e){return{kind:"negation",type:this.buildType(e.type)}}visitGroupType(e){return this.buildType(e.type)}visitListType(e){let t=this.buildType(e.elementType),n=e.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:n}}visitVectorType(e){let t=this.buildType(e.elementType);return e.size!==void 0?{kind:"list",elements:t,dimensions:[e.size]}:{kind:"list",elements:t}}visitMatrixType(e){let t=this.buildType(e.elementType);if(e.dimensions){let n=e.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:n}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(e){return{kind:"list",elements:this.buildType(e.elementType)}}visitTupleType(e){return{kind:"tuple",elements:e.elements.map(n=>this.buildNamedElement(n))}}visitRecordType(e){if(e.entries.length===0)return"record";let t={};for(let n of e.entries)t[n.key]=this.buildType(n.valueType);return{kind:"record",elements:t}}visitDictionaryType(e){let t=this.buildType(e.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(e){let t=this.buildType(e.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(e){let t=this.buildType(e.elementType);return e.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(e){return{kind:"expression",operator:e.operator}}visitSymbolType(e){return{kind:"symbol",name:e.name}}visitNumericType(e){if(!e.lowerBound&&!e.upperBound)return e.baseType;let t=e.lowerBound?this.buildValue(e.lowerBound):-1/0,n=e.upperBound?this.buildValue(e.upperBound):1/0;return t===-1/0&&n===1/0?e.baseType:{kind:"numeric",type:e.baseType,lower:t,upper:n}}visitPrimitiveType(e){return e.name}visitTypeReference(e){let t=this.typeResolver.resolve(e.name);if(t)return t;if(e.isForward){let n=this.typeResolver.forward(e.name);if(n)return n}return e.name}visitValue(e){return{kind:"value",value:e.value}}buildNamedElement(e){let t=this.buildType(e.type);return e.name?{name:e.name,type:t}:{type:t}}buildDimension(e){return e.size??-1}buildValue(e){return e.value}isAnyType(e){return e==="any"||typeof e=="object"&&"kind"in e&&e.kind==="primitive"&&"name"in e&&e.name==="any"}};function nt(i,e){return new yi(e).buildType(i)}function Ti(i,e){if(i!==void 0){if(it(i))return i;if(typeof i=="string")try{let n=new _e(i,{typeResolver:e}).parseType();return nt(n,e)}catch(t){throw new Error(`Failed to parse type "${i}": ${t instanceof Error?t.message:String(t)}`)}}}var Tn={number:he,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:$,unknown:[],nothing:[],never:[],error:[],value:Ni,scalar:Ae,collection:Pe,indexed_collection:gi,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:bi};function pe(i,e){return e==="any"||i==="never"?!0:i==="unknown"||e==="unknown"?!1:i===e?!0:Tn[e].includes(i)}function N(i,e){if(typeof i=="string"&&!$.includes(i)&&(i=Ti(i)),typeof e=="string"&&!$.includes(e)&&(e=Ti(e)),e==="any")return!0;if(e==="never")return!1;if(e==="error")return i==="error";if(e==="nothing")return i==="nothing";if(i==="nothing")return!1;if(e==="unknown")return!0;if(i==="unknown")return!1;if(typeof e=="string")return typeof i=="string"?pe(i,e):i.kind==="value"?typeof i.value=="boolean"?e==="boolean":typeof i.value=="number"?Number.isInteger(i.value)?pe("integer",e):pe("number",e):typeof i.value=="boolean"?pe("boolean",e):typeof i.value=="string"?pe("string",e):!1:i.kind==="union"?i.types.every(t=>N(t,e)):i.kind==="intersection"?i.types.some(t=>N(t,e)):i.kind==="negation"?!N(i.type,e):i.kind==="numeric"?!!N(i.type,e):e==="number"?rt(i):e==="symbol"?Ii(i):e==="expression"?In(i):e==="function"?ct(i):e==="scalar"?st(i):e==="value"?ut(i):e==="indexed_collection"?at(i):e==="collection"?ot(i):e==="tuple"?i.kind==="tuple":e==="list"?i.kind==="list":e==="set"?i.kind==="set":e==="record"?i.kind==="record":e==="dictionary"?i.kind==="dictionary":!1;if(e.kind==="union")return typeof i!="string"&&i.kind==="union"?i.types.every(t=>e.types.some(n=>N(t,n))):e.types.some(t=>N(i,t));if(e.kind==="expression"){if(i==="symbol")return!0;if(typeof i=="string")return!1;if(i.kind==="expression")return e.operator==="Symbol"?Ii(i):i.operator===e.operator;if(i.kind==="symbol")return!0}if(typeof i=="string")return!1;if(e.kind==="reference"){if(i.kind==="reference")return i.name===e.name;if(e.alias===!0&&e.def)return N(i,e.def)}if(i.kind==="union")return i.types.some(t=>N(t,e));if(i.kind==="intersection"&&e.kind==="intersection")return e.types.every(t=>i.types.some(n=>N(n,t)));if(i.kind==="intersection")return i.types.every(t=>N(t,e));if(e.kind==="intersection")return e.types.every(t=>N(i,t));if(i.kind==="signature"&&e.kind==="signature"){if(!N(i.result,e.result))return!1;if(i.optArgs||i.variadicArg){if(e.args){if(!i.args||i.args.length!==e.args.length)return!1;for(let t=0;t<e.args.length;t++)if(!N(e.args[t].type,i.args[t].type))return!1}else if(i.args)return!1;if(e.optArgs){if(!i.optArgs||i.optArgs.length!==e.optArgs.length)return!1;for(let t=0;t<i.optArgs.length;t++)if(!N(e.optArgs[t].type,i.optArgs[t].type))return!1}else if(i.optArgs)return!1;if(e.variadicArg){if(!i.variadicArg||i.variadicMin!=e.variadicMin||!N(e.variadicArg.type,i.variadicArg.type))return!1}else if(i.variadicArg)return!1}else{if(e.args&&!i.args)return!1;let t=0;if(e.args){if(i.args.length<e.args.length)return!1;for(;t<e.args.length;){if(!N(e.args[t].type,i.args[t].type))return!1;t+=1}}if(e.optArgs){if(t>=i.args.length)return!0;for(let n=0;n<e.optArgs.length;n++){if(!N(e.optArgs[n].type,i.args[t].type))return!1;if(t+=1,t>=i.args.length)return!0}}if(e.variadicArg){if(t>=i.args.length&&e.variadicMin===0)return!0;if(e.variadicMin>0&&t+e.variadicMin>i.args.length)return!1;for(;t<i.args.length;){if(!N(e.variadicArg.type,i.args[t].type))return!1;t+=1}}}return!0}if(i.kind==="record"&&e.kind==="record"){for(let t of Object.keys(e.elements))if(!(t in i.elements)||!N(i.elements[t],e.elements[t]))return!1;return!0}if(i.kind==="dictionary"&&e.kind==="dictionary")return N(i.values,e.values);if(e.kind==="indexed_collection")return i.kind==="indexed_collection"||i.kind==="list"?N(i.elements,e.elements):i.kind==="tuple"?i.elements.every(t=>N(t.type,e.elements)):!1;if(e.kind==="collection"){if(i.kind==="collection"||i.kind==="indexed_collection"||i.kind==="list")return N(i.elements,e.elements);if(i.kind==="tuple")return i.elements.every(t=>N(t.type,e.elements));if(i.kind==="set")return N(i.elements,e.elements);if(i.kind==="dictionary")return N({kind:"tuple",elements:[{type:"string"},{type:i.values}]},e.elements);if(i.kind==="record")return N({kind:"tuple",elements:[{type:"string"},{type:xn(...Object.values(i.elements))}]},e.elements)}if(i.kind==="tuple"&&e.kind==="tuple"){if(i.elements.length!==e.elements.length)return!1;for(let t=0;t<i.elements.length;t++){let n=i.elements[t],r=e.elements[t];if(!N(n.type,r.type)||n.name!==r.name)return!1}return!0}if(e.kind==="list"&&i.kind==="list"){if(!N(i.elements,e.elements))return!1;if(e.dimensions){if(!i.dimensions||i.dimensions.length!==e.dimensions.length)return!1;for(let t=0;t<i.dimensions.length;t++)if(e.dimensions[t]!==-1&&i.dimensions[t]!==e.dimensions[t])return!1}return!0}if(i.kind==="symbol"&&e.kind==="symbol")return i.name===e.name;if(i.kind==="numeric"&&e.kind==="numeric")return!(!N(i.type,e.type)||(i.lower??-1/0)<(e.lower??-1/0)||(i.upper??1/0)>(e.upper??1/0));if(e.kind==="set"&&i.kind==="set")return!!N(i.elements,e.elements);if(i.kind==="negation"&&e.kind==="negation")return N(i.type,e.type);if(e.kind==="negation")return!N(i,e.type);if(e.kind==="value"&&i.kind==="value")return e.value===i.value;if(i.kind==="value"){if(typeof i.value=="boolean")return N("boolean",e);if(typeof i.value=="number")return Number.isInteger(i.value)?N("integer",e):N("real",e);if(typeof i.value=="string")return N("string",e)}return!1}function rt(i){return typeof i=="string"?he.includes(i):i.kind==="value"?typeof i.value=="number":i.kind==="numeric"}function st(i){return rt(i)?!0:typeof i=="string"?Ae.includes(i):i.kind==="value"?["string","boolean","number"].includes(typeof i.value):!1}function ot(i){return at(i)?!0:typeof i=="string"?Pe.includes(i):["collection","set","record","dictionary"].includes(i.kind)}function at(i){return typeof i=="string"?!1:["indexed_collection","list","tuple"].includes(i.kind)}function ut(i){return st(i)||ot(i)}function ct(i){return i==="function"||typeof i!="string"&&i.kind==="signature"}function In(i){return typeof i=="string"&&["expression","symbol","function"].includes(i)||ut(i)||ct(i)||Ii(i)?!0:typeof i=="string"?!1:i.kind==="expression"}function Ii(i){return i==="symbol"?!0:typeof i=="string"?!1:i.kind==="symbol"?!0:i.kind==="expression"?i.operator==="Symbol":!1}function En(i,e){if(i===e)return i;if(i==="any"||e==="any")return"any";if(i==="never")return e;if(e==="never")return i;if(i==="unknown")return e;if(e==="unknown")return i;if(i==="nothing")return e;if(e==="nothing")return i;if(N(i,e))return e;if(N(e,i))return i;let t=Mn(i,e);return vn.has(t)?kn(i,e):t}var vn=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function kn(i,e){let t=[],n=r=>{if(typeof r=="object"&&r.kind==="union"){for(let o of r.types)n(o);return}let s=typeof r=="string"?r:JSON.stringify(r);t.some(o=>(typeof o=="string"?o:JSON.stringify(o))===s)||t.push(r)};return n(i),n(e),t.length===1?t[0]:{kind:"union",types:t}}function xn(...i){return i.length===0?"nothing":i.length===1?i[0]:i.reduce((e,t)=>En(e,t))}function Mn(i,e){return i===e?i:i==="any"||e==="any"?"any":i==="never"?e:e==="never"?i:i==="unknown"?e:e==="unknown"?i:i==="nothing"?e:e==="nothing"?i:k(i,e,"non_finite_number")?"non_finite_number":k(i,e,"finite_integer")?"finite_integer":k(i,e,"integer")?"integer":k(i,e,"finite_rational")?"finite_rational":k(i,e,"rational")?"rational":k(i,e,"finite_real")?"finite_real":k(i,e,"real")?"real":k(i,e,"imaginary")?"imaginary":k(i,e,"finite_complex")?"finite_complex":k(i,e,"complex")?"complex":k(i,e,"finite_number")?"finite_number":k(i,e,"number")?"number":k(i,e,"list")?"list":k(i,e,"record")?"record":k(i,e,"dictionary")?"dictionary":k(i,e,"set")?"set":k(i,e,"tuple")?"tuple":k(i,e,"indexed_collection")?"indexed_collection":k(i,e,"collection")?"collection":k(i,e,"scalar")?"scalar":k(i,e,"value")?"value":k(i,e,"function")?"function":k(i,e,"expression")?"expression":"any"}function k(i,e,t){return!!(N(i,t)&&N(e,t))}var q=class i extends D{__brand;rational;radical;im=0;factory;constructor(e,t){if(super(),this.factory=t,typeof e=="number"){!Number.isFinite(e)||Number.isInteger(e),this.rational=[e,1],this.radical=1;return}if(typeof e=="bigint"){this.rational=[e,BigInt(1)],this.radical=1;return}typeof e!="object"||"im"in e;let n=1;if(typeof n!="number"||Number.isInteger(n),n==0){this.rational=[0,1],this.radical=1;return}let r=e.rational?[...e.rational]:[1,1];n!=1&&(typeof n=="bigint"?r=V(r,[n,BigInt(1)]):r=V(r,[n,1])),this.rational=r,this.radical=e.radical??1,this.radical<=S&&this.radical>=1,this.normalize()}get type(){return this.isNaN?"number":this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(X(this.rational),"finite_real"):ie(this.rational)?"finite_integer":"finite_rational"}get isExact(){return!0}get asExact(){return this}toJSON(){if(this.isNaN)return"NaN";if(this.isPositiveInfinity)return"PositiveInfinity";if(this.isNegativeInfinity)return"NegativeInfinity";if(this.isZero)return 0;if(this.isOne)return 1;if(this.isNegativeOne)return-1;let e=t=>ie(t)?R(t[0]):["Rational",R(t[0]),R(t[1])];return this.radical===1?e(this.rational):Re(this.rational)?["Sqrt",this.radical]:Fe(this.rational)?["Negate",["Sqrt",this.radical]]:this.rational[0]==1?["Divide",["Sqrt",this.radical],R(this.rational[1])]:this.rational[0]==-1?["Negate",["Divide",["Sqrt",this.radical],R(this.rational[1])]]:["Multiply",e(this.rational),["Sqrt",this.radical]]}clone(e){return new i(e,this.factory)}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";let e=n=>ie(n)?M(n[0]):`${M(n[0])}/${M(n[1])}`;if(this.radical===1)return e(this.rational);let t=n=>`sqrt(${M(n)})`;return Re(this.rational)?t(this.radical):Fe(this.rational)?`-${t(this.radical)}`:this.rational[0]==1?`${t(this.radical)}/${M(this.rational[1])}`:this.rational[0]==-1?`-${t(this.radical)}/${M(this.rational[1])}`:`${e(this.rational)}${t(this.radical)}`}get sign(){return X(this.rational)?0:De(this.rational)?1:-1}get re(){return fi(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let e,t=this.rational;return A(t)?e=new a(t[0]).div(t[1]):e=new a(t[0]).div(new a(t[1])),this.radical===1?e:e.mul(new a(this.radical).sqrt())}get numerator(){return this.rational[1]==1?this:this.clone({rational:A(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return A(this.rational)?this.clone(this.rational[1]):this.clone({rational:[this.rational[1],BigInt(1)]})}normalize(){if(Number.isInteger(this.radical)&&this.radical>0&&Number.isFinite(this.radical),isNaN(this.radical)){this.rational=[NaN,1],this.radical=1;return}let[e,t]=this.rational;if(t==0){this.rational=[NaN,1],this.radical=1;return}if(this.radical===0||e===0){this.rational=[0,1],this.radical=1;return}if(this.radical>=4){let[n,r]=W(this.radical,2);n!==1&&(this.rational=V(this.rational,[n,1])),this.radical=r}this.rational=me(this.rational)}get isNaN(){return Number.isNaN(this.rational[0])}get isPositiveInfinity(){return this.rational[0]==1/0}get isNegativeInfinity(){return this.rational[0]==-1/0}get isComplexInfinity(){return!1}get isZero(){return X(this.rational)}get isOne(){return!(this.rational[0]!==this.rational[1]||this.radical!==1)}get isNegativeOne(){return!(this.rational[0]!==-this.rational[1]||this.radical!==1)}sgn(){if(!Number.isNaN(this.rational[0]))return X(this.rational)?0:De(this.rational)?1:-1}N(){return this.isZero||this.isOne||this.isNegativeOne?this:this.rational[1]==1&&this.radical===1?this:this.factory(this.bignumRe)}neg(){return this.isZero?this:this.clone({rational:mi(this.rational),radical:this.radical})}inv(){return this.isOne?this:this.isNegativeOne?this:this.clone({rational:V([BigInt(this.rational[1]),BigInt(1)],de([BigInt(this.rational[0])*BigInt(this.radical),BigInt(1)])),radical:this.radical})}add(e){return typeof e=="number"?e===0?this:Number.isInteger(e)&&this.radical===1?this.clone({rational:z(this.rational,[e,1])}):this.factory(this.bignumRe).add(e):e.isZero?this:this.isZero?e:e instanceof i?this.radical===e.radical?this.clone({rational:z(this.rational,e.rational),radical:this.radical}):this.factory(this.bignumRe).add(e):e.add(this)}sub(e){return this.add(e.neg())}mul(e){if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):this.clone(0);if(e===1)return this;if(e===-1)return this.neg();if(typeof e=="number")return Number.isInteger(e)?this.clone({rational:V(this.rational,[e,1]),radical:this.radical}):this.factory(this.bignumRe).mul(e);if(e instanceof a)return this.factory(e).mul(this);if(e.im!==0)return e.mul(this);if(e.isZero)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):e;if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isNaN)return e;if(this.isZero)return e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN?this.clone(NaN):this;if(this.isOne)return e;if(this.isNegativeOne)return e.neg();if(!(e instanceof i))return e.mul(this);let t=BigInt(this.radical)*BigInt(e.radical);return t>BigInt(S)?this.factory(this.bignumRe).mul(e):this.clone({rational:V(this.rational,e.rational),radical:Number(t)})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({rational:V(this.rational,[1,e]),radical:this.radical});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(this.isZero)return e.isZero?this.clone(NaN):e.isNaN?e:this;if(e.isNaN)return e;if(e.isZero)return this.clone(this.sign*(1/0));if(!(e instanceof i))return this.factory(this.bignumRe).div(e);if(e.im!==0)return this.factory(this.bignumRe).div(e);let t=V(this.rational,[BigInt(e.rational[1]),BigInt(e.rational[0])*BigInt(e.radical)]),n=BigInt(this.radical)*BigInt(e.radical);return n>BigInt(S)?this.factory(this.bignumRe).div(e):this.clone({rational:t,radical:Number(n)})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;if(e.im)e={re:e.re,im:e.im};else{if(e instanceof i&&e.radical===1&&e.rational[0]==1)return this.root(e.rational[0]);e=e.re}}if(e===.5)return this.sqrt();if(typeof e=="object"&&("re"in e||"im"in e))return this.factory(this.bignumRe).pow(e);if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.factory({im:1/0})}if(e<0)return this.pow(-e).inv();if(e%1===.5)return this.pow(Math.floor(e)).mul(this.sqrt());if(this.radical>S||this.rational[0]>S||this.rational[0]<-S||this.rational[1]>S)return this.factory(this.bignumRe).pow(e);if(this.sign<0){if(Number.isInteger(e)){let t=e%2===0?1:-1,n=BigInt(e),r=BigInt(this.radical)**n;return r>BigInt(S)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(t)*(-BigInt(this.rational[0]))**n,BigInt(this.rational[1])**n],radical:Number(r)})}return this.factory({im:(-this.re)**e})}else if(Number.isInteger(e)){let t=BigInt(e),n=BigInt(this.radical)**t;return n>BigInt(S)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(this.rational[0])**t,BigInt(this.rational[1])**t],radical:Number(n)})}return this.factory(this.bignumRe).pow(e)}root(e){if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(e===1)return this;if(e===-1)return this.inv();if(e<0)return this.root(-e).inv();if(e%1===.5)return this.root(Math.floor(e)).sqrt();if(this.radical===1){if(this.sign>0){let t=this.re;if(Number.isInteger(t)){if(t>0){let n=Math.pow(t,1/e);if(Number.isInteger(n))return this.clone(n)}return this.factory(this.bignumRe).root(e)}}return this.factory(this.bignumRe).root(e)}if(this.sign<0)return this.factory({im:Math.pow(-this.re,1/e)});if(this.radical>S||this.rational[0]>S||this.rational[0]<-S||this.rational[1]>S)return this.factory(this.bignumRe).root(e);if(this.rational[1]==1){let t=Math.pow(this.rational[0],1/e);if(Number.isInteger(t))return this.clone(t)}return this.factory(this.bignumRe).root(e)}sqrt(){if(this.isZero||this.isOne)return this;if(this.radical===1)if(A(this.rational)){let[e,t]=this.rational;return e*t>S?this.factory(this.bignumRe).sqrt():e>0?this.clone({radical:e*t,rational:[1,t]}):this.factory({im:Math.sqrt(-e*t)/t})}else return this.factory(this.bignumRe).sqrt();if(this.sign>0){let e=Math.sqrt(this.re);if(Number.isInteger(e))return this.clone(e)}return this.factory(this.bignumRe).sqrt()}gcd(e){if(!(e instanceof i))return e.gcd(this);if(this.isOne||e.im!==0||e.isOne)return this.clone(1);let t=di(this.rational,e.rational),n=P(this.radical,e.radical);return this.clone({rational:t,radical:n})}abs(){return this.sign===-1?this.neg():this}ln(e){return this.isZero?this.clone(NaN):this.isPositiveInfinity?this.clone(1/0):this.sign<0?this.clone(NaN):this.isOne?this.clone(0):this.isNegativeOne?this.factory({im:Math.PI}):this.factory(this.bignumRe).ln(e)}exp(){return this.isNaN?this.clone(NaN):this.isZero?this.clone(1):this.isNegativeInfinity?this.clone(0):this.isPositiveInfinity?this.clone(1/0):this.factory(this.bignumRe).exp()}floor(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.floor(this.re))}ceil(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.ceil(this.re))}round(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.round(this.re))}eq(e){return typeof e=="number"?this.radical===1&&ie(this.rational)&&this.rational[0]==e:e instanceof i?this.radical===e.radical&&this.rational[0]==e.rational[0]&&this.rational[1]==e.rational[1]:e.im===0&&e.re===this.re}lt(e){if(this.im===0)return typeof e=="number"?this.re<e:this.re<e.re}lte(e){if(this.im===0)return typeof e=="number"?this.re<=e:this.re<=e.re}gt(e){if(this.im===0)return typeof e=="number"?this.re>e:this.re>e.re}gte(e){if(this.im===0)return typeof e=="number"?this.re>=e:this.re>=e.re}static sum(e,t){if(e.length===1)return e;if(e.some(u=>!u.isExact)){if(e.length===2)return[e[0].add(e[1])];let u=t(0);for(let c of e)u=u.add(c);return[u]}let n=0,r=[0,1],s=[];for(let u of e){if(u.isNaN)return[new i(NaN,t)];if(!u.isZero)if(n+=u.im,u instanceof i){let c=u.rational;if(u.radical===1)r=z(r,c);else{let l=s.findIndex(d=>d.radical===u.radical);l===-1?s.push({multiple:c,radical:u.radical}):s[l].multiple=z(s[l].multiple,c)}}else{N(u.type,"integer");let c=BigInt(u.bignumRe.toFixed(0));r=z(r,[c,BigInt(1)])}}if(X(r)&&s.length===0)return n===0?[new i(0,t)]:[t({im:n})];let o=[];return n!==0&&o.push(t({im:n})),s.length===0?o.push(new i({rational:r},t)):(s.push({multiple:r,radical:1}),o.push(...s.map(u=>new i({rational:u.multiple,radical:u.radical},t)))),o}};function Ei(i,e){for(i.isInteger()&&e.isInteger();!e.isZero();)[i,e]=[e,i.mod(e)];return i.abs()}function lt(i,e){return i.mul(e).div(Ei(i,e))}function*ft(i){if(!i.isInteger()||i.isNegative())return a.NAN;if(i.lt(1))return a.ONE;let e=i;for(;i.gt(2);)i=i.sub(2),e=e.mul(i),yield e;return e}function ge(i){if(!i.isFinite()||i.isZero())return!0;let n=(i.significand<0n?-i.significand:i.significand).toString().length;if(n>17)return!1;let r=n+i.exponent-1;return r<309&&r>-308}var Ce=class i extends D{__brand;decimal;constructor(e){if(super(),typeof e=="number")this.decimal=new a(e),this.im=0;else if(e instanceof a)this.decimal=e,this.im=0;else{let t=e.re instanceof a?e.re:new a(e.re??0);this.decimal=t,this.im=e.im??0}this.decimal.isNaN()&&(this.im=NaN),this.decimal.isNaN(),isNaN(this.im)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal.isZero()?"imaginary":"finite_complex":this.decimal.isFinite()?this.decimal.isInteger()?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&this.decimal.isInteger()}get asExact(){if(this.isExact)return this._makeExact(F(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?ge(this.decimal)?this.decimal.toNumber():{num:Ve(this.decimal)}:ge(this.decimal)?["Complex",R(this.decimal.toNumber()),R(this.im)]:["Complex",{num:Ve(this.decimal)},R(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return Ve(this.decimal.toPrecision(a.precision));if(this.decimal.isZero())return this.im===1?"i":this.im===-1?"-i":`${M(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${this.im}i`:e=`- ${-this.im}i`,`(${Ve(this.decimal)} ${e})`}clone(e){return new i(e)}_makeExact(e){return new q(e,t=>this.clone(t))}get re(){return this.decimal.toNumber()}get bignumRe(){return this.decimal}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return this.decimal.isNaN()}get isPositiveInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isPositive()}get isNegativeInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isNegative()}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal.isZero()}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=typeof e=="number"?new a(e):e;return this.decimal.abs().lte(t)}get isOne(){return this.im===0&&this.decimal.eq(1)}get isNegativeOne(){return this.im===0&&this.decimal.eq(-1)}sgn(){if(this.im===0){if(this.decimal.isZero())return 0;if(this.decimal.isPositive())return 1;if(this.decimal.isNegative())return-1}}N(){return this}neg(){return this.isZero?this:this.clone({re:this.decimal.neg(),im:-this.im})}inv(){if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(this.decimal.inv());let e=Math.hypot(this.re,this.im),t=this.decimal.mul(this.decimal).add(this.im*this.im).sqrt();return this.clone({re:this.decimal.div(t),im:-this.im/e})}add(e){return typeof e=="number"?e===0?this:this.clone({re:this.decimal.add(e),im:this.im}):e.isZero?this:this.isZero?this.clone(e):this.clone({re:this.decimal.add(e.bignumRe??e.re),im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isZero)return e instanceof D&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof a?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e});if(e instanceof a)return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e.toNumber()});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal.mul(e.bignumRe??e.re)):this.clone({re:this.decimal.mul(e.bignumRe??e.re).sub(this.im*e.im),im:this.re*e.im+this.im*e.re})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal.div(e),im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal.div(e.bignumRe??e.re));let[t,n]=[this.re,this.im],[r,s]=[e.re,e.im],o=r*r+s*s,u=e.bignumRe??new a(e.re),c=u.mul(u).add(s*s);return this.clone({re:this.decimal.mul(u).add(n*s).div(c),im:(n*r-t*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let d=this.pow(c),f=this.decimal.ln().mul(l),p=this.clone({re:f.cos(),im:te(f.sin().toNumber())});return d.mul(p)}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.pow(-e).inv();if(this.im===0)return this.clone(this.decimal.pow(e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=a.atan2(n,t),o=r.pow(e),u=s.mul(e);return this.clone({re:o.mul(u.cos()),im:te(o.mul(u.sin()).toNumber())})}root(e){if(!Number.isInteger(e))return this._makeExact(NaN);if(e===0)return this._makeExact(NaN);if(e===1)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):e===2?this.clone(this.decimal.sqrt()):e===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.pow(1/e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=a.atan2(n,t),o=r.pow(1/e),u=s.div(e);return this.clone({re:o.mul(u.cos()),im:te(o.mul(u.sin()).toNumber())})}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,n=e.mul(e).add(t*t).sqrt(),r=e.add(n).div(2).sqrt(),s=te(Math.sign(t)*n.sub(e).div(2).sqrt().toNumber());return this.clone({re:r,im:s})}return this.decimal.isPositive()?this.clone(this.decimal.sqrt()):this.clone({im:Math.sqrt(-this.re)})}gcd(e){if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!this.decimal.isInteger())return this._makeExact(1);let t=e.bignumRe?new a(e.bignumRe):new a(e.re);if(!t.isInteger())return this._makeExact(1);let n=this.decimal;for(;!t.isZero();){let r=t;t=n.mod(t),n=r}return this.clone(n.abs())}abs(){return this.im===0?this.decimal.isPositive()?this:this.clone(this.decimal.neg()):this.clone(this.decimal.pow(2).add(this.im**2).sqrt())}ln(e){if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(this.decimal.ln()):this.clone(this.decimal.log(e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=a.atan2(n,t).toNumber();return e===void 0?this.clone({re:r.ln(),im:s}):this.clone({re:r.log(e),im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=this.decimal.exp();return this.clone({re:e.mul(te(Math.cos(this.im))),im:te(e.mul(Math.sin(this.im)).toNumber())})}return this.clone(this.decimal.exp())}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(F(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(F(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(F(this.decimal.round()))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal.eq(e):e.isNaN?!1:Number.isFinite(this.im)?this.decimal.eq(e.bignumRe??e.re)&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){if(this.im===0)return typeof e=="number"?this.decimal.lt(e):this.decimal.lt(e.bignumRe??e.re)}lte(e){if(this.im===0)return typeof e=="number"?this.decimal.lte(e):this.decimal.lte(e.bignumRe??e.re)}gt(e){if(this.im===0)return typeof e=="number"?this.decimal.gt(e):this.decimal.gt(e.bignumRe??e.re)}gte(e){if(this.im===0)return typeof e=="number"?this.decimal.gte(e):this.decimal.gte(e.bignumRe??e.re)}};function Ve(i){let e=i.toString();if(i.isInteger()&&e.includes("e")){let t=i.toFixed(0),n=t.match(/0+$/);if((n?n[0].length:0)<=5)return t}return e}function te(i){return Math.abs(i)<=1e-14?0:i}var Le=class i extends D{__brand;decimal;constructor(e){if(super(),typeof e=="number")this.decimal=e,this.im=0;else if(e instanceof a)this.decimal=e.toNumber(),this.im=0;else{let t=e.re===void 0?0:e.re instanceof a?e.re.toNumber():e.re;this.decimal=t,this.im=e.im??0,isFinite(this.im)||(this.decimal=this.im)}isNaN(this.im)}_makeExact(e){return new q(e,t=>this.clone(t))}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal===0?"imaginary":"finite_complex":Number.isFinite(this.decimal)?Number.isInteger(this.decimal)?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&Number.isInteger(this.decimal)}get asExact(){if(this.isExact)return this._makeExact(this.decimal)}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.im===0?R(this.decimal):["Complex",R(this.decimal),R(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return M(this.decimal);if(this.decimal===0)return this.im===1?"i":this.im===-1?"-i":`${M(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${M(this.im)}i`:e=`- ${M(-this.im)}i`,`(${M(this.decimal)} ${e})`}clone(e){return new i(e)}get re(){return this.decimal}get bignumRe(){}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return Number.isNaN(this.decimal)}get isPositiveInfinity(){return!Number.isFinite(this.decimal)&&this.decimal>0&&this.im===0}get isNegativeInfinity(){return!Number.isFinite(this.decimal)&&this.decimal<0&&this.im===0}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal===0}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=e instanceof a?e.toNumber():e;return Math.abs(this.decimal)<t}get isOne(){return this.im===0&&this.decimal===1}get isNegativeOne(){return this.im===0&&this.decimal===-1}sgn(){if(!(this.im!==0||!Number.isFinite(this.decimal)))return Math.sign(this.decimal)}N(){return this}neg(){return this.isNaN?this._makeExact(NaN):this.isZero?this:this.clone({re:-this.decimal,im:-this.im})}inv(){if(this.isNaN)return this._makeExact(NaN);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(1/this.decimal);let e=Math.hypot(this.re,this.im);return this.clone({re:this.decimal/e,im:-this.im/e})}add(e){return this.isNaN?this._makeExact(NaN):typeof e=="number"?e===0?this:this.clone({re:this.decimal+e,im:this.im}):e.isZero?this:this.isZero?this.clone({re:e.bignumRe??e.re,im:e.im}):this.clone({re:this.decimal+e.re,im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e instanceof D&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e instanceof a&&(e=e.toNumber()),e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof a?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal*e):this.clone({re:this.decimal*e,im:this.im*e});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal*e.re):this.clone({re:this.decimal*e.re-this.im*e.im,im:this.re*e.im+this.im*e.re})}div(e){if(this.isNaN)return this._makeExact(NaN);if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal/e,im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal/e.re);let[t,n]=[this.decimal,this.im],[r,s]=[e.re,e.im],o=r*r+s*s;return this.clone({re:(t*r+n*s)/o,im:(n*r-t*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this._makeExact(NaN);if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let d=this.pow(c).re,f=Math.log(this.decimal)*l;return this.clone({re:mt(d*Math.cos(f)),im:mt(d*Math.sin(f))})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.clone(1/this.decimal**-e);if(this.im===0)return this.clone(this.decimal**e);let t=this.decimal,n=this.im,r=Math.sqrt(t*t+n*n),s=Math.atan2(n,t),o=r**e,u=s**e;return this.clone({re:o*Math.cos(u),im:o*Math.sin(u)})}root(e){if(this.isNaN)return this._makeExact(NaN);if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.clone(Math.cbrt(this.decimal));if(this.im===0)return this.decimal<0?e%2===0?this.clone(NaN):this.clone(-Math.pow(-this.decimal,1/e)):this.clone(Math.pow(this.decimal,1/e));let t=this.decimal,n=this.im,r=Math.hypot(t,n),s=Math.atan2(n,t),o=Math.pow(r,1/e),u=s/e;return this.clone({re:o*Math.cos(u),im:o*Math.sin(u)})}sqrt(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,n=Math.sqrt(e*e+t*t),r=Math.sqrt((e+n)/2),s=Math.sign(t)*Math.sqrt((n-e)/2);return this.clone({re:r,im:s})}return this.decimal>0?this.clone(Math.sqrt(this.decimal)):this.clone({im:Math.sqrt(-this.decimal)})}gcd(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!Number.isInteger(this.decimal))return this._makeExact(1);let t=e.re;if(!Number.isInteger(t))return this._makeExact(1);let n=this.decimal;for(;t!==0;){let r=t;t=n%t,n=r}return this.clone(Math.abs(n))}abs(){return this.isNaN?this._makeExact(NaN):this.im===0?this.decimal>0?this:this.clone(-this.decimal):this.clone(Math.sqrt(this.decimal**2+this.im**2))}ln(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal<0?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(Math.log(this.decimal)):this.clone(Math.log(this.decimal)/Math.log(e));let t=this.decimal,n=this.im,r=Math.hypot(t,n),s=Math.atan2(n,t),o=e===void 0?Math.log(r):Math.log(r)/Math.log(e);return this.clone({re:o,im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=Math.exp(this.decimal);return this.clone({re:e*Math.cos(this.im),im:e*Math.sin(this.im)})}return this.clone(Math.exp(this.decimal))}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.floor(this.decimal))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.ceil(this.decimal))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.round(this.decimal))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal-e===0:e.isNaN?!1:Number.isFinite(this.im)?this.decimal-e.re===0&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){if(this.im===0)return typeof e=="number"?this.decimal<e:this.decimal<e.re}lte(e){if(this.im===0)return typeof e=="number"?this.decimal<=e:this.decimal<=e.re}gt(e){if(this.im===0)return typeof e=="number"?this.decimal>e:this.decimal>e.re}gte(e){if(this.im===0)return typeof e=="number"?this.decimal>=e:this.decimal>=e.re}};function mt(i){return Math.abs(i)<=1e-14?0:i}function dt(i){return i?._kind==="number"}function Bn(i){return i?._kind==="symbol"}function Ne(i,e){return(i?._kind==="function"||i?._kind==="tensor")&&(e===void 0||i.operator===e)}function Sn(i){if(Ne(i,"Interval")){let e=i.op1,t=i.op2,n=!1,r=!1;Ne(e,"Open")?(n=!0,e=e.op1):Ne(e,"Closed")&&(e=e.op1),Ne(t,"Open")?(r=!0,t=t.op1):Ne(t,"Closed")&&(t=t.op1);let s=e.N(),o=t.N();return!dt(s)||!dt(o)?void 0:{start:s.re,openStart:n,end:o.re,openEnd:r}}if(Bn(i)){if(i.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(i.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(i.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(i.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(i.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(i.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function wn(i,e){return!(i.openStart&&i.start<=e||i.start<e||i.openEnd&&i.end>=e||i.end>e)}function Dn(i,e){if(i.openStart){if(e.openStart){if(i.start<=e.start)return!1}else if(i.start<e.start)return!1}else if(e.openStart){if(i.start<=e.start)return!1}else if(i.start<e.start)return!1;if(i.openEnd){if(e.openEnd){if(i.end>=e.end)return!1}else if(i.end>e.end)return!1}else if(e.openEnd){if(i.end>=e.end)return!1}else if(i.end>e.end)return!1;return!0}function ht(i){let e=i.length;if(e===1)return i[0][0];if(e===2)return i[0][0]*i[1][1]-i[0][1]*i[1][0];let t=[],n=0;for(let r=0;r<e;r++){let s=0;for(let o=1;o<e;o++){let u=0;for(let c=0;c<e;c++)c!==r&&(t[s][u]=i[o][c],u++);s++}n=n+Math.pow(-1,r)*i[0][r]*ht(t)}return n}function Rn(i,e){if(e===0)return{estimate:i,error:e};let t=Math.abs(e),n=Math.floor(Math.log10(t)),r=2,s=Math.pow(10,n-(r-1)),o=Math.round(e/s)*s,u=Math.max(0,-(n-(r-1)));return{estimate:Number(i.toFixed(u)),error:o}}function Fn(i,e,t,n=1e5){let r=0,s=0;if(e===-1/0&&t===1/0)for(let m=0;m<n;m++){let h=Math.random(),g=Math.tan(Math.PI*(h-.5)),b=i(g)*Math.PI*(1+g*g);r+=b,s+=b*b}else if(e===-1/0)for(let m=0;m<n;m++){let h=Math.random(),g=t+Math.log(h),b=i(g)/h;r+=b,s+=b*b}else if(t===1/0)for(let m=0;m<n;m++){let h=Math.random(),g=e-Math.log(h),b=i(g)/h;r+=b,s+=b*b}else for(let m=0;m<n;m++){let h=i(e+Math.random()*(t-e));r+=h,s+=h*h}let o=r/n,u=(s-n*o*o)/(n-1),c=Math.sqrt(u/n),l=isFinite(e)&&isFinite(t)?t-e:1,d=o*l,f=c*l;return Rn(d,f)}function Pn(i){let e=0,t=0;for(let n of i)e+=n,t++;return t===0?NaN:e/t}function An(i){let e=a.ZERO,t=0;for(let n of i)e=e.add(n),t++;return t===0?a.NAN:e.div(new a(t))}function ne(i){let e=[...i].sort((n,r)=>n-r),t=Math.floor(e.length/2);return e.length%2===0?(e[t-1]+e[t])/2:e[t]}function re(i){let e=[...i].sort((n,r)=>n.cmp(r)),t=Math.floor(e.length/2);return e.length%2===0?e[t-1].add(e[t]).div(a.TWO):e[t]}function pt(i){let e=0,t=0,n=0;for(let r of i)e+=r,t+=r*r,n++;return n===0?NaN:(t-e*e/n)/(n-1)}function gt(i){let e=a.ZERO,t=a.ZERO,n=0;for(let r of i)e=e.add(r),t=t.add(r.mul(r)),n++;return n===0?a.NAN:t.sub(e.mul(e).div(new a(n))).div(new a(n-1))}function Nt(i){let e=0,t=0,n=0;for(let r of i)e+=r,t+=r*r,n++;return n===0?NaN:(t-e*e/n)/n}function bt(i){let e=a.ZERO,t=a.ZERO,n=0;for(let r of i)e=e.add(r),t=t.add(r.mul(r)),n++;return n===0?a.NAN:t.sub(e.mul(e).div(new a(n))).div(new a(n))}function On(i){return Math.sqrt(pt(i))}function _n(i){return gt(i).sqrt()}function Vn(i){return Math.sqrt(Nt(i))}function Cn(i){return bt(i).sqrt()}function Ln(i){let e=0,t=0,n=0,r=0;for(let o of i){let u=o;if(!Number.isFinite(u))return NaN;e+=u,t+=u*u,n+=u*u*u*u,r++}if(r===0)return NaN;let s=(t-e*e/r)/(r-1);return(n-4*e*t/r+6*e*e*e/r/r-3*e*e*e*e/r/r/r)/(s*s)}function Zn(i){let e=a.ZERO,t=a.ZERO,n=a.ZERO,r=0;for(let u of i){let c=u;if(!c.isFinite())return a.NAN;e=e.add(c),t=t.add(c.mul(c)),n=n.add(c.mul(c).mul(c).mul(c)),r++}if(r===0)return a.NAN;let s=new a(r),o=t.sub(e.mul(e).div(s)).div(new a(r-1));return n.sub(e.mul(t).mul(new a(4)).div(s)).add(e.mul(e).mul(e).mul(new a(6)).div(s).div(s)).sub(e.mul(e).mul(e).mul(e).mul(new a(3)).div(s).div(s).div(s)).div(o.mul(o))}function Un(i){let e=0,t=0,n=0,r=0;for(let u of i){let c=u;if(!Number.isFinite(c))return NaN;e+=c,t+=c*c,n+=c*c*c,r++}if(r===0)return NaN;let s=(t-e*e/r)/(r-1);return(n-t*e/r)/(r-1)/Math.pow(s,3/2)*Math.sqrt(r*1)}function $n(i){let e=a.ZERO,t=a.ZERO,n=a.ZERO,r=0;for(let c of i){let l=c;if(!l.isFinite())return a.NAN;e=e.add(l),t=t.add(l.mul(l)),n=n.add(l.mul(l).mul(l)),r++}if(r===0)return a.NAN;let s=new a(r),o=t.sub(e.mul(e).div(s)).div(new a(r-1));return n.sub(t.mul(e).div(s)).div(new a(r-1)).div(o.pow(new a(1.5))).mul(s.sqrt())}function qn(i){let e={};for(let r of i)e[r]=(e[r]??0)+1;let t=0,n=NaN;for(let r in e){let s=e[r];s>t&&(t=s,n=+r)}return n}function jn(i){let e={};for(let r of i)e[r.toString()]=(e[r.toString()]??0)+1;let t=0,n=a.NAN;for(let r in e){let s=e[r];s>t&&(t=s,n=new a(r))}return n}function Jn(i){let e=[...i].sort((o,u)=>o-u),t=Math.floor(e.length/2),n=ne(e.slice(0,t)),r=ne(e),s=ne(e.slice(t));return[n,r,s]}function Gn(i){let e=[...i].sort((o,u)=>o.cmp(u)),t=Math.floor(e.length/2),n=re(e.slice(0,t)),r=re(e),s=re(e.slice(t));return[n,r,s]}function Wn(i){let e=[...i].sort((s,o)=>s-o),t=Math.floor(e.length/2),n=e.slice(0,t),r=e.slice(t+1);return ne(r)-ne(n)}function Yn(i){let e=[...i].sort((s,o)=>s.cmp(o)),t=Math.floor(e.length/2),n=e.slice(0,t),r=e.slice(t+1);return re(r).sub(re(n))}var Ze={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},yt=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"]),Ue={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 je(i,e){return i[0]===e[0]&&i[1]===e[1]&&i[2]===e[2]&&i[3]===e[3]&&i[4]===e[4]&&i[5]===e[5]&&i[6]===e[6]}function Xn(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===0&&i[4]===0&&i[5]===0&&i[6]===0}function zn(i){if(i.length>2){let e=i.slice(0,2),t=i.slice(2);if(Ze[e]!==void 0&&yt.has(t)){let n=Ue[t];if(n)return{prefixScale:Ze[e],baseEntry:n}}}if(i.length>1){let e=i.slice(0,1),t=i.slice(1);if(Ze[e]!==void 0&&yt.has(t)){let n=Ue[t];if(n)return{prefixScale:Ze[e],baseEntry:n}}}return null}function $e(i){let e=Ue[i];if(e)return e;let t=zn(i);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function qe(i){let e=$e(i);return e?e.dimension:null}function Tt(i){let e=$e(i);return e?e.scale:null}function Hn(i,e){let t=qe(i),n=qe(e);return!t||!n?!1:je(t,n)}var Kn=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(i=>[Ue[i].dimension.join(","),i]));function Qn(i){return Kn.get(i.join(","))??null}function It(i,e,t){let n=$e(e),r=$e(t);if(!n||!r||!je(n.dimension,r.dimension))return null;let s=n.offset??0,o=r.offset??0;return(i+s)*n.scale/r.scale-o}function H(i){if(typeof i=="string")return qe(i);if(!Array.isArray(i)||i.length<2)return null;let e=i[0];if(e==="Multiply"){let t=[0,0,0,0,0,0,0];for(let n=1;n<i.length;n++){let r=H(i[n]);if(!r)return null;for(let s=0;s<7;s++)t[s]+=r[s]}return t}if(e==="Divide"){if(i.length!==3)return null;let t=H(i[1]),n=H(i[2]);return!t||!n?null:t.map((r,s)=>r-n[s])}if(e==="Power"){if(i.length!==3)return null;let t=H(i[1]),n=i[2];return!t||typeof n!="number"?null:t.map(r=>r*n)}return null}function K(i){if(typeof i=="string")return Tt(i);if(!Array.isArray(i)||i.length<2)return null;let e=i[0];if(e==="Multiply"){let t=1;for(let n=1;n<i.length;n++){let r=K(i[n]);if(r===null)return null;t*=r}return t}if(e==="Divide"){if(i.length!==3)return null;let t=K(i[1]),n=K(i[2]);return t===null||n===null||n===0?null:t/n}if(e==="Power"){if(i.length!==3)return null;let t=K(i[1]),n=i[2];return t===null||typeof n!="number"?null:Math.pow(t,n)}return null}function er(i){let e=i.indexOf("^");if(e===-1)return i;let t=i.slice(0,e),n=i.slice(e+1),r=parseInt(n,10);return isNaN(r)?i:["Power",t,r]}function be(i){if(i=i.trim(),i.length===0)return null;if(i[0]==="("&&i[i.length-1]===")"){let r=0,s=!0;for(let o=0;o<i.length-1;o++)if(i[o]==="("?r++:i[o]===")"&&r--,r===0&&o<i.length-1){s=!1;break}if(s)return be(i.slice(1,-1))}let e=-1,t=[],n=0;for(let r=0;r<i.length;r++)i[r]==="("?n++:i[r]===")"?n--:n===0&&(i[r]==="/"&&e===-1?e=r:i[r]==="*"&&t.push(r));if(e!==-1){let r=i.slice(0,e).trim(),s=i.slice(e+1).trim(),o=be(r),u=be(s);return!o||!u?null:["Divide",o,u]}if(t.length>0){let r=[],s=0;for(let u of t)r.push(i.slice(s,u).trim()),s=u+1;r.push(i.slice(s).trim());let o=r.filter(u=>u.length>0).map(u=>be(u));return o.some(u=>u===null)?null:o.length===1?o[0]:["Multiply",...o]}return i[0]==="("?null:er(i)}function ir(i){return i=i.trim(),i.length===0?null:/[/*^()]/.test(i)?be(i):i}function tr(i,e,t){if(typeof e=="string"&&typeof t=="string")return It(i,e,t);let n=H(e),r=H(t);if(!n||!r||!je(n,r))return null;let s=K(e),o=K(t);return s===null||o===null||o===0?null:i*s/o}var Et=7,vt=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function oe(i){if(i<0)return NaN;let e=Math.PI,t=i*i*i;return i*Math.log(i)-i-.5*Math.log(i)+.5*Math.log(2*e)+1/(12*i)-1/(360*t)+1/(1260*t*i*i)}function C(i){if(i<.5)return Math.PI/(Math.sin(Math.PI*i)*C(1-i));if(i>100)return Math.exp(oe(i));i-=1;let e=vt[0];for(let n=1;n<Et+2;n++)e+=vt[n]/(i+n);let t=i+Et+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,i+.5)*Math.exp(-t)*e}function Mt(i){let e=Math.PI,t=e*e,n=t*e,r=i*i,s=i*r,o=s*r,u=o*r;return Math.sqrt(e)/2*(i+e/12*s+7*t/480*o+127*n/40320*u+4369*t*t/5806080*u*r+34807*n*t/182476800*u*r*r)}function Bt(i){return 1-vi(i)}function vi(i){let e=.254829592,t=-.284496736,n=1.421413741,r=-1.453152027,s=1.061405429,o=.3275911,u=i<0?-1:1;i=Math.abs(i);let c=1/(1+o*i),l=((((s*c+r)*c+n)*c+t)*c+e)*c;return u*(1-l*Math.exp(-i*i))}function Ye(i,e){if(!e.isFinite())return a.NAN;if(e.lt(a.HALF)){let y=a.PI,T=y.mul(e).sin().abs();return T.isZero()?a.NAN:y.ln().sub(T.ln()).sub(Ye(i,a.ONE.sub(e)))}if(e.isInteger()&&e.isPositive()){let y=e.toNumber();if(y<=1)return a.ZERO;let T=1n;for(let E=2;E<y;E++)T*=BigInt(E);return new a(T.toString()).ln()}let t=e.sub(a.HALF);if(t.isInteger()&&!t.isNegative()){let y=t.toNumber();if(y===0)return a.PI.ln().div(a.TWO);let T=1n;for(let w=2;w<=2*y;w++)T*=BigInt(w);let E=1n;for(let w=2;w<=y;w++)E*=BigInt(w);let B=4n**BigInt(y);return new a(T.toString()).ln().add(a.PI.ln().div(a.TWO)).sub(new a(B.toString()).ln()).sub(new a(E.toString()).ln())}let n=a.precision,r=10,s=Math.ceil(.37*n),o=e.toNumber(),u=Math.max(0,Math.ceil(s-o)),c=a.ZERO,l=e;for(let y=0;y<u;y++)c=c.add(l.ln()),l=l.add(a.ONE);let d=Math.ceil(Math.PI*l.toNumber())+10,f=ye(i,d),p=l.sub(a.HALF).mul(l.ln()).sub(l).add(a.PI.mul(a.TWO).ln().div(a.TWO)),m=l.mul(l),h=l,g=new a(10).pow(-(n+r)),b=Math.min(d,f.length);for(let y=0;y<b;y++){let T=2*(y+1),[E,B]=f[y],w=BigInt(T)*BigInt(T-1),ue=new a(E.toString()),J=new a((B*w).toString()),L=ue.div(J.mul(h));if(y>0&&L.abs().lt(g))break;p=p.add(L),h=h.mul(m)}return p.sub(c)}function Q(i,e){if(e.isInteger()&&e.isPositive()){let t=e.toNumber(),n=1n;for(let r=2;r<t;r++)n*=BigInt(r);return new a(n.toString())}if(e.lt(a.HALF)){let t=a.PI,n=t.mul(e).sin();return n.isZero()?a.NAN:t.div(n.mul(Q(i,a.ONE.sub(e))))}return Ye(i,e).exp()}function kt(i,e){for(;e!==0n;){let t=e;e=i%e,i=t}return i}function Je(i){return i<0n?-i:i}function xt(i){let e=[[1n,1n],[-1n,2n]];for(let n=2;n<=2*i;n++){if(n%2===1){e.push([0n,1n]);continue}let r=BigInt(n+1),s=0n,o=1n,u=1n;for(let f=0;f<n;f++){f>0&&(u=u*(r-BigInt(f)+1n)/BigInt(f));let[p,m]=e[f];if(p!==0n&&(s=s*m+u*p*o,o=o*m,f%8===7)){let h=kt(Je(s),o);s/=h,o/=h}}let c=-s,l=r*o,d=kt(Je(c),Je(l));c/=d,l/=d,l<0n&&(c=-c,l=-l),e.push([c,l])}let t=[];for(let n=1;n<=i;n++)t.push(e[2*n]);return t}function ye(i,e){return i._cache("bernoulli-even-rationals",()=>xt(e),t=>t.length>=e?t:xt(e))}function Xe(i,e){if(!e.isFinite())return a.NAN;if(e.isNegative()){if(e.isInteger())return a.NAN;let m=a.PI,h=m.mul(e),g=h.cos().div(h.sin());return Xe(i,a.ONE.sub(e)).sub(m.mul(g))}if(e.isZero())return a.NAN;let t=a.precision,n=10,r=Math.max(7,Math.ceil(.37*t)),s=new a(0),o=e;for(;o.lt(r);)s=s.sub(a.ONE.div(o)),o=o.add(a.ONE);let u=Math.ceil(Math.PI*o.toNumber())+10,c=ye(i,u);s=s.add(o.ln()).sub(a.ONE.div(o.mul(2)));let l=o.mul(o),d=l,f=new a(10).pow(-(t+n)),p=Math.min(u,c.length);for(let m=0;m<p;m++){let[h,g]=c[m],b=BigInt(2*(m+1)),y=new a(h.toString()).div(new a((g*b).toString()).mul(l));if(m>0&&y.abs().lt(f))break;s=s.sub(y),l=l.mul(d)}return s}function ze(i,e){if(!e.isFinite())return a.NAN;if(e.isNegative()){if(e.isInteger())return a.NAN;let m=a.PI,h=m.mul(e).sin();return m.mul(m).div(h.mul(h)).sub(ze(i,a.ONE.sub(e)))}if(e.isZero())return a.NAN;let t=a.precision,n=10,r=Math.max(7,Math.ceil(.37*t)),s=new a(0),o=e;for(;o.lt(r);)s=s.add(a.ONE.div(o.mul(o))),o=o.add(a.ONE);let u=Math.ceil(Math.PI*o.toNumber())+10,c=ye(i,u);s=s.add(a.ONE.div(o)),s=s.add(a.ONE.div(o.mul(o).mul(2)));let l=o.mul(o).mul(o),d=o.mul(o),f=new a(10).pow(-(t+n)),p=Math.min(u,c.length);for(let m=0;m<p;m++){let[h,g]=c[m],b=new a(h.toString()).div(new a(g.toString()).mul(l));if(m>0&&b.abs().lt(f))break;s=s.add(b),l=l.mul(d)}return s}function St(i,e,t){let n=e.toNumber();if(!Number.isInteger(n)||n<0)return a.NAN;if(n===0)return Xe(i,t);if(n===1)return ze(i,t);if(!t.isFinite()||t.isZero())return a.NAN;let r=T=>{let E=a.ONE;for(let B=2;B<=T;B++)E=E.mul(B);return E},s=a.precision,o=10,u=Math.max(7,Math.ceil(.37*s)),c=t,l=new a(0),d=n%2===0?-1:1;if(c.isNegative()){if(c.isInteger())return a.NAN;let T=n%2===0?1:-1;for(;c.lt(1);)l=l.add(new a(T).mul(r(n)).div(c.pow(n+1))),c=c.add(a.ONE)}for(;c.lt(u);)l=l.add(new a(d).mul(r(n)).div(c.pow(n+1))),c=c.add(a.ONE);let f=Math.ceil(Math.PI*c.toNumber())+10,p=ye(i,f),m=n%2===0?-1:1;l=l.add(new a(m).mul(r(n-1)).div(c.pow(n))),l=l.add(new a(m).mul(r(n)).div(c.pow(n+1).mul(2)));let h=c.pow(n+2),g=c.mul(c),b=new a(10).pow(-(s+o)),y=Math.min(f,p.length);for(let T=0;T<y;T++){let E=2*(T+1),[B,w]=p[T],ue=1n;for(let G=0;G<E;G++)ue*=BigInt(n+G);let J=1n;for(let G=2;G<=E;G++)J*=BigInt(G);let L=new a((BigInt(m)*B*ue).toString()).div(new a((w*J).toString()).mul(h));if(T>0&&L.abs().lt(b))break;l=l.add(L),h=h.mul(g)}return l}function wt(i,e,t){return Q(i,e).mul(Q(i,t)).div(Q(i,e.add(t)))}function ki(i,e){if(!e.isFinite())return a.NAN;if(e.eq(1))return new a(1/0);let t=a.PI;if(e.isZero())return a.HALF.neg();if(e.isInteger()&&e.isPositive()){let c=e.toNumber();if(c%2===0&&c>=2){let l=c/2,d=ye(i,l),[f,p]=d[l-1],m=new a(Je(f).toString()).div(new a(p.toString())),h=t.mul(2),g=a.ONE;for(let b=2;b<=c;b++)g=g.mul(b);return m.mul(h.pow(c)).div(g.mul(2))}}if(e.isNegative())return new a(2).pow(e).mul(t.pow(e.sub(1))).mul(t.mul(e).div(2).sin()).mul(Q(i,a.ONE.sub(e))).mul(ki(i,a.ONE.sub(e)));let n=Math.max(22,Math.ceil(i.precision*1.3)),r=nr(i,n),s=r[n],o=new a(0);for(let c=0;c<=n;c++){let l=c%2===0?1:-1;o=o.add(new a(l).mul(r[c].sub(s)).div(new a(c+1).pow(e)))}let u=a.ONE.sub(new a(2).pow(a.ONE.sub(e)));return o.div(s.mul(u)).neg()}function nr(i,e){let t=new Array(e+1);t[0]=a.ONE;let n=a.ONE;for(let r=1;r<=e;r++)n=n.mul(e-r+1).div(r),t[r]=t[r-1].add(n);return t}function Dt(i,e){if(!e.isFinite())return e;if(e.isZero())return new a(0);let n=a.ONE.div(a.ONE.exp()).neg(),r=new a(10).pow(-i.precision),s=new a(10).pow(-15);if(e.sub(n).abs().lt(s))return a.NEGATIVE_ONE;if(e.lt(n))return a.NAN;let o,u=e.toNumber();if(u<0){let c=Math.sqrt(2*(Math.E*u+1));o=new a(-1+c-c*c/3+11/72*c*c*c)}else if(u<=1)o=new a(u*(1-u*(1-1.5*u)));else if(u<100){let c=Math.log(u);o=new a(c-Math.log(c))}else{let c=e.ln(),l=c.ln();o=c.sub(l).add(l.div(c))}for(let c=0;c<100;c++){let l=o.exp(),f=o.mul(l).sub(e),p=l.mul(o.add(1)),m=l.mul(o.add(2)),h=f.div(p.sub(f.mul(m).div(p.mul(2))));if(o=o.sub(h),h.abs().lt(r.mul(o.abs().add(1))))break}return o}var Ge=.5772156649015329,ae=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function He(i){if(!isFinite(i))return NaN;if(i<0)return Number.isInteger(i)?NaN:He(1-i)-Math.PI/Math.tan(Math.PI*i);if(i===0)return NaN;let e=0,t=i;for(;t<7;)e-=1/t,t+=1;e+=Math.log(t)-1/(2*t);let n=t*t;for(let r=0;r<ae.length;r++)e-=ae[r]/(2*(r+1)*n),n*=t*t;return e}function Ke(i){if(!isFinite(i))return NaN;if(i<0){if(Number.isInteger(i))return NaN;let r=Math.sin(Math.PI*i);return Math.PI*Math.PI/(r*r)-Ke(1-i)}if(i===0)return NaN;let e=0,t=i;for(;t<7;)e+=1/(t*t),t+=1;e+=1/t+1/(2*t*t);let n=t*t*t;for(let r=0;r<ae.length;r++)e+=ae[r]/n,n*=t*t;return e}function xi(i,e){if(!Number.isInteger(i)||i<0)return NaN;if(i===0)return He(e);if(i===1)return Ke(e);if(!isFinite(e)||e===0)return NaN;if(e<0){if(Number.isInteger(e))return NaN;let u=0,c=e,l=i%2===0?1:-1;for(;c<1;)u+=l*se(i)/Math.pow(c,i+1),c+=1;return u+xi(i,c)}let t=0,n=e,r=i%2===0?-1:1;for(;n<7;)t+=r*se(i)/Math.pow(n,i+1),n+=1;let s=i%2===0?-1:1;t+=s*se(i-1)/Math.pow(n,i),t+=s*se(i)/(2*Math.pow(n,i+1));let o=Math.pow(n,i+2);for(let u=0;u<Math.min(ae.length,6);u++){let c=2*(u+1),l=1;for(let d=0;d<c;d++)l*=i+d;t+=s*ae[u]*l/(se(c)*o),o*=n*n}return t}function se(i){if(i<=1)return 1;let e=1;for(let t=2;t<=i;t++)e*=t;return e}function Rt(i,e){return i>100||e>100||i+e>100?Math.exp(oe(i)+oe(e)-oe(i+e)):C(i)*C(e)/C(i+e)}function Mi(i){if(!isFinite(i))return NaN;if(i===1)return 1/0;if(i===0)return-.5;if(i===2)return Math.PI*Math.PI/6;if(i===4)return Math.PI**4/90;if(i===6)return Math.PI**6/945;if(i===8)return Math.PI**8/9450;if(i<0)return Math.pow(2,i)*Math.pow(Math.PI,i-1)*Math.sin(Math.PI*i/2)*C(1-i)*Mi(1-i);let e=22,t=rr(e),n=t[e],r=0;for(let s=0;s<=e;s++)r+=(s%2===0?1:-1)*(t[s]-n)/Math.pow(s+1,i);return-1/(n*(1-Math.pow(2,1-i)))*r}function rr(i){let e=new Array(i+1);e[0]=1;for(let t=1;t<=i;t++)e[t]=e[t-1]+sr(i,t);return e}function sr(i,e){e>i-e&&(e=i-e);let t=1;for(let n=0;n<e;n++)t=t*(i-n)/(n+1);return t}function Ft(i){if(!isFinite(i))return i;if(i===0)return 0;let e=1/Math.E;if(i<-e)return NaN;if(Math.abs(i+e)<1e-15)return-1;let t;if(i<0){let n=Math.sqrt(2*(Math.E*i+1));t=-1+n-n*n/3+11/72*n*n*n}else if(i<=1)t=i*(1-i*(1-1.5*i));else if(i<100){let n=Math.log(i);t=n-Math.log(n)}else{let n=Math.log(i),r=Math.log(n);t=n-r+r/n}for(let n=0;n<30;n++){let r=Math.exp(t),o=t*r-i,u=r*(t+1),c=r*(t+2),l=o/(u-o*c/(2*u));if(t-=l,Math.abs(l)<1e-15*(1+Math.abs(t)))break}return t}function j(i,e){return!isFinite(e)||!Number.isInteger(i)?NaN:e===0?i===0?1:0:i<0?(i=-i,i%2===0?j(i,e):-j(i,e)):e<0?i%2===0?j(i,-e):-j(i,-e):e>25+i*i/2?ar(i,e):e<5+i?or(i,e):ur(i,e)}function or(i,e){let t=e/2,n=-(e*e)/4,r=1;for(let o=1;o<=i;o++)r/=o;let s=r;for(let o=1;o<=60&&(r*=n/(o*(i+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,i)}function Pt(i,e){let t=4*i*i,n=1,r=0,s=1,o=8*e;for(let u=1;u<=20;u++){s*=t-(2*u-1)*(2*u-1);let c=se(u)*Math.pow(o,u),l=s/c;if(u%2===1?r+=(u%4===1?1:-1)*l:n+=(u%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[n,r]}function ar(i,e){let t=e-(i/2+.25)*Math.PI,[n,r]=Pt(i,e);return Math.sqrt(2/(Math.PI*e))*(n*Math.cos(t)-r*Math.sin(t))}function ur(i,e){let t=Math.max(i+20,Math.ceil(e)+30),n=0,r=1,s=new Array(t+1);s[t]=r;for(let c=t;c>=1;c--){let l=2*c/e*r-n;n=r,r=l,s[c-1]=r}let o=s[0];for(let c=2;c<=t;c+=2)o+=2*s[c];let u=1/o;return s[i]*u}function We(i,e){if(!isFinite(e)||!Number.isInteger(i))return NaN;if(e<=0)return NaN;if(i<0)return i=-i,i%2===0?We(i,e):-We(i,e);if(e>12+i*i/4)return fr(i,e);let t=cr(e);if(i===0)return t;let n=lr(e);if(i===1)return n;let r=t,s=n;for(let o=1;o<i;o++){let u=2*o/e*s-r;r=s,s=u}return s}function cr(i){let e=i/2,t=e*e,n=j(0,i),r=0,s=1,o=0;for(let u=1;u<=60&&(o+=1/u,s*=-t/(u*u),r-=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16));u++);return 2/Math.PI*(n*(Math.log(e)+Ge)+r)}function lr(i){let e=i/2,t=e*e,n=j(1,i),r=0,s=1,o=1;for(let u=0;u<=60;u++){u>0&&(o*=u,s*=t);let c=o*(u+1),l=0;for(let g=1;g<=u;g++)l+=1/g;let d=l+1/(u+1),f=-Ge+l,p=-Ge+d,h=(u%2===0?1:-1)*(f+p)*s/(o*c);if(r+=h,u>3&&Math.abs(h)<1e-16*Math.abs(r))break}return-2/(Math.PI*i)+2/Math.PI*Math.log(e)*n-e/Math.PI*r}function fr(i,e){let t=e-(i/2+.25)*Math.PI,[n,r]=Pt(i,e);return Math.sqrt(2/(Math.PI*e))*(n*Math.sin(t)+r*Math.cos(t))}function ee(i,e){return!isFinite(e)||!Number.isInteger(i)?NaN:e===0?i===0?1:0:(i<0&&(i=-i),e<0?i%2===0?ee(i,-e):-ee(i,-e):e>40?dr(i,e):mr(i,e))}function mr(i,e){let t=e/2,n=e*e/4,r=1;for(let o=1;o<=i;o++)r/=o;let s=r;for(let o=1;o<=80&&(r*=n/(o*(i+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,i)}function dr(i,e){let t=4*i*i,n=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(n*=o/(s*8*e),r+=n,Math.abs(n)<1e-15)break}return Math.exp(e)/Math.sqrt(2*Math.PI*e)*r}function At(i,e){if(!isFinite(e)||!Number.isInteger(i))return NaN;if(e<=0)return NaN;if(i<0&&(i=-i),e>40)return pr(i,e);let t=Ot(e);if(i===0)return t;let n=hr(e);if(i===1)return n;let r=t,s=n;for(let o=1;o<i;o++){let u=2*o/e*s+r;r=s,s=u}return s}function Ot(i){let e=i/2,t=e*e,n=ee(0,i),r=0,s=1,o=0;for(let u=1;u<=60&&(o+=1/u,s*=t/(u*u),r+=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16&&u>3));u++);return-(Math.log(e)+Ge)*n+r}function hr(i){let e=ee(0,i),t=ee(1,i),n=Ot(i);return(1/i-t*n)/e}function pr(i,e){let t=4*i*i,n=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(n*=o/(s*8*e),r+=n,Math.abs(n)<1e-15)break}return Math.sqrt(Math.PI/(2*e))*Math.exp(-e)*r}function _t(i){if(!isFinite(i))return NaN;if(i>5){let u=.6666666666666666*Math.pow(i,1.5);return gr(i,u)}if(i<-5){let u=-i,c=2/3*Math.pow(u,1.5);return Nr(u,c)}let e=1/(Math.pow(3,2/3)*C(2/3)),t=1/(Math.pow(3,1/3)*C(1/3)),n=1,r=i,s=1,o=i;for(let u=1;u<=80;u++){let c=3*u;if(s*=i*i*i/((c-1)*c),o*=i*i*i/(c*(c+1)),n+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(n)+Math.abs(r)))break}return e*n-t*r}function gr(i,e){let t=Math.pow(i,.25),n=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(e,o),n+=(o%2===0?1:-1)*r;return Math.exp(-e)/(2*Math.sqrt(Math.PI)*t)*n}function Nr(i,e){let t=Math.pow(i,.25);return Math.sin(e+Math.PI/4)/(Math.sqrt(Math.PI)*t)}function Vt(i){if(!isFinite(i))return NaN;if(i>5){let u=.6666666666666666*Math.pow(i,1.5);return br(i,u)}if(i<-5){let u=-i,c=2/3*Math.pow(u,1.5);return yr(u,c)}let e=1/(Math.pow(3,2/3)*C(2/3)),t=1/(Math.pow(3,1/3)*C(1/3)),n=1,r=i,s=1,o=i;for(let u=1;u<=80;u++){let c=3*u;if(s*=i*i*i/((c-1)*c),o*=i*i*i/(c*(c+1)),n+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(n)+Math.abs(r)))break}return Math.sqrt(3)*(e*n+t*r)}function br(i,e){let t=Math.pow(i,.25),n=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(e,o),n+=r;return Math.exp(e)/(Math.sqrt(Math.PI)*t)*n}function yr(i,e){let t=Math.pow(i,.25);return Math.cos(e+Math.PI/4)/(Math.sqrt(Math.PI)*t)}var Tr=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],Ir=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Er=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],vr=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],Ct=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],Lt=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],Zt=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],Ut=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function O(i,e){let t=e[0];for(let n=1;n<e.length;n++)t=t*i+e[n];return t}function $t(i){if(!isFinite(i))return i!==i?NaN:i>0?.5:-.5;let e=i<0?-1:1;if(i=Math.abs(i),i<1.6){let t=i*i,n=t*t;return e*i*t*O(n,Tr)/O(n,Ir)}if(i<36){let t=i*i,n=Math.PI*t,r=1/(n*n),s=1-r*O(r,Ct)/O(r,Lt),o=1/n*O(r,Zt)/O(r,Ut),u=Math.PI/2*t,c=Math.cos(u),l=Math.sin(u);return e*(.5-(s*c+o*l)/(Math.PI*i))}return e*.5}function qt(i){if(!isFinite(i))return i!==i?NaN:i>0?.5:-.5;let e=i<0?-1:1;if(i=Math.abs(i),i<1.6){let t=i*i,n=t*t;return e*i*O(n,Er)/O(n,vr)}if(i<36){let t=i*i,n=Math.PI*t,r=1/(n*n),s=1-r*O(r,Ct)/O(r,Lt),o=1/n*O(r,Zt)/O(r,Ut),u=Math.PI/2*t,c=Math.cos(u),l=Math.sin(u);return e*(.5+(s*l-o*c)/(Math.PI*i))}return e*.5}function jt(i){return i===0?1:Math.sin(i)/i}function Jt(i){return i}function Gt(i){return i}var kr="0.58.0";return Kt(xr);})();
3
+ var Numerics=(()=>{var ai=Object.defineProperty;var Nn=Object.getOwnPropertyDescriptor;var bn=Object.getOwnPropertyNames;var yn=Object.prototype.hasOwnProperty;var In=(i,e)=>{for(var t in e)ai(i,t,{get:e[t],enumerable:!0})},Tn=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of bn(e))!yn.call(i,r)&&r!==t&&ai(i,r,{get:()=>e[r],enumerable:!(n=Nn(e,r))||n.enumerable});return i};var vn=i=>Tn(ai({},"__esModule",{value:!0}),i);var Kr={};In(Kr,{BigNumericValue:()=>qe,DEFAULT_PRECISION:()=>et,DEFAULT_TOLERANCE:()=>Ni,ExactNumericValue:()=>$,LARGEST_SMALL_PRIME:()=>hi,MACHINE_PRECISION:()=>it,MACHINE_PRECISION_BITS:()=>gi,MAX_BIGINT_DIGITS:()=>tt,MAX_ITERATION:()=>nt,MAX_SYMBOLIC_TERMS:()=>rt,MachineNumericValue:()=>Ye,NumericValue:()=>D,SMALL_INTEGER:()=>S,add:()=>ee,airyAi:()=>un,airyBi:()=>cn,areCompatibleUnits:()=>br,asMachineRational:()=>On,besselI:()=>re,besselJ:()=>X,besselK:()=>on,besselY:()=>Ke,beta:()=>nn,bigBeta:()=>en,bigDigamma:()=>ii,bigGamma:()=>ne,bigGammaln:()=>ei,bigInterquartileRange:()=>pr,bigKurtosis:()=>cr,bigLambertW:()=>tn,bigMean:()=>nr,bigMedian:()=>Ge,bigMode:()=>dr,bigPolygamma:()=>Qt,bigPopulationStandardDeviation:()=>ar,bigPopulationVariance:()=>Yt,bigPrimeFactors:()=>pi,bigQuartiles:()=>Gt,bigSkewness:()=>fr,bigStandardDeviation:()=>sr,bigTrigamma:()=>ti,bigVariance:()=>Ct,bigZeta:()=>Ai,bigint:()=>R,bigintCanonicalInteger:()=>he,bigintFactorial:()=>yi,bigintGcd:()=>K,bigintLcm:()=>xe,bigintValue:()=>Yn,bignumFactorial2:()=>Ot,bignumGcd:()=>Fi,bignumLcm:()=>At,canonicalInteger:()=>z,cantorEnumerateComplexNumbers:()=>mt,cantorEnumerateIntegers:()=>dt,cantorEnumerateNaturalNumbers:()=>ht,cantorEnumeratePositiveRationals:()=>ft,cantorEnumerateRationals:()=>lt,centeredDiff8thOrder:()=>ct,chop:()=>ut,complexGamma:()=>Zi,complexGammaln:()=>Li,convertCompoundUnit:()=>Er,convertUnit:()=>$t,determinant:()=>Zt,digamma:()=>ni,dimensionsEqual:()=>We,div:()=>An,erf:()=>Qe,erfInv:()=>Kt,erfc:()=>Ri,extrapolate:()=>ke,factorial:()=>ot,factorial2:()=>at,findNamedUnit:()=>Ir,fresnelC:()=>pn,fresnelS:()=>hn,fromDigits:()=>Mi,gamma:()=>C,gammaln:()=>ue,gcd:()=>A,getExpressionDimension:()=>ie,getExpressionScale:()=>te,getUnitDimension:()=>Xe,getUnitScale:()=>jt,interquartileRange:()=>hr,interval:()=>zn,intervalContains:()=>Kn,intervalSubset:()=>Qn,inverse:()=>ge,isBigRational:()=>Pe,isDimensionless:()=>gr,isInMachineRange:()=>be,isInteger:()=>J,isMachineRational:()=>O,isNeg:()=>Rn,isNegativeOne:()=>Re,isOne:()=>Fe,isPositive:()=>De,isPrime:()=>Qi,isPrimeBigint:()=>kn,isRational:()=>Pn,isZero:()=>Q,kurtosis:()=>ur,lambertW:()=>rn,lcm:()=>Se,limit:()=>we,machineDenominator:()=>Fn,machineNumerator:()=>Dn,mean:()=>tr,median:()=>Ue,mode:()=>mr,monteCarloEstimate:()=>ir,mul:()=>L,neg:()=>Ti,nextDown:()=>st,nextUp:()=>bi,numberToExpression:()=>F,numberToString:()=>B,parseUnitDSL:()=>vr,polygamma:()=>Oi,populationStandardDeviation:()=>or,populationVariance:()=>qt,pow:()=>Vn,primeFactors:()=>Be,quartiles:()=>Ut,rationalAsFloat:()=>Ii,rationalGcd:()=>vi,rationalize:()=>Zn,reduceRationalSquareRoot:()=>Ln,reducedInteger:()=>pt,reducedRational:()=>pe,sinc:()=>gn,skewness:()=>lr,sqrt:()=>_n,standardDeviation:()=>rr,trigamma:()=>ri,variance:()=>Lt,version:()=>zr,zeta:()=>Vi});var D=class{get bignumRe(){}im;get bignumIm(){}isZeroWithTolerance(e){return this.isZero}valueOf(){return this.im===0?this.bignumRe?this.bignumRe.toNumber():this.re:this.toString()}[Symbol.toPrimitive](e){return e==="string"?this.toString():this.valueOf()}toJSON(){if(this.im===0){let e=this.re;if(Number.isFinite(e))return e}return this.N().toString()}print(){let e=console.log;e?.(this.toString())}};var Ci=new Map;function v(i){if(i<=100){let e=Ci.get(i);return e===void 0&&(e=10n**BigInt(i),Ci.set(i,e)),e}return 10n**BigInt(i)}function Yi(i,e,t){return i*e/t}function Ui(i,e,t){return i*t/e}function de(i,e){if(i===0n)return 0n;if(i<0n)throw new RangeError("fpsqrt: negative input");let t,n=Number(i),r=Number(e);if(Number.isFinite(n)&&Number.isFinite(r)&&n>0&&r>0){let f=Math.sqrt(n/r)*r;Number.isFinite(f)&&f>0?(t=BigInt(Math.floor(f)),t===0n&&(t=1n)):t=qi(i,e)}else t=qi(i,e);let s=i*e,o;do o=t,t=(t+s/t)/2n;while(Z(t-o)>1n);let a=(t+s/t)/2n,c=Z(t*t-s);return Z(a*a-s)<c?a:t}function qi(i,e){let n=k(i),r=Math.max(0,n-15),s=Number(r>0?i/v(r):i),o=k(e),a=Math.max(0,o-15),c=Number(a>0?e/v(a):e),l=r+a,f=Math.floor(l/2),m=Math.sqrt(s*c);l%2!==0&&(m*=3.1622776601683795);let p=BigInt(Math.round(m))*v(f);return p>0n?p:1n}function Z(i){return i<0n?-i:i}function k(i){if(i===0n)return 1;if(i<0n&&(i=-i),i<0x20000000000000n)return Math.floor(Math.log10(Number(i)))+1;let e=0,t=i,n=1;for(;t>>BigInt(n)>0n;)n*=2;for(let s=n>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(e+=s,t>>=BigInt(s));e+=1;let r=Math.ceil(e*.30102999566398);return i<v(r-1)?r-1:i>=v(r)?r+1:r}function li(i,e){if(i===0n)return e;let t=0,n=i,r=e/2n;for(;Z(n)>r;)n=n/2n,t++;let s=e,o=n;s+=o;for(let a=2;o=o*n/(BigInt(a)*e),Z(o)!==0n;a++)s+=o;for(let a=0;a<t;a++)s=s*s/e;return s}function fi(i,e){if(i<=0n)throw new RangeError("fpln: input must be positive");if(i===e)return 0n;let t=Number(i),n=Number(e),r,s=i,o=0;if(Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0){let c=t/n;if(Number.isFinite(c)&&c>0){let l=Math.log(c);Number.isFinite(l)?r=BigInt(Math.round(l*n)):r=ui(i,e)}else r=ui(i,e)}else{s=i;let c=2n*e,l=e/2n;for(;s>c||s<l;)s=de(s,e),o++;r=ui(s,e)}let a=0n;for(let c=0;c<100;c++){let l=li(r,e);if(l===0n){r=r/2n;continue}let f=r+s*e/l-e,m=Z(f-r);if(m<=1n||m<100000n&&a>0n&&a<100000n&&m*4n>=a)break;a=m,r=f}for(let c=0;c<o;c++)r=2n*r;return r}function ui(i,e){let t=k(i),n=k(e);return BigInt(t-n)*2302585n*e/1000000n}var j="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",ve=null;function ci(i){if(ve!==null&&ve.scale===i)return ve.value;let t=k(i)-1+10,n=j.slice(0,t+1),r=BigInt(n),s=n.length-1,o=r*i/v(s);return ve={scale:i,value:o},o}function Ee(i,e){if(i===0n)return[0n,e];let t=ci(e),n=2n*t,r=t/2n,s,o=Z(i);if(o>e*(1n<<30n)){let T=k(o)-k(e)+20,w=e*v(T),P=i*v(T),W=2n*ci(w),Y=P%W;Y<0n&&(Y+=W),s=Y/v(T)}else s=i%n;s<0n&&(s+=n);let a=1n,c=1n;s>3n*r?(s=n-s,a=-1n):s>t?(s=s-t,a=-1n,c=-1n):s>r&&(s=t-s,c=-1n);let l=k(e)-1,f=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(l)))),m=0,p=e>>BigInt(f);for(;s>p;)s=s/2n,m++;let d=s,h=e,g=s,N=e,I=s*s,y=e*e;for(let T=2;;T+=2){if(N=N*I/(BigInt(T)*BigInt(T-1)*y),N===0n){g=g*I/(BigInt(T+1)*BigInt(T)*y),g!==0n&&(T%4===2?(h-=N,d-=g):(h+=N,d+=g));break}if(g=g*I/(BigInt(T+1)*BigInt(T)*y),T%4===2?(h-=N,d-=g):(h+=N,d+=g),g===0n)break}for(let T=0;T<m;T++){let w=2n*d*h/e,P=2n*h*h/e-e;d=w,h=P}return[a*d,c*h]}function me(i,e){if(i===0n)return 0n;if(i<0n)return-me(-i,e);let n=ci(e)/2n;if(i>e){let m=e*e/i;return n-me(m,e)}let r=4n*e/10n,s=0,o=i;for(;o>r;){let m=o*o,p=(e*e+m)/e,d=de(p,e);o=o*e/(e+d),s++}let a=o,c=o,l=o*o,f=e*e;for(let m=3;c=c*l/f,c!==0n;m+=2)m%4===3?a-=c/BigInt(m):a+=c/BigInt(m);for(let m=0;m<s;m++)a=2n*a;return a}var mi=NaN,u=class i{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(i.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(i.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(i.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(i.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(i.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(i.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(i.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(i.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static get PI(){i._piFullPrecision===null&&(i._piFullPrecision=new i(j[0]+"."+j.slice(1)));let e=i.precision;return(i._piCache===null||i._piCachePrecision!==e)&&(i._piCache=i._piFullPrecision.toPrecision(e+4),i._piCachePrecision=e),i._piCache}significand;exponent;constructor(e){if(e instanceof i){this.significand=e.significand,this.exponent=e.exponent;return}if(typeof e=="bigint"){[this.significand,this.exponent]=Me(e,0);return}if(typeof e=="number"){[this.significand,this.exponent]=En(e);return}[this.significand,this.exponent]=ji(e)}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(e){if(typeof e=="number"){if(Number.isNaN(e))return mi;let d=this.exponent;if(Number.isNaN(d))return mi;if(e===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(d))return e===1/0?this.significand>0n?0:-1:e===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return e>0?-1:1;if(e===1/0)return-1;if(e===-1/0)return 1;if(this.significand>0n!=e>0)return this.significand>0n?1:-1;if(Number.isInteger(e)&&d>=0&&d<=15){let h=this.significand*v(d),g=BigInt(e);return h<g?-1:h>g?1:0}e=new i(e)}let t=this.exponent,n=e.exponent,r=this.significand,s=e.significand;if(t!==t||n!==n)return mi;if(!Number.isFinite(t)||!Number.isFinite(n))return!Number.isFinite(t)&&!Number.isFinite(n)?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===n)return r<s?-1:r>s?1:0;let o=k(r),a=k(s),c=o+t,l=a+n;if(c!==l){let d=r>0n?1:-1;return c>l?d:-d}let f=r,m=s,p=Math.abs(t-n);if(p>1e3){let d=o,h=a,g=Math.max(d,h)+1;d<g&&(f=f*v(g-d)),h<g&&(m=m*v(g-h))}else t<n?m=m*v(p):f=f*v(p);return f<m?-1:f>m?1:0}eq(e){return typeof e=="number"?e===0?this.significand===0n&&this.exponent===0:e===1?this.significand===1n&&this.exponent===0:e===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(e)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*v(this.exponent)===BigInt(e):this.cmp(e)===0:this.significand===e.significand&&this.exponent===e.exponent}lt(e){return this.cmp(e)===-1}lte(e){let t=this.cmp(e);return t===-1||t===0}gt(e){return this.cmp(e)===1}gte(e){let t=this.cmp(e);return t===1||t===0}add(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(t===n)return E(this.significand+e.significand,t);let o=t-n;return o>0?E(this.significand*v(o)+e.significand,n):E(this.significand+e.significand*v(-o),t)}if(t!==t||n!==n)return i.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(n);return r&&s?this.significand!==e.significand?i.NAN:this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:r?this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:e.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}sub(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(t===n)return E(this.significand-e.significand,t);let o=t-n;return o>0?E(this.significand*v(o)-e.significand,n):E(this.significand-e.significand*v(-o),t)}if(t!==t||n!==n)return i.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(n);return r&&s?this.significand===e.significand?i.NAN:this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:r?this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:e.significand>0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY}mul(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n))return E(this.significand*e.significand,t+n);if(t!==t||n!==n||this.significand===0n||e.significand===0n)return i.NAN;let r=this.significand>0n?1n:-1n,s=e.significand>0n?1n:-1n;return r*s>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}neg(){let e=this.significand;return e===0n?this:Number.isFinite(this.exponent)?E(-e,this.exponent):e>0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?E(-this.significand,this.exponent):i.POSITIVE_INFINITY}floor(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.trunc();return this.significand<0n?t.sub(E(1n,0)):t}return this}ceil(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.trunc();return this.significand>0n?t.add(E(1n,0)):t}return this}round(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=E(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.significand/v(-e);return E(t===0n?0n:t,0)}return this}div(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent,r=this.significand,s=e.significand;if(Number.isFinite(t)&&Number.isFinite(n)){if(s===0n)return r===0n?i.NAN:r>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY;if(r===0n)return E(0n,0);let c=i.precision,l=10,f=r<0n?-r:r,m=s<0n?-s:s,p=k(f),d=k(m),h=c+l+Math.max(0,d-p),g=v(h),N=r*g/s,I=t-n-h;return E(N,I).toPrecision(c)}if(t!==t||n!==n)return i.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(n);if(o&&a)return i.NAN;if(o){let c=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return c*l>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}return E(0n,0)}inv(){return E(1n,0).div(this)}mod(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(e.significand===0n)return i.NAN;if(this.significand===0n)return E(0n,0);let r=t-n,s=r>=0?this.significand*v(r):this.significand,o=r>=0?e.significand:e.significand*v(-r),a=s/o;return this.sub(E(a,0).mul(e))}return t!==t||n!==n||!Number.isFinite(t)?i.NAN:new i(this)}pow(e){if(typeof e=="number"&&(e=new i(e)),this.isNaN()||e.isNaN()||!e.isFinite())return i.NAN;if(e.isInteger()){let l=e.toBigInt();if(l===0n)return E(1n,0);if(!this.isFinite())return l>0n?this.significand<0n&&l%2n!==0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY:E(0n,0);if(this.isZero())return l>0n?E(0n,0):i.POSITIVE_INFINITY;if(l<0n)return this.pow(e.neg()).inv();let f=this.significand<0n?-this.significand:this.significand,m=k(f),p=m>15?m-15:0,d=p>0?Number(f/10n**BigInt(p)):Number(f),h=Math.log10(d)+p+this.exponent,g=Number(l)*h;if(g>9e15)return this.significand<0n&&l%2n!==0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY;if(g<-9e15)return E(0n,0);let N=i.precision,I=E(1n,0),y=this,T=l;for(;T>0n;)T&1n&&(I=I.mul(y).toPrecision(N)),T>>=1n,T>0n&&(y=y.mul(y).toPrecision(N));return I}if(!this.isFinite())return this.significand<0n?i.NAN:e.significand>0n?i.POSITIVE_INFINITY:i.ZERO;if(this.isZero())return e.significand>0n?i.ZERO:i.POSITIVE_INFINITY;if(this.significand<0n)return i.NAN;let t=this.significand,n=this.exponent+k(t)-1,r=e.significand<0n?-e.significand:e.significand,o=e.exponent+k(r)-1+Math.log10(Math.abs(n)*2.303+3)+1,a=Math.min(20,Math.max(2,Math.ceil(o)+2)),c=i.precision;i.precision=c+a;try{return e.mul(this.ln()).exp().toPrecision(c)}finally{i.precision=c}}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 e=this.significand<0n,t=(e?-this.significand:this.significand).toString(),n=t.length,r=n+this.exponent-1,s=e?"-":"";if(r>20||r<-6){let c=n===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${c}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<n){let c=t.slice(0,n-o),l=t.slice(n-o);return`${s}${c}.${l}`}let a=o-n;return`${s}0.${"0".repeat(a)}${t}`}toFixed(e){let t=e??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let n=this.significand<0n,r=n?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*v(s);else{let m=v(-s),p=r/m,d=r%m,h=m/2n;d>h?o=p+1n:d<h||m%2n!==0n||p%2n===0n?o=p:o=p+1n}let a=n&&o!==0n?"-":"",c=o.toString();if(t===0)return`${a}${c}`;if(c.length<=t){let m=c.padStart(t,"0");return`${a}0.${m}`}let l=c.slice(0,c.length-t),f=c.slice(c.length-t);return`${a}${l}.${f}`}toPrecision(e){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,n=k(t);if(n<=e)return this;let r=n-e,s=v(r),o=t/s,a=t%s,c=s/2n;(a>c||a===c&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return E(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 e=v(-this.exponent);return this.significand/e}};function E(i,e){let[t,n]=Me(i,e),r=Object.create(u.prototype);return r.significand=t,r.exponent=n,r}var Gi=1000000000n,Ji=1000n;function Me(i,e){if(i===0n)return[0n,0];for(;i%Gi===0n;)i/=Gi,e+=9;for(;i%Ji===0n;)i/=Ji,e+=3;for(;i%10n===0n;)i/=10n,e+=1;return[i,e]}function En(i){return Number.isNaN(i)?[0n,NaN]:i===1/0?[1n,1/0]:i===-1/0?[-1n,1/0]:Number.isInteger(i)?Me(BigInt(i),0):ji(i.toString())}function ji(i){if(i=i.trim(),i===""||i==="NaN")return[0n,NaN];if(i==="Infinity"||i==="+Infinity")return[1n,1/0];if(i==="-Infinity")return[-1n,1/0];let e,t=0,n=i.search(/[eE]/);if(n!==-1){if(e=i.slice(0,n),t=Number(i.slice(n+1)),!Number.isFinite(t))return[0n,NaN]}else e=i;let r=!1;e.startsWith("-")?(r=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s=e.indexOf("."),o,a;s===-1?(o=e,a=""):(o=e.slice(0,s),a=e.slice(s+1)),o=o.replace(/^0+/,"")||"0";let c=o+a;if(c.length===0||!/^\d+$/.test(c))return[0n,NaN];let l=BigInt(c);r&&(l=-l);let f=-a.length;return Me(l,f+t)}function U(i,e){let t=v(e),n=i.exponent+e;return n>=0?[i.significand*v(n),t]:[i.significand/v(-n),t]}function G(i,e,t){if(i===0n)return u.ZERO;let n=i<0n,r=n?-i:i,s=k(r);if(s>t){let l=s-t,f=v(l),m=f/2n,p=r%f;r=r/f,p>=m&&(r+=1n);let d=k(e)-1,h=l-d,g=n?-r:r;return E(g,h)}let a=-(k(e)-1),c=n?-r:r;return E(c,a)}function q(i){let e=i.significand<0n?-i.significand:i.significand;return i.exponent+k(e)-1}var $i=BigInt(Number.MAX_SAFE_INTEGER),Xi=null,Wi=null;function zi(i){return Wi!==i&&(Xi=fi(10n*i,i),Wi=i),Xi}u.prototype.sqrt=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NAN;if(this.significand<0n)return u.NAN;let i=u.precision,e=i+10,t=q(this),n=Math.floor(t/2),r=E(this.significand,this.exponent-2*n),[s,o]=U(r,e),a=de(s,o),c=G(a,o,i);return E(c.significand,c.exponent+n)};u.prototype.cbrt=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let i=u.precision,e=i+10,t=q(this),n=Math.floor(t/3),r=E(this.significand,this.exponent-3*n),[s,o]=U(r,e),a=s*o*o,c,l=r.toNumber(),f=Number(o);if(Number.isFinite(l)&&l>0&&Number.isFinite(f)){let d=Math.cbrt(l);Number.isFinite(d)&&d>0?(c=BigInt(Math.floor(d*f)),c===0n&&(c=1n)):c=Hi(s,o)}else c=Hi(s,o);let m;do{m=c;let d=c*c;if(d===0n){c=1n;break}c=(2n*c+a/d)/3n}while(Z(c-m)>1n);{let d=(2n*c+a/(c*c))/3n,h=Z(c*c*c-a);Z(d*d*d-a)<h&&(c=d)}let p=G(c,o,i);return E(p.significand,p.exponent+n)};u.sqrt=function(i){return i.sqrt()};u.cbrt=function(i){return i.cbrt()};u.prototype.exp=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.ZERO;if(this.isZero())return u.ONE;if(q(this)>=17)return this.significand>0n?u.POSITIVE_INFINITY:u.ZERO;let i=u.precision,e=this.significand<0n?-this.significand:this.significand,t=Math.max(0,this.exponent+k(e)),n=i+20+t,[r,s]=U(this,n),o=zi(s),a=r/o,c=r-a*o;if(c<0n&&(a-=1n,c+=o),a>$i||a<-$i)return a>0n?u.POSITIVE_INFINITY:u.ZERO;let l=G(li(c,s),s,i),f=l.exponent+Number(a);return Number.isSafeInteger(f)?E(l.significand,f):a>0n?u.POSITIVE_INFINITY:u.ZERO};u.prototype.ln=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NAN;if(this.isZero())return u.NEGATIVE_INFINITY;if(this.significand<0n)return u.NAN;if(this.eq(1))return u.ZERO;let i=u.precision,e=this.significand,t=k(e),n=this.exponent+t-1,r=E(e,-(t-1)),s=Math.abs(n).toString().length,o=i+20+s,[a,c]=U(r,o),l=zi(c),f=fi(a,c)+BigInt(n)*l;return G(f,c,i)};u.prototype.log=function(i){let e=i instanceof u?i:new u(i);return this.ln().div(e.ln())};u.exp=function(i){return i.exp()};u.ln=function(i){return i.ln()};u.log10=function(i){return i.log(10)};u.prototype.sin=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let i=u.precision,e=q(this);if(e<0&&-2*e>=i+4)return this.toPrecision(i);let t=i+15+(e<0?-e:0);if(e>j.length-t-30)return u.NAN;let[n,r]=U(this,t),[s]=Ee(n,r);return G(s,r,i)};u.prototype.cos=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ONE;let i=u.precision,e=i+15;if(q(this)>j.length-e-30)return u.NAN;let[n,r]=U(this,e),[,s]=Ee(n,r);return G(s,r,i)};u.prototype.tan=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let i=u.precision,e=q(this);if(e<0&&-2*e>=i+4)return this.toPrecision(i);let t=i+15+(e<0?-e:0);if(e>j.length-t-30)return u.NAN;let[n,r]=U(this,t),[s,o]=Ee(n,r);if(o===0n)return s>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;let a=s*r/o;return G(a,r,i)};u.prototype.atan=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite()){let o=u.PI.div(u.TWO);return this.significand>0n?o:o.neg()}let i=u.precision,e=q(this);if(e<0&&-2*e>=i+4)return this.toPrecision(i);let t=i+15+(e<0?-e:0),[n,r]=U(this,t),s=me(n,r);return G(s,r,i)};u.prototype.asin=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let i=this.abs(),e=u.ONE;if(i.gt(e))return u.NAN;if(i.eq(e)){let p=u.PI.div(u.TWO);return this.significand>0n?p:p.neg()}let t=u.precision,n=q(this);if(n<0&&-2*n>=t+4)return this.toPrecision(t);let r=t+20+(n<0?-n:0),[s,o]=U(this,r),a=Yi(s,s,o),c=o-a,l=de(c,o),f=Ui(s,l,o),m=me(f,o);return G(m,o,t)};u.prototype.acos=function(){return this.isNaN()?u.NAN:this.isFinite()?this.abs().gt(u.ONE)?u.NAN:this.eq(1)?u.ZERO:this.eq(-1)?u.PI:u.PI.div(u.TWO).sub(this.asin()):u.NAN};u.sin=function(i){return i.sin()};u.cos=function(i){return i.cos()};u.tan=function(i){return i.tan()};u.asin=function(i){return i.asin()};u.acos=function(i){return i.acos()};u.atan=function(i){return i.atan()};u.atan2=function(i,e){let t=i instanceof u?i:new u(i);if(t.isNaN()||e.isNaN())return u.NAN;let n=u.PI,r=n.div(u.TWO);if(e.isZero())return t.isZero()?u.ZERO:t.significand>0n?r:r.neg();let s=t.div(e);return e.significand>0n?s.atan():t.significand>=0n?s.atan().add(n):s.atan().sub(n)};u.prototype.sinh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;let i=u.precision,e=q(this);if(e<0){if(-2*e>=i+4)return this.toPrecision(i);let r=u.precision;u.precision=i-e+5;try{let s=this.exp();return s.sub(s.inv()).div(u.TWO).toPrecision(i)}finally{u.precision=r}}if(Math.abs(this.toNumber())>1.16*(i+3)){let r=this.abs().exp().div(u.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),n=t.inv();return t.sub(n).div(u.TWO)};u.prototype.cosh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ONE;if(!this.isFinite())return u.POSITIVE_INFINITY;let i=u.precision;if(Math.abs(this.toNumber())>1.16*(i+3))return this.abs().exp().div(u.TWO);let e=this.exp(),t=e.inv();return e.add(t).div(u.TWO)};u.prototype.tanh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.ONE:u.NEGATIVE_ONE;let i=u.precision,e=q(this);if(e<0){if(-2*e>=i+4)return this.toPrecision(i);let n=u.precision;u.precision=i-e+5;try{let r=this.mul(u.TWO).exp();return r.sub(u.ONE).div(r.add(u.ONE)).toPrecision(i)}finally{u.precision=n}}if(Math.abs(this.toNumber())>1.16*(i+3))return this.significand>0n?u.ONE:u.NEGATIVE_ONE;let t=this.mul(u.TWO).exp();return t.sub(u.ONE).div(t.add(u.ONE))};u.sinh=function(i){return i.sinh()};u.cosh=function(i){return i.cosh()};u.tanh=function(i){return i.tanh()};function Hi(i,e){let n=k(i),r=Math.max(0,n-15),s=Number(r>0?i/v(r):i),o=k(e),a=Math.max(0,o-15),c=Number(a>0?e/v(a):e),l=r+2*a,f=Math.floor(l/3),m=l%3,p=Math.cbrt(s*c*c);m===1&&(p*=2.154434690031882),m===2&&(p*=4.641588833612779);let d=BigInt(Math.round(p))*v(f);return d>0n?d:1n}function ke(i,e,t={}){let{contract:n=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:c=1e6,breaktol:l=2}=t;if(!isFinite(e))return ke(N=>i(1/N),1/e,{rtol:a,atol:o,maxeval:c,contract:Math.abs(n)>1?1/n:n,step:1/r,power:s});let f=r,m=Math.pow(1/n,s),p=i(e+f),d=[p],h=1/0,g=1;for(;g<c;){g+=1,f*=n,d.push(i(e+f));let N=m,I=1/0;for(let y=d.length-2;y>=0;y--){let T=d[y];d[y]=d[y+1]+(d[y+1]-d[y])/(N-1);let w=Math.abs(d[y]-T);I=Math.min(I,w),w<h&&(p=d[y],h=w),N*=m}if(I>l*h||!isFinite(I)||h<=Math.max(a*Math.abs(p),o))break}return[p,h]}function R(i){if(typeof i=="bigint")return i;if(typeof i=="number")return Number.isInteger(i)?BigInt(i):null;if(i instanceof u)return i.isInteger()?BigInt(i.toFixed(0)):null;let e=i.toLowerCase(),t=e.match(/^([+-]?[0-9]+)e([+-]?[0-9]+)$/);if(t){let r=parseInt(t[2]);if(r<0)return null;e=t[1]+"0".repeat(r)}if(e.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(e))return null;try{return BigInt(e)}catch(r){return console.error(r.message),null}}var Ki=0x3ffffffffffe5,di=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),hi=7919;function Be(i){if(Number.isInteger(i)&&i>=0&&i<Number.MAX_SAFE_INTEGER,i<=3)return{[i]:1};let e={},t=0;for(;i%2===0;)t+=1,i/=2;for(t>0&&(e[2]=t),t=0;i%3===0;)t+=1,i/=3;t>0&&(e[3]=t);let n=!1;for(;!n;){if(i===1)return e;let r=Math.sqrt(i);n=!0;for(let s=6;s<=r+6;s+=6){if(i%(s-1)===0){e[s-1]=(e[s-1]??0)+1,i/=s-1,n=!1;break}if(i%(s+1)===0){e[s+1]=(e[s+1]??0)+1,i/=s+1,n=!1;break}}}return e[i]!==void 0?e[i]+=1:e[i]=1,e}function Qi(i){if(!Number.isInteger(i)||!Number.isFinite(i)||Number.isNaN(i)||i<=1)return!1;if(i<=hi)return di.has(i);for(let e of di)if(i%e===0)return!1;return i<Ki?i===Mn(i)||void 0:wn(i,30)?void 0:!1}function Mn(i){if(i===1)return 1;if(i%2===0)return 2;if(i%3===0)return 3;if(i%5===0)return 5;let e=Math.floor(Math.sqrt(i)),t=7;for(;t<=e;){if(i%t===0)return t;if(i%(t+4)===0)return t+4;if(i%(t+6)===0)return t+6;if(i%(t+10)===0)return t+10;if(i%(t+12)===0)return t+12;if(i%(t+16)===0)return t+16;if(i%(t+22)===0)return t+22;if(i%(t+24)===0)return t+24;t+=30}return i}function kn(i){if(i<=1)return!1;if(i<=hi)return Qi(Number(i));for(let e of di)if(i%BigInt(e)===BigInt(0))return!1;return i<Ki&&(i=Bn(i)),Sn(i,30)?void 0:!1}function Bn(i){if(i===BigInt(1))return BigInt(1);if(i%BigInt(2)===BigInt(0))return BigInt(2);if(i%BigInt(3)===BigInt(0))return BigInt(3);if(i%BigInt(5)===BigInt(0))return BigInt(5);let e=BigInt(Math.floor(Math.sqrt(Number(i)))),t=BigInt(7);for(;t<=e;){if(i%t===BigInt(0))return t;if(i%(t+BigInt(4))===BigInt(0))return t+BigInt(4);if(i%(t+BigInt(6))===BigInt(0))return t+BigInt(6);if(i%(t+BigInt(10))===BigInt(0))return t+BigInt(10);if(i%(t+BigInt(12))===BigInt(0))return t+BigInt(12);if(i%(t+BigInt(16))===BigInt(0))return t+BigInt(16);if(i%(t+BigInt(22))===BigInt(0))return t+BigInt(22);if(i%(t+BigInt(24))===BigInt(0))return t+BigInt(24);t+=BigInt(30)}return i}function wn(i,e){let t=0,n=i-1;for(;n%2===0;)n/=2,++t;e:do{let r=Math.pow(2+Math.floor(Math.random()*(i-3)),n)%i;if(!(r===1||r===i-1)){for(let s=t-1;s--;){if(r=r*r%i,r===1)return!1;if(r===i-1)continue e}return!1}}while(--e);return!0}function Sn(i,e){let t=0,n=i-BigInt(1);for(;n%BigInt(2)===BigInt(0);)n=n/BigInt(2),++t;e:do{let r=BigInt(2+Math.floor(Math.random()*(Number(i)-3)))**n%i;if(!(r===BigInt(1)||r===i-BigInt(1))){for(let s=t-1;s--;){if(r=r*r%i,r===BigInt(1))return!1;if(r===i-BigInt(1))continue e}return!1}}while(--e);return!0}var xn=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function pi(i){if(i<Number.MAX_SAFE_INTEGER){let f=Be(Number(i)),m=new Map;for(let p of Object.keys(f))m.set(R(p),f[p]);return m}let e=i,t=new Map,n=0,r=0,s=0,o=BigInt(10);for(;e%o===BigInt(0);)n+=1,s+=1,e=e/o;for(o=BigInt(5);e%o===BigInt(0);)s+=1,e=e/o;for(o=BigInt(3);e%o===BigInt(0);)r+=1,e=e/o;for(o=BigInt(2);e%o===BigInt(0);)n+=1,e=e/o;n>0&&t.set("2",n),r>0&&t.set("3",r),s>0&&t.set("5",s),o=BigInt(7);let a="",c=0;for(;o*o<e;)e%o===BigInt(0)?(a||(a=o.toString()),t.set(a,(t.get(a)??0)+1),e=e/o):(o=o+xn[c],a="",c=c<7?c+1:0);e!==BigInt(1)&&t.set(e.toString(),(t.get(e.toString())??0)+1);let l=new Map;for(let[f,m]of t)l.set(R(f),m);return l}var et=21,gi=53,it=Math.floor(Math.log10(Math.pow(2,gi))),Ni=1e-10,S=1e6,tt=1024,nt=1e4,rt=200;function bi(i){if(i!==i)return i;if(i===-1/0)return-Number.MAX_VALUE;if(i===1/0||i===Number.MAX_VALUE)return 1/0;let e=i*(i<0?1-Number.EPSILON/2:1+Number.EPSILON);e===i&&(e=Number.MIN_VALUE*Number.EPSILON>0?i+Number.MIN_VALUE*Number.EPSILON:i+Number.MIN_VALUE),e===1/0&&(e=+Number.MAX_VALUE);let t=i+(e-i)/2;i<t&&t<e&&(e=t);let n=(e+i)/2;return i<n&&n<e&&(e=n),e===0?-0:e}function st(i){return-bi(-i)}function z(i,e){if(i>=Number.MAX_SAFE_INTEGER)return[1,i];if(i===0)return[0,0];if(i===1)return[1,1];if(Number.isInteger(i)&&i>0&&i<Number.MAX_SAFE_INTEGER,e===2){let s=[[0,0],[1,1],[1,2],[1,3],[2,1],[1,5],[1,6],[1,7],[2,2],[3,1],[1,10],[1,11],[2,3],[1,13],[1,14],[1,15],[4,1],[1,17],[3,2],[1,19],[2,5]][i];if(s)return s}let t=Be(i),n=BigInt(1),r=BigInt(1);for(let s of Object.keys(t)){let o=BigInt(parseInt(s)),a=BigInt(e);n=n*o**(BigInt(t[s])/a),r=r*o**(BigInt(t[s])%a)}return[Number(n),Number(r)]}function A(i,e){if(i===0)return e;if(e===0||i===e)return i;if(!Number.isInteger(i)||!Number.isInteger(e))return NaN;for(;e!==0;)[i,e]=[e,i%e];return i<0?-i:i}function Se(i,e){if(i===0||e===0)return 0;let t=BigInt(i)*BigInt(e)/BigInt(A(i,e));return t<0n&&(t=-t),Number(t)}function ot(i){if(!Number.isInteger(i)||i<0)return NaN;if(i>=170)return 1/0;let e=1;for(let t=2;t<=i;t++)e=e*t;return e}function at(i){if(!Number.isInteger(i)||i<0)return NaN;if(i<0)return NaN;if(i<=1)return 1;let e=i;for(;i>2;)i-=2,e*=i;return e}function ut(i,e=Ni){return typeof i=="number"&&Math.abs(i)<=e?0:i}function ct(i,e,t=.1){return(i(e-4*t)/280-4*i(e-3*t)/105+i(e-2*t)/5-4*i(e-t)/5+4*i(e+t)/5-i(e+2*t)/5+4*i(e+3*t)/105-i(e+4*t)/280)/t}function we(i,e,t=1){if(t===0){let s=we(i,e,-1),o=we(i,e,1);return s===void 0||o===void 0?NaN:Math.abs(s-o)>1e-5?NaN:(s+o)/2}let[n,r]=ke(i,e,{step:t>0?1:-1});return n}function*lt(){yield[0,1];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;t!==0&&A(e,t)===1&&(yield[e,t],yield[-e,t])}}function*ft(){yield[0,1];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;t!==0&&A(e,t)===1&&(yield[e,t])}}function*mt(){yield[0,0];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;if(t===0||A(e,t)!==1)continue;let n=e/t;for(let r=0;r<=i;r++){let s=i-r;if(s===0||A(r,s)!==1)continue;let o=r/s;yield[n,o],yield[-n,o],yield[n,-o],yield[-n,-o]}}}function*dt(){yield 0;for(let i=1;;i++)yield i,yield-i}function*ht(){for(let i=0;;i++)yield i}function K(i,e){for(;e!==BigInt(0);)[i,e]=[e,i%e];return i<0?-i:i}function xe(i,e){return i*e/K(i,e)}function he(i,e){let t=pi(i),n=BigInt(1),r=BigInt(1),s=BigInt(e);for(let[o,a]of t){let c=R(a);n=n*o**(c/s),r=r*o**(c%s)}return[n,r]}function pt(i){return i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?Number(i):i}function*yi(i){if(i<0)return BigInt(0);if(i<10)return BigInt([1,1,2,6,24,120,720,5040,40320,362880][Number(i)]);if(i%BigInt(2)===BigInt(1))return i*(yield*yi(i-BigInt(1)));let e=i,t=i,n=i;for(;e>2;)e-=BigInt(2),t+=e,n*=t,yield n;return n}function Pn(i){return i!==null&&Array.isArray(i)}function O(i){return i!==null&&Array.isArray(i)&&typeof i[0]=="number"}function Pe(i){return i!==null&&Array.isArray(i)&&typeof i[0]=="bigint"}function Q(i){return i[0]==0}function De(i){return i[0]>0}function Fe(i){return i[0]==i[1]}function Re(i){return i[0]===-i[1]}function J(i){return i[1]==1}function Dn(i){return Number(i[0])}function Fn(i){return Number(i[1])}function Ii(i){return Number(i[0])/Number(i[1])}function Rn(i){return i[0]<0}function An(i,e){return L(i,ge(e))}function ee(i,e){if(typeof i[0]=="number"&&!Number.isFinite(i[0]))return i;let t=e;if(t===null)return i;if(Pe(t))return i=[BigInt(i[0]),BigInt(i[1])],[t[1]*i[0]+t[0]*i[1],t[1]*i[1]];if(!Number.isFinite(t[0]))return t;if(Pe(i)){let s=[BigInt(t[0]),BigInt(t[1])];return[s[1]*i[0]+s[0]*i[1],s[1]*i[1]]}let n=t[1]*i[0]+t[0]*i[1],r=t[1]*i[1];return n<=9007199254740991&&n>=-9007199254740991&&r<=9007199254740991?[n,r]:!Number.isFinite(n)||!Number.isFinite(r)?[NaN,1]:[BigInt(t[1])*BigInt(i[0])+BigInt(t[0])*BigInt(i[1]),BigInt(t[1])*BigInt(i[1])]}function L(i,e){if(O(i)&&O(e)){let t=i[0]*e[0],n=i[1]*e[1];return t<=9007199254740991&&t>=-9007199254740991&&n<=9007199254740991?[t,n]:!Number.isFinite(t)||!Number.isFinite(n)?[NaN,1]:[BigInt(i[0])*BigInt(e[0]),BigInt(i[1])*BigInt(e[1])]}return O(i)?[BigInt(i[0])*e[0],BigInt(i[1])*e[1]]:O(e)?[BigInt(e[0])*i[0],BigInt(e[1])*i[1]]:[i[0]*e[0],i[1]*e[1]]}function Ti(i){return[-i[0],i[1]]}function ge(i){return i[0]<0?[-i[1],-i[0]]:[i[1],i[0]]}function On(i){return[Number(i[0]),Number(i[1])]}function Vn(i,e){if(Number.isInteger(e),e===0)return[1,1];if(e<0&&(i=ge(i),e=-e),e===1)return i;let t=BigInt(e);return[BigInt(i[0])**t,BigInt(i[1])**t]}function _n(i){let e=Math.sqrt(Number(i[0])),t=Math.sqrt(Number(i[1]));if(Number.isInteger(e)&&Number.isInteger(t))return[e,t]}function vi(i,e){return O(i)&&O(e)?i[1]===1&&e[1]===1?[A(i[0],e[0]),1]:[A(i[0],e[0]),Se(i[1],e[1])]:i[1]===1&&e[1]===1?[K(BigInt(i[0]),BigInt(e[0])),BigInt(1)]:[K(BigInt(i[0]),BigInt(e[0])),xe(BigInt(i[1]),BigInt(e[1]))]}function pe(i){if(O(i)){if(i[1]<0&&(i=[-i[0],-i[1]]),i[0]===1||i[1]===1)return i;if(!Number.isFinite(i[1]))return[0,1];let r=A(i[0],i[1]);return r<=1?i:[i[0]/r,i[1]/r]}i[1]<0&&(i=[-i[0],-i[1]]);let e=K(i[0],i[1]),[t,n]=e<=1?i:[i[0]/e,i[1]/e];return t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&n<=Number.MAX_SAFE_INTEGER?[Number(t),Number(n)]:[t,n]}function Zn(i){if(!Number.isFinite(i)||i%1===0)return i;let t=1e-15,n=Math.floor(i),r=1,s=0,o=n,a=1;for(;i-n>t*a*a;){i=1/(i-n),n=Math.floor(i);let c=r;r=o;let l=s;s=a,o=c+n*r,a=l+n*s}return[o,a]}function Ln(i){if(Pe(i)){let[a,c]=i,[l,f]=he(a,2),[m,p]=he(c,2);return[pe([l,m*p]),f*p]}let[e,t]=i,[n,r]=z(e,2),[s,o]=z(t,2);return[pe([n,s*o]),r*o]}function gt(i){return!!(typeof i=="number"||Ei(i)||typeof i=="string"&&Cn(i))}function Ei(i){return i!==null&&typeof i=="object"&&"num"in i}function Cn(i){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(i)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(i)}function qn(i){if(i==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},t=0,n=0;i=i.toUpperCase();for(let r=i.length-1;r>=0;r--){let s=e[i[r]];if(s===void 0)return[t,i.slice(r)];s<n?t-=s:t+=s,n=s}return[t,""]}function Mi(i,e){if(i=i.trim(),i.length===0)return[NaN,""];if(i.startsWith("+"))return Mi(i.slice(1),e);if(i.startsWith("-")){let[r,s]=Mi(i.slice(1),e);return[-r,s]}let t=10;if(typeof e=="string"&&(e=e.toLowerCase()),i.startsWith("0x"))t=16,i=i.slice(2);else if(i.startsWith("0b"))t=2,i=i.slice(2);else{if(e==="roman")return qn(i);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(i)),""]}catch{return[NaN,""]}else typeof e=="number"?t=e:typeof e=="string"&&(t=parseInt(e))}let n=0;for(let r=0;r<i.length;r++){let s={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[i[r]];if(s!==-1){if(s===void 0)return[n,i.substring(r)];if(s>=t)return[n,i.substring(r)];n=n*t+s}}return[n,""]}function B(i,e){if(typeof e=="number"&&typeof i=="number")return i.toFixed(e);let t=i.toString();if(typeof i=="number"&&Number.isInteger(i)&&t.includes("e")){let n=BigInt(i).toString(),r=n.match(/0+$/);if((r?r[0].length:0)<=5)return n}else if(typeof i=="bigint"){let n=t.match(/0+$/),r=n?n[0].length:0;if(r>5)return`${t.slice(0,-r)}e+${r}`}return t}function Yn(i){if(typeof i=="number")return Number.isInteger(i)?BigInt(i):null;if(i==null||!gt(i))return null;let e=Ei(i)?i.num:i;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return t==="nan"||/^(infinity|\+infinity|oo|\+oo|-infinity|-oo)$/.test(t)?null:R(t)}function F(i,e){if(typeof i=="number")return isNaN(i)?"NaN":Number.isFinite(i)?typeof e=="number"?{num:i.toFixed(e)}:i:i<0?"NegativeInfinity":"PositiveInfinity";if(i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER)return Number(i);let t=B(i);return Number(i).toString()===t?Number(i):{num:t}}var Ae=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],ki=["indexed_collection","list","tuple"],Oe=[...ki,"collection","set","record","dictionary"],Ve=["scalar",...Ae,"boolean","string"],Bi=["value","color",...Oe,...Ve],wi=["expression","symbol","function",...Bi],Si=["any","unknown","nothing","never","error",...wi],Nt=new Set(Ae),bt=new Set(Oe),yt=new Set(Ve),se=new Set(Si);function It(i){return typeof i=="string"?se.has(i):typeof i!="object"||!("kind"in i)?!1:i.kind==="signature"||i.kind==="union"||i.kind==="intersection"||i.kind==="negation"||i.kind==="value"||i.kind==="tuple"||i.kind==="list"||i.kind==="record"||i.kind==="dictionary"||i.kind==="set"||i.kind==="symbol"||i.kind==="expression"||i.kind==="numeric"||i.kind==="collection"||i.kind==="indexed_collection"||i.kind==="reference"}var _e=class{input;pos=0;line=1;column=1;tokens=[];constructor(e){this.input=e}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(e){this.pos=e.pos,this.line=e.line,this.column=e.column,this.tokens=e.tokens}error(e){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${e}`)}peek(e=0){let t=this.pos+e;return t<this.input.length?this.input[t]:""}advance(){let e=this.input[this.pos++];return e===`
4
+ `?(this.line++,this.column=1):this.column++,e}match(e){if(this.input.slice(this.pos,this.pos+e.length)===e){for(let t=0;t<e.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 e="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)e+=this.advance();return e}readVerbatimString(){if(!this.match("`"))return"";let e="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?e+="`":this.match("\\\\")?e+="\\":e+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),e}readStringLiteral(){let e=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==e;)this.match("\\"+e)?t+=e:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let e="";if((this.peek()==="-"||this.peek()==="+")&&(e+=this.advance()),this.match("0x")||this.match("0X")){for(e+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)e+=this.advance();return"0"+e}if(this.match("0b")||this.match("0B")){for(e+="b";!this.isEOF()&&/[01]/.test(this.peek());)e+=this.advance();return"0"+e}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(e+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(e+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(e+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();return e}createToken(e,t){return{type:e,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 e=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(e,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(e,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 n=this.readIdentifier();switch(n){case"true":return this.createToken("TRUE",n);case"false":return this.createToken("FALSE",n);case"nan":return this.createToken("NAN",n);case"infinity":return this.createToken("INFINITY",n);case"oo":return this.createToken("INFINITY",n);default:return this.createToken("IDENTIFIER",n)}}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 n=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",n)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let e=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(e.push(t),t.type==="EOF"))break}return e}peekToken(){if(this.tokens.length===0){let e=this.nextToken();e&&this.tokens.push(e)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let e=this.nextToken();if(e)return e}return this.tokens.shift()||this.createToken("EOF","")}matchToken(e){return this.peekToken().type===e?(this.consumeToken(),!0):!1}expectToken(e){let t=this.consumeToken();return t.type!==e&&this.error(`Expected ${e}, got ${t.type}`),t}};var Ze=class{lexer;typeResolver;current;constructor(e,t){this.lexer=new _e(e),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(e,t){this.errorAtToken(this.current,e,t)}errorAtToken(e,t,n){let r=this.lexer.input,o=r.split(`
5
+ `)[e.line-1]||r,a=e.column,c=" ".repeat(Math.max(0,a-1))+"^",l=["","Invalid type",`| ${o}`,`| ${c}`,"|",`| ${t}`];throw n&&l.push(`| ${n}`),l.push(""),new Error(l.join(`
6
+ `))}advance(){let e=this.current;return this.current=this.lexer.consumeToken(),e}match(e){return this.current.type===e?(this.advance(),!0):!1}expect(e){return this.current.type!==e&&this.error(`Expected ${e}, got ${this.current.type}`),this.advance()}createNode(e,t={}){return{kind:e,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let e=this.parseUnionType();if(e||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 e}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let e=this.lexer.saveState(),t=this.current;try{let n=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(e),this.current=t,this.errorAtToken(n,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(e),this.current=t}catch(n){if(this.lexer.restoreState(e),this.current=t,n instanceof Error&&n.message.includes("Function signatures must be enclosed"))throw n}}}parseUnionType(){let e=this.parseIntersectionType();if(!e)return;let t=[e];for(;this.match("|");){let n=this.parseIntersectionType();n||this.error("Expected type after |"),t.push(n)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let e=this.parsePrimaryType();if(!e)return;let t=[e];for(;this.match("&");){let n=this.parsePrimaryType();n||this.error("Expected type after &"),t.push(n)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let e=this.parsePrimaryType();return e||this.error("Expected type after !"),this.createNode("negation",{type:e})}if(this.current.type==="("){let e=this.parseFunctionSignature();if(e)return e;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let n=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),n.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:n})}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 e=this.lexer.saveState(),t=this.current;this.advance();let n=1;for(;n>0&&this.current.type!=="EOF";)this.current.type==="("?n++:this.current.type===")"&&n--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(e),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let e=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),e.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let n=e.some(o=>o.modifier==="optional"),r=e.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=e.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return n&&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:e,returnType:t})}parseArgument(){let e=this.parseNamedElement();if(!e)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:e,modifier:t})}parseNamedElement(){let e;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let n=this.current;if(this.lexer.peekToken().type===":"){e=n.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:e,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 e=this.current,n=this.lexer.peekToken().type==="<";switch(e.value){case"list":return n?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return n?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return n?(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 n?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let e=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let n=this.parseUnionType();n&&(e=n,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}return this.createNode("list",{elementType:e,dimensions:t})}parseVectorType(){let e=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let n=this.parseUnionType();n&&(e=n,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:e,size:t})}parseMatrixType(){let e=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let n=this.parseUnionType();n&&(e=n,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:e,dimensions:t})}parseTensorType(){let e=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("tensor",{elementType:e})}parseDimensions(){let e=this.parseDimension();if(!e)return;let t=[e];for(;;){let n=this.current;if(n.type==="IDENTIFIER"&&/^(x\d+)+$/.test(n.value)){this.advance();for(let r of n.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(n.type==="IDENTIFIER"&&n.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 e=parseInt(this.advance().value);return this.createNode("dimension",{size:e})}}parseCaretDimensions(){let e=this.match("("),t=this.parseDimensions();return e&&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 n=this.parseNamedElement();n||this.error("Expected tuple element"),t.push(n);let r=n.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 e=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),e.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:e})}}parseRecordEntry(){let e;if(this.current.type==="IDENTIFIER")e=this.advance().value;else if(this.current.type==="VERBATIM_STRING")e=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:e,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("dictionary",{valueType:e})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("set",{elementType:e})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value==="indexed_collection",t=this.current.value==="collection";if(e||t){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(n=r),this.expect(">")}return this.createNode("collection",{elementType:n,indexed:e})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:n})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:n})}}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 n=this.parseValue();this.expect("..");let r=this.parseValue();this.expect(">");let s=n?.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:n,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value;if(se.has(e))return this.advance(),this.createNode("primitive",{name:e})}}parseValue(){let e,t;switch(this.current.type){case"STRING_LITERAL":e=this.advance().value,t="string";break;case"NUMBER_LITERAL":e=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),e=!0,t="boolean";break;case"FALSE":this.advance(),e=!1,t="boolean";break;case"NAN":this.advance(),e=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),e=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),e=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:e,valueType:t})}parseTypeReference(){let e=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(e&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,n=this.advance().value;return this.typeResolver.resolve(n)?this.createNode("type_reference",{name:n,isForward:e}):e&&this.typeResolver.forward(n)?this.createNode("type_reference",{name:n,isForward:!0}):(e||this.errorAtToken(t,`Unknown type "${n}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:n,isForward:e}))}}};function Tt(i,e){switch(i.kind){case"function_signature":return e.visitFunctionSignature(i);case"union":return e.visitUnionType(i);case"intersection":return e.visitIntersectionType(i);case"negation":return e.visitNegationType(i);case"group":return e.visitGroupType(i);case"list":return e.visitListType(i);case"vector":return e.visitVectorType(i);case"matrix":return e.visitMatrixType(i);case"tensor":return e.visitTensorType(i);case"tuple":return e.visitTupleType(i);case"record":return e.visitRecordType(i);case"dictionary":return e.visitDictionaryType(i);case"set":return e.visitSetType(i);case"collection":return e.visitCollectionType(i);case"expression":return e.visitExpressionType(i);case"symbol":return e.visitSymbolType(i);case"numeric":return e.visitNumericType(i);case"primitive":return e.visitPrimitiveType(i);case"type_reference":return e.visitTypeReference(i);case"value":return e.visitValue(i);default:throw new Error(`Unknown node kind: ${i.kind}`)}}var xi=class{typeResolver;constructor(e){this.typeResolver=e??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(e){return Tt(e,this)}visitFunctionSignature(e){let t=[],n=[],r,s;for(let c of e.arguments){let l=this.buildNamedElement(c.element);switch(c.modifier){case"optional":n.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(e.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return n.length>0&&(a.optArgs=n),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(e){return{kind:"union",types:e.types.map(n=>this.buildType(n))}}visitIntersectionType(e){return{kind:"intersection",types:e.types.map(n=>this.buildType(n))}}visitNegationType(e){return{kind:"negation",type:this.buildType(e.type)}}visitGroupType(e){return this.buildType(e.type)}visitListType(e){let t=this.buildType(e.elementType),n=e.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:n}}visitVectorType(e){let t=this.buildType(e.elementType);return e.size!==void 0?{kind:"list",elements:t,dimensions:[e.size]}:{kind:"list",elements:t}}visitMatrixType(e){let t=this.buildType(e.elementType);if(e.dimensions){let n=e.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:n}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(e){return{kind:"list",elements:this.buildType(e.elementType)}}visitTupleType(e){return{kind:"tuple",elements:e.elements.map(n=>this.buildNamedElement(n))}}visitRecordType(e){if(e.entries.length===0)return"record";let t={};for(let n of e.entries)t[n.key]=this.buildType(n.valueType);return{kind:"record",elements:t}}visitDictionaryType(e){let t=this.buildType(e.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(e){let t=this.buildType(e.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(e){let t=this.buildType(e.elementType);return e.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(e){return{kind:"expression",operator:e.operator}}visitSymbolType(e){return{kind:"symbol",name:e.name}}visitNumericType(e){if(!e.lowerBound&&!e.upperBound)return e.baseType;let t=e.lowerBound?this.buildValue(e.lowerBound):-1/0,n=e.upperBound?this.buildValue(e.upperBound):1/0;return t===-1/0&&n===1/0?e.baseType:{kind:"numeric",type:e.baseType,lower:t,upper:n}}visitPrimitiveType(e){return e.name}visitTypeReference(e){let t=this.typeResolver.resolve(e.name);if(t)return t;if(e.isForward){let n=this.typeResolver.forward(e.name);if(n)return n}return e.name}visitValue(e){return{kind:"value",value:e.value}}buildNamedElement(e){let t=this.buildType(e.type);return e.name?{name:e.name,type:t}:{type:t}}buildDimension(e){return e.size??-1}buildValue(e){return e.value}isAnyType(e){return e==="any"||typeof e=="object"&&"kind"in e&&e.kind==="primitive"&&"name"in e&&e.name==="any"}};function vt(i,e){return new xi(e).buildType(i)}var Le=new Map,Un=2048;function Et(i){if(i===null||typeof i!="object"||Object.isFrozen(i))return i;Object.freeze(i);for(let e of Object.values(i))Et(e);return i}function Pi(i,e){if(i===void 0)return;if(It(i))return i;if(typeof i!="string")return;let t=e===void 0;if(t){let n=Le.get(i);if(n!==void 0)return n}try{let r=new Ze(i,{typeResolver:e}).parseType(),s=vt(r,e);return t&&(Le.size>=Un&&Le.clear(),Le.set(i,Et(s))),s}catch(n){throw new Error(`Failed to parse type "${i}": ${n instanceof Error?n.message:String(n)}`)}}var Mt={number:Ae,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:Si,unknown:[],nothing:[],never:[],error:[],value:Bi,scalar:Ve,collection:Oe,indexed_collection:ki,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:wi},wt=(()=>{let i={},e=t=>{if(i[t])return i[t];let n=new Set([t]);i[t]=n;for(let r of Mt[t])if(r!==t)for(let s of e(r))n.add(s);return n};for(let t of Object.keys(Mt))e(t);return i})();function Ne(i,e){return e==="any"||i==="never"?!0:i==="unknown"||e==="unknown"?!1:i===e?!0:wt[e].has(i)}function b(i,e){if(typeof i=="string"&&!se.has(i)&&(i=Pi(i)),typeof e=="string"&&!se.has(e)&&(e=Pi(e)),e==="any"||i==="never")return!0;if(e==="never")return!1;if(e==="error")return i==="error";if(e==="nothing")return i==="nothing";if(i==="nothing")return!1;if(e==="unknown")return!0;if(i==="unknown")return!1;if(typeof e=="string")return typeof i=="string"?Ne(i,e):i.kind==="value"?typeof i.value=="boolean"?e==="boolean":typeof i.value=="number"?Number.isInteger(i.value)?Ne("integer",e):Ne("real",e):typeof i.value=="boolean"?Ne("boolean",e):typeof i.value=="string"?Ne("string",e):!1:i.kind==="union"?i.types.every(t=>b(t,e)):i.kind==="intersection"?i.types.some(t=>b(t,e)):i.kind==="negation"?!b(i.type,e):i.kind==="numeric"?!!b(i.type,e):e==="number"?St(i):e==="symbol"?Di(i):e==="expression"?Gn(i):e==="function"?Rt(i):e==="scalar"?xt(i):e==="value"?Ft(i):e==="indexed_collection"?Dt(i):e==="collection"?Pt(i):e==="tuple"?i.kind==="tuple":e==="list"?i.kind==="list":e==="set"?i.kind==="set":e==="record"?i.kind==="record":e==="dictionary"?i.kind==="dictionary":!1;if(e.kind==="union")return typeof i!="string"&&i.kind==="union"?i.types.every(t=>e.types.some(n=>b(t,n))):e.types.some(t=>b(i,t));if(e.kind==="expression"){if(i==="symbol")return!0;if(typeof i=="string")return!1;if(i.kind==="expression")return e.operator==="Symbol"?Di(i):i.operator===e.operator;if(i.kind==="symbol")return!0}if(typeof i=="string")return!1;if(e.kind==="reference"){if(i.kind==="reference")return i.name===e.name;if(e.alias===!0&&e.def)return b(i,e.def)}if(i.kind==="union")return i.types.some(t=>b(t,e));if(i.kind==="intersection"&&e.kind==="intersection")return e.types.every(t=>i.types.some(n=>b(n,t)));if(i.kind==="intersection")return i.types.every(t=>b(t,e));if(e.kind==="intersection")return e.types.every(t=>b(i,t));if(i.kind==="signature"&&e.kind==="signature"){if(!b(i.result,e.result))return!1;if(i.optArgs||i.variadicArg){if(e.args){if(!i.args||i.args.length!==e.args.length)return!1;for(let t=0;t<e.args.length;t++)if(!b(e.args[t].type,i.args[t].type))return!1}else if(i.args)return!1;if(e.optArgs){if(!i.optArgs||i.optArgs.length!==e.optArgs.length)return!1;for(let t=0;t<i.optArgs.length;t++)if(!b(e.optArgs[t].type,i.optArgs[t].type))return!1}else if(i.optArgs)return!1;if(e.variadicArg){if(!i.variadicArg||i.variadicMin!=e.variadicMin||!b(e.variadicArg.type,i.variadicArg.type))return!1}else if(i.variadicArg)return!1}else{if(e.args&&!i.args)return!1;let t=0;if(e.args){if(i.args.length<e.args.length)return!1;for(;t<e.args.length;){if(!b(e.args[t].type,i.args[t].type))return!1;t+=1}}if(e.optArgs){if(t>=i.args.length)return!0;for(let n=0;n<e.optArgs.length;n++){if(!b(e.optArgs[n].type,i.args[t].type))return!1;if(t+=1,t>=i.args.length)return!0}}if(e.variadicArg){if(t>=i.args.length&&e.variadicMin===0)return!0;if(e.variadicMin>0&&t+e.variadicMin>i.args.length)return!1;for(;t<i.args.length;){if(!b(e.variadicArg.type,i.args[t].type))return!1;t+=1}}}return!0}if(i.kind==="record"&&e.kind==="record"){for(let t of Object.keys(e.elements))if(!(t in i.elements)||!b(i.elements[t],e.elements[t]))return!1;return!0}if(i.kind==="dictionary"&&e.kind==="dictionary")return b(i.values,e.values);if(e.kind==="indexed_collection")return i.kind==="indexed_collection"||i.kind==="list"?b(i.elements,e.elements):i.kind==="tuple"?i.elements.every(t=>b(t.type,e.elements)):!1;if(e.kind==="collection"){if(i.kind==="collection"||i.kind==="indexed_collection"||i.kind==="list")return b(i.elements,e.elements);if(i.kind==="tuple")return i.elements.every(t=>b(t.type,e.elements));if(i.kind==="set")return b(i.elements,e.elements);if(i.kind==="dictionary")return b({kind:"tuple",elements:[{type:"string"},{type:i.values}]},e.elements);if(i.kind==="record")return b({kind:"tuple",elements:[{type:"string"},{type:Xn(...Object.values(i.elements))}]},e.elements)}if(i.kind==="tuple"&&e.kind==="tuple"){if(i.elements.length!==e.elements.length)return!1;for(let t=0;t<i.elements.length;t++){let n=i.elements[t],r=e.elements[t];if(!b(n.type,r.type)||n.name!==r.name)return!1}return!0}if(e.kind==="list"&&i.kind==="list"){if(!b(i.elements,e.elements))return!1;if(e.dimensions){if(!i.dimensions||i.dimensions.length!==e.dimensions.length)return!1;for(let t=0;t<i.dimensions.length;t++)if(e.dimensions[t]!==-1&&i.dimensions[t]!==e.dimensions[t])return!1}return!0}if(i.kind==="symbol"&&e.kind==="symbol")return i.name===e.name;if(i.kind==="numeric"&&e.kind==="numeric")return!(!b(i.type,e.type)||(i.lower??-1/0)<(e.lower??-1/0)||(i.upper??1/0)>(e.upper??1/0));if(e.kind==="set"&&i.kind==="set")return!!b(i.elements,e.elements);if(i.kind==="negation"&&e.kind==="negation")return b(i.type,e.type);if(e.kind==="negation")return!b(i,e.type);if(e.kind==="value"&&i.kind==="value")return e.value===i.value;if(i.kind==="value"){if(typeof i.value=="boolean")return b("boolean",e);if(typeof i.value=="number")return Number.isInteger(i.value)?b("integer",e):b("real",e);if(typeof i.value=="string")return b("string",e)}return!1}function St(i){return typeof i=="string"?Nt.has(i):i.kind==="value"?typeof i.value=="number":i.kind==="numeric"}function xt(i){return St(i)?!0:typeof i=="string"?yt.has(i):i.kind==="value"?["string","boolean","number"].includes(typeof i.value):!1}function Pt(i){return Dt(i)?!0:typeof i=="string"?bt.has(i):["collection","set","record","dictionary"].includes(i.kind)}function Dt(i){return typeof i=="string"?!1:["indexed_collection","list","tuple"].includes(i.kind)}function Ft(i){return xt(i)||Pt(i)}function Rt(i){return i==="function"||typeof i!="string"&&i.kind==="signature"}function Gn(i){return typeof i=="string"&&["expression","symbol","function"].includes(i)||Ft(i)||Rt(i)||Di(i)?!0:typeof i=="string"?!1:i.kind==="expression"}function Di(i){return i==="symbol"?!0:typeof i=="string"?!1:i.kind==="symbol"?!0:i.kind==="expression"?i.operator==="Symbol":!1}function Jn(i,e){if(i===e)return i;if(i==="any"||e==="any")return"any";if(i==="never")return e;if(e==="never")return i;if(i==="unknown")return e;if(e==="unknown")return i;if(i==="nothing")return e;if(e==="nothing")return i;if(b(i,e))return e;if(b(e,i))return i;let t=Wn(i,e);return jn.has(t)?$n(i,e):t}var jn=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function $n(i,e){let t=[],n=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);n.has(o)||(n.add(o),t.push(s))};return r(i),r(e),t.length===1?t[0]:{kind:"union",types:t}}function Xn(...i){return i.length===0?"nothing":i.length===1?i[0]:i.reduce((e,t)=>Jn(e,t))}var kt=["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"],Bt=new Map;function Wn(i,e){if(i===e)return i;if(i==="any"||e==="any")return"any";if(i==="never")return e;if(e==="never")return i;if(i==="unknown")return e;if(e==="unknown")return i;if(i==="nothing")return e;if(e==="nothing")return i;if(typeof i=="string"&&typeof e=="string"){let t=i<e?`${i}|${e}`:`${e}|${i}`,n=Bt.get(t);if(n===void 0){n="any";for(let r of kt){let s=wt[r];if(s.has(i)&&s.has(e)){n=r;break}}Bt.set(t,n)}return n}for(let t of kt)if(b(i,t)&&b(e,t))return t;return"any"}var $=class i extends D{__brand;rational;radical;im=0;factory;constructor(e,t){if(super(),this.factory=t,typeof e=="number"){!Number.isFinite(e)||Number.isInteger(e),this.rational=[e,1],this.radical=1;return}if(typeof e=="bigint"){this.rational=[e,BigInt(1)],this.radical=1;return}typeof e!="object"||"im"in e;let n=1;if(typeof n!="number"||Number.isInteger(n),n==0){this.rational=[0,1],this.radical=1;return}let r=e.rational?[...e.rational]:[1,1];n!=1&&(typeof n=="bigint"?r=L(r,[n,BigInt(1)]):r=L(r,[n,1])),this.rational=r,this.radical=e.radical??1,this.radical<=S&&this.radical>=1,this.normalize()}get type(){return this.isNaN?"number":this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(Q(this.rational),"finite_real"):J(this.rational)?"finite_integer":"finite_rational"}get isExact(){return!0}get asExact(){return this}toJSON(){if(this.isNaN)return"NaN";if(this.isPositiveInfinity)return"PositiveInfinity";if(this.isNegativeInfinity)return"NegativeInfinity";if(this.isZero)return 0;if(this.isOne)return 1;if(this.isNegativeOne)return-1;let e=t=>J(t)?F(t[0]):["Rational",F(t[0]),F(t[1])];return this.radical===1?e(this.rational):Fe(this.rational)?["Sqrt",this.radical]:Re(this.rational)?["Negate",["Sqrt",this.radical]]:this.rational[0]==1?["Divide",["Sqrt",this.radical],F(this.rational[1])]:this.rational[0]==-1?["Negate",["Divide",["Sqrt",this.radical],F(this.rational[1])]]:["Multiply",e(this.rational),["Sqrt",this.radical]]}clone(e){return new i(e,this.factory)}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";let e=n=>J(n)?B(n[0]):`${B(n[0])}/${B(n[1])}`;if(this.radical===1)return e(this.rational);let t=n=>`sqrt(${B(n)})`;return Fe(this.rational)?t(this.radical):Re(this.rational)?`-${t(this.radical)}`:this.rational[0]==1?`${t(this.radical)}/${B(this.rational[1])}`:this.rational[0]==-1?`-${t(this.radical)}/${B(this.rational[1])}`:`${e(this.rational)}${t(this.radical)}`}get sign(){return Q(this.rational)?0:De(this.rational)?1:-1}get re(){return Ii(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let e,t=this.rational;return O(t)?e=new u(t[0]).div(t[1]):e=new u(t[0]).div(new u(t[1])),this.radical===1?e:e.mul(new u(this.radical).sqrt())}get numerator(){return this.rational[1]==1?this:this.clone({rational:O(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return O(this.rational)?this.clone(this.rational[1]):this.clone({rational:[this.rational[1],BigInt(1)]})}normalize(){if(Number.isInteger(this.radical)&&this.radical>0&&Number.isFinite(this.radical),isNaN(this.radical)){this.rational=[NaN,1],this.radical=1;return}let[e,t]=this.rational;if(t==0){this.rational=[NaN,1],this.radical=1;return}if(this.radical===0||e===0){this.rational=[0,1],this.radical=1;return}if(this.radical>=4){let[n,r]=z(this.radical,2);n!==1&&(this.rational=L(this.rational,[n,1])),this.radical=r}this.rational=pe(this.rational)}get isNaN(){return Number.isNaN(this.rational[0])}get isPositiveInfinity(){return this.rational[0]==1/0}get isNegativeInfinity(){return this.rational[0]==-1/0}get isComplexInfinity(){return!1}get isZero(){return Q(this.rational)}get isOne(){return!(this.rational[0]!==this.rational[1]||this.radical!==1)}get isNegativeOne(){return!(this.rational[0]!==-this.rational[1]||this.radical!==1)}sgn(){if(!Number.isNaN(this.rational[0]))return Q(this.rational)?0:De(this.rational)?1:-1}N(){return this.isZero||this.isOne||this.isNegativeOne?this:this.rational[1]==1&&this.radical===1?this:this.factory(this.bignumRe)}neg(){return this.isZero?this:this.clone({rational:Ti(this.rational),radical:this.radical})}inv(){return this.isNaN?this:this.isPositiveInfinity||this.isNegativeInfinity?this.clone(0):this.isZero?this.clone(1/0):this.isOne?this:this.isNegativeOne?this:this.clone({rational:L([BigInt(this.rational[1]),BigInt(1)],ge([BigInt(this.rational[0])*BigInt(this.radical),BigInt(1)])),radical:this.radical})}add(e){return typeof e=="number"?e===0?this:Number.isInteger(e)&&this.radical===1?this.clone({rational:ee(this.rational,[e,1])}):this.factory(this.bignumRe).add(e):e.isZero?this:this.isZero?e:e instanceof i?this.radical===e.radical?this.clone({rational:ee(this.rational,e.rational),radical:this.radical}):this.factory(this.bignumRe).add(e):e.add(this)}sub(e){return this.add(e.neg())}mul(e){if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):this.clone(0);if(e===1)return this;if(e===-1)return this.neg();if(typeof e=="number")return Number.isInteger(e)?this.clone({rational:L(this.rational,[e,1]),radical:this.radical}):this.factory(this.bignumRe).mul(e);if(e instanceof u)return this.factory(e).mul(this);if(e.im!==0)return e.mul(this);if(e.isZero)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):e;if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isNaN)return e;if(this.isZero)return e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN?this.clone(NaN):this;if(this.isOne)return e;if(this.isNegativeOne)return e.neg();if(!(e instanceof i))return e.mul(this);let t=BigInt(this.radical)*BigInt(e.radical);return t>BigInt(S)?this.factory(this.bignumRe).mul(e):this.clone({rational:L(this.rational,e.rational),radical:Number(t)})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({rational:L(this.rational,[1,e]),radical:this.radical});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(this.isZero)return e.isZero?this.clone(NaN):e.isNaN?e:this;if(e.isNaN)return e;if(e.isZero)return this.clone(this.sign*(1/0));if(!(e instanceof i))return this.factory(this.bignumRe).div(e);if(e.im!==0)return this.factory(this.bignumRe).div(e);let t=L(this.rational,[BigInt(e.rational[1]),BigInt(e.rational[0])*BigInt(e.radical)]),n=BigInt(this.radical)*BigInt(e.radical);return n>BigInt(S)?this.factory(this.bignumRe).div(e):this.clone({rational:t,radical:Number(n)})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;if(e.im)e={re:e.re,im:e.im};else{if(e instanceof i&&e.radical===1&&e.rational[0]==1)return this.root(Number(e.rational[1]));e=e.re}}if(e===.5)return this.sqrt();if(typeof e=="object"&&("re"in e||"im"in e))return this.factory(this.bignumRe).pow(e);if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.factory({im:1/0})}if(e<0)return this.pow(-e).inv();if(e%1===.5)return this.pow(Math.floor(e)).mul(this.sqrt());if(this.radical>S||this.rational[0]>S||this.rational[0]<-S||this.rational[1]>S)return this.factory(this.bignumRe).pow(e);if(this.sign<0){if(Number.isInteger(e)){let t=e%2===0?1:-1,n=BigInt(e),r=BigInt(this.radical)**n;return r>BigInt(S)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(t)*(-BigInt(this.rational[0]))**n,BigInt(this.rational[1])**n],radical:Number(r)})}return this.factory({im:(-this.re)**e})}else if(Number.isInteger(e)){let t=BigInt(e),n=BigInt(this.radical)**t;return n>BigInt(S)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(this.rational[0])**t,BigInt(this.rational[1])**t],radical:Number(n)})}return this.factory(this.bignumRe).pow(e)}root(e){if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(e===1)return this;if(e===-1)return this.inv();if(e<0)return this.root(-e).inv();if(e%1===.5)return this.root(Math.floor(e)).sqrt();if(this.radical===1){if(this.sign>0){let t=this.re;if(Number.isInteger(t)){if(t>0){let n=Math.pow(t,1/e);if(Number.isInteger(n))return this.clone(n)}return this.factory(this.bignumRe).root(e)}}return this.factory(this.bignumRe).root(e)}if(this.sign<0)return this.factory({im:Math.pow(-this.re,1/e)});if(this.radical>S||this.rational[0]>S||this.rational[0]<-S||this.rational[1]>S)return this.factory(this.bignumRe).root(e);if(this.rational[1]==1){let t=Math.pow(this.rational[0],1/e);if(Number.isInteger(t))return this.clone(t)}return this.factory(this.bignumRe).root(e)}sqrt(){if(this.isZero||this.isOne)return this;if(this.radical===1)if(O(this.rational)){let[e,t]=this.rational;return e*t>S?this.factory(this.bignumRe).sqrt():e>0?this.clone({radical:e*t,rational:[1,t]}):this.factory({im:Math.sqrt(-e*t)/t})}else return this.factory(this.bignumRe).sqrt();if(this.sign>0){let e=Math.sqrt(this.re);if(Number.isInteger(e))return this.clone(e)}return this.factory(this.bignumRe).sqrt()}gcd(e){if(!(e instanceof i))return e.gcd(this);if(this.isOne||e.im!==0||e.isOne)return this.clone(1);let t=vi(this.rational,e.rational),n=A(this.radical,e.radical);return this.clone({rational:t,radical:n})}abs(){return this.sign===-1?this.neg():this}ln(e){return this.isZero?this.clone(NaN):this.isPositiveInfinity?this.clone(1/0):this.sign<0?this.clone(NaN):this.isOne?this.clone(0):this.isNegativeOne?this.factory({im:Math.PI}):this.factory(this.bignumRe).ln(e)}exp(){return this.isNaN?this.clone(NaN):this.isZero?this.clone(1):this.isNegativeInfinity?this.clone(0):this.isPositiveInfinity?this.clone(1/0):this.factory(this.bignumRe).exp()}_integerPart(e){let t=BigInt(this.rational[0]),n=BigInt(this.rational[1]);n<0n&&(t=-t,n=-n);let r;if(e==="round"){let s=2n*t+n,o=2n*n;r=s/o,s%o!==0n&&s<0n&&(r-=1n)}else r=t/n,t%n!==0n&&(e==="floor"&&t<0n&&(r-=1n),e==="ceil"&&t>0n&&(r+=1n));return this.clone({rational:[r,BigInt(1)],radical:1})}floor(){return this.isNaN?this.clone(NaN):this.radical===1&&J(this.rational)?this:this.radical===1?this._integerPart("floor"):this.clone(Math.floor(this.re))}ceil(){return this.isNaN?this.clone(NaN):this.radical===1&&J(this.rational)?this:this.radical===1?this._integerPart("ceil"):this.clone(Math.ceil(this.re))}round(){return this.isNaN?this.clone(NaN):this.radical===1&&J(this.rational)?this:this.radical===1?this._integerPart("round"):this.clone(Math.round(this.re))}eq(e){return typeof e=="number"?this.radical===1&&J(this.rational)&&this.rational[0]==e:e instanceof i?this.radical===e.radical&&this.rational[0]==e.rational[0]&&this.rational[1]==e.rational[1]:e.im===0&&e.re===this.re}lt(e){if(this.im===0)return typeof e=="number"?this.re<e:this.re<e.re}lte(e){if(this.im===0)return typeof e=="number"?this.re<=e:this.re<=e.re}gt(e){if(this.im===0)return typeof e=="number"?this.re>e:this.re>e.re}gte(e){if(this.im===0)return typeof e=="number"?this.re>=e:this.re>=e.re}static sum(e,t){if(e.length===1)return e;if(e.some(a=>!a.isExact)){if(e.length===2)return[e[0].add(e[1])];let a=t(0);for(let c of e)a=a.add(c);return[a]}let n=0,r=[0,1],s=[];for(let a of e){if(a.isNaN)return[new i(NaN,t)];if(!a.isZero)if(n+=a.im,a instanceof i){let c=a.rational;if(a.radical===1)r=ee(r,c);else{let l=s.findIndex(f=>f.radical===a.radical);l===-1?s.push({multiple:c,radical:a.radical}):s[l].multiple=ee(s[l].multiple,c)}}else{b(a.type,"integer");let c=BigInt(a.bignumRe.toFixed(0));r=ee(r,[c,BigInt(1)])}}if(Q(r)&&s.length===0)return n===0?[new i(0,t)]:[t({im:n})];let o=[];return n!==0&&o.push(t({im:n})),s.length===0?o.push(new i({rational:r},t)):(s.push({multiple:r,radical:1}),o.push(...s.map(a=>new i({rational:a.multiple,radical:a.radical},t)))),o}};function Fi(i,e){for(i.isInteger()&&e.isInteger();!e.isZero();)[i,e]=[e,i.mod(e)];return i.abs()}function At(i,e){return i.mul(e).div(Fi(i,e)).abs()}function*Ot(i){if(!i.isInteger()||i.isNegative())return u.NAN;if(i.lt(1))return u.ONE;let e=i;for(;i.gt(2);)i=i.sub(2),e=e.mul(i),yield e;return e}function be(i){if(!i.isFinite()||i.isZero())return!0;let n=(i.significand<0n?-i.significand:i.significand).toString().length;if(n>17)return!1;let r=n+i.exponent-1;return r<309&&r>-308}var qe=class i extends D{__brand;decimal;constructor(e){if(super(),typeof e=="number")this.decimal=new u(e),this.im=0;else if(e instanceof u)this.decimal=e,this.im=0;else{let t=e.re instanceof u?e.re:new u(e.re??0);this.decimal=t,this.im=e.im??0}this.decimal.isNaN()&&(this.im=NaN),this.decimal.isNaN(),isNaN(this.im)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal.isZero()?"imaginary":"finite_complex":this.decimal.isFinite()?this.decimal.isInteger()?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&this.decimal.isInteger()}get asExact(){if(this.isExact)return this._makeExact(R(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?be(this.decimal)?this.decimal.toNumber():{num:Ce(this.decimal)}:be(this.decimal)?["Complex",F(this.decimal.toNumber()),F(this.im)]:["Complex",{num:Ce(this.decimal)},F(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return Ce(this.decimal.toPrecision(u.precision));if(this.decimal.isZero())return this.im===1?"i":this.im===-1?"-i":`${B(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${this.im}i`:e=`- ${-this.im}i`,`(${Ce(this.decimal)} ${e})`}clone(e){return new i(e)}_makeExact(e){return new $(e,t=>this.clone(t))}get re(){return this.decimal.toNumber()}get bignumRe(){return this.decimal}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return this.decimal.isNaN()}get isPositiveInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isPositive()}get isNegativeInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isNegative()}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal.isZero()}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=typeof e=="number"?new u(e):e;return this.decimal.abs().lte(t)}get isOne(){return this.im===0&&this.decimal.eq(1)}get isNegativeOne(){return this.im===0&&this.decimal.eq(-1)}sgn(){if(this.im===0){if(this.decimal.isZero())return 0;if(this.decimal.isPositive())return 1;if(this.decimal.isNegative())return-1}}N(){return this}neg(){return this.isZero?this:this.clone({re:this.decimal.neg(),im:-this.im})}inv(){if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(this.decimal.inv());let e=this.re*this.re+this.im*this.im,t=this.decimal.mul(this.decimal).add(this.im*this.im);return this.clone({re:this.decimal.div(t),im:-this.im/e})}add(e){return typeof e=="number"?e===0?this:this.clone({re:this.decimal.add(e),im:this.im}):e.isZero?this:this.isZero?this.clone(e):this.clone({re:this.decimal.add(e.bignumRe??e.re),im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isZero)return e instanceof D&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isNaN||this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof u?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e});if(e instanceof u)return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e.toNumber()});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isNaN||this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal.mul(e.bignumRe??e.re)):this.clone({re:this.decimal.mul(e.bignumRe??e.re).sub(this.im*e.im),im:this.re*e.im+this.im*e.re})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal.div(e),im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.isZero||this.isNaN?this.clone(NaN):this.im!==0?this.clone({im:1/0}):this.clone(this.decimal.isNegative()?-1/0:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal.div(e.bignumRe??e.re));let[t,n]=[this.re,this.im],[r,s]=[e.re,e.im],o=r*r+s*s,a=e.bignumRe??new u(e.re),c=a.mul(a).add(s*s);return this.clone({re:this.decimal.mul(a).add(n*s).div(c),im:(n*r-t*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});if(this.isZero)return c>0?this.clone(0):this.clone(NaN);let f=this.decimal,m=this.im,p=f.mul(f).add(m*m).sqrt().ln(),d=u.atan2(m,f),h=p.mul(c).sub(d.mul(l)),g=d.mul(c).add(p.mul(l)),N=h.exp();return this.clone({re:N.mul(g.cos()),im:oe(N.mul(g.sin()).toNumber())})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.pow(-e).inv();if(this.im===0)return this.clone(this.decimal.pow(e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=u.atan2(n,t),o=r.pow(e),a=s.mul(e);return this.clone({re:o.mul(a.cos()),im:oe(o.mul(a.sin()).toNumber())})}root(e){if(!Number.isInteger(e))return this._makeExact(NaN);if(e===0)return this._makeExact(NaN);if(e===1)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):e===2?this.clone(this.decimal.sqrt()):e===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.ln().div(e).exp());let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=u.atan2(n,t),o=r.ln().div(e).exp(),a=s.div(e);return this.clone({re:o.mul(a.cos()),im:oe(o.mul(a.sin()).toNumber())})}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,n=e.mul(e).add(t*t).sqrt(),r=e.add(n).div(2).sqrt(),s=oe(Math.sign(t)*n.sub(e).div(2).sqrt().toNumber());return this.clone({re:r,im:s})}return this.decimal.isPositive()?this.clone(this.decimal.sqrt()):this.clone({im:Math.sqrt(-this.re)})}gcd(e){if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!this.decimal.isInteger())return this._makeExact(1);let t=e.bignumRe?new u(e.bignumRe):new u(e.re);if(!t.isInteger())return this._makeExact(1);let n=this.decimal;for(;!t.isZero();){let r=t;t=n.mod(t),n=r}return this.clone(n.abs())}abs(){return this.im===0?this.decimal.isPositive()?this:this.clone(this.decimal.neg()):this.clone(this.decimal.pow(2).add(this.im**2).sqrt())}ln(e){if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(this.decimal.ln()):this.clone(this.decimal.log(e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=u.atan2(n,t).toNumber();return e===void 0?this.clone({re:r.ln(),im:s}):this.clone({re:r.log(e),im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=this.decimal.exp();return this.clone({re:e.mul(oe(Math.cos(this.im))),im:oe(e.mul(Math.sin(this.im)).toNumber())})}return this.clone(this.decimal.exp())}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(R(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(R(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(R(this.decimal.round()))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal.eq(e):e.isNaN?!1:Number.isFinite(this.im)?this.decimal.eq(e.bignumRe??e.re)&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){if(this.im===0)return typeof e=="number"?this.decimal.lt(e):this.decimal.lt(e.bignumRe??e.re)}lte(e){if(this.im===0)return typeof e=="number"?this.decimal.lte(e):this.decimal.lte(e.bignumRe??e.re)}gt(e){if(this.im===0)return typeof e=="number"?this.decimal.gt(e):this.decimal.gt(e.bignumRe??e.re)}gte(e){if(this.im===0)return typeof e=="number"?this.decimal.gte(e):this.decimal.gte(e.bignumRe??e.re)}};function Ce(i){let e=i.toString();if(i.isInteger()&&e.includes("e")){let t=i.toFixed(0),n=t.match(/0+$/);if((n?n[0].length:0)<=5)return t}return e}function oe(i){return Math.abs(i)<=1e-14?0:i}var Ye=class i extends D{__brand;decimal;constructor(e){if(super(),typeof e=="number")this.decimal=e,this.im=0;else if(e instanceof u)this.decimal=e.toNumber(),this.im=0;else{let t=e.re===void 0?0:e.re instanceof u?e.re.toNumber():e.re;this.decimal=t,this.im=e.im??0,isFinite(this.im)||(this.decimal=this.im)}isNaN(this.im)}_makeExact(e){return new $(e,t=>this.clone(t))}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal===0?"imaginary":"finite_complex":Number.isFinite(this.decimal)?Number.isInteger(this.decimal)?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&Number.isInteger(this.decimal)}get asExact(){if(this.isExact)return this._makeExact(this.decimal)}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.im===0?F(this.decimal):["Complex",F(this.decimal),F(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return B(this.decimal);if(this.decimal===0)return this.im===1?"i":this.im===-1?"-i":`${B(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${B(this.im)}i`:e=`- ${B(-this.im)}i`,`(${B(this.decimal)} ${e})`}clone(e){return new i(e)}get re(){return this.decimal}get bignumRe(){}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return Number.isNaN(this.decimal)}get isPositiveInfinity(){return!Number.isFinite(this.decimal)&&this.decimal>0&&this.im===0}get isNegativeInfinity(){return!Number.isFinite(this.decimal)&&this.decimal<0&&this.im===0}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal===0}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=e instanceof u?e.toNumber():e;return Math.abs(this.decimal)<t}get isOne(){return this.im===0&&this.decimal===1}get isNegativeOne(){return this.im===0&&this.decimal===-1}sgn(){if(!(this.im!==0||!Number.isFinite(this.decimal)))return Math.sign(this.decimal)}N(){return this}neg(){return this.isNaN?this._makeExact(NaN):this.isZero?this:this.clone({re:-this.decimal,im:-this.im})}inv(){if(this.isNaN)return this._makeExact(NaN);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(1/this.decimal);let e=this.re*this.re+this.im*this.im;return this.clone({re:this.decimal/e,im:-this.im/e})}add(e){return this.isNaN?this._makeExact(NaN):typeof e=="number"?e===0?this:this.clone({re:this.decimal+e,im:this.im}):e.isZero?this:this.isZero?this.clone({re:e.bignumRe??e.re,im:e.im}):this.clone({re:this.decimal+e.re,im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e instanceof D&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e instanceof u&&(e=e.toNumber()),e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof u?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal*e):this.clone({re:this.decimal*e,im:this.im*e});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal*e.re):this.clone({re:this.decimal*e.re-this.im*e.im,im:this.re*e.im+this.im*e.re})}div(e){if(this.isNaN)return this._makeExact(NaN);if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal/e,im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal/e.re);let[t,n]=[this.decimal,this.im],[r,s]=[e.re,e.im],o=r*r+s*s;return this.clone({re:(t*r+n*s)/o,im:(n*r-t*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this._makeExact(NaN);if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});if(this.isZero)return c>0?this.clone(0):this.clone(NaN);let f=this.decimal,m=this.im,p=.5*Math.log(f*f+m*m),d=Math.atan2(m,f),h=c*p-l*d,g=c*d+l*p,N=Math.exp(h);return this.clone({re:Vt(N*Math.cos(g)),im:Vt(N*Math.sin(g))})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0&&this.im===0)return this.clone(1/this.decimal**-e);if(this.im===0)return this.clone(this.decimal**e);let t=this.decimal,n=this.im,r=Math.sqrt(t*t+n*n),s=Math.atan2(n,t),o=r**e,a=s*e;return this.clone({re:o*Math.cos(a),im:o*Math.sin(a)})}root(e){if(this.isNaN)return this._makeExact(NaN);if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.clone(Math.cbrt(this.decimal));if(this.im===0)return this.decimal<0?e%2===0?this.clone(NaN):this.clone(-Math.pow(-this.decimal,1/e)):this.clone(Math.pow(this.decimal,1/e));let t=this.decimal,n=this.im,r=Math.hypot(t,n),s=Math.atan2(n,t),o=Math.pow(r,1/e),a=s/e;return this.clone({re:o*Math.cos(a),im:o*Math.sin(a)})}sqrt(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,n=Math.sqrt(e*e+t*t),r=Math.sqrt((e+n)/2),s=Math.sign(t)*Math.sqrt((n-e)/2);return this.clone({re:r,im:s})}return this.decimal>0?this.clone(Math.sqrt(this.decimal)):this.clone({im:Math.sqrt(-this.decimal)})}gcd(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!Number.isInteger(this.decimal))return this._makeExact(1);let t=e.re;if(!Number.isInteger(t))return this._makeExact(1);let n=this.decimal;for(;t!==0;){let r=t;t=n%t,n=r}return this.clone(Math.abs(n))}abs(){return this.isNaN?this._makeExact(NaN):this.im===0?this.decimal>0?this:this.clone(-this.decimal):this.clone(Math.sqrt(this.decimal**2+this.im**2))}ln(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal<0?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(Math.log(this.decimal)):this.clone(Math.log(this.decimal)/Math.log(e));let t=this.decimal,n=this.im,r=Math.hypot(t,n),s=Math.atan2(n,t),o=e===void 0?Math.log(r):Math.log(r)/Math.log(e);return this.clone({re:o,im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=Math.exp(this.decimal);return this.clone({re:e*Math.cos(this.im),im:e*Math.sin(this.im)})}return this.clone(Math.exp(this.decimal))}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.floor(this.decimal))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.ceil(this.decimal))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.round(this.decimal))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal===e:e.isNaN?!1:Number.isFinite(this.im)?this.decimal===e.re&&this.im===e.im:!Number.isFinite(e.im)}lt(e){if(this.im===0)return typeof e=="number"?this.decimal<e:this.decimal<e.re}lte(e){if(this.im===0)return typeof e=="number"?this.decimal<=e:this.decimal<=e.re}gt(e){if(this.im===0)return typeof e=="number"?this.decimal>e:this.decimal>e.re}gte(e){if(this.im===0)return typeof e=="number"?this.decimal>=e:this.decimal>=e.re}};function Vt(i){return Math.abs(i)<=1e-14?0:i}function _t(i){return i?._kind==="number"}function Hn(i){return i?._kind==="symbol"}function ye(i,e){return(i?._kind==="function"||i?._kind==="tensor")&&(e===void 0||i.operator===e)}function zn(i){if(ye(i,"Interval")){let e=i.op1,t=i.op2,n=!1,r=!1;ye(e,"Open")?(n=!0,e=e.op1):ye(e,"Closed")&&(e=e.op1),ye(t,"Open")?(r=!0,t=t.op1):ye(t,"Closed")&&(t=t.op1);let s=e.N(),o=t.N();return!_t(s)||!_t(o)?void 0:{start:s.re,openStart:n,end:o.re,openEnd:r}}if(Hn(i)){if(i.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(i.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(i.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(i.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(i.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(i.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function Kn(i,e){return!((i.openStart?e<=i.start:e<i.start)||(i.openEnd?e>=i.end:e>i.end))}function Qn(i,e){if(!i.openStart&&e.openStart){if(i.start<=e.start)return!1}else if(i.start<e.start)return!1;if(!i.openEnd&&e.openEnd){if(i.end>=e.end)return!1}else if(i.end>e.end)return!1;return!0}function Zt(i){let e=i.length;if(e===1)return i[0][0];if(e===2)return i[0][0]*i[1][1]-i[0][1]*i[1][0];let t=[],n=0;for(let r=0;r<e;r++){let s=0;for(let o=1;o<e;o++){let a=0;for(let c=0;c<e;c++)c!==r&&(t[s][a]=i[o][c],a++);s++}n=n+Math.pow(-1,r)*i[0][r]*Zt(t)}return n}function er(i,e){if(e===0)return{estimate:i,error:e};let t=Math.abs(e),n=Math.floor(Math.log10(t)),r=2,s=Math.pow(10,n-(r-1)),o=Math.round(e/s)*s,a=Math.max(0,-(n-(r-1)));return{estimate:Number(i.toFixed(a)),error:o}}function ir(i,e,t,n=1e5){let r=0,s=0;if(e===-1/0&&t===1/0)for(let d=0;d<n;d++){let h=Math.random(),g=Math.tan(Math.PI*(h-.5)),N=i(g)*Math.PI*(1+g*g);r+=N,s+=N*N}else if(e===-1/0)for(let d=0;d<n;d++){let h=Math.random(),g=t+Math.log(h),N=i(g)/h;r+=N,s+=N*N}else if(t===1/0)for(let d=0;d<n;d++){let h=Math.random(),g=e-Math.log(h),N=i(g)/h;r+=N,s+=N*N}else for(let d=0;d<n;d++){let h=i(e+Math.random()*(t-e));r+=h,s+=h*h}let o=r/n,a=(s-n*o*o)/(n-1),c=Math.sqrt(a/n),l=isFinite(e)&&isFinite(t)?t-e:1,f=o*l,m=c*l;return er(f,m)}function tr(i){let e=0,t=0;for(let n of i)e+=n,t++;return t===0?NaN:e/t}function nr(i){let e=u.ZERO,t=0;for(let n of i)e=e.add(n),t++;return t===0?u.NAN:e.div(new u(t))}function Ue(i){let e=[...i].sort((n,r)=>n-r),t=Math.floor(e.length/2);return e.length%2===0?(e[t-1]+e[t])/2:e[t]}function Ge(i){let e=[...i].sort((n,r)=>n.cmp(r)),t=Math.floor(e.length/2);return e.length%2===0?e[t-1].add(e[t]).div(u.TWO):e[t]}function Lt(i){let e=0,t=0,n=0;for(let r of i)e+=r,t+=r*r,n++;return n===0?NaN:(t-e*e/n)/(n-1)}function Ct(i){let e=u.ZERO,t=u.ZERO,n=0;for(let r of i)e=e.add(r),t=t.add(r.mul(r)),n++;return n===0?u.NAN:t.sub(e.mul(e).div(new u(n))).div(new u(n-1))}function qt(i){let e=0,t=0,n=0;for(let r of i)e+=r,t+=r*r,n++;return n===0?NaN:(t-e*e/n)/n}function Yt(i){let e=u.ZERO,t=u.ZERO,n=0;for(let r of i)e=e.add(r),t=t.add(r.mul(r)),n++;return n===0?u.NAN:t.sub(e.mul(e).div(new u(n))).div(new u(n))}function rr(i){return Math.sqrt(Lt(i))}function sr(i){return Ct(i).sqrt()}function or(i){return Math.sqrt(qt(i))}function ar(i){return Yt(i).sqrt()}function ur(i){let e=0,t=0,n=0,r=0,s=0;for(let f of i){let m=f;if(!Number.isFinite(m))return NaN;e+=m,t+=m*m,n+=m*m*m,r+=m*m*m*m,s++}if(s===0)return NaN;let o=s,a=e/o,c=(t-e*e/o)/o;return(r-4*a*n+6*a*a*t-4*a*a*a*e+o*a*a*a*a)/o/(c*c)}function cr(i){let e=u.ZERO,t=u.ZERO,n=u.ZERO,r=u.ZERO,s=0;for(let l of i){let f=l;if(!f.isFinite())return u.NAN;e=e.add(f),t=t.add(f.mul(f)),n=n.add(f.mul(f).mul(f)),r=r.add(f.mul(f).mul(f).mul(f)),s++}if(s===0)return u.NAN;let o=e.div(s),a=t.sub(e.mul(e).div(s)).div(s);return r.sub(o.mul(n).mul(4)).add(o.mul(o).mul(t).mul(6)).sub(o.mul(o).mul(o).mul(e).mul(4)).add(o.mul(o).mul(o).mul(o).mul(s)).div(s).div(a.mul(a))}function lr(i){let e=0,t=0,n=0,r=0;for(let l of i){let f=l;if(!Number.isFinite(f))return NaN;e+=f,t+=f*f,n+=f*f*f,r++}if(r===0)return NaN;let s=r,o=e/s,a=(t-e*e/s)/s;return(n-3*o*t+3*o*o*e-s*o*o*o)/s/Math.pow(a,3/2)}function fr(i){let e=u.ZERO,t=u.ZERO,n=u.ZERO,r=0;for(let c of i){let l=c;if(!l.isFinite())return u.NAN;e=e.add(l),t=t.add(l.mul(l)),n=n.add(l.mul(l).mul(l)),r++}if(r===0)return u.NAN;let s=e.div(r),o=t.sub(e.mul(e).div(r)).div(r);return n.sub(s.mul(t).mul(3)).add(s.mul(s).mul(e).mul(3)).sub(s.mul(s).mul(s).mul(r)).div(r).div(o.mul(o.sqrt()))}function mr(i){let e={};for(let r of i)e[r]=(e[r]??0)+1;let t=0,n=NaN;for(let r in e){let s=e[r];s>t&&(t=s,n=+r)}return n}function dr(i){let e={};for(let r of i)e[r.toString()]=(e[r.toString()]??0)+1;let t=0,n=u.NAN;for(let r in e){let s=e[r];s>t&&(t=s,n=new u(r))}return n}function Ut(i){let e=[...i].sort((o,a)=>o-a),t=Math.floor(e.length/2),n=Ue(e.slice(0,t)),r=Ue(e),s=Ue(e.slice(t));return[n,r,s]}function Gt(i){let e=[...i].sort((o,a)=>o.cmp(a)),t=Math.floor(e.length/2),n=Ge(e.slice(0,t)),r=Ge(e),s=Ge(e.slice(t));return[n,r,s]}function hr(i){let[e,,t]=Ut(i);return t-e}function pr(i){let[e,,t]=Gt(i);return t.sub(e)}var Je={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},Jt=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"]),je={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 We(i,e){return i[0]===e[0]&&i[1]===e[1]&&i[2]===e[2]&&i[3]===e[3]&&i[4]===e[4]&&i[5]===e[5]&&i[6]===e[6]}function gr(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===0&&i[4]===0&&i[5]===0&&i[6]===0}function Nr(i){if(i.length>2){let e=i.slice(0,2),t=i.slice(2);if(Je[e]!==void 0&&Jt.has(t)){let n=je[t];if(n)return{prefixScale:Je[e],baseEntry:n}}}if(i.length>1){let e=i.slice(0,1),t=i.slice(1);if(Je[e]!==void 0&&Jt.has(t)){let n=je[t];if(n)return{prefixScale:Je[e],baseEntry:n}}}return null}function $e(i){let e=je[i];if(e)return e;let t=Nr(i);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function Xe(i){let e=$e(i);return e?e.dimension:null}function jt(i){let e=$e(i);return e?e.scale:null}function br(i,e){let t=Xe(i),n=Xe(e);return!t||!n?!1:We(t,n)}var yr=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(i=>[je[i].dimension.join(","),i]));function Ir(i){return yr.get(i.join(","))??null}function $t(i,e,t){let n=$e(e),r=$e(t);if(!n||!r||!We(n.dimension,r.dimension))return null;let s=n.offset??0,o=r.offset??0;return(i+s)*n.scale/r.scale-o}function ie(i){if(typeof i=="string")return Xe(i);if(!Array.isArray(i)||i.length<2)return null;let e=i[0];if(e==="Multiply"){let t=[0,0,0,0,0,0,0];for(let n=1;n<i.length;n++){let r=ie(i[n]);if(!r)return null;for(let s=0;s<7;s++)t[s]+=r[s]}return t}if(e==="Divide"){if(i.length!==3)return null;let t=ie(i[1]),n=ie(i[2]);return!t||!n?null:t.map((r,s)=>r-n[s])}if(e==="Power"){if(i.length!==3)return null;let t=ie(i[1]),n=i[2];return!t||typeof n!="number"?null:t.map(r=>r*n)}return null}function te(i){if(typeof i=="string")return jt(i);if(!Array.isArray(i)||i.length<2)return null;let e=i[0];if(e==="Multiply"){let t=1;for(let n=1;n<i.length;n++){let r=te(i[n]);if(r===null)return null;t*=r}return t}if(e==="Divide"){if(i.length!==3)return null;let t=te(i[1]),n=te(i[2]);return t===null||n===null||n===0?null:t/n}if(e==="Power"){if(i.length!==3)return null;let t=te(i[1]),n=i[2];return t===null||typeof n!="number"?null:Math.pow(t,n)}return null}function Tr(i){let e=i.indexOf("^");if(e===-1)return i;let t=i.slice(0,e),n=i.slice(e+1),r=parseInt(n,10);return isNaN(r)?i:["Power",t,r]}function Ie(i){if(i=i.trim(),i.length===0)return null;if(i[0]==="("&&i[i.length-1]===")"){let r=0,s=!0;for(let o=0;o<i.length-1;o++)if(i[o]==="("?r++:i[o]===")"&&r--,r===0&&o<i.length-1){s=!1;break}if(s)return Ie(i.slice(1,-1))}let e=-1,t=[],n=0;for(let r=0;r<i.length;r++)i[r]==="("?n++:i[r]===")"?n--:n===0&&(i[r]==="/"&&e===-1?e=r:i[r]==="*"&&t.push(r));if(e!==-1){let r=i.slice(0,e).trim(),s=i.slice(e+1).trim(),o=Ie(r),a=Ie(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(i.slice(s,a).trim()),s=a+1;r.push(i.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>Ie(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return i[0]==="("?null:Tr(i)}function vr(i){return i=i.trim(),i.length===0?null:/[/*^()]/.test(i)?Ie(i):i}function Er(i,e,t){if(typeof e=="string"&&typeof t=="string")return $t(i,e,t);let n=ie(e),r=ie(t);if(!n||!r||!We(n,r))return null;let s=te(e),o=te(t);return s===null||o===null||o===0?null:i*s/o}var Xt=7,Wt=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function ue(i){if(i<0)return NaN;let e=0;for(;i<10;)e+=Math.log(i),i+=1;let t=Math.PI,n=i*i*i;return i*Math.log(i)-i-.5*Math.log(i)+.5*Math.log(2*t)+1/(12*i)-1/(360*n)+1/(1260*n*i*i)-e}function C(i){if(i<.5)return Math.PI/(Math.sin(Math.PI*i)*C(1-i));if(i>100)return Math.exp(ue(i));i-=1;let e=Wt[0];for(let n=1;n<Xt+2;n++)e+=Wt[n]/(i+n);let t=i+Xt+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,i+.5)*Math.exp(-t)*e}function Mr(i){let t=Math.log(1-i*i),n=2/(Math.PI*.147)+t/2;return Math.sign(i)*Math.sqrt(Math.sqrt(n*n-t/.147)-n)}function Kt(i){if(Number.isNaN(i)||i<-1||i>1)return NaN;if(i===0)return 0;if(i===1)return 1/0;if(i===-1)return-1/0;let e=i<0?-1:1,t=Math.abs(i),n=Mr(t),r=Math.sqrt(Math.PI)/2;for(let s=0;s<4;s++)n-=(Qe(n)-t)*r*Math.exp(n*n);return e*n}function Ri(i){if(Number.isNaN(i))return NaN;if(!Number.isFinite(i))return i>0?0:2;if(i<0)return 2-Ri(-i);if(i<2)return 1-Qe(i);let e=1e-300,t=i===0?e:i,n=t,r=0;for(let s=1;s<=500;s++){let o=s/2;r=i+o*r,r===0&&(r=e),r=1/r,n=i+o/n,n===0&&(n=e);let a=n*r;if(t*=a,Math.abs(a-1)<1e-17)break}return Math.exp(-i*i)/(Math.sqrt(Math.PI)*t)}function Qe(i){if(Number.isNaN(i))return NaN;if(i===0)return 0;if(!Number.isFinite(i))return i>0?1:-1;let e=i<0?-1:1,t=Math.abs(i);if(t>=6)return e;let n=t*t,r=t,s=t;for(let o=1;o<200&&(r*=2*n/(2*o+1),s+=r,!(r<s*1e-18));o++);return e*(2/Math.sqrt(Math.PI))*Math.exp(-n)*s}function ei(i,e){if(!e.isFinite())return u.NAN;if(e.lt(u.HALF)){let I=u.PI,y=I.mul(e).sin().abs();return y.isZero()?u.NAN:I.ln().sub(y.ln()).sub(ei(i,u.ONE.sub(e)))}if(e.isInteger()&&e.isPositive()){let I=e.toNumber();if(I<=1)return u.ZERO;let y=1n;for(let T=2;T<I;T++)y*=BigInt(T);return new u(y.toString()).ln()}let t=e.sub(u.HALF);if(t.isInteger()&&!t.isNegative()){let I=t.toNumber();if(I===0)return u.PI.ln().div(u.TWO);let y=1n;for(let P=2;P<=2*I;P++)y*=BigInt(P);let T=1n;for(let P=2;P<=I;P++)T*=BigInt(P);let w=4n**BigInt(I);return new u(y.toString()).ln().add(u.PI.ln().div(u.TWO)).sub(new u(w.toString()).ln()).sub(new u(T.toString()).ln())}let n=u.precision,r=10,s=Math.ceil(.37*n),o=e.toNumber(),a=Math.max(0,Math.ceil(s-o)),c=u.ZERO,l=e;for(let I=0;I<a;I++)c=c.add(l.ln()),l=l.add(u.ONE);let f=Math.ceil(Math.PI*l.toNumber())+10,m=Te(i,f),p=l.sub(u.HALF).mul(l.ln()).sub(l).add(u.PI.mul(u.TWO).ln().div(u.TWO)),d=l.mul(l),h=l,g=new u(10).pow(-(n+r)),N=Math.min(f,m.length);for(let I=0;I<N;I++){let y=2*(I+1),[T,w]=m[I],P=BigInt(y)*BigInt(y-1),fe=new u(T.toString()),W=new u((w*P).toString()),Y=fe.div(W.mul(h));if(I>0&&Y.abs().lt(g))break;p=p.add(Y),h=h.mul(d)}return p.sub(c)}function ne(i,e){if(e.isInteger()&&e.isPositive()){let t=e.toNumber(),n=1n;for(let r=2;r<t;r++)n*=BigInt(r);return new u(n.toString())}if(e.lt(u.HALF)){let t=u.PI,n=t.mul(e).sin();return n.isZero()?u.NAN:t.div(n.mul(ne(i,u.ONE.sub(e))))}return ei(i,e).exp()}function Ht(i,e){for(;e!==0n;){let t=e;e=i%e,i=t}return i}function He(i){return i<0n?-i:i}function zt(i){let e=[[1n,1n],[-1n,2n]];for(let n=2;n<=2*i;n++){if(n%2===1){e.push([0n,1n]);continue}let r=BigInt(n+1),s=0n,o=1n,a=1n;for(let m=0;m<n;m++){m>0&&(a=a*(r-BigInt(m)+1n)/BigInt(m));let[p,d]=e[m];if(p!==0n&&(s=s*d+a*p*o,o=o*d,m%8===7)){let h=Ht(He(s),o);s/=h,o/=h}}let c=-s,l=r*o,f=Ht(He(c),He(l));c/=f,l/=f,l<0n&&(c=-c,l=-l),e.push([c,l])}let t=[];for(let n=1;n<=i;n++)t.push(e[2*n]);return t}function Te(i,e){return i._cache("bernoulli-even-rationals",()=>zt(e),t=>t.length>=e?t:zt(e))}function ii(i,e){if(!e.isFinite())return u.NAN;if(e.isNegative()){if(e.isInteger())return u.NAN;let d=u.PI,h=d.mul(e),g=h.cos().div(h.sin());return ii(i,u.ONE.sub(e)).sub(d.mul(g))}if(e.isZero())return u.NAN;let t=u.precision,n=10,r=Math.max(7,Math.ceil(.37*t)),s=new u(0),o=e;for(;o.lt(r);)s=s.sub(u.ONE.div(o)),o=o.add(u.ONE);let a=Math.ceil(Math.PI*o.toNumber())+10,c=Te(i,a);s=s.add(o.ln()).sub(u.ONE.div(o.mul(2)));let l=o.mul(o),f=l,m=new u(10).pow(-(t+n)),p=Math.min(a,c.length);for(let d=0;d<p;d++){let[h,g]=c[d],N=BigInt(2*(d+1)),I=new u(h.toString()).div(new u((g*N).toString()).mul(l));if(d>0&&I.abs().lt(m))break;s=s.sub(I),l=l.mul(f)}return s}function ti(i,e){if(!e.isFinite())return u.NAN;if(e.isNegative()){if(e.isInteger())return u.NAN;let d=u.PI,h=d.mul(e).sin();return d.mul(d).div(h.mul(h)).sub(ti(i,u.ONE.sub(e)))}if(e.isZero())return u.NAN;let t=u.precision,n=10,r=Math.max(7,Math.ceil(.37*t)),s=new u(0),o=e;for(;o.lt(r);)s=s.add(u.ONE.div(o.mul(o))),o=o.add(u.ONE);let a=Math.ceil(Math.PI*o.toNumber())+10,c=Te(i,a);s=s.add(u.ONE.div(o)),s=s.add(u.ONE.div(o.mul(o).mul(2)));let l=o.mul(o).mul(o),f=o.mul(o),m=new u(10).pow(-(t+n)),p=Math.min(a,c.length);for(let d=0;d<p;d++){let[h,g]=c[d],N=new u(h.toString()).div(new u(g.toString()).mul(l));if(d>0&&N.abs().lt(m))break;s=s.add(N),l=l.mul(f)}return s}function Qt(i,e,t){let n=e.toNumber();if(!Number.isInteger(n)||n<0)return u.NAN;if(n===0)return ii(i,t);if(n===1)return ti(i,t);if(!t.isFinite()||t.isZero())return u.NAN;let r=y=>{let T=u.ONE;for(let w=2;w<=y;w++)T=T.mul(w);return T},s=u.precision,o=10,a=Math.max(7,Math.ceil(.37*s)),c=t,l=new u(0),f=n%2===0?-1:1;if(c.isNegative()){if(c.isInteger())return u.NAN;let y=n%2===0?1:-1;for(;c.lt(1);)l=l.add(new u(y).mul(r(n)).div(c.pow(n+1))),c=c.add(u.ONE)}for(;c.lt(a);)l=l.add(new u(f).mul(r(n)).div(c.pow(n+1))),c=c.add(u.ONE);let m=Math.ceil(Math.PI*c.toNumber())+10,p=Te(i,m),d=n%2===0?-1:1;l=l.add(new u(d).mul(r(n-1)).div(c.pow(n))),l=l.add(new u(d).mul(r(n)).div(c.pow(n+1).mul(2)));let h=c.pow(n+2),g=c.mul(c),N=new u(10).pow(-(s+o)),I=Math.min(m,p.length);for(let y=0;y<I;y++){let T=2*(y+1),[w,P]=p[y],fe=1n;for(let H=0;H<T;H++)fe*=BigInt(n+H);let W=1n;for(let H=2;H<=T;H++)W*=BigInt(H);let Y=new u((BigInt(d)*w*fe).toString()).div(new u((P*W).toString()).mul(h));if(y>0&&Y.abs().lt(N))break;l=l.add(Y),h=h.mul(g)}return l}function en(i,e,t){return ne(i,e).mul(ne(i,t)).div(ne(i,e.add(t)))}function Ai(i,e){if(!e.isFinite())return u.NAN;if(e.eq(1))return new u(1/0);let t=u.PI;if(e.isZero())return u.HALF.neg();if(e.isInteger()&&e.isPositive()){let c=e.toNumber();if(c%2===0&&c>=2){let l=c/2,f=Te(i,l),[m,p]=f[l-1],d=new u(He(m).toString()).div(new u(p.toString())),h=t.mul(2),g=u.ONE;for(let N=2;N<=c;N++)g=g.mul(N);return d.mul(h.pow(c)).div(g.mul(2))}}if(e.isNegative())return new u(2).pow(e).mul(t.pow(e.sub(1))).mul(t.mul(e).div(2).sin()).mul(ne(i,u.ONE.sub(e))).mul(Ai(i,u.ONE.sub(e)));let n=Math.max(22,Math.ceil(i.precision*1.3)),r=kr(i,n),s=r[n],o=new u(0);for(let c=0;c<=n;c++){let l=c%2===0?1:-1;o=o.add(new u(l).mul(r[c].sub(s)).div(new u(c+1).pow(e)))}let a=u.ONE.sub(new u(2).pow(u.ONE.sub(e)));return o.div(s.mul(a)).neg()}function kr(i,e){let t=new Array(e+1);t[0]=u.ONE;let n=u.ONE;for(let r=1;r<=e;r++)n=n.mul(e-r+1).div(r),t[r]=t[r-1].add(n);return t}function tn(i,e){if(!e.isFinite())return e;if(e.isZero())return new u(0);let n=u.ONE.div(u.ONE.exp()).neg(),r=new u(10).pow(-i.precision),s=new u(10).pow(-15);if(e.sub(n).abs().lt(s))return u.NEGATIVE_ONE;if(e.lt(n))return u.NAN;let o,a=e.toNumber();if(a<0){let c=Math.sqrt(2*(Math.E*a+1));o=new u(-1+c-c*c/3+11/72*c*c*c)}else if(a<=1)o=new u(a*(1-a*(1-1.5*a)));else if(a<100){let c=Math.log(a);o=new u(c-Math.log(c))}else{let c=e.ln(),l=c.ln();o=c.sub(l).add(l.div(c))}for(let c=0;c<100;c++){let l=o.exp(),m=o.mul(l).sub(e),p=l.mul(o.add(1)),d=l.mul(o.add(2)),h=m.div(p.sub(m.mul(d).div(p.mul(2))));if(o=o.sub(h),h.abs().lt(r.mul(o.abs().add(1))))break}return o}var ze=.5772156649015329,ce=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function ni(i){if(!isFinite(i))return NaN;if(i<0)return Number.isInteger(i)?NaN:ni(1-i)-Math.PI/Math.tan(Math.PI*i);if(i===0)return NaN;let e=0,t=i;for(;t<7;)e-=1/t,t+=1;e+=Math.log(t)-1/(2*t);let n=t*t;for(let r=0;r<ce.length;r++)e-=ce[r]/(2*(r+1)*n),n*=t*t;return e}function ri(i){if(!isFinite(i))return NaN;if(i<0){if(Number.isInteger(i))return NaN;let r=Math.sin(Math.PI*i);return Math.PI*Math.PI/(r*r)-ri(1-i)}if(i===0)return NaN;let e=0,t=i;for(;t<7;)e+=1/(t*t),t+=1;e+=1/t+1/(2*t*t);let n=t*t*t;for(let r=0;r<ce.length;r++)e+=ce[r]/n,n*=t*t;return e}function Oi(i,e){if(!Number.isInteger(i)||i<0)return NaN;if(i===0)return ni(e);if(i===1)return ri(e);if(!isFinite(e)||e===0)return NaN;if(e<0){if(Number.isInteger(e))return NaN;let a=0,c=e,l=i%2===0?1:-1;for(;c<1;)a+=l*ae(i)/Math.pow(c,i+1),c+=1;return a+Oi(i,c)}let t=0,n=e,r=i%2===0?-1:1;for(;n<7;)t+=r*ae(i)/Math.pow(n,i+1),n+=1;let s=i%2===0?-1:1;t+=s*ae(i-1)/Math.pow(n,i),t+=s*ae(i)/(2*Math.pow(n,i+1));let o=Math.pow(n,i+2);for(let a=0;a<Math.min(ce.length,6);a++){let c=2*(a+1),l=1;for(let f=0;f<c;f++)l*=i+f;t+=s*ce[a]*l/(ae(c)*o),o*=n*n}return t}function ae(i){if(i<=1)return 1;let e=1;for(let t=2;t<=i;t++)e*=t;return e}function nn(i,e){return i>100||e>100||i+e>100?Math.exp(ue(i)+ue(e)-ue(i+e)):C(i)*C(e)/C(i+e)}function Vi(i){if(!isFinite(i))return NaN;if(i===1)return 1/0;if(i===0)return-.5;if(i===2)return Math.PI*Math.PI/6;if(i===4)return Math.PI**4/90;if(i===6)return Math.PI**6/945;if(i===8)return Math.PI**8/9450;if(i<0)return Math.pow(2,i)*Math.pow(Math.PI,i-1)*Math.sin(Math.PI*i/2)*C(1-i)*Vi(1-i);let e=22,t=Br(e),n=t[e],r=0;for(let s=0;s<=e;s++)r+=(s%2===0?1:-1)*(t[s]-n)/Math.pow(s+1,i);return-1/(n*(1-Math.pow(2,1-i)))*r}function Br(i){let e=new Array(i+1);e[0]=1;for(let t=1;t<=i;t++)e[t]=e[t-1]+wr(i,t);return e}function wr(i,e){e>i-e&&(e=i-e);let t=1;for(let n=0;n<e;n++)t=t*(i-n)/(n+1);return t}function rn(i){if(!isFinite(i))return i;if(i===0)return 0;let e=1/Math.E;if(i<-e)return NaN;if(Math.abs(i+e)<1e-15)return-1;let t;if(i<0){let n=Math.sqrt(2*(Math.E*i+1));t=-1+n-n*n/3+11/72*n*n*n}else if(i<=1)t=i*(1-i*(1-1.5*i));else if(i<100){let n=Math.log(i);t=n-Math.log(n)}else{let n=Math.log(i),r=Math.log(n);t=n-r+r/n}for(let n=0;n<30;n++){let r=Math.exp(t),o=t*r-i,a=r*(t+1),c=r*(t+2),l=o/(a-o*c/(2*a));if(t-=l,Math.abs(l)<1e-15*(1+Math.abs(t)))break}return t}function X(i,e){return!isFinite(e)||!Number.isInteger(i)?NaN:e===0?i===0?1:0:i<0?(i=-i,i%2===0?X(i,e):-X(i,e)):e<0?i%2===0?X(i,-e):-X(i,-e):e>25+i*i/2?xr(i,e):e<5+i?Sr(i,e):Pr(i,e)}function Sr(i,e){let t=e/2,n=-(e*e)/4,r=1;for(let o=1;o<=i;o++)r/=o;let s=r;for(let o=1;o<=60&&(r*=n/(o*(i+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,i)}function sn(i,e){let t=4*i*i,n=1,r=0,s=1,o=8*e;for(let a=1;a<=20;a++){s*=t-(2*a-1)*(2*a-1);let c=ae(a)*Math.pow(o,a),l=s/c;if(a%2===1?r+=(a%4===1?1:-1)*l:n+=(a%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[n,r]}function xr(i,e){let t=e-(i/2+.25)*Math.PI,[n,r]=sn(i,e);return Math.sqrt(2/(Math.PI*e))*(n*Math.cos(t)-r*Math.sin(t))}function Pr(i,e){let t=Math.max(i+20,Math.ceil(e)+30),n=0,r=1,s=new Array(t+1);s[t]=r;for(let c=t;c>=1;c--){let l=2*c/e*r-n;n=r,r=l,s[c-1]=r}let o=s[0];for(let c=2;c<=t;c+=2)o+=2*s[c];let a=1/o;return s[i]*a}function Ke(i,e){if(!isFinite(e)||!Number.isInteger(i))return NaN;if(e<=0)return NaN;if(i<0)return i=-i,i%2===0?Ke(i,e):-Ke(i,e);if(e>12+i*i/4)return Rr(i,e);let t=Dr(e);if(i===0)return t;let n=Fr(e);if(i===1)return n;let r=t,s=n;for(let o=1;o<i;o++){let a=2*o/e*s-r;r=s,s=a}return s}function Dr(i){let e=i/2,t=e*e,n=X(0,i),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*(n*(Math.log(e)+ze)+r)}function Fr(i){let e=i/2,t=e*e,n=X(1,i),r=0,s=1,o=1;for(let a=0;a<=60;a++){a>0&&(o*=a,s*=t);let c=o*(a+1),l=0;for(let g=1;g<=a;g++)l+=1/g;let f=l+1/(a+1),m=-ze+l,p=-ze+f,h=(a%2===0?1:-1)*(m+p)*s/(o*c);if(r+=h,a>3&&Math.abs(h)<1e-16*Math.abs(r))break}return-2/(Math.PI*i)+2/Math.PI*Math.log(e)*n-e/Math.PI*r}function Rr(i,e){let t=e-(i/2+.25)*Math.PI,[n,r]=sn(i,e);return Math.sqrt(2/(Math.PI*e))*(n*Math.sin(t)+r*Math.cos(t))}function re(i,e){return!isFinite(e)||!Number.isInteger(i)?NaN:e===0?i===0?1:0:(i<0&&(i=-i),e<0?i%2===0?re(i,-e):-re(i,-e):e>40?Or(i,e):Ar(i,e))}function Ar(i,e){let t=e/2,n=e*e/4,r=1;for(let o=1;o<=i;o++)r/=o;let s=r;for(let o=1;o<=80&&(r*=n/(o*(i+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,i)}function Or(i,e){let t=4*i*i,n=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(n*=o/(s*8*e),r+=n,Math.abs(n)<1e-15)break}return Math.exp(e)/Math.sqrt(2*Math.PI*e)*r}function on(i,e){if(!isFinite(e)||!Number.isInteger(i))return NaN;if(e<=0)return NaN;if(i<0&&(i=-i),e>40)return _r(i,e);let t=an(e);if(i===0)return t;let n=Vr(e);if(i===1)return n;let r=t,s=n;for(let o=1;o<i;o++){let a=2*o/e*s+r;r=s,s=a}return s}function an(i){let e=i/2,t=e*e,n=re(0,i),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(e)+ze)*n+r}function Vr(i){let e=re(0,i),t=re(1,i),n=an(i);return(1/i-t*n)/e}function _r(i,e){let t=4*i*i,n=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(n*=o/(s*8*e),r+=n,Math.abs(n)<1e-15)break}return Math.sqrt(Math.PI/(2*e))*Math.exp(-e)*r}function un(i){if(!isFinite(i))return NaN;if(i>5){let a=.6666666666666666*Math.pow(i,1.5);return Zr(i,a)}if(i<-5){let a=-i,c=2/3*Math.pow(a,1.5);return Lr(a,c)}let e=1/(Math.pow(3,2/3)*C(2/3)),t=1/(Math.pow(3,1/3)*C(1/3)),n=1,r=i,s=1,o=i;for(let a=1;a<=80;a++){let c=3*a;if(s*=i*i*i/((c-1)*c),o*=i*i*i/(c*(c+1)),n+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(n)+Math.abs(r)))break}return e*n-t*r}function Zr(i,e){let t=Math.pow(i,.25),n=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(e,o),n+=(o%2===0?1:-1)*r;return Math.exp(-e)/(2*Math.sqrt(Math.PI)*t)*n}function Lr(i,e){let t=Math.pow(i,.25);return Math.sin(e+Math.PI/4)/(Math.sqrt(Math.PI)*t)}function cn(i){if(!isFinite(i))return NaN;if(i>5){let a=.6666666666666666*Math.pow(i,1.5);return Cr(i,a)}if(i<-5){let a=-i,c=2/3*Math.pow(a,1.5);return qr(a,c)}let e=1/(Math.pow(3,2/3)*C(2/3)),t=1/(Math.pow(3,1/3)*C(1/3)),n=1,r=i,s=1,o=i;for(let a=1;a<=80;a++){let c=3*a;if(s*=i*i*i/((c-1)*c),o*=i*i*i/(c*(c+1)),n+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(n)+Math.abs(r)))break}return Math.sqrt(3)*(e*n+t*r)}function Cr(i,e){let t=Math.pow(i,.25),n=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(e,o),n+=r;return Math.exp(e)/(Math.sqrt(Math.PI)*t)*n}function qr(i,e){let t=Math.pow(i,.25);return Math.cos(e+Math.PI/4)/(Math.sqrt(Math.PI)*t)}var Yr=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],Ur=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Gr=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Jr=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],ln=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],fn=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],mn=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],dn=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function V(i,e){let t=e[0];for(let n=1;n<e.length;n++)t=t*i+e[n];return t}function hn(i){if(!isFinite(i))return i!==i?NaN:i>0?.5:-.5;let e=i<0?-1:1;if(i=Math.abs(i),i<1.6){let t=i*i,n=t*t;return e*i*t*V(n,Yr)/V(n,Ur)}if(i<36974){let t=i*i,n=Math.PI*t,r=1/(n*n),s=1-r*V(r,ln)/V(r,fn),o=1/n*V(r,mn)/V(r,dn),a=Math.PI/2*t,c=Math.cos(a),l=Math.sin(a);return e*(.5-(s*c+o*l)/(Math.PI*i))}return e*.5}function pn(i){if(!isFinite(i))return i!==i?NaN:i>0?.5:-.5;let e=i<0?-1:1;if(i=Math.abs(i),i<1.6){let t=i*i,n=t*t;return e*i*V(n,Gr)/V(n,Jr)}if(i<36974){let t=i*i,n=Math.PI*t,r=1/(n*n),s=1-r*V(r,ln)/V(r,fn),o=1/n*V(r,mn)/V(r,dn),a=Math.PI/2*t,c=Math.cos(a),l=Math.sin(a);return e*(.5+(s*l-o*c)/(Math.PI*i))}return e*.5}function gn(i){return i===0?1:Math.sin(i)/i}var x=Math.cosh||function(i){return Math.abs(i)<1e-9?1-i:(Math.exp(i)+Math.exp(-i))*.5},_=Math.sinh||function(i){return Math.abs(i)<1e-9?i:(Math.exp(i)-Math.exp(-i))*.5},jr=function(i){var e=Math.PI/4;if(-e>i||i>e)return Math.cos(i)-1;var t=i*i;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},$r=function(i,e){var t=Math.abs(i),n=Math.abs(e);return t<3e3&&n<3e3?Math.sqrt(t*t+n*n):(t<n?(t=n,n=i/e):n=e/i,t*Math.sqrt(1+n*n))},le=function(){throw SyntaxError("Invalid Param")};function _i(i,e){var t=Math.abs(i),n=Math.abs(e);return i===0?Math.log(n):e===0?Math.log(t):t<3e3&&n<3e3?Math.log(i*i+e*e)*.5:(i=i/2,e=e/2,.5*Math.log(i*i+e*e)+Math.LN2)}var Xr=function(i,e){var t={re:0,im:0};if(i==null)t.re=t.im=0;else if(e!==void 0)t.re=i,t.im=e;else switch(typeof i){case"object":if("im"in i&&"re"in i)t.re=i.re,t.im=i.im;else if("abs"in i&&"arg"in i){if(!Number.isFinite(i.abs)&&Number.isFinite(i.arg))return M.INFINITY;t.re=i.abs*Math.cos(i.arg),t.im=i.abs*Math.sin(i.arg)}else if("r"in i&&"phi"in i){if(!Number.isFinite(i.r)&&Number.isFinite(i.phi))return M.INFINITY;t.re=i.r*Math.cos(i.phi),t.im=i.r*Math.sin(i.phi)}else i.length===2?(t.re=i[0],t.im=i[1]):le();break;case"string":t.im=t.re=0;var n=i.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,s=0;n===null&&le();for(var o=0;o<n.length;o++){var a=n[o];a===" "||a===" "||a===`
7
+ `||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&le(),n[o+1]!==" "&&!isNaN(Number(n[o+1]))?(t.im+=parseFloat((s%2?"-":"")+n[o+1]),o++):t.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&le(),n[o+1]==="i"||n[o+1]==="I"?(t.im+=parseFloat((s%2?"-":"")+a),o++):t.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&le();break;case"number":t.im=0,t.re=i;break;default:le()}return isNaN(t.re)||isNaN(t.im),t},M=class i{constructor(e,t){this.re=0,this.im=0;var n=Xr(e,t);this.re=n.re,this.im=n.im}sign(){var e=this.abs();return new i(this.re/e,this.im/e)}add(e,t){var n=new i(e,t);return this.isInfinite()&&n.isInfinite()?i.NAN:this.isInfinite()||n.isInfinite()?i.INFINITY:new i(this.re+n.re,this.im+n.im)}sub(e,t){var n=new i(e,t);return this.isInfinite()&&n.isInfinite()?i.NAN:this.isInfinite()||n.isInfinite()?i.INFINITY:new i(this.re-n.re,this.im-n.im)}mul(e,t){var n=new i(e,t);return this.isInfinite()&&n.isZero()||this.isZero()&&n.isInfinite()?i.NAN:this.isInfinite()||n.isInfinite()?i.INFINITY:n.im===0&&this.im===0?new i(this.re*n.re,0):new i(this.re*n.re-this.im*n.im,this.re*n.im+this.im*n.re)}div(e,t){var n=new i(e,t);if(this.isZero()&&n.isZero()||this.isInfinite()&&n.isInfinite())return i.NAN;if(this.isInfinite()||n.isZero())return i.INFINITY;if(this.isZero()||n.isInfinite())return i.ZERO;e=this.re,t=this.im;var r=n.re,s=n.im,o,a;return s===0?new i(e/r,t/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new i((e*a+t)/o,(t*a-e)/o)):(a=s/r,o=s*a+r,new i((e+t*a)/o,(t-e*a)/o))}pow(e,t){var n=new i(e,t);if(e=this.re,t=this.im,n.isZero())return i.ONE;if(n.im===0){if(t===0&&e>0)return new i(Math.pow(e,n.re),0);if(e===0)switch((n.re%4+4)%4){case 0:return new i(Math.pow(t,n.re),0);case 1:return new i(0,Math.pow(t,n.re));case 2:return new i(-Math.pow(t,n.re),0);case 3:return new i(0,-Math.pow(t,n.re))}}if(e===0&&t===0&&n.re>0&&n.im>=0)return i.ZERO;var r=Math.atan2(t,e),s=_i(e,t);return e=Math.exp(n.re*s-n.im*r),t=n.im*s+n.re*r,new i(e*Math.cos(t),e*Math.sin(t))}sqrt(){var e=this.re,t=this.im,n=this.abs(),r,s;if(e>=0){if(t===0)return new i(Math.sqrt(e),0);r=.5*Math.sqrt(2*(n+e))}else r=Math.abs(t)/Math.sqrt(2*(n-e));return e<=0?s=.5*Math.sqrt(2*(n-e)):s=Math.abs(t)/Math.sqrt(2*(n+e)),new i(r,t<0?-s:s)}exp(){var e=Math.exp(this.re);return this.im,new i(e*Math.cos(this.im),e*Math.sin(this.im))}expm1(){var e=this.re,t=this.im;return new i(Math.expm1(e)*Math.cos(t)+jr(t),Math.exp(e)*Math.sin(t))}log(){var e=this.re,t=this.im;return t===0&&e>0,new i(_i(e,t),Math.atan2(t,e))}abs(){return $r(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var e=this.re,t=this.im;return new i(Math.sin(e)*x(t),Math.cos(e)*_(t))}cos(){var e=this.re,t=this.im;return new i(Math.cos(e)*x(t),-Math.sin(e)*_(t))}tan(){var e=2*this.re,t=2*this.im,n=Math.cos(e)+x(t);return new i(Math.sin(e)/n,_(t)/n)}cot(){var e=2*this.re,t=2*this.im,n=Math.cos(e)-x(t);return new i(-Math.sin(e)/n,_(t)/n)}sec(){var e=this.re,t=this.im,n=.5*x(2*t)+.5*Math.cos(2*e);return new i(Math.cos(e)*x(t)/n,Math.sin(e)*_(t)/n)}csc(){var e=this.re,t=this.im,n=.5*x(2*t)-.5*Math.cos(2*e);return new i(Math.sin(e)*x(t)/n,-Math.cos(e)*_(t)/n)}asin(){var e=this.re,t=this.im,n=new i(t*t-e*e+1,-2*e*t).sqrt(),r=new i(n.re-t,n.im+e).log();return new i(r.im,-r.re)}acos(){var e=this.re,t=this.im,n=new i(t*t-e*e+1,-2*e*t).sqrt(),r=new i(n.re-t,n.im+e).log();return new i(Math.PI/2-r.im,r.re)}atan(){var e=this.re,t=this.im;if(e===0){if(t===1)return new i(0,1/0);if(t===-1)return new i(0,-1/0)}var n=e*e+(1-t)*(1-t),r=new i((1-t*t-e*e)/n,-2*e/n).log();return new i(-.5*r.im,.5*r.re)}acot(){var e=this.re,t=this.im;if(t===0)return new i(Math.atan2(1,e),0);var n=e*e+t*t;return n!==0?new i(e/n,-t/n).atan():new i(e!==0?e/0:0,t!==0?-t/0:0).atan()}asec(){var e=this.re,t=this.im;if(e===0&&t===0)return new i(0,1/0);var n=e*e+t*t;return n!==0?new i(e/n,-t/n).acos():new i(e!==0?e/0:0,t!==0?-t/0:0).acos()}acsc(){var e=this.re,t=this.im;if(e===0&&t===0)return new i(Math.PI/2,1/0);var n=e*e+t*t;return n!==0?new i(e/n,-t/n).asin():new i(e!==0?e/0:0,t!==0?-t/0:0).asin()}sinh(){var e=this.re,t=this.im;return new i(_(e)*Math.cos(t),x(e)*Math.sin(t))}cosh(){var e=this.re,t=this.im;return new i(x(e)*Math.cos(t),_(e)*Math.sin(t))}tanh(){var e=2*this.re,t=2*this.im,n=x(e)+Math.cos(t);return new i(_(e)/n,Math.sin(t)/n)}coth(){var e=2*this.re,t=2*this.im,n=x(e)-Math.cos(t);return new i(_(e)/n,-Math.sin(t)/n)}csch(){var e=this.re,t=this.im,n=Math.cos(2*t)-x(2*e);return new i(-2*_(e)*Math.cos(t)/n,2*x(e)*Math.sin(t)/n)}sech(){var e=this.re,t=this.im,n=Math.cos(2*t)+x(2*e);return new i(2*x(e)*Math.cos(t)/n,-2*_(e)*Math.sin(t)/n)}asinh(){var e=this.im;this.im=-this.re,this.re=e;var t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t}acosh(){var e=this.acos();if(e.im<=0){var t=e.re;e.re=-e.im,e.im=t}else{var t=e.im;e.im=-e.re,e.re=t}return e}atanh(){var e=this.re,t=this.im,n=e>1&&t===0,r=1-e,s=1+e,o=r*r+t*t,a=o!==0?new i((s*r-t*t)/o,(t*r+s*t)/o):new i(e!==-1?e/0:0,t!==0?t/0:0),c=a.re;return a.re=_i(a.re,a.im)/2,a.im=Math.atan2(a.im,c)/2,n&&(a.im=-a.im),a}acoth(){var e=this.re,t=this.im;if(e===0&&t===0)return new i(0,Math.PI/2);var n=e*e+t*t;return n!==0?new i(e/n,-t/n).atanh():new i(e!==0?e/0:0,t!==0?-t/0:0).atanh()}acsch(){var e=this.re,t=this.im;if(t===0)return new i(e!==0?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var n=e*e+t*t;return n!==0?new i(e/n,-t/n).asinh():new i(e!==0?e/0:0,t!==0?-t/0:0).asinh()}asech(){var e=this.re,t=this.im;if(this.isZero())return i.INFINITY;var n=e*e+t*t;return n!==0?new i(e/n,-t/n).acosh():new i(e!==0?e/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return i.INFINITY;if(this.isInfinite())return i.ZERO;var e=this.re,t=this.im,n=e*e+t*t;return new i(e/n,-t/n)}conjugate(){return new i(this.re,-this.im)}neg(){return new i(-this.re,-this.im)}ceil(e){return e=Math.pow(10,e||0),new i(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)}floor(e){return e=Math.pow(10,e||0),new i(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)}round(e){return e=Math.pow(10,e||0),new i(Math.round(this.re*e)/e,Math.round(this.im*e)/e)}equals(e,t){var n=new i(e,t);return Math.abs(n.re-this.re)<=i.EPSILON&&Math.abs(n.im-this.im)<=i.EPSILON}clone(){return new i(this.re,this.im)}toString(){var e=this.re,t=this.im,n="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)<i.EPSILON&&(e=0),Math.abs(t)<i.EPSILON&&(t=0),t===0?n+e:(e!==0?(n+=e,n+=" ",t<0?(t=-t,n+="-"):n+="+",n+=" "):t<0&&(t=-t,n+="-"),t!==1&&(n+=t),n+"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())}};M.ZERO=new M(0,0);M.ONE=new M(1,0);M.I=new M(0,1);M.PI=new M(Math.PI,0);M.E=new M(Math.E,0);M.INFINITY=new M(1/0,1/0);M.NAN=new M(NaN,NaN);M.EPSILON=1e-15;var si=7,oi=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23],Wr=Math.sqrt(2*Math.PI),Hr=.5*Math.log(2*Math.PI);function Zi(i){if(i.re<.5){let r=i.mul(Math.PI).sin();return new M(Math.PI,0).div(r.mul(Zi(new M(1,0).sub(i))))}let e=i.sub(1),t=new M(oi[0],0);for(let r=1;r<si+2;r++)t=t.add(new M(oi[r],0).div(e.add(r)));let n=e.add(si+.5);return new M(Wr,0).mul(n.pow(e.add(.5))).mul(n.neg().exp()).mul(t)}function Li(i){if(i.re<.5){let r=i.mul(Math.PI).sin();return new M(Math.PI,0).div(r).log().sub(Li(new M(1,0).sub(i)))}let e=i.sub(1),t=new M(oi[0],0);for(let r=1;r<si+2;r++)t=t.add(new M(oi[r],0).div(e.add(r)));let n=e.add(si+.5);return new M(Hr,0).add(e.add(.5).mul(n.log())).sub(n).add(t.log())}var zr="0.59.0";return vn(Kr);})();
8
+ /*! Bundled license information:
9
+
10
+ complex-esm/dist/src/complex.js:
11
+ (**
12
+ * @license Complex.js v2.1.1 12/05/2020
13
+ *
14
+ * Copyright (c) 2020, Robert Eisele (robert@xarg.org)
15
+ * Dual licensed under the MIT or GPL Version 2 licenses.
16
+ **)
17
+ */
7
18
  Object.assign(exports, Numerics); Object.defineProperty(exports, '__esModule', { value: true });}));