@mojir/lits 2.1.40 → 2.2.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.
- package/README.md +25 -24
- package/dist/cli/cli.js +21071 -20546
- package/dist/cli/reference/api.d.ts +32 -18
- package/dist/cli/reference/index.d.ts +129 -209
- package/dist/cli/src/builtin/bindingNode.d.ts +1 -1
- package/dist/cli/src/builtin/core/vector.d.ts +2 -0
- package/dist/cli/src/builtin/interface.d.ts +23 -23
- package/dist/cli/src/builtin/modules/bitwise/index.d.ts +2 -0
- package/dist/cli/src/builtin/modules/collection/index.d.ts +2 -0
- package/dist/cli/src/builtin/modules/functional/index.d.ts +2 -0
- package/dist/cli/src/builtin/modules/math/index.d.ts +2 -0
- package/dist/cli/src/builtin/modules/sequence/index.d.ts +2 -0
- package/dist/cli/src/builtin/modules/string/index.d.ts +2 -0
- package/dist/cli/src/parser/Parser.d.ts +1 -1
- package/dist/cli/src/parser/types.d.ts +1 -1
- package/dist/cli/src/tokenizer/token.d.ts +2 -2
- package/dist/full.esm.js +1 -1
- package/dist/full.esm.js.map +1 -1
- package/dist/full.js +1 -1
- package/dist/full.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +1 -1
- package/dist/lits.iife.js.map +1 -1
- package/dist/modules/assert.esm.js +1 -1
- package/dist/modules/assert.esm.js.map +1 -1
- package/dist/modules/assert.js +1 -1
- package/dist/modules/assert.js.map +1 -1
- package/dist/modules/bitwise.esm.js +2 -0
- package/dist/modules/bitwise.esm.js.map +1 -0
- package/dist/modules/bitwise.js +2 -0
- package/dist/modules/bitwise.js.map +1 -0
- package/dist/modules/collection.esm.js +2 -0
- package/dist/modules/collection.esm.js.map +1 -0
- package/dist/modules/collection.js +2 -0
- package/dist/modules/collection.js.map +1 -0
- package/dist/modules/functional.esm.js +2 -0
- package/dist/modules/functional.esm.js.map +1 -0
- package/dist/modules/functional.js +2 -0
- package/dist/modules/functional.js.map +1 -0
- package/dist/modules/grid.esm.js +1 -1
- package/dist/modules/grid.esm.js.map +1 -1
- package/dist/modules/grid.js +1 -1
- package/dist/modules/grid.js.map +1 -1
- package/dist/modules/linear-algebra.esm.js +2 -0
- package/dist/modules/linear-algebra.esm.js.map +1 -0
- package/dist/modules/linear-algebra.js +2 -0
- package/dist/modules/linear-algebra.js.map +1 -0
- package/dist/modules/math.esm.js +2 -0
- package/dist/modules/math.esm.js.map +1 -0
- package/dist/modules/math.js +2 -0
- package/dist/modules/math.js.map +1 -0
- package/dist/modules/matrix.esm.js +1 -1
- package/dist/modules/matrix.esm.js.map +1 -1
- package/dist/modules/matrix.js +1 -1
- package/dist/modules/matrix.js.map +1 -1
- package/dist/modules/number-theory.esm.js +2 -0
- package/dist/modules/number-theory.esm.js.map +1 -0
- package/dist/modules/number-theory.js +2 -0
- package/dist/modules/number-theory.js.map +1 -0
- package/dist/modules/random.esm.js +1 -1
- package/dist/modules/random.esm.js.map +1 -1
- package/dist/modules/random.js +1 -1
- package/dist/modules/random.js.map +1 -1
- package/dist/modules/reference/api.d.ts +32 -18
- package/dist/modules/reference/index.d.ts +129 -209
- package/dist/modules/sequence.esm.js +2 -0
- package/dist/modules/sequence.esm.js.map +1 -0
- package/dist/modules/sequence.js +2 -0
- package/dist/modules/sequence.js.map +1 -0
- package/dist/modules/src/builtin/bindingNode.d.ts +1 -1
- package/dist/modules/src/builtin/core/vector.d.ts +2 -0
- package/dist/modules/src/builtin/interface.d.ts +23 -23
- package/dist/modules/src/builtin/modules/bitwise/index.d.ts +2 -0
- package/dist/modules/src/builtin/modules/collection/index.d.ts +2 -0
- package/dist/modules/src/builtin/modules/functional/index.d.ts +2 -0
- package/dist/modules/src/builtin/modules/math/index.d.ts +2 -0
- package/dist/modules/src/builtin/modules/sequence/index.d.ts +2 -0
- package/dist/modules/src/builtin/modules/string/index.d.ts +2 -0
- package/dist/modules/src/full.d.ts +6 -16
- package/dist/modules/src/modules/bitwise.d.ts +2 -0
- package/dist/modules/src/modules/collection.d.ts +2 -0
- package/dist/modules/src/modules/functional.d.ts +2 -0
- package/dist/modules/src/modules/linear-algebra.d.ts +2 -0
- package/dist/modules/src/modules/math.d.ts +2 -0
- package/dist/modules/src/modules/number-theory.d.ts +2 -0
- package/dist/modules/src/modules/sequence.d.ts +2 -0
- package/dist/modules/src/modules/string.d.ts +2 -0
- package/dist/modules/src/parser/Parser.d.ts +1 -1
- package/dist/modules/src/parser/types.d.ts +1 -1
- package/dist/modules/src/tokenizer/token.d.ts +2 -2
- package/dist/modules/string.esm.js +2 -0
- package/dist/modules/string.esm.js.map +1 -0
- package/dist/modules/string.js +2 -0
- package/dist/modules/string.js.map +1 -0
- package/dist/modules/vector.esm.js +1 -1
- package/dist/modules/vector.esm.js.map +1 -1
- package/dist/modules/vector.js +1 -1
- package/dist/modules/vector.js.map +1 -1
- package/dist/reference/api.d.ts +32 -18
- package/dist/reference/index.d.ts +129 -209
- package/dist/src/builtin/bindingNode.d.ts +1 -1
- package/dist/src/builtin/core/vector.d.ts +2 -0
- package/dist/src/builtin/interface.d.ts +23 -23
- package/dist/src/builtin/modules/bitwise/index.d.ts +2 -0
- package/dist/src/builtin/modules/collection/index.d.ts +2 -0
- package/dist/src/builtin/modules/functional/index.d.ts +2 -0
- package/dist/src/builtin/modules/math/index.d.ts +2 -0
- package/dist/src/builtin/modules/sequence/index.d.ts +2 -0
- package/dist/src/builtin/modules/string/index.d.ts +2 -0
- package/dist/src/full.d.ts +6 -16
- package/dist/src/modules/bitwise.d.ts +2 -0
- package/dist/src/modules/collection.d.ts +2 -0
- package/dist/src/modules/functional.d.ts +2 -0
- package/dist/src/modules/linear-algebra.d.ts +2 -0
- package/dist/src/modules/math.d.ts +2 -0
- package/dist/src/modules/number-theory.d.ts +2 -0
- package/dist/src/modules/sequence.d.ts +2 -0
- package/dist/src/modules/string.d.ts +2 -0
- package/dist/src/parser/Parser.d.ts +1 -1
- package/dist/src/parser/types.d.ts +1 -1
- package/dist/src/tokenizer/token.d.ts +2 -2
- package/dist/testFramework.esm.js +1 -1
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +1 -1
- package/dist/testFramework.js.map +1 -1
- package/package.json +39 -9
- package/dist/cli/src/builtin/modules/vector/reductionFunctions/max.d.ts +0 -2
- package/dist/cli/src/builtin/modules/vector/reductionFunctions/min.d.ts +0 -2
- package/dist/modules/linearAlgebra.esm.js +0 -2
- package/dist/modules/linearAlgebra.esm.js.map +0 -1
- package/dist/modules/linearAlgebra.js +0 -2
- package/dist/modules/linearAlgebra.js.map +0 -1
- package/dist/modules/numberTheory.esm.js +0 -2
- package/dist/modules/numberTheory.esm.js.map +0 -1
- package/dist/modules/numberTheory.js +0 -2
- package/dist/modules/numberTheory.js.map +0 -1
- package/dist/modules/src/builtin/modules/vector/reductionFunctions/max.d.ts +0 -2
- package/dist/modules/src/builtin/modules/vector/reductionFunctions/min.d.ts +0 -2
- package/dist/modules/src/modules/linearAlgebra.d.ts +0 -2
- package/dist/modules/src/modules/numberTheory.d.ts +0 -2
- package/dist/src/builtin/modules/vector/reductionFunctions/max.d.ts +0 -2
- package/dist/src/builtin/modules/vector/reductionFunctions/min.d.ts +0 -2
- package/dist/src/modules/linearAlgebra.d.ts +0 -2
- package/dist/src/modules/numberTheory.d.ts +0 -2
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/docs.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/calcFractionalRanks.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/collinear.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/corrleation.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/covariance.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/dot.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/gaussJordanElimination.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/getUnit.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/isZeroVector.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/kendallTau.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/length.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/pearsonCorr.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/scale.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/solve.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/subtract.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{linearAlgebra → linear-algebra}/index.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/binomialCefficient.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/combinations.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/derangements.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/divisors.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/docs.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/factorial.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/index.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/partitions.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/permutations.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/powerSet.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/primeFactors.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/abundant.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/arithmetic.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/bell.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/bernoulli.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/catalan.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/collatz.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/composite.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/deficient.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/factorial.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/fibonacci.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/geometric.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/golomb.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/happy.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/index.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/juggler.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/lookAndSay.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/lucas.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/lucky.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/mersenne.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/padovan.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/partition.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/pell.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/perfect.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectCube.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectPower.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectSquare.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/poligonal.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/prime.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/recaman.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/sylvester.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/thueMorse.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{numberTheory → number-theory}/sequences/tribonacci.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/docs.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/calcFractionalRanks.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/collinear.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/corrleation.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/covariance.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/dot.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/gaussJordanElimination.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/getUnit.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/isZeroVector.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/kendallTau.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/length.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/pearsonCorr.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/scale.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/solve.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/subtract.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{linearAlgebra → linear-algebra}/index.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/binomialCefficient.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/combinations.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/derangements.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/divisors.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/docs.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/factorial.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/index.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/partitions.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/permutations.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/powerSet.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/primeFactors.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/abundant.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/arithmetic.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/bell.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/bernoulli.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/catalan.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/collatz.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/composite.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/deficient.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/factorial.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/fibonacci.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/geometric.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/golomb.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/happy.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/index.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/juggler.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/lookAndSay.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/lucas.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/lucky.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/mersenne.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/padovan.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/partition.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/pell.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/perfect.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectCube.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectPower.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectSquare.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/poligonal.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/prime.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/recaman.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/sylvester.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/thueMorse.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{numberTheory → number-theory}/sequences/tribonacci.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/docs.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/calcFractionalRanks.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/collinear.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/corrleation.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/covariance.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/dot.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/gaussJordanElimination.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/getUnit.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/isZeroVector.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/kendallTau.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/length.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/pearsonCorr.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/scale.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/solve.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/helpers/subtract.d.ts +0 -0
- /package/dist/src/builtin/modules/{linearAlgebra → linear-algebra}/index.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/binomialCefficient.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/combinations.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/derangements.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/divisors.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/docs.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/factorial.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/index.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/partitions.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/permutations.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/powerSet.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/primeFactors.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/abundant.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/arithmetic.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/bell.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/bernoulli.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/catalan.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/collatz.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/composite.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/deficient.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/factorial.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/fibonacci.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/geometric.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/golomb.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/happy.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/index.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/juggler.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/lookAndSay.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/lucas.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/lucky.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/mersenne.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/padovan.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/partition.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/pell.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/perfect.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectCube.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectPower.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/perfectSquare.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/poligonal.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/prime.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/recaman.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/sylvester.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/thueMorse.d.ts +0 -0
- /package/dist/src/builtin/modules/{numberTheory → number-theory}/sequences/tribonacci.d.ts +0 -0
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){if(!e.position||!e.code)return"";const t=e.position.column-1,n=e.code.length-t-1;return`${" ".repeat(Math.max(t,0))}^${" ".repeat(Math.max(n,0))}`}class t extends Error{params;constructor(e){super(`recur, params: ${e}`),Object.setPrototypeOf(this,t.prototype),this.name="RecurSignal",this.params=e}}class n extends Error{sourceCodeInfo;shortMessage;constructor(t,r){const i=t instanceof Error?t.message:`${t}`;super(function(t,n){if(!n)return t;const r=`${n.position.line}:${n.position.column}`;return`${t}${n.filePath?`\n${n.filePath}:${r}`:`\nLocation ${r}`}\n${n.code}\n${e(n)}`}(i,r)),this.shortMessage=i,this.sourceCodeInfo=r,Object.setPrototypeOf(this,n.prototype),this.name="LitsError"}getCodeMarker(){return this.sourceCodeInfo&&e(this.sourceCodeInfo)}}class r extends n{userMessage;constructor(e,t){super(e,t),this.userMessage=e,Object.setPrototypeOf(this,r.prototype),this.name="UserDefinedError"}}class i extends n{symbol;constructor(e,t){super(`Undefined symbol '${e}'.`,t),this.symbol=e,Object.setPrototypeOf(this,i.prototype),this.name="UndefinedSymbolError"}}const s={Number:1,String:2,NormalExpression:3,SpecialExpression:4,UserDefinedSymbol:5,NormalBuiltinSymbol:6,SpecialBuiltinSymbol:7,ReservedSymbol:8,Binding:9,Spread:10},o=new Set(Object.values(s));function a(e){return Object.keys(s).find(t=>s[t]===e)}const u=new Set(["UserDefined","Partial","Comp","Constantly","Juxt","Complement","EveryPred","SomePred","Fnull","Builtin","SpecialBuiltin","NativeJsFunction","Module"]);const c="^^fn^^",l="^^re^^";function f(e){return null!==e&&"object"==typeof e&&(c in e&&"functionType"in e&&function(e){return"string"==typeof e&&u.has(e)}(e.functionType))}function h(e){return!(!Array.isArray(e)||e.length<2)&&function(e){return"number"==typeof e&&o.has(e)}(e[0])}function p(e){return f(e)?`<function ${e.name||"λ"}>`:h(e)?`${a(e[0])}-node`:null===e?"null":"object"==typeof e&&e instanceof RegExp?`${e}`:"object"==typeof e&&e instanceof Error?e.toString():JSON.stringify(e)}function d(e,t){return e?.sourceCodeInfo??t}function y(e,t,r){return new n(`Expected ${e}, got ${p(t)}.`,d(t,r))}function g(e,t){return m(e,t),e}function m(e,t){if(!function(e){return void 0!==e}(e))throw new n("Unexpected undefined",d(e,t))}function v(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function b(e){return null!==e&&"object"==typeof e&&!!e[c]}function w(e,t){if(!b(e))throw y("LitsFunction",e,t)}function x(e){return b(e)&&"UserDefined"===e.functionType}function S(e,t){if(!x(e))throw y("NativeJsFunction",e,t)}function k(e){return b(e)&&"NativeJsFunction"===e.functionType}function E(e,t){if(!k(e))throw y("NativeJsFunction",e,t)}function N(e,t={}){return"number"==typeof e&&(!Number.isNaN(e)&&(!(t.integer&&!Number.isInteger(e))&&(!(t.finite&&!Number.isFinite(e))&&((!t.zero||0===e)&&((!t.nonZero||0!==e)&&(!(t.positive&&e<=0)&&(!(t.negative&&e>=0)&&(!(t.nonPositive&&e>0)&&(!(t.nonNegative&&e<0)&&(!("number"==typeof t.gt&&e<=t.gt)&&(!("number"==typeof t.gte&&e<t.gte)&&(!("number"==typeof t.lt&&e>=t.lt)&&!("number"==typeof t.lte&&e>t.lte)))))))))))))}function A(e,t,r={}){if(!N(e,r))throw new n(`Expected ${function(e){if(e.zero)return"zero";const t=function(e){return e.positive?"positive":e.negative?"negative":e.nonNegative?"non negative":e.nonPositive?"non positive":e.nonZero?"non zero":""}(e),n=e.integer?"integer":"number",r=e.finite?"finite":"",i=function(e){return"number"!=typeof e.gt&&"number"!=typeof e.gte||"number"!=typeof e.lt&&"number"!=typeof e.lte?"number"==typeof e.gt||"number"==typeof e.gte?"number"==typeof e.gt?`n > ${e.gt}`:`n >= ${e.gte}`:"number"==typeof e.lt||"number"==typeof e.lte?"number"==typeof e.lt?`n < ${e.lt}`:`n <= ${e.lte}`:"":`${"number"==typeof e.gt?`${e.gt} < n `:`${e.gte} <= n `}${"number"==typeof e.lt?`< ${e.lt}`:`<= ${e.lte}`}`}(e);return[t,r,n,i].filter(e=>!!e).join(" ")}(r)}, got ${p(e)}.`,d(e,t))}function $(e,t,n={}){return A(e,t,n),e}function I(e){return void 0!==e}function j(e,t){return C(e,t),e}function C(e,t){if(!I(e))throw y("not undefined",e,t)}function O(e){return Array.isArray(e)||"string"==typeof e}function F(e,t){return M(e,t),e}function M(e,t){if(!O(e))throw y("string or array",e,t)}function U(e){return!(null===e||"object"!=typeof e||Array.isArray(e)||e instanceof RegExp||b(e)||D(e))}function T(e,t){if(!U(e))throw y("object",e,t)}function B(e){return O(e)||U(e)}function P(e,t){return R(e,t),e}function R(e,t){if(!B(e))throw y("string, array or object",e,t)}function D(e){return null!==e&&"object"==typeof e&&!!e[l]}function L(e,t){if(!function(e){return D(e)||"string"==typeof e}(e))throw y("string or RegularExpression",e,t)}function _(e,t){return V(e,t),e}function V(e,t){if(!function(e){return"number"==typeof e||!!B(e)||!!b(e)}(e))throw y("FunctionLike",e,t)}function z(e,t){const{min:n}=e;return!("number"==typeof n&&t<n)}function J(e){return"number"==typeof e||B(e)?q(1):e.arity}function W(e,t,r){const{min:i,max:s}=e;if("number"==typeof i&&t<i)throw new n(`Wrong number of arguments, expected at least ${i}, got ${p(t)}.`,r);if("number"==typeof s&&t>s)throw new n(`Wrong number of arguments, expected at most ${s}, got ${p(t)}.`,r)}function q(e){return{min:e,max:e}}const Y={"<<":{evaluate:([e,t],n)=>(A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0}),e<<t),arity:q(2)},">>":{evaluate:([e,t],n)=>(A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0}),e>>t),arity:q(2)},">>>":{evaluate:([e,t],n)=>(A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0}),e>>>t),arity:q(2)},"bit-not":{evaluate:([e],t)=>(A(e,t,{integer:!0}),~e),arity:q(1)},"&":{evaluate:([e,...t],n)=>(A(e,n,{integer:!0}),t.reduce((e,t)=>(A(t,n,{integer:!0}),e&t),e)),arity:{min:2}},"bit-and-not":{evaluate:([e,...t],n)=>(A(e,n,{integer:!0}),t.reduce((e,t)=>(A(t,n,{integer:!0}),e&~t),e)),arity:{min:2}},"|":{evaluate:([e,...t],n)=>(A(e,n,{integer:!0}),t.reduce((e,t)=>(A(t,n,{integer:!0}),e|t),e)),arity:{min:2}},xor:{evaluate:([e,...t],n)=>(A(e,n,{integer:!0}),t.reduce((e,t)=>(A(t,n,{integer:!0}),e^t),e)),arity:{min:2}},"bit-flip":{evaluate:([e,t],n)=>{A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0});return e^1<<t},arity:q(2)},"bit-set":{evaluate:([e,t],n)=>{A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0});return e|1<<t},arity:q(2)},"bit-clear":{evaluate:([e,t],n)=>{A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0});return e&~(1<<t)},arity:q(2)},"bit-test":{evaluate:([e,t],n)=>{A(e,n,{integer:!0}),A(t,n,{integer:!0,nonNegative:!0});return!!(e&1<<t)},arity:q(2)}};function G(e,t={}){return"string"==typeof e&&((!t.nonEmpty||0!==e.length)&&(!t.char||1===e.length))}function K(e,t,n={}){if(!G(e,n))throw y(""+(n.nonEmpty?"non empty string":n.char?"character":"string"),e,t)}function X(e,t,n={}){return K(e,t,n),e}function Z(e){return"string"==typeof e||"number"==typeof e}function H(e,t){return Q(e,t),e}function Q(e,t){if(!Z(e))throw y("string or number",e,t)}function ee(e,t){return!!B(e)&&("string"==typeof e||Array.isArray(e)?!!N(t,{integer:!0})&&(t>=0&&t<e.length):!!Object.getOwnPropertyDescriptor(e,t))}function te(e,t,r){if(Q(e,r),Q(t,r),"string"==typeof e&&"string"==typeof t)return e<t?-1:e>t?1:0;if("number"==typeof e&&"number"==typeof t)return Math.sign(e-t);throw new n(`Cannot compare values of different types: ${typeof e} and ${typeof t}`,r)}function ne(e,t,n){if(e===t)return!0;if("number"==typeof e&&"number"==typeof t)return function(e,t,n=ce){if(e===t)return!0;const r=Math.abs(e-t);if(0===e||0===t||r<n)return r<n;const i=Math.abs(e),s=Math.abs(t);return r/(i+s)<n}(e,t);if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(!ne(j(e[r],n),j(t[r],n),n))return!1;return!0}if(D(e)&&D(t))return e.s===t.s&&e.f===t.f;if(v(e)&&v(t)){const r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let i=0;i<r.length;i+=1){const s=X(r[i],n);if(!ne(e[s],t[s],n))return!1}return!0}return!1}function re(e){return Math.max(0,Math.ceil(e))}function ie(e){return e??null}function se(e){return U(e)?Object.entries(e).reduce((e,t)=>{const[n,r]=t;return e[n]=se(r),e},{}):Array.isArray(e)?e.map(e=>se(e)):e}function oe(e){return se(e)}function ae(...e){const t=new Set;for(const n of e)n.forEach(e=>t.add(e));return t}function ue(e,t){t.forEach(t=>e.add(t))}const ce=1e-10;function le(e,t=0){const n=e.split("\n");for(;n[0]?.match(/^\s*$/);)n.shift();for(;n[n.length-1]?.match(/^\s*$/);)n.pop();const r=n.reduce((e,t)=>{if(t.match(/^\s*$/))return e;const n=t.match(/^\s*/)[0].length;return Math.min(e,n)},1/0);return n.map(e=>" ".repeat(t)+e.slice(r)).join("\n").trimEnd()}function fe(e,t){if(!Array.isArray(e))throw y("array",e,t)}function he(e,t){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}(e))throw y("array of strings",e,t)}function pe(e,t){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e&&1===e.length)}(e))throw y("array of strings",e,t)}function de(e,t,n){const r=oe(e);return{coll:r,innerCollMeta:t.slice(0,t.length-1).reduce((e,t)=>{const r=e.coll;let i;return Array.isArray(r)?(A(t,n),i=P(r[t],n)):(T(r,n),K(t,n),ee(e.coll,t)||(r[t]={}),i=P(r[t],n)),{coll:i,parent:r}},{coll:r,parent:{}})}}function ye(e,t){if(U(e)){if("string"==typeof t&&ee(e,t))return ie(e[t])}else if(N(t,{nonNegative:!0,integer:!0})&&t>=0&&t<e.length)return ie(e[t])}function ge(e,t,n,r,i,s,o){if(U(e)){K(t,o);const a={...e};return a[t]=s(n,[a[t],...r],i,o),a}{A(t,o);const a=re(t);if(A(a,o,{lte:e.length}),Array.isArray(e)){const t=e.map((e,t)=>a===t?s(n,[e,...r],i,o):e);return a===e.length&&(t[a]=s(n,[void 0,...r],i,o)),t}{const t=e.split("").map((e,t)=>a===t?X(s(n,[e,...r],i,o),o,{char:!0}):e);return a===e.length&&(t[a]=X(s(n,[void 0,...r],i,o),o,{char:!0})),t.join("")}}}function me(e,t,n,r){if(R(e,r),Q(t,r),Array.isArray(e)||"string"==typeof e){if(A(t,r,{integer:!0}),A(t,r,{gte:0}),A(t,r,{lte:e.length}),"string"==typeof e)return K(n,r,{char:!0}),`${e.slice(0,t)}${n}${e.slice(t+1)}`;const i=[...e];return i[t]=n,i}K(t,r);const i={...e};return i[t]=n,i}const ve={filter:{evaluate:([e,t],n,r,{executeFunction:i})=>{if(R(e,n),V(t,n),Array.isArray(e)){return e.filter(e=>i(t,[e],r,n))}return G(e)?e.split("").filter(e=>i(t,[e],r,n)).join(""):Object.entries(e).filter(([,e])=>i(t,[e],r,n)).reduce((e,[t,n])=>(e[t]=n,e),{})},arity:q(2)},filteri:{evaluate:([e,t],n,r,{executeFunction:i})=>{if(R(e,n),V(t,n),Array.isArray(e)){return e.filter((e,s)=>i(t,[e,s],r,n))}return G(e)?e.split("").filter((e,s)=>i(t,[e,s],r,n)).join(""):Object.entries(e).filter(([e,s])=>i(t,[s,e],r,n)).reduce((e,[t,n])=>(e[t]=n,e),{})},arity:q(2)},map:{evaluate:(e,t,r,{executeFunction:i})=>{const s=_(e.at(-1),t);if(U(e[0]))return function({colls:e,contextStack:t,executeFunction:r,fn:i,sourceCodeInfo:s}){T(e[0],s);const o=Object.keys(e[0]),a={};return e.forEach(e=>{T(e,s);const t=Object.keys(e);if(t.length!==o.length)throw new n(`All objects must have the same keys. Expected: ${o.join(", ")}. Found: ${t.join(", ")}`,s);if(!t.every(e=>o.includes(e)))throw new n(`All objects must have the same keys. Expected: ${o.join(", ")}. Found: ${t.join(", ")}`,s);Object.entries(e).forEach(([e,t])=>{a[e]||(a[e]=[]),a[e].push(t)})}),o.reduce((e,n)=>(e[n]=r(i,a[n],t,s),e),{})}({colls:e.slice(0,-1),fn:s,sourceCodeInfo:t,contextStack:r,executeFunction:i});const o=e.slice(0,-1);M(o[0],t);const a="string"==typeof o[0];let u=o[0].length;o.slice(1).forEach(e=>{a?K(e,t):fe(e,t),u=Math.min(u,e.length)});const c=[];for(let e=0;e<u;e++)c.push(o.map(t=>t[e]));const l=c.map(e=>i(s,e,r,t));return a?(l.forEach(e=>K(e,t)),l.join("")):l},arity:{min:2}},mapi:{evaluate:([e,t],n,r,{executeFunction:i})=>(R(e,n),V(t,n),Array.isArray(e)?e.map((e,s)=>i(t,[e,s],r,n)):G(e)?e.split("").map((e,s)=>i(t,[e,s],r,n)).join(""):Object.entries(e).reduce((e,[s,o])=>(e[s]=i(t,[o,s],r,n),e),{})),arity:q(2)},reduce:{evaluate:([e,t,n],r,i,{executeFunction:s})=>(R(e,r),V(t,r),C(n,r),"string"==typeof e?(K(n,r),0===e.length?n:e.split("").reduce((e,n)=>s(t,[e,n],i,r),n)):Array.isArray(e)?0===e.length?n:e.reduce((e,n)=>s(t,[e,n],i,r),n):0===Object.keys(e).length?n:Object.entries(e).reduce((e,[,n])=>s(t,[e,n],i,r),n)),arity:q(3)},reducei:{evaluate:([e,t,n],r,i,{executeFunction:s})=>(R(e,r),V(t,r),C(n,r),"string"==typeof e?(K(n,r),0===e.length?n:e.split("").reduce((e,n,o)=>s(t,[e,n,o],i,r),n)):Array.isArray(e)?0===e.length?n:e.reduce((e,n,o)=>s(t,[e,n,o],i,r),n):0===Object.keys(e).length?n:Object.entries(e).reduce((e,[n,o])=>s(t,[e,o,n],i,r),n)),arity:q(3)},"reduce-right":{evaluate:([e,t,n],r,i,{executeFunction:s})=>(R(e,r),V(t,r),C(n,r),"string"==typeof e?0===e.length?n:e.split("").reduceRight((e,n)=>s(t,[e,n],i,r),n):Array.isArray(e)?0===e.length?n:e.reduceRight((e,n)=>s(t,[e,n],i,r),n):0===Object.keys(e).length?n:Object.entries(e).reduceRight((e,[,n])=>s(t,[e,n],i,r),n)),arity:q(3)},"reducei-right":{evaluate:([e,t,n],r,i,{executeFunction:s})=>(R(e,r),V(t,r),C(n,r),"string"==typeof e?0===e.length?n:e.split("").reduceRight((e,n,o)=>s(t,[e,n,o],i,r),n):Array.isArray(e)?0===e.length?n:e.reduceRight((e,n,o)=>s(t,[e,n,o],i,r),n):0===Object.keys(e).length?n:Object.entries(e).reduceRight((e,[n,o])=>s(t,[e,o,n],i,r),n)),arity:q(3)},reductions:{evaluate:([e,t,n],r,i,{executeFunction:s})=>{if(R(e,r),V(t,r),C(n,r),C(n,r),"string"==typeof e){if(K(n,r),0===e.length)return[n];const o=[n];return e.split("").reduce((e,n)=>{const a=s(t,[e,n],i,r);return o.push(a),a},n),o}if(Array.isArray(e)){if(0===e.length)return[n];const o=[n];return e.reduce((e,n)=>{const a=s(t,[e,n],i,r);return o.push(a),a},n),o}{if(0===Object.keys(e).length)return[n];const o=[n];return Object.entries(e).reduce((e,[,n])=>{const a=s(t,[e,n],i,r);return o.push(a),a},n),o}},arity:q(3)},reductionsi:{evaluate:([e,t,n],r,i,{executeFunction:s})=>{if(R(e,r),V(t,r),C(n,r),C(n,r),"string"==typeof e){if(K(n,r),0===e.length)return[n];const o=[n];return e.split("").reduce((e,n,a)=>{const u=s(t,[e,n,a],i,r);return o.push(u),u},n),o}if(Array.isArray(e)){if(0===e.length)return[n];const o=[n];return e.reduce((e,n,a)=>{const u=s(t,[e,n,a],i,r);return o.push(u),u},n),o}{if(0===Object.keys(e).length)return[n];const o=[n];return Object.entries(e).reduce((e,[n,a])=>{const u=s(t,[e,a,n],i,r);return o.push(u),u},n),o}},arity:q(3)},get:{evaluate:(e,t)=>{const[n,r]=e,i=ie(e[2]);if(Q(r,t),null===n)return i;R(n,t);const s=ye(n,r);return void 0===s?i:s},arity:{min:2,max:3}},"get-in":{evaluate:(e,t)=>{let n=ie(e[0]);const r=e[1]??[],i=ie(e[2]);fe(r,t);for(const e of r){if(Q(e,t),!B(n))return i;{const t=ye(n,e);if(void 0===t)return i;n=t}}return n},arity:{min:2,max:3}},count:{evaluate:([e],t)=>null===e?0:"string"==typeof e?e.length:(R(e,t),Array.isArray(e)?e.length:Object.keys(e).length),arity:q(1)},"contains?":{evaluate:([e,t],n)=>null!==e&&(R(e,n),G(e)?(K(t,n),e.includes(t)):O(e)?(C(t,n),!!e.find(e=>ne(j(e),t,n))):(K(t,n),t in e)),arity:q(2)},assoc:{evaluate:([e,t,n],r)=>(R(e,r),Q(t,r),C(n,r),me(e,t,n,r)),arity:q(3)},"assoc-in":{evaluate:([e,t,n],r)=>{if(R(e,r),fe(t,r),C(n,r),1===t.length)return Q(t[0],r),me(e,t[0],n,r);const{coll:i,innerCollMeta:s}=de(e,t,r),o=H(t[t.length-1],r),a=H(t[t.length-2],r);return Array.isArray(s.parent)?(A(a,r),s.parent[a]=me(s.coll,o,n,r)):(K(a,r),s.parent[a]=me(s.coll,o,n,r)),i},arity:q(3)},update:{evaluate:([e,t,n,...r],i,s,{executeFunction:o})=>(R(e,i),Q(t,i),V(n,i),ge(e,t,n,r,s,o,i)),arity:{min:3}},"update-in":{evaluate:([e,t,n,...r],i,s,{executeFunction:o})=>{if(R(e,i),fe(t,i),V(n,i),1===t.length)return Q(t[0],i),ge(e,t[0],n,r,s,o,i);const{coll:a,innerCollMeta:u}=de(e,t,i),c=H(t[t.length-1],i),l=H(t[t.length-2],i);return Array.isArray(u.parent)?(A(l,i),u.parent[l]=ge(u.coll,c,n,r,s,o,i)):(K(l,i),u.parent[l]=ge(u.coll,c,n,r,s,o,i)),a},arity:{min:3}},"++":{evaluate:(e,t)=>(N(e[0])||R(e[0],t),Array.isArray(e[0])?e.reduce((e,n)=>(fe(n,t),e.concat(n)),[]):Z(e[0])?e.reduce((e,n)=>(Q(n,t),`${e}${n}`),""):e.reduce((e,n)=>(T(n,t),Object.assign(e,n)),{})),arity:{min:1}},"not-empty":{evaluate:([e],t)=>null===e?null:(R(e,t),"string"==typeof e||Array.isArray(e)?e.length>0?e:null:Object.keys(e).length>0?e:null),arity:q(1)},"every?":{evaluate:([e,t],n,r,{executeFunction:i})=>(R(e,n),V(t,n),Array.isArray(e)?e.every(e=>i(t,[e],r,n)):"string"==typeof e?e.split("").every(e=>i(t,[e],r,n)):Object.entries(e).every(e=>i(t,[e],r,n))),arity:q(2)},"any?":{evaluate:([e,t],n,r,{executeFunction:i})=>(V(t,n),R(e,n),Array.isArray(e)?e.some(e=>i(t,[e],r,n)):"string"==typeof e?e.split("").some(e=>i(t,[e],r,n)):Object.entries(e).some(e=>i(t,[e],r,n))),arity:q(2)},"not-any?":{evaluate:([e,t],n,r,{executeFunction:i})=>(V(t,n),R(e,n),Array.isArray(e)?!e.some(e=>i(t,[e],r,n)):"string"==typeof e?!e.split("").some(e=>i(t,[e],r,n)):!Object.entries(e).some(e=>i(t,[e],r,n))),arity:q(2)},"not-every?":{evaluate:([e,t],n,r,{executeFunction:i})=>(V(t,n),R(e,n),Array.isArray(e)?!e.every(e=>i(t,[e],r,n)):"string"==typeof e?!e.split("").every(e=>i(t,[e],r,n)):!Object.entries(e).every(e=>i(t,[e],r,n))),arity:q(2)}},be={range:{evaluate:(e,t)=>{const[n,r,i]=e;let s,o,a;A(n,t,{finite:!0}),1===e.length?(s=0,o=n,a=o>=0?1:-1):2===e.length?(A(r,t,{finite:!0}),s=n,o=r,a=o>=s?1:-1):(A(r,t,{finite:!0}),A(i,t,{finite:!0}),s=n,o=r,a=i,A(a,t,o>s?{positive:!0}:o<s?{negative:!0}:{nonZero:!0}));const u=[];for(let e=s;a<0?e>o:e<o;e+=a)u.push(e);return u},arity:{min:1,max:3}},repeat:{evaluate:([e,t],n)=>{A(t,n,{integer:!0,nonNegative:!0});const r=[];for(let n=0;n<t;n+=1)r.push(e);return r},arity:q(2)},flatten:{evaluate:([e,t],n)=>{fe(e,n);const r=void 0===t||t===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:$(t,n,{integer:!0,nonNegative:!0});return e.flat(r)},arity:{min:1,max:2}},mapcat:{evaluate:([e,t],n,r,{executeFunction:i})=>(fe(e,n),V(t,n),e.map(e=>i(t,[e],r,n)).flat(1)),arity:q(2)},"moving-fn":{evaluate:([e,t,n],r,i,{executeFunction:s})=>{fe(e,r),A(t,r,{integer:!0,lte:e.length}),V(n,r);const o=[];for(let a=0;a<=e.length-t;a++){const u=s(n,[e.slice(a,a+t)],i,r);o.push(u)}return o},arity:q(3)},"running-fn":{evaluate:([e,t],n,r,{executeFunction:i})=>{fe(e,n),V(t,n);const s=[];for(let o=0;o<e.length;o+=1){const a=e.slice(0,o+1);s.push(i(t,[a],r,n))}return s},arity:q(2)}},we={nth:{evaluate:(e,t)=>{const[n,r]=e,i=ie(e[2]);if(A(r,t,{integer:!0}),null===n)return i;if(M(n,t),r>=0&&r<n.length){return ie(n[r])}return i},arity:{min:2,max:3}},first:{evaluate:([e],t)=>{if(null===e)return null;M(e,t);return ie(e[0])},arity:q(1)},last:{evaluate:([e],t)=>{if(null===e)return null;M(e,t);return ie(e.at(-1))},arity:q(1)},pop:{evaluate:([e],t)=>(M(e,t),"string"==typeof e?e.substring(0,e.length-1):e.slice(0,e.length-1)),arity:q(1)},position:{evaluate:([e,t],n,r,{executeFunction:i})=>{if(V(t,n),null===e)return null;if(M(e,n),"string"==typeof e){const s=e.split("").findIndex(e=>i(t,[e],r,n));return-1!==s?s:null}{const s=e.findIndex(e=>i(t,[e],r,n));return-1!==s?s:null}},arity:q(2)},"index-of":{evaluate:([e,t],n)=>{if(C(t,n),null===e)return null;if(M(e,n),"string"==typeof e){K(t,n);const r=e.indexOf(t);return-1!==r?r:null}{const r=e.findIndex(e=>ne(j(e,n),t),n);return-1!==r?r:null}},arity:q(2)},"last-index-of":{evaluate:([e,t],n)=>{if(C(t,n),null===e)return null;if(M(e,n),"string"==typeof e){K(t,n);const r=e.lastIndexOf(t);return-1!==r?r:null}{const r=e.findLastIndex(e=>ne(j(e,n),t),n);return-1!==r?r:null}},arity:q(2)},push:{evaluate:([e,...t],n)=>(M(e,n),"string"==typeof e?(pe(t,n),[e,...t].join("")):[...e,...t]),arity:{min:2}},rest:{evaluate:([e],t)=>(M(e,t),Array.isArray(e)?e.length<=1?[]:e.slice(1):e.substring(1)),arity:q(1)},next:{evaluate:([e],t)=>(M(e,t),Array.isArray(e)?e.length<=1?null:e.slice(1):e.length<=1?null:e.substring(1)),arity:q(1)},reverse:{evaluate:([e],t)=>null===e?null:(M(e,t),Array.isArray(e)?[...e].reverse():e.split("").reverse().join("")),arity:q(1)},second:{evaluate:([e],t)=>null===e?null:(M(e,t),ie(e[1])),arity:q(1)},shift:{evaluate:([e],t)=>{if(M(e,t),"string"==typeof e)return e.substring(1);const n=[...e];return n.shift(),n},arity:q(1)},slice:{evaluate:(e,t)=>{const[n,r,i]=e;return M(n,t),A(r,t,{integer:!0}),2===e.length?(Array.isArray(n),n.slice(r)):(A(i,t,{integer:!0}),Array.isArray(n),n.slice(r,i))},arity:{min:2,max:3}},splice:{evaluate:(e,t)=>{const[n,r,i,...s]=e;M(n,t),A(r,t,{integer:!0}),A(i,t,{integer:!0,nonNegative:!0});const o=r<0?n.length+r:r;return Array.isArray(n)?[...n.slice(0,o),...s,...n.slice(o+i)]:(s.forEach(e=>K(e,t)),`${n.substring(0,o)}${s.join("")}${n.substring(o+i)}`)},arity:{min:3}},some:{evaluate:([e,t],n,r,{executeFunction:i})=>(V(t,n),null===e?null:(M(e,n),0===e.length?null:"string"==typeof e?e.split("").find(e=>i(t,[e],r,n))??null:ie(e.find(e=>i(t,[e],r,n))))),arity:q(2)},sort:{evaluate:(e,t,n,{executeFunction:r})=>{const[i]=e,s=1===e.length,o=s?null:e[1];if(M(i,t),"string"==typeof i){const e=i.split("");return s?e.sort((e,n)=>te(e,n,t)):(V(o,t),e.sort((e,i)=>{const s=r(o,[e,i],n,t);return A(s,t,{finite:!0}),s})),e.join("")}const a=[...i];return s?a.sort((e,n)=>(Q(e,t),Q(n,t),te(e,n,t))):a.sort((e,i)=>{V(o,t);const s=r(o,[e,i],n,t);return A(s,t,{finite:!0}),s}),a},arity:{min:1,max:2}},"sort-by":{evaluate:(e,t,n,{executeFunction:r})=>{const[i,s]=e,o=2===e.length;M(i,t),V(s,t);const a=o?null:e[2];if("string"==typeof i){const e=i.split("");return o?e.sort((e,i)=>{const o=r(s,[e],n,t);Q(o,t);const a=r(s,[i],n,t);return Q(a,t),te(o,a,t)}):(V(a,t),e.sort((e,i)=>{const o=r(s,[e],n,t),u=r(s,[i],n,t),c=r(a,[o,u],n,t);return A(c,t,{finite:!0}),c})),e.join("")}const u=[...i];return o?u.sort((e,i)=>{const o=r(s,[e],n,t);Q(o,t);const a=r(s,[i],n,t);return Q(a,t),te(o,a,t)}):(V(a,t),u.sort((e,i)=>{const o=r(s,[e],n,t),u=r(s,[i],n,t),c=r(a,[o,u],n,t);return A(c,t,{finite:!0}),c})),u},arity:{min:2,max:3}},take:{evaluate:([e,t],n)=>{A(t,n),M(e,n);const r=Math.max(Math.ceil(t),0);return e.slice(0,r)},arity:q(2)},"take-last":{evaluate:([e,t],n)=>{M(e,n),A(t,n);const r=Math.max(Math.ceil(t),0),i=e.length-r;return e.slice(i)},arity:q(2)},"take-while":{evaluate:([e,t],n,r,{executeFunction:i})=>{M(e,n),V(t,n);const s=[];for(const o of e){if(!i(t,[o],r,n))break;s.push(o)}return"string"==typeof e?s.join(""):s},arity:q(2)},drop:{evaluate:([e,t],n)=>{A(t,n);const r=Math.max(Math.ceil(t),0);return M(e,n),e.slice(r)},arity:q(2)},"drop-last":{evaluate:([e,t],n)=>{M(e,n),A(t,n);const r=Math.max(Math.ceil(t),0),i=e.length-r;return e.slice(0,i)},arity:q(2)},"drop-while":{evaluate:([e,t],n,r,{executeFunction:i})=>{if(M(e,n),V(t,n),Array.isArray(e)){const s=e.findIndex(e=>!i(t,[e],r,n));return e.slice(s)}const s=e.split(""),o=s.findIndex(e=>!i(t,[e],r,n));return s.slice(o).join("")},arity:q(2)},unshift:{evaluate:([e,...t],n)=>{if(M(e,n),"string"==typeof e)return pe(t,n),[...t,e].join("");const r=[...e];return r.unshift(...t),r},arity:{min:2}},distinct:{evaluate:([e],t)=>{if(M(e,t),Array.isArray(e)){const n=[];for(const r of e)C(r,t),n.some(e=>ne(e,r,t))||n.push(r);return n}return Array.from(new Set(e.split(""))).join("")},arity:q(1)},remove:{evaluate:([e,t],n,r,{executeFunction:i})=>(V(t,n),M(e,n),Array.isArray(e)?e.filter(e=>!i(t,[e],r,n)):e.split("").filter(e=>!i(t,[e],r,n)).join("")),arity:q(2)},"remove-at":{evaluate:([e,t],n)=>{A(t,n,{integer:!0}),M(e,n);const r=t<0?e.length+t:t;return r<0||r>=e.length?e:Array.isArray(e)?e.filter((e,t)=>t!==r):`${e.substring(0,r)}${e.substring(r+1)}`},arity:q(2)},"split-at":{evaluate:([e,t],n)=>{A(t,n,{integer:!0}),M(e,n);const r=t<0?e.length+t:t;return[e.slice(0,r),e.slice(r)]},arity:q(2)},"split-with":{evaluate:([e,t],n,r,{executeFunction:i})=>{V(t,n),M(e,n);const s=Array.isArray(e),o=(s?e:e.split("")).findIndex(e=>!i(t,[e],r,n));return-1===o?[e,s?[]:""]:[e.slice(0,o),e.slice(o)]},arity:q(2)},frequencies:{evaluate:([e],t)=>{M(e,t);return("string"==typeof e?e.split(""):e).reduce((e,n)=>(K(n,t),ee(e,n)?e[n]=e[n]+1:e[n]=1,e),{})},arity:q(1)},"group-by":{evaluate:([e,t],n,r,{executeFunction:i})=>{V(t,n),M(e,n);return(Array.isArray(e)?e:e.split("")).reduce((e,s)=>{const o=i(t,[s],r,n);return K(o,n),ee(e,o)||(e[o]=[]),e[o].push(s),e},{})},arity:q(2)},partition:{evaluate:(e,t)=>{const n=F(e[0],t),r=re($(e[1],t)),i=e.length>=3?re($(e[2],t)):r,s=4===e.length?null===e[3]?[]:function(e,t){return fe(e,t),e}(e[3],t):void 0;return xe(r,i,n,s,t)},arity:{min:2,max:4}},"partition-all":{evaluate:(e,t)=>{const n=F(e[0],t),r=re($(e[1],t));return xe(r,3===e.length?re($(e[2],t)):r,n,[],t)},arity:{min:2,max:3}},"partition-by":{evaluate:([e,t],n,r,{executeFunction:i})=>{V(t,n),M(e,n);const s="string"==typeof e;let o;const a=(s?e.split(""):e).reduce((e,s)=>{const a=i(t,[s],r,n);return a!==o&&(e.push([]),o=a),e[e.length-1].push(s),e},[]);return s?a.map(e=>e.join("")):a},arity:q(2)},"ends-with?":{evaluate:([e,t],n)=>(M(e,n),"string"==typeof e?(K(t,n),e.endsWith(t)):ne(j(e.at(-1),n),j(t,n),n)),arity:q(2)},"starts-with?":{evaluate:([e,t],n)=>(M(e,n),"string"==typeof e?(K(t,n),e.startsWith(t)):ne(j(e[0],n),j(t,n),n)),arity:q(2)},interleave:{evaluate:([...e],t)=>{const n="string"==typeof e[0],r=n?e.map(e=>(K(e,t),e.split(""))):e.map(e=>(fe(e,t),e)),i=Math.min(...r.map(e=>e.length)),s=[];for(let e=0;e<i;e+=1)for(const t of r)e<t.length&&s.push(t[e]);return n?s.join(""):s},arity:{min:1}},interpose:{evaluate:([e,t],n)=>{if(M(e,n),"string"==typeof e)return K(t,n),e.split("").join(t);if(0===e.length)return[];const r=[];for(let n=0;n<e.length-1;n+=1)r.push(e[n],t);return r.push(e[e.length-1]),r},arity:q(2)}};function xe(e,t,n,r,i){A(t,i,{positive:!0});const s="string"==typeof n,o=[];let a=0;e:for(;a<n.length;){const i=[];for(let s=a;s<a+e;s+=1)if(s>=n.length){const e=s-n.length;if(!r){a+=t;continue e}if(e>=r.length)break;i.push(r[e])}else i.push(n[s]);o.push(i),a+=t}return s?o.map(e=>e.join("")):o}const Se=new WeakSet,ke=new WeakSet,Ee=new WeakSet,Ne=new WeakSet;function Ae(e){return Array.isArray(e)?(Se.has(e)||($e(e),je(e)||Ie(e)),e):e}function $e(e){return!!Array.isArray(e)&&(!!ke.has(e)||!!e.every(e=>N(e))&&(Se.add(e),ke.add(e),!0))}function Ie(e){if(!Array.isArray(e))return!1;if(Ne.has(e))return!0;if(0===e.length)return!1;if(!Array.isArray(e[0]))return!1;const t=e[0].length;for(const n of e.slice(1)){if(!Array.isArray(n))return!1;if(n.length!==t)return!1}return Se.add(e),Ne.add(e),!0}function je(e){if(!Array.isArray(e))return!1;if(Ee.has(e))return!0;if(0===e.length)return!1;if(!Array.isArray(e[0]))return!1;if(0===e[0].length)return!1;const t=e[0].length;for(const n of e.slice(1)){if(!Array.isArray(n))return!1;if(n.length!==t)return!1;if(n.some(e=>!N(e)))return!1}return Se.add(e),Ne.add(e),Ee.add(e),!0}function Ce(e,t){let r=!1,i=!1;for(const s of e)if($e(s))r=!0;else if(je(s))i=!0;else if(!N(s))throw new n("Invalid parameter type: "+typeof s,t);if(i){if(r)throw new n("Cannot mix vector and matrix types",t);let i=null,s=null;for(const r of e)if(je(r))if(null===i)i=r.length,s=r[0].length;else if(r.length!==i||r[0].length!==s)throw new n("Matrix dimensions do not match",t);return["matrix",e.map(e=>je(e)?e:Array.from({length:i},()=>Array.from({length:s},()=>e)))]}if(r){let r=null;for(const i of e)if($e(i))if(null===r)r=i.length;else if(i.length!==r)throw new n("Vector lengths do not match",t);return["vector",e.map(e=>$e(e)?e:Array.from({length:r},()=>e))]}return["number",e]}function Oe(e){return(t,n)=>{const[r,i]=Ce(t,n);return"number"===r?e(i[0]):"vector"===r?i[0].map(t=>e(t)):i[0].map(t=>t.map(t=>e(t)))}}function Fe(e){return(t,n)=>{const[r,i]=Ce(t,n);return"number"===r?e(i[0],i[1]):"vector"===r?i[0].map((t,n)=>e(t,i[1][n])):i[0].map((t,n)=>t.map((t,r)=>e(t,i[1][n][r])))}}function Me(e,t){return(n,r)=>{if(0===n.length)return e;const[i,s]=Ce(n,r);if("number"===i)return s.reduce((e,n)=>t(e,n),e);if("vector"===i){const[e,...n]=s;return n.reduce((e,n)=>e.map((e,r)=>t(e,n[r])),e)}{const[e,...n]=s;return n.reduce((e,n)=>e.map((e,r)=>e.map((e,i)=>t(e,n[r][i]))),e)}}}const Ue={inc:{evaluate:Oe(e=>e+1),arity:q(1)},dec:{evaluate:Oe(e=>e-1),arity:q(1)},"+":{evaluate:Me(0,(e,t)=>e+t),arity:{}},"*":{evaluate:Me(1,(e,t)=>e*t),arity:{}},"/":{evaluate:(e,t)=>{if(0===e.length)return 1;const[n,r]=Ce(e,t);if("number"===n){const[e,...t]=r;return 0===t.length?1/e:t.reduce((e,t)=>e/t,e)}if("vector"===n){const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e/t[n]),e)}{const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e.map((e,r)=>e/t[n][r])),e)}},arity:{}},"-":{evaluate:(e,t)=>{if(0===e.length)return 0;const[n,r]=Ce(e,t);if("number"===n){const[e,...t]=r;return 0===t.length?-e:t.reduce((e,t)=>e-t,e)}if("vector"===n){const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e-t[n]),e)}{const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e.map((e,r)=>e-t[n][r])),e)}},arity:{}},quot:{evaluate:Fe((e,t)=>Math.trunc(e/t)),arity:q(2)},mod:{evaluate:Fe((e,t)=>e-t*Math.floor(e/t)),arity:q(2)},"%":{evaluate:Fe((e,t)=>e%t),arity:q(2)},sqrt:{evaluate:Oe(e=>Math.sqrt(e)),arity:q(1)},cbrt:{evaluate:Oe(e=>Math.cbrt(e)),arity:q(1)},"^":{evaluate:Fe((e,t)=>e**t),arity:q(2)},round:{evaluate:([e,t],n)=>{const[r,i]=Ce([e],n);if("number"===r){if(void 0===t||0===t)return Math.round(i[0]);{A(t,n,{integer:!0,positive:!0});const e=10**t;return Math.round(i[0]*e)/e}}if("vector"===r){const e=i[0];if(void 0===t||0===t)return e.map(e=>Math.round(e));{A(t,n,{integer:!0,positive:!0});const r=10**t;return e.map(e=>Math.round(e*r)/r)}}{const e=i[0];if(void 0===t||0===t)return e.map(e=>e.map(e=>Math.round(e)));{A(t,n,{integer:!0,positive:!0});const r=10**t;return e.map(e=>e.map(e=>Math.round(e*r)/r))}}},arity:{min:1,max:2}},trunc:{evaluate:Oe(e=>Math.trunc(e)),arity:q(1)},floor:{evaluate:Oe(e=>Math.floor(e)),arity:q(1)},ceil:{evaluate:Oe(e=>Math.ceil(e)),arity:q(1)},min:{evaluate:([e,...t],n)=>(A(e,n),0===t.length?e:t.reduce((e,t)=>(A(t,n),Math.min(e,t)),e)),arity:{min:1}},max:{evaluate:([e,...t],n)=>(A(e,n),0===t.length?e:t.reduce((e,t)=>(A(t,n),Math.max(e,t)),e)),arity:{min:1}},abs:{evaluate:Oe(e=>Math.abs(e)),arity:q(1)},sign:{evaluate:Oe(e=>Math.sign(e)),arity:q(1)},ln:{evaluate:Oe(e=>Math.log(e)),arity:q(1)},log2:{evaluate:Oe(e=>Math.log2(e)),arity:q(1)},log10:{evaluate:Oe(e=>Math.log10(e)),arity:q(1)},sin:{evaluate:Oe(e=>Math.sin(e)),arity:q(1)},asin:{evaluate:Oe(e=>Math.asin(e)),arity:q(1)},sinh:{evaluate:Oe(e=>Math.sinh(e)),arity:q(1)},asinh:{evaluate:Oe(e=>Math.asinh(e)),arity:q(1)},cos:{evaluate:Oe(e=>Math.cos(e)),arity:q(1)},acos:{evaluate:Oe(e=>Math.acos(e)),arity:q(1)},cosh:{evaluate:Oe(e=>Math.cosh(e)),arity:q(1)},acosh:{evaluate:Oe(e=>Math.acosh(e)),arity:q(1)},tan:{evaluate:Oe(e=>Math.tan(e)),arity:q(1)},atan:{evaluate:Oe(e=>Math.atan(e)),arity:q(1)},tanh:{evaluate:Oe(e=>Math.tanh(e)),arity:q(1)},atanh:{evaluate:Oe(e=>Math.atanh(e)),arity:q(1)},"to-rad":{evaluate:Oe(e=>e*Math.PI/180),arity:q(1)},"to-deg":{evaluate:Oe(e=>180*e/Math.PI),arity:q(1)}};function Te([e,...t],n){const r=j(e,n);for(const e of t)if(!ne(r,j(e,n),n))return!1;return!0}const Be={"==":{evaluate:(e,t)=>Te(e,t),arity:{min:1}},"≠":{evaluate:(e,t)=>!Te(e,t),arity:{min:1}},"identical?":{evaluate:e=>function([e,...t]){for(const n of t)if(n!==e)return!1;return!0}(e),arity:{min:1}},">":{evaluate:([e,...t],n)=>{let r=H(e);for(const e of t){if(te(r,H(e),n)<=0)return!1;r=H(e)}return!0},arity:{min:1}},"<":{evaluate:([e,...t],n)=>{let r=H(e);for(const e of t){if(te(r,H(e),n)>=0)return!1;r=H(e)}return!0},arity:{min:1}},">=":{evaluate:([e,...t],n)=>{let r=H(e);for(const e of t){if(te(r,H(e),n)<0)return!1;r=H(e)}return!0},arity:{min:1}},"<=":{evaluate:([e,...t],n)=>{let r=H(e);for(const e of t){if(te(r,H(e),n)>0)return!1;r=H(e)}return!0},arity:{min:1}},"!":{evaluate:([e])=>!e,arity:q(1)},"epoch->iso-date":{evaluate:([e],t)=>(A(e,t),new Date(e).toISOString()),arity:q(1)},"iso-date->epoch":{evaluate:([e],t)=>{K(e,t);const n=new Date(e).valueOf();return A(n,t,{finite:!0}),n},arity:q(1)},"write!":{evaluate:(e,t)=>(console.log(...e),e.length>0?j(e[e.length-1],t):null),arity:{}},boolean:{evaluate:([e])=>!!e,arity:q(1)},compare:{evaluate:([e,t],n)=>(Q(e,n),Q(t,n),te(e,t,n)),arity:q(2)},"json-parse":{evaluate:([e],t)=>(K(e,t),JSON.parse(e)),arity:q(1)},"json-stringify":{evaluate:([e,t],n)=>(C(e,n),void 0===t?JSON.stringify(e):(A(t,n),JSON.stringify(e,null,t))),arity:{min:1,max:2}},import:{evaluate:([e],t,r)=>{K(e,t);const i=e.indexOf(".");if(-1!==i){const s=e.substring(0,i),o=e.substring(i+1),a=r.getModule(s);if(!a)throw new n(`Unknown module: '${s}'`,t);const u=a.functions[o];if(!u)throw new n(`Function '${o}' not found in module '${s}'`,t);return{[c]:!0,sourceCodeInfo:t,functionType:"Module",moduleName:s,functionName:o,arity:u.arity}}const s=e,o=r.getModule(s);if(!o)throw new n(`Unknown module: '${s}'`,t);const a={};for(const[e,n]of Object.entries(o.functions))a[e]={[c]:!0,sourceCodeInfo:t,functionType:"Module",moduleName:s,functionName:e,arity:n.arity};return a},arity:q(1)}},Pe={keys:{evaluate:([e],t)=>(T(e,t),Object.keys(e)),arity:q(1)},vals:{evaluate:([e],t)=>(T(e,t),Object.values(e)),arity:q(1)},entries:{evaluate:([e],t)=>(T(e,t),Object.entries(e)),arity:q(1)},find:{evaluate:([e,t],n)=>(T(e,n),K(t,n),ee(e,t)?[t,e[t]]:null),arity:q(2)},dissoc:{evaluate:([e,t],n)=>{T(e,n),K(t,n);const r={...e};return delete r[t],r},arity:q(2)},merge:{evaluate:(e,t)=>{if(0===e.length)return null;const[n,...r]=e;return T(n,t),r.reduce((e,n)=>(T(n,t),{...e,...n}),{...n})},arity:{min:0}},"merge-with":{evaluate:(e,t,n,{executeFunction:r})=>{const i=e[0],s=e.at(-1),o=e.slice(1,-1);return T(i,t),V(s,t),o.reduce((e,i)=>(T(i,t),Object.entries(i).forEach(i=>{const o=X(i[0],t),a=ie(i[1]);ee(e,o)?e[o]=r(s,[e[o],a],n,t):e[o]=a}),e),{...i})},arity:{min:2}},zipmap:{evaluate:([e,t],n)=>{he(e,n),fe(t,n);const r=Math.min(e.length,t.length),i={};for(let s=0;s<r;s+=1){i[X(e[s],n)]=ie(t[s])}return i},arity:q(2)},"select-keys":{evaluate:([e,t],n)=>(he(t,n),T(e,n),t.reduce((t,n)=>(ee(e,n)&&(t[n]=ie(e[n])),t),{})),arity:q(2)}},Re={"function?":{evaluate:([e])=>b(e),arity:q(1)},"string?":{evaluate:([e])=>"string"==typeof e,arity:q(1)},"number?":{evaluate:([e])=>"number"==typeof e,arity:q(1)},"integer?":{evaluate:([e])=>"number"==typeof e&&N(e,{integer:!0}),arity:q(1)},"boolean?":{evaluate:([e])=>"boolean"==typeof e,arity:q(1)},"null?":{evaluate:([e])=>null==e,arity:q(1)},"zero?":{evaluate:([e],t)=>(A(e,t,{finite:!0}),Math.abs(e)<ce),arity:q(1)},"pos?":{evaluate:([e],t)=>(A(e,t,{finite:!0}),e>0),arity:q(1)},"neg?":{evaluate:([e],t)=>(A(e,t,{finite:!0}),e<0),arity:q(1)},"even?":{evaluate:([e],t)=>(A(e,t,{finite:!0}),e%2==0),arity:q(1)},"odd?":{evaluate:([e],t)=>(A(e,t,{finite:!0}),N(e,{integer:!0})&&e%2!=0),arity:q(1)},"array?":{evaluate:([e])=>Array.isArray(e),arity:q(1)},"coll?":{evaluate:([e])=>B(e),arity:q(1)},"seq?":{evaluate:([e])=>O(e),arity:q(1)},"object?":{evaluate:([e])=>U(e),arity:q(1)},"regexp?":{evaluate:([e])=>D(e),arity:q(1)},"finite?":{evaluate:([e],t)=>(A(e,t),Number.isFinite(e)),arity:q(1)},"positive-infinity?":{evaluate:([e],t)=>(A(e,t),e===Number.POSITIVE_INFINITY),arity:q(1)},"negative-infinity?":{evaluate:([e],t)=>(A(e,t),e===Number.NEGATIVE_INFINITY),arity:q(1)},"true?":{evaluate:([e])=>!0===e,arity:q(1)},"false?":{evaluate:([e])=>!1===e,arity:q(1)},"empty?":{evaluate:([e],t)=>null===e||(R(e,t),"string"==typeof e||Array.isArray(e)?0===e.length:0===Object.keys(e).length),arity:q(1)},"not-empty?":{evaluate:([e],t)=>null!==e&&(R(e,t),"string"==typeof e||Array.isArray(e)?e.length>0:Object.keys(e).length>0),arity:q(1)},"vector?":{evaluate:([e])=>$e(e),arity:q(1)},"matrix?":{evaluate:([e])=>je(e),arity:q(1)},"grid?":{evaluate:([e])=>Ie(e),arity:q(1)}},De={regexp:{evaluate:([e,t],r)=>{K(e,r);const i=e||"(?:)",s="string"==typeof t?t:"";try{new RegExp(i,s)}catch(e){throw new n(`Invalid regular expression: ${i} ${s}`,r)}return{[l]:!0,sourceCodeInfo:r,s:i,f:s}},arity:{min:1,max:2}},match:{evaluate:([e,t],n)=>{if(function(e,t){if(!D(e))throw y("RegularExpression",e,t)}(t,n),!G(e))return null;const r=new RegExp(t.s,t.f).exec(e);return r?[...r]:null},arity:q(2)},replace:{evaluate:([e,t,n],r)=>{K(e,r),L(t,r),K(n,r);const i=D(t)?new RegExp(t.s,`${t.f}`):t;return e.replace(i,n)},arity:q(3)},"replace-all":{evaluate:([e,t,n],r)=>{K(e,r),L(t,r),K(n,r);const i=D(t)?new RegExp(t.s,`${t.f.includes("g")?t.f:`${t.f}g`}`):t;return e.replaceAll(i,n)},arity:q(3)}},Le=/^\s*$/,_e={"string-repeat":{evaluate:([e,t],n)=>(K(e,n),A(t,n,{integer:!0,nonNegative:!0}),e.repeat(t)),arity:q(2)},str:{evaluate:e=>e.reduce((e,t)=>e+(null==t?"":U(t)||Array.isArray(t)?JSON.stringify(t):`${t}`),""),arity:{}},number:{evaluate:([e],t)=>{K(e,t);const r=Number(e);if(Number.isNaN(r))throw new n(`Could not convert '${e}' to a number.`,t);return r},arity:q(1)},"from-char-code":{evaluate:([e],t)=>{A(e,t,{finite:!0});const r=re(e);try{return String.fromCodePoint(r)}catch(e){throw new n(e,t)}},arity:q(1)},"to-char-code":{evaluate:([e],t)=>(K(e,t,{nonEmpty:!0}),g(e.codePointAt(0),t)),arity:q(1)},"lower-case":{evaluate:([e],t)=>(K(e,t),e.toLowerCase()),arity:q(1)},"upper-case":{evaluate:([e],t)=>(K(e,t),e.toUpperCase()),arity:q(1)},trim:{evaluate:([e],t)=>(K(e,t),e.trim()),arity:q(1)},"trim-left":{evaluate:([e],t)=>(K(e,t),e.replace(/^\s+/,"")),arity:q(1)},"trim-right":{evaluate:([e],t)=>(K(e,t),e.replace(/\s+$/,"")),arity:q(1)},join:{evaluate:([e,t],n)=>(fe(e,n),e.forEach(e=>Q(e,n)),K(t,n),e.join(t)),arity:q(2)},split:{evaluate:([e,t,n],r)=>{K(e,r),L(t,r),void 0!==n&&A(n,r,{integer:!0,nonNegative:!0});const i="string"==typeof t?t:new RegExp(t.s,t.f);return e.split(i,n)},arity:{min:2,max:3}},"split-lines":{evaluate:([e],t)=>(K(e,t),e.split(/\r\n|\n|\r/).filter(e=>""!==e)),arity:q(1)},"pad-left":{evaluate:([e,t,n],r)=>(K(e,r),A(t,r,{integer:!0}),void 0!==n&&K(n,r),e.padStart(t,n)),arity:{min:2,max:3}},"pad-right":{evaluate:([e,t,n],r)=>(K(e,r),A(t,r,{integer:!0}),void 0!==n&&K(n,r),e.padEnd(t,n)),arity:{min:2,max:3}},template:{evaluate:([e,...t],n)=>{K(e,n),fe(t,n);const r=e.split("||||");if(r.length<=1)return ze(r[0],t,n);{const e=t[0];A(e,n,{integer:!0,nonNegative:!0});const i=[`${e}`,...t.slice(1)];if(2===r.length){return ze(r[1===e?0:1],i,n)}return ze(r[Math.min(e,r.length-1)],i,n)}},arity:{min:1,max:10}},"encode-base64":{evaluate:([e],t)=>(K(e,t),btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16))))),arity:q(1)},"decode-base64":{evaluate:([e],t)=>{K(e,t);try{return decodeURIComponent(Array.prototype.map.call(atob(e),e=>`%${`00${e.charCodeAt(0).toString(16)}`.slice(-2)}`).join(""))}catch(e){throw new n(e,t)}},arity:q(1)},"encode-uri-component":{evaluate:([e],t)=>(K(e,t),encodeURIComponent(e)),arity:q(1)},"decode-uri-component":{evaluate:([e],t)=>{K(e,t);try{return decodeURIComponent(e)}catch(e){throw new n(e,t)}},arity:q(1)},capitalize:{evaluate:([e],t)=>(K(e,t),e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()),arity:q(1)},"blank?":{evaluate:([e],t)=>null===e||(K(e,t),Le.test(e)),arity:q(1)}},Ve=/\$\$/g;function ze(e,t,n){for(let r=0;r<9;r+=1){const i=new RegExp(`(\\$\\$|[^$]|^)\\$${r+1}`,"g");if(i.test(e)){const s=H(t[r],n);e=e.replace(i,`$1${s}`)}}return e=e.replace(Ve,"$")}const Je={"|>":{evaluate:([e,t],n,r,{executeFunction:i})=>(V(t,n),i(t,[e],r,n)),arity:q(2)},apply:{evaluate:([e,...t],n,r,{executeFunction:i})=>{V(e,n);const s=t[t.length-1];fe(s,n);return i(e,[...t.slice(0,-1),...s],r,n)},arity:{min:2}},identity:{evaluate:([e])=>ie(e),arity:q(1)},comp:{evaluate:(e,t)=>(e.forEach(e=>V(e,t)),{[c]:!0,sourceCodeInfo:t,functionType:"Comp",params:e,arity:e.length>0?J(e.at(-1)):{min:1,max:1}}),arity:{}},constantly:{evaluate:([e],t)=>({[c]:!0,sourceCodeInfo:t,functionType:"Constantly",value:ie(e),arity:{}}),arity:q(1)},juxt:{evaluate:(e,t)=>{e.forEach(e=>V(e,t));const r=function(e){return e.reduce((e,t)=>{if(null===e)return null;const n="number"==typeof t||B(t)?q(1):t.arity,{min:r,max:i}=n,{min:s,max:o}=e,a="number"==typeof r&&"number"==typeof s?Math.max(r,s):"number"==typeof r?r:"number"==typeof s?s:void 0,u="number"==typeof i&&"number"==typeof o?Math.min(i,o):"number"==typeof i?i:"number"==typeof o?o:void 0;return"number"==typeof a&&"number"==typeof u&&a>u?null:{min:a,max:u}},{})}(e);if(null===r)throw new n("All functions must accept the same number of arguments",t);return{[c]:!0,sourceCodeInfo:t,functionType:"Juxt",params:e,arity:r}},arity:{min:1}},complement:{evaluate:([e],t)=>{const n=_(e,t);return{[c]:!0,sourceCodeInfo:t,functionType:"Complement",function:n,arity:J(n)}},arity:q(1)},"every-pred":{evaluate:(e,t)=>({[c]:!0,sourceCodeInfo:t,functionType:"EveryPred",params:e,arity:{min:1,max:1}}),arity:{min:1}},"some-pred":{evaluate:(e,t)=>({[c]:!0,sourceCodeInfo:t,functionType:"SomePred",params:e,arity:{min:1,max:1}}),arity:{min:1}},fnull:{evaluate:([e,...t],n)=>{const r=_(e,n);return{[c]:!0,sourceCodeInfo:n,functionType:"Fnull",function:r,params:t,arity:J(r)}},arity:{min:2}}};function We(e){return le(`\n ${e.title}\n\n ${e.description.replace(/`(.+?)`/g,"$1").replace(/\$(\w+)/g,"$1").replace(/\*\*\*(.+)\*\*\*/g,"$1").replace(/\*\*(.+)\*\*/g,"$1")}\n\n Signature:\n ${function({title:e,variants:t,args:n,returns:r,_isOperator:i}){const s=t.map(t=>`${` ${e}(${t.argumentNames.map(e=>{let t="";return n[e].rest&&(t+="..."),t+=e,t}).join(", ")})`} -> ${qe(r)}`),o=i?["","Operator:",` a ${e} b -> ${qe(r)}`]:[];return[...s,...o]}(e).join("\n ")}\n\n Arguments:\n ${function(e){return Object.entries(e.args).map(([e,t])=>`${e}: ${qe(t)}`)}(e).join("\n ")}\n\n Examples:\n${e.examples.map(e=>le(e,4)).join("\n\n")}`)}function qe(e){const t=e.type,n=(Array.isArray(t)?t:[t]).join(" | ");return e.array||e.rest?`Array<${n}>`:n}const Ye={...Y,...ve,...be,...we,...Ue,...function(e){return{doc:{evaluate:([t],n)=>{if(m(e),V(t,n),!b(t))return"";if("Builtin"===t.functionType){const n=e[t.name];return n?We(n):""}return"UserDefined"===t.functionType||"NativeJsFunction"===t.functionType?t.docString:""},arity:q(1)},arity:{evaluate:([e],t)=>(V(e,t),b(e)?e.arity:q(1)),arity:q(1)}}}({}),...Be,...Pe,...Re,...De,..._e,...Je};Object.entries(Ye).forEach(([e,t])=>{t.name=e});const Ge={...Ye},Ke={},Xe=[];Object.entries(Ge).forEach(([e,t],n)=>{Ke[e]=n,Xe.push(t)});const Ze={arity:{},evaluate:(e,t,{evaluateNode:n})=>{let r=!0;for(const i of e[1][1])if(r=n(i,t),!r)break;return r},evaluateAsNormalExpression:(e,t)=>{let n=!0;for(const r of e)if(n=j(r,t),!n)break;return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)};function He(e){const t=e[0];return s.UserDefinedSymbol===t||s.NormalBuiltinSymbol===t||s.SpecialBuiltinSymbol===t}function Qe(e){return s.UserDefinedSymbol===e[0]}function et(e,t){return function(e,t){if(!Qe(e))throw y("UserDefinedSymbolNode",e,t)}(e,t),e}function tt(e){return s.NormalBuiltinSymbol===e[0]}function nt(e){return s.SpecialBuiltinSymbol===e[0]}function rt(e){return!!function(e){return e[0]===s.NormalExpression}(e)&&He(e[1][0])}function it(e){return e[0]===s.Spread}const st={arity:q(1),evaluate:(e,t)=>{const n=e[1][1];if(function(e,t){if(!He(e))throw y("SymbolNode",e,t)}(n),!Qe(n))return!0;return null!==t.lookUp(n)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n([e[1][1]],t,r,i)};const ot=11,at=12,ut=13,ct=14;function lt(e,t){if(e[0]===ut)Object.values(e[1][0]).forEach(e=>{e[1][1]&&t(e[1][1]),lt(e,t)});else if(e[0]===ct)for(let n=0;n<e[1][0].length;n+=1){const r=e[1][0][n]??null;null!==r&&(r[1][1]&&t(r[1][1]),lt(r,t))}}function ft(e,t,n){const r={};return ht(e,t,n,e[2],r),r}function ht(e,t,r,i,s){if(e[0]===ut){!function(e,t){if(!v(e))throw new n(`Expected UnknownRecord, got ${p(e)}.`,d(e,t))}(t,i);const o=new Set;let a;if(Object.entries(e[1][0]).forEach(([e,n])=>{if(n[0]===at)return void(a=n);o.add(e);const u=(void 0!==t[e]?t[e]:n[1][1]&&r(n[1][1]))??null;C(u,i),ht(n,u,r,i,s)}),a){const e=Object.entries(t).filter(([e])=>!o.has(e)).reduce((e,[t,n])=>(e[t]=j(n),e),{});s[a[1][0]]=e}}else if(e[0]===ct){let n=null;fe(t,i);for(let o=0;o<e[1][0].length;o+=1){const a=e[1][0][o]??null;if(null===a)continue;if(a[0]===at){n=o;break}const u=(void 0!==t[o]?t[o]:a[1][1]&&r(a[1][1]))??null;C(u,i),ht(a,u,r,i,s)}if(null!==n){const r=t.slice(n),i=e[1][0][n];s[i[1][0]]=r}}else e[0]===at?s[e[1][0]]=j(t):s[e[1][0][1]]=j(t)}function pt(e){const t={};return dt(e,t),t}function dt(e,t){if(null!==e)if(e[0]===ct)for(const n of e[1][0])dt(n,t);else if(e[0]===ut)for(const n of Object.values(e[1][0]))dt(n,t);else if(e[0]===at){if(t[e[1][0]])throw new n(`Duplicate binding name: ${e[1][0]}`,e[2]);t[e[1][0]]=!0}else{if(t[e[1][0][1]])throw new n(`Duplicate binding name: ${e[1][0]}`,e[2]);t[e[1][0][1]]=!0}}const yt={arity:{},evaluate:(e,t,{evaluateNode:n})=>{const r=e[1][1],i=r[1][0],s=r[1][1],o=n(s,t),a=ft(i,o,e=>n(e,t));return t.exportValues(a,i[2]),o},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const s=e[1][1],o=s[1][0],a=s[1][1],u=n([a],t,r,i);return lt(o,e=>{ue(u,n([e],t,r,i))}),t.addValues(pt(o),o[2]),u}},gt={arity:{},evaluate:(e,t,{builtin:n,getUndefinedSymbols:r,evaluateNode:i})=>{const s=e[1][1],o=e[1][2],a=function(e,t,n,r,i){const s={},o=e[0].reduce((e,t)=>(Object.keys(pt(t)).forEach(t=>{e[t]={value:null}}),e),{}),a=r(e[1],t.new(o),n,i);a.forEach(e=>{const n=t.getValue(e);I(n)&&(s[e]={value:n})});const u=[e[0],e[1],s];return u}(s,t,n,r,i),u=a[0].filter(e=>e[0]!==at&&void 0===e[1][1]).length,l={min:u>0?u:void 0,max:a[0].some(e=>e[0]===at)?void 0:a[0].length};return{[c]:!0,sourceCodeInfo:e[2],functionType:"UserDefined",name:void 0,evaluatedfunction:a,arity:l,docString:o}},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>function(e,t,n,r,i){const s=new Set,o={self:{value:null}};e[0].forEach(e=>{Object.assign(o,pt(e)),lt(e,e=>{ue(s,n([e],t,r,i))})});const a=t.create(o),u=n(e[1],a,r,i);return ue(s,u),s}(e[1][1],t,n,r,i)};const mt={arity:q(0),evaluate:(e,t,{evaluateNode:n})=>{const r=e[1][1],i=r[1][0],s=r[1][1],o=n(s,t),a=ft(i,o,e=>n(e,t));return t.addValues(a,i[2]),o},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const s=e[1][1],o=s[1][0],a=s[1][1],u=n([a],t,r,i);return lt(o,e=>{ue(u,n([e],t,r,i))}),t.addValues(pt(o),o[2]),u}},vt={arity:{},evaluate:(e,r,{evaluateNode:i})=>{const s=e[1][1],o=s.reduce((e,t)=>{const n=i(t[1][1],r.create(e)),s=ft(t[1][0],n,e=>i(e,r));return Object.entries(s).forEach(([t,n])=>{e[t]={value:n}}),e},{}),a=r.create(o),u=e[1][2];for(;;){let c=null;try{c=i(u,a)}catch(a){if(a instanceof t){const t=a.params;if(t.length!==s.length)throw new n(`recur expected ${s.length} parameters, got ${p(t.length)}`,e[2]);s.forEach((e,n)=>{const s=ft(e[1][0],j(t[n]),e=>i(e,r));for(const[e,t]of Object.entries(s))o[e].value=t});continue}throw a}return c}},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const s=e[1][1],o=s.reduce((e,t)=>{const n=pt(t[1][0]);return Object.keys(n).forEach(t=>{e[t]={value:!0}}),e},{});return ae(n(s.map(e=>e[1][1]),t,r,i),n([e[1][2]],t.create(o),r,i))}};function bt(e,t,n,r){for(const i of e){const[e,s]=i[1],o=ft(e,r(s,n),e=>r(e,n));Object.entries(o).forEach(([e,n])=>{t[e]={value:n}})}}function wt(e,t,n,r){const i=t[2],[,s,o]=t[1],a=[],u=s.map(()=>0);let c=!1;for(;!c;){const t={},l=n.create(t);let f=!1;e:for(let e=0;e<s.length;e+=1){const[n,o,a,h]=s[e],[p,d]=n[1],y=P(r(d,l),i),m=O(y)?y:Object.entries(y);if(0===m.length){f=!0,c=!0;break}const v=g(u[e],i);if(v>=m.length){if(f=!0,0===e){c=!0;break}u[e]=0,u[e-1]=g(u[e-1],i)+1;break}const b=ft(p,j(m[v],i),e=>r(e,l));if(Object.entries(b).forEach(([e,n])=>{t[e]={value:n}}),o&&bt(o,t,l,r),a&&!r(a,l)){u[e]=g(u[e],i)+1,f=!0;break e}if(h&&!r(h,l)){u[e]=Number.POSITIVE_INFINITY,f=!0;break e}}if(!f){const t=r(o,l);e&&a.push(t),u.length>0&&(u[u.length-1]+=1)}}return e?a:null}function xt(e,t,n,r,i){const s=new Set,o={},[,a,u]=e[1];return a.forEach(e=>{const[a,u,c,l]=e,[f,h]=a[1];n([h],t.create(o),r,i).forEach(e=>s.add(e)),Object.assign(o,pt(f)),u&&u.forEach(e=>{const[a,u]=e[1];n([u],t.create(o),r,i).forEach(e=>s.add(e)),Object.assign(o,pt(a))}),c&&n([c],t.create(o),r,i).forEach(e=>s.add(e)),l&&n([l],t.create(o),r,i).forEach(e=>s.add(e))}),n([u],t.create(o),r,i).forEach(e=>s.add(e)),s}const St={arity:q(1),evaluate:(e,t,n)=>wt(!0,e,t,n.evaluateNode),getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>xt(e,t,n,r,i)},kt={arity:q(1),evaluate:(e,t,n)=>(wt(!1,e,t,n.evaluateNode),null),getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>xt(e,t,n,r,i)},Et={arity:{},evaluate:(e,t,{evaluateNode:n})=>{let r=!1;for(const i of e[1][1])if(r=n(i,t),r)break;return r},evaluateAsNormalExpression:(e,t)=>{let n=!1;for(const r of e)if(n=j(r,t),n)break;return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},Nt={arity:{min:1},evaluate:(e,t,{evaluateNode:n})=>{for(const r of e[1][1]){if(Qe(r)&&null===t.lookUp(r))continue;const e=n(r,t);if(null!==e)return e}return null},evaluateAsNormalExpression:(e,t)=>{for(const n of e){const e=j(n,t);if(null!==e)return e}return null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},At={arity:{},evaluate:(e,n,{evaluateNode:r})=>{const i=e[1][1].map(e=>r(e,n));throw new t(i)},evaluateAsNormalExpression:e=>{throw new t(e)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},$t={arity:q(1),evaluate:(e,t,{evaluateNode:n})=>{const i=X(n(e[1][1],t),e[2],{nonEmpty:!0});throw new r(i,e[2])},evaluateAsNormalExpression:(e,t)=>{const n=X(e[0],t,{nonEmpty:!0});throw new r(n,void 0)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n([e[1][1]],t,r,i)},It={arity:{},evaluate:(e,t,{evaluateNode:n})=>{const[,r,i,s]=e[1];try{return n(r,t)}catch(e){const r=i?{[i[1]]:{value:e}}:{};return n(s,t.create(r))}},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const[,s,o,a]=e[1],u=n([s],t,r,i),c=o?{[o[1]]:{value:!0}}:{};return ae(u,n([a],t.create(c),r,i))}},jt={arity:{},evaluate:(e,t,{evaluateNode:r})=>{const i=[];for(const s of e[1][1])if(it(s)){const e=r(s[1],t);if(!Array.isArray(e))throw new n("Spread value is not an array",s[2]);i.push(...e)}else i.push(r(s,t));return i},evaluateAsNormalExpression:(e,t)=>{const n=[];for(const r of e)n.push(j(r,t));return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},Ct={arity:{},evaluate:(e,t,{evaluateNode:r})=>{const i={},s=e[1][1];for(let e=0;e<s.length;e+=2){const o=s[e];if(it(o)){const s=r(o[1],t);if(!v(s))throw new n("Spread value is not an object",o[2]);Object.assign(i,s),e-=1}else{const a=r(o,t),u=s[e+1];if(void 0===u)throw new n("Missing value for key",o[2]);const c=r(u,t);K(a,o[2]),i[a]=c}}return i},evaluateAsNormalExpression:(e,t)=>{const n={};for(let r=0;r<e.length;r+=2){const i=e[r],s=e[r+1];K(i,t),n[i]=s??null}return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},Ot={"??":0,"&&":1,"||":2,array:3,cond:4,"0_def":5,"defined?":6,block:7,doseq:8,"0_lambda":9,for:10,if:11,let:12,loop:13,object:14,recur:15,switch:16,throw:17,try:18,unless:19},Ft=[Nt,Ze,Et,jt,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const r=e[1][1];for(const[e,i]of r){if(n(e,t))return n(i,t)}return null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1].flat(),t,r,i)},yt,st,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const r=t.create({});let i=null;for(const t of e[1][1])i=n(t,r);return i},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t.create({}),r,i)},kt,gt,St,{arity:{min:2,max:3},evaluate:(e,t,{evaluateNode:n})=>{const[r,i,s]=e[1][1];return n(r,t)?n(i,t):s?n(s,t):null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1].filter(e=>!!e),t,r,i)},mt,vt,Ct,At,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const[,r,i]=e[1],s=n(r,t);for(const[e,r]of i){if(n(e,t)===s)return n(r,t)}return null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n([e[1][1],...e[1][2].flat()],t,r,i)},$t,It,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const[r,i,s]=e[1][1];return n(r,t)?s?n(s,t):null:n(i,t)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1].filter(e=>!!e),t,r,i)}],Mt={normalExpressions:Ge,specialExpressions:Ft,allNormalExpressions:Xe},Ut=Object.keys(Ge),Tt=Object.keys(Ot);new Set(Tt);const Bt=(e,t,n,r)=>{const i=Array.isArray(e)?e:[[s.SpecialExpression,[Ot.block,e.body]]],o=new Set;for(const e of i)Pt(e,t,n,r)?.forEach(e=>o.add(e));return o};function Pt(e,t,r,i){const o=e[0];switch(o){case s.UserDefinedSymbol:{const n=e;return null===t.lookUp(n)?new Set([n[1]]):null}case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.String:case s.Number:case s.ReservedSymbol:case s.Binding:return null;case s.NormalExpression:{const n=e,s=new Set;if(rt(n)){const[,[e]]=n;if(Qe(e)){null===t.lookUp(e)&&s.add(e[1])}}else{const[,[e]]=n;Pt(e,t,r,i)?.forEach(e=>s.add(e))}for(const e of n[1][1])Pt(e,t,r,i)?.forEach(e=>s.add(e));return s}case s.SpecialExpression:{const n=e,s=n[1][0];return(0,r.specialExpressions[s].getUndefinedSymbols)(n,t,{getUndefinedSymbols:Bt,builtin:r,evaluateNode:i})}case s.Spread:return Pt(e[1],t,r,i);default:throw new n(`Unhandled node type: ${o}`,e[2])}}const Rt=(1+Math.sqrt(5))/2,Dt={E:Math.E,"-E":-Math.E,"ε":Math.E,"-ε":-Math.E,PI:Math.PI,"-PI":-Math.PI,"π":Math.PI,"-π":-Math.PI,PHI:Rt,"-PHI":-Rt,"φ":Rt,"-φ":-Rt,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,"∞":Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,"-∞":Number.NEGATIVE_INFINITY,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,NaN:Number.NaN},Lt={true:!0,false:!1,null:null,do:null,else:null,case:null,each:null,in:null,when:null,while:null,catch:null,function:null,export:null,as:null,then:null,end:null,_:null,...Dt};const _t={NativeJsFunction:(e,t,r)=>{try{return ie(e.nativeFn.fn(...t))}catch(e){const t="string"==typeof e?e:v(e)&&"string"==typeof e.message?e.message:"<no message>";throw new n(`Native function throwed: "${t}"`,r)}},UserDefined:(e,r,i,s,{evaluateNode:o})=>{for(;;){if(!z(e.arity,r.length))throw new n(`Expected ${e.arity} arguments, got ${r.length}.`,i);const a=e.evaluatedfunction,u=a[0],c=u.filter(e=>e[0]!==at).length,l=s.create(e.evaluatedfunction[2]),f={self:{value:e}},h=[];for(let e=0;e<r.length;e+=1)if(e<c){const t=ie(r[e]),n=ft(u[e],t,e=>o(e,l.create(f)));Object.entries(n).forEach(([e,t])=>{f[e]={value:t}})}else h.push(ie(r[e]));for(let e=r.length;e<c;e++){const t=u[e],n=ft(t,o(t[1][1],s.create(f)),e=>o(e,s.create(f)));Object.entries(n).forEach(([e,t])=>{f[e]={value:t}})}const p=u.find(e=>e[0]===at);if(void 0!==p){const e=ft(p,h,e=>o(e,s.create(f)));Object.entries(e).forEach(([e,t])=>{f[e]={value:t}})}try{let e=null;const t=l.create(f);for(const n of a[1])e=o(n,t);return e}catch(e){if(e instanceof t){r=e.params;continue}throw e}}},Partial:(e,t,r,i,{executeFunction:s})=>{const o=[...e.params];if(t.length!==e.placeholders.length)throw new n(`(partial) expects ${e.placeholders.length} arguments, got ${t.length}.`,r);const a=[...t];for(const t of e.placeholders)o.splice(t,0,a.shift());return s(e.function,o,i,r)},Comp:(e,t,r,i,{executeFunction:s})=>{const{params:o}=e;if(0===o.length){if(1!==t.length)throw new n(`(comp) expects one argument, got ${p(t.length)}.`,r);return j(t[0],r)}return j(o.reduceRight((e,t)=>[s(_(t,r),e,i,r)],t)[0],r)},Constantly:e=>e.value,Juxt:(e,t,n,r,{executeFunction:i})=>e.params.map(e=>i(_(e,n),t,r,n)),Complement:(e,t,n,r,{executeFunction:i})=>!i(e.function,t,r,n),EveryPred:(e,t,n,r,{executeFunction:i})=>{for(const s of e.params)for(const e of t){if(!i(_(s,n),[e],r,n))return!1}return!0},SomePred:(e,t,n,r,{executeFunction:i})=>{for(const s of e.params)for(const e of t){if(i(_(s,n),[e],r,n))return!0}return!1},Fnull:(e,t,n,r,{executeFunction:i})=>{const s=t.map((t,n)=>null===t?ie(e.params[n]):t);return i(_(e.function,n),s,r,n)},Builtin:(e,t,n,r,{executeFunction:i})=>g(Xe[e.normalBuitinSymbolType],n).evaluate(t,n,r,{executeFunction:i}),SpecialBuiltin:(e,t,r,i,{executeFunction:s})=>{const o=g(Ft[e.specialBuiltinSymbolType],r);if(o.evaluateAsNormalExpression)return o.evaluateAsNormalExpression(t,r,i,{executeFunction:s});throw new n(`Special builtin function ${e.specialBuiltinSymbolType} is not supported as normal expression.`,r)},Module:(e,t,r,i,{executeFunction:s})=>{const o=i.getModule(e.moduleName);if(!o)throw new n(`Module '${e.moduleName}' not found.`,r);const a=o.functions[e.functionName];if(!a)throw new n(`Function '${e.functionName}' not found in module '${e.moduleName}'.`,r);return W(a.arity,t.length,r),a.evaluate(t,r,i,{executeFunction:s})}};function Vt(e,t){let n=null;for(const r of e.body)n=zt(r,t);return n}function zt(e,t){switch(e[0]){case s.Number:case s.String:return function(e){return e[1]}(e);case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.UserDefinedSymbol:return t.evaluateSymbol(e);case s.ReservedSymbol:return function(e){const t=e[1];if(!["true","false","null"].includes(t))throw new n(`Reserved symbol ${t} cannot be evaluated`,e[2]);return g(Lt[t],e[2])}(e);case s.NormalExpression:{const r=function(e,t){const r=e[2],o=e[1][1],a=[],u=[];if(o.forEach((e,r)=>{if(it(e)){const r=zt(e[1],t);if(!Array.isArray(r))throw new n(`Spread operator requires an array, got ${p(e)}`,e[2]);a.push(...r)}else e[0]===s.ReservedSymbol&&"_"===e[1]?u.push(r):a.push(zt(e,t))}),rt(e)){const n=e[1][0];if(u.length>0){const e=zt(n,t);return{[c]:!0,function:_(e,r),functionType:"Partial",params:a,placeholders:u,sourceCodeInfo:r,arity:q(u.length)}}if(tt(n)){const r=n[1];return Mt.allNormalExpressions[r].evaluate(a,e[2],t,{executeFunction:Jt})}{const s=t.getValue(n[1]);if(void 0!==s)return Jt(_(s,r),a,t,r);throw new i(n[1],e[2])}}{const n=_(zt(e[1][0],t),r);if(u.length>0){return{[c]:!0,function:n,functionType:"Partial",params:a,placeholders:u,sourceCodeInfo:r,arity:q(u.length)}}return Jt(n,a,t,r)}}(e,t);if("number"==typeof r&&Number.isNaN(r))throw new n("Number is NaN",e[2]);return Ae(r)}case s.SpecialExpression:return Ae(function(e,t){const n=e[1][0],r=g(Mt.specialExpressions[n],e[2]);return(0,r.evaluate)(e,t,{evaluateNode:zt,builtin:Mt,getUndefinedSymbols:Bt})}(e,t));default:throw new n(`${a(e[0])}-node cannot be evaluated`,e[2])}}function Jt(e,t,r,i){if(b(e))return _t[e.functionType](e,t,i,r,{evaluateNode:zt,executeFunction:Jt});if(Array.isArray(e))return function(e,t,r){if(1!==t.length)throw new n("Array as function requires one non negative integer parameter.",r);const i=t[0];return A(i,r,{integer:!0,nonNegative:!0}),ie(e[i])}(e,t,i);if(U(e))return function(e,t,r){if(1!==t.length)throw new n("Object as function requires one string parameter.",r);const i=t[0];return K(i,r),ie(e[i])}(e,t,i);if("string"==typeof e)return function(e,t,r){if(1!==t.length)throw new n("String as function requires one Obj parameter.",r);const i=ie(t[0]);if(U(i))return ie(i[e]);if(N(i,{integer:!0}))return ie(e[i]);throw new n(`string as function expects Obj or integer parameter, got ${p(i)}`,r)}(e,t,i);if(N(e))return function(e,t,r){if(A(e,r,{integer:!0}),1!==t.length)throw new n("Number as function requires one Arr parameter.",r);const i=t[0];return M(i,r),ie(i[e])}(e,t,i);throw new n("Unexpected function type",i)}class Wt{contexts;globalContext;values;nativeJsFunctions;modules;constructor({contexts:e,values:t,nativeJsFunctions:n,modules:r}){this.globalContext=g(e[0]),this.contexts=e,this.values=t,this.nativeJsFunctions=n,this.modules=r??new Map}getModule(e){return this.modules.get(e)}create(e){const t=this.globalContext,n=new Wt({contexts:[e,...this.contexts],values:this.values,nativeJsFunctions:this.nativeJsFunctions,modules:this.modules});return n.globalContext=t,n}new(e){return new Wt({contexts:[{},e],modules:this.modules})}exportValues(e,t){for(const[r,i]of Object.entries(e)){if(this.globalContext[r])throw new n(`Cannot redefine exported value "${r}"`,t);if(Tt.includes(r))throw new n(`Cannot shadow special expression "${r}"`,t);if(Ut.includes(r))throw new n(`Cannot shadow builtin function "${r}"`,t);if("self"===r)throw new n(`Cannot shadow builtin value "${r}"`,t);this.globalContext[r]={value:i}}this.contexts[0]!==this.globalContext&&this.addValues(e,t)}addValues(e,t){const r=this.contexts[0];for(const[i,s]of Object.entries(e)){if(r[i])throw new n(`Cannot redefine value "${i}"`,t);if(Tt.includes(i))throw new n(`Cannot shadow special expression "${i}"`,t);if(Ut.includes(i))throw new n(`Cannot shadow builtin function "${i}"`,t);if("self"===i)throw new n(`Cannot shadow builtin value "${i}"`,t);r[i]={value:ie(s)}}}getValue(e){for(const t of this.contexts){const n=t[e];if(n)return n.value}const t=this.nativeJsFunctions?.[e];return t||this.values?.[e]}lookUp(e){const t=e[1];for(const e of this.contexts){const n=e[t];if(n)return n}const n=this.values?.[t];if(void 0!==n)return{value:ie(n)};const r=this.nativeJsFunctions?.[t];return r?{value:r}:null}evaluateSymbol(e){if(nt(e)){const t=e[1];switch(t){case Ot["&&"]:case Ot["||"]:case Ot.array:case Ot.object:case Ot["defined?"]:case Ot.recur:case Ot.throw:case Ot["??"]:{const n=g(Mt.specialExpressions[t],e[2]);return{[c]:!0,functionType:"SpecialBuiltin",specialBuiltinSymbolType:t,sourceCodeInfo:e[2],arity:n.arity}}default:throw new n(`Unknown special builtin symbol type: ${t}`,e[2])}}if(tt(e)){const t=e[1],n=Xe[t],r=n.name;return{[c]:!0,functionType:"Builtin",normalBuitinSymbolType:t,sourceCodeInfo:e[2],arity:n.arity,name:r}}const t=this.lookUp(e);if(v(r=t)&&void 0!==r.value)return t.value;var r;throw new i(e[1],e[2])}}function qt(e={},t){const n=e.globalContext??{},r=e.contexts?[n,...e.contexts]:[n],i=new Wt({contexts:r,values:e.values,modules:t,nativeJsFunctions:e.jsFunctions&&Object.entries(e.jsFunctions).reduce((e,[t,n])=>{const r=t.split("."),i=r.pop();if(/^[A-Z]/.test(i))return console.warn(`Invalid identifier "${t}" in jsFunctions, function name must not start with an uppercase letter`,void 0),e;let s=e;for(const n of r){if(0===n.length)return console.warn(`Invalid empty identifier "${t}" in nativeJsFunctions`,void 0),e;if(!/^[A-Z]/.test(n))return console.warn(`Invalid identifier "${t}" in jsFunctions, module name must start with an uppercase letter`,void 0),e;s[n]||(s[n]={}),s=s[n]}!function(e){if(!function(e){return"object"==typeof e&&null!==e&&"fn"in e&&"function"==typeof e.fn}(e))throw new TypeError("Expected a NativeJsFunction")}(n);const o={functionType:"NativeJsFunction",nativeFn:n,name:i,[c]:!0,arity:n.arity??{},docString:n.docString??""};return s!==e||function(e){return Tt.includes(e)?(console.warn(`Cannot shadow special expression "${e}", ignoring.`),!1):Ut.includes(e)?(console.warn(`Cannot shadow builtin function "${e}", ignoring.`),!1):"self"!==e||(console.warn(`Cannot shadow builtin value "${e}", ignoring.`),!1)}(i)?(s[i]=o,e):e},{})});return e.globalModuleScope?i:i.create({})}const Yt=["^","*","/","%","+","-","<<",">>",">>>","++","<","<=","≤",">",">=","≥","==","!=","≠","&","xor","|","&&","||","??","|>"],Gt=[...Yt,"?",":","->","...",".",",","=",":",";"],Kt=new Set(["comment","cond","def","defined?","block","doseq","if","let","loop","recur","throw","try","unless","while"]);function Xt(e){return!Kt.has(e)}const Zt=new Set(Yt);function Ht(e){return Zt.has(e)}const Qt=new Set(Gt);function en(e){return Qt.has(e)}const tn=["(",")","[","]","{","}","'",'"',"`",",",".",";"," ","\n","\r","\t"],nn=["0","1","2","3","4","5","6","7","8","9",...tn],rn=new Set(tn),sn=new Set(nn),on=/\s/,an=[0],un=(e,t)=>{if('"'!==e[t])return an;let n='"',r=1,i=e[t+r],s=!1;for(;i&&('"'!==i||s);)r+=1,s?(s=!1,n+=i):("\\"===i&&(s=!0),n+=i),i=e[t+r];return i?(n+='"',[r+1,["String",n]]):[r,["Error",n,void 0,`Unclosed string at position ${t}`]]};function cn(e,t,n,r){return t===n.slice(r,r+t.length)?[t.length,[e,t]]:an}const ln=/\d/,fn=/[0-7]/,hn=/[0-9a-f]/i,pn=/[01]/,dn=/[\s)\]}(,;]/,yn=(e,t)=>{let n=e[t];if("'"===n){let r=1,i=e[t+r],s=!1;for(;"'"!==i||s;){if(void 0===i)return[r,["Error",n,void 0,`Unclosed quoted symbol at position ${t}`]];r+=1,s?(s=!1,n+=i):("\\"===i&&(s=!0),n+=i),i=e[t+r]}return n+="'",[r+1,["Symbol",n]]}if(!sn.has(n)){const r=t;let i=e[t+=1];for(;i&&!rn.has(i);)n+=i,i=e[t+=1];return n.endsWith(":")?[t-r-1,["Symbol",n.slice(0,-1)]]:[t-r,["Symbol",n]]}return an},gn=[(e,t)=>{let n=e[t];if(!n||!on.test(n))return an;let r=n;for(n=e[t+=1];n&&on.test(n);)r+=n,n=e[t+=1];return[r.length,["Whitespace",r]]},(e,t)=>{if("/"===e[t]&&"*"===e[t+1]){let n=2,r="/*";for(;("*"!==e[t+n]||"/"!==e[t+n+1])&&t+n+1<e.length;)r+=e[t+n],n+=1;return t+n+1>=e.length?[n,["Error",r,void 0,`Unclosed multi-line comment at position ${t}`]]:(r+="*/",n+=2,[n,["MultiLineComment",r]])}return an},(e,t)=>{if("/"===e[t]&&"/"===e[t+1]){let n=2,r="//";for(;"\n"!==e[t+n]&&t+n<e.length;)r+=e[t+n],n+=1;return[n,["SingleLineComment",r]]}return an},(e,t)=>{const n=yn(e,t);if(0===n[0]||!n[1])return an;let r=n[1][1];r=r.startsWith("'")?r.slice(1,r.length-1):r;return void 0===Lt[r]?an:[n[0],["ReservedSymbol",r]]},(e,t)=>cn("LParen","(",e,t),(e,t)=>cn("RParen",")",e,t),(e,t)=>cn("LBracket","[",e,t),(e,t)=>cn("RBracket","]",e,t),(e,t)=>cn("LBrace","{",e,t),(e,t)=>cn("RBrace","}",e,t),(e,t)=>{if('"'!==e[t]||'"'!==e[t+1]||'"'!==e[t+2])return an;let n='"""',r=3,i=e[t+r],s=e.slice(t+r,t+r+3),o=!1;for(;i&&('"""'!==s||o);)r+=1,o?(o=!1,n+=i):("\\"===i&&(o=!0),n+=i),i=e[t+r],s=e.slice(t+r,t+r+3);return i?(n+='"""',[r+3,["DocString",n]]):[r,["Error",n,void 0,`Unclosed doc string at position ${t}`]]},un,(e,t)=>{if("#"!==e[t])return an;const[n,r]=un(e,t+1);if(!r)return an;if("Error"===r[0]){return[n+1,["Error",`#${r[1]}`,void 0,`Unclosed regexp at position ${t}`]]}t+=n+1;let i=n+1,s="";for(;"g"===e[t]||"i"===e[t];)if(s+=e[t],i+=1,t+=1,s.includes(e[t]))return[i,["Error",`#${r[1]}${s}`,void 0,`Duplicated regexp option "${e[t]}"`]];return[i,["RegexpShorthand",`#${r[1]}${s}`]]},(e,t)=>{if("0"!==e[t])return an;const n=e[t+1],r="b"===n||"B"===n?"binary":"o"===n||"O"===n?"octal":"x"===n||"X"===n?"hex":null;if(null===r)return an;let i;for(i=t+2;i<e.length;i+=1){const t=e[i];if("binary"===r&&!pn.test(t))break;if("octal"===r&&!fn.test(t))break;if("hex"===r&&!hn.test(t))break}const s=i-t;if(s<=2)return an;const o=e[i];return o&&!dn.test(o)?an:[s,["BasePrefixedNumber",e.substring(t,i)]]},(e,t)=>{let n;const r="-"===e[t],i="+"===e[t],s=r||i?t+1:t;let o=!1,a=!1;for(n=s;n<e.length;n+=1){const r=e[n];if("_"===r){if(!ln.test(e[n-1])||!ln.test(e[n+1]))return n===s?an:[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]]}else if("."===r){if(n===s)return an;if(o||a)return[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]];o=!0}else if("e"===r||"E"===r){if(n===s)return an;if(a)return[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]];if("."===e[n-1]||"+"===e[n-1]||"-"===e[n-1])return[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]];"+"!==e[n+1]&&"-"!==e[n+1]||(n+=1),a=!0}else if(!ln.test(r))break}if((r||i)&&n===s)return an;const u=n-t;if(0===u)return an;const c=e[n];return c&&":"!==c&&!dn.test(c)?[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]]:[u,["Number",e.substring(t,n)]]},(e,t)=>{const n=e.slice(t,t+3);if(t+2<e.length&&en(n))return[3,["Operator",n]];const r=e.slice(t,t+2);if(t+1<e.length&&en(r))return[2,["Operator",r]];const i=e[t]??"";return en(i)?[1,["Operator",i]]:an},yn];function mn(e,t,n){const r=e.substring(0,t+1).split(/\r\n|\r|\n/),i=r[r.length-1],s=function(e,t){return e.split(/\r\n|\r|\n/)[t]}(e,r.length-1);return{code:s,position:{line:r.length,column:i.length},filePath:n}}function vn(e,t){const n=t;if(0===t){const[r,i]=((e,t)=>{if("#"===e[t]&&"!"===e[t+1]){let n=2,r="#!";for(;"\n"!==e[t+n]&&t+n<e.length;)r+=e[t+n],n+=1;return[n,["SingleLineComment",r]]}return an})(e,t);if(t+=r,r>0)return[t-n,i]}for(const r of gn){const[i,s]=r(e,t);if(t+=i,0!==i)return[t-n,s]}return[1,["Error",e[n],void 0,"Unrecognized character"]]}function bn(e,t){return"Symbol"===e?.[0]&&(!t||e[1]===t)}function wn(e,t){return function(e,t){bn(e,t)||Dn("Symbol",void 0,e)}(e,t),e}function xn(e,t){return"ReservedSymbol"===e?.[0]&&(!t||e[1]===t)}function Sn(e,t){xn(e,t)||Dn("ReservedSymbol",t,e)}function kn(e,t){return Sn(e,t),e}function En(e,t){return"Operator"===e?.[0]&&(!t||e[1]===t)}function Nn(e,t){En(e,t)||Dn("Operator",t,e)}function An(e){return"LParen"===e?.[0]}function $n(e){An(e)||Dn("LParen",void 0,e)}function In(e){return"RParen"===e?.[0]}function jn(e){In(e)||Dn("RParen",void 0,e)}function Cn(e){return"LBracket"===e?.[0]}function On(e){return function(e){Cn(e)||Dn("LBracket",void 0,e)}(e),e}function Fn(e){return"RBracket"===e?.[0]}function Mn(e){Fn(e)||Dn("RBracket",void 0,e)}function Un(e){return"LBrace"===e?.[0]}function Tn(e){return function(e){Un(e)||Dn("LBrace",void 0,e)}(e),e}function Bn(e){return"RBrace"===e?.[0]}function Pn(e){return"String"===e?.[0]}function Rn(e){return"Operator"===e?.[0]&&Ht(e[1])}function Dn(e,t,r){const i=r?`${r[0]} '${r[1]}'`:"end of input";throw new n(`Unexpected token: ${i}, expected ${e}${t?` '${t}'`:""}`,r?.[2])}function Ln(e,{removeWhiteSpace:t}){const n=e.tokens.filter(e=>!(function(e){return"SingleLineComment"===e?.[0]}(e)||function(e){return"MultiLineComment"===e?.[0]}(e)||function(e){return"Shebang"===e?.[0]}(e)||t&&function(e){return"Whitespace"===e?.[0]}(e)));return{...e,tokens:n}}const _n=Object.entries(Ke).reduce((e,[t,n])=>(e[n]=t,e),[]),Vn=Object.entries(Ot).reduce((e,[t,n])=>(e[n]=t,e),[]);function zn(e){return Qe(e)?e[1]:tt(e)?_n[e[1]]:Vn[e[1]]}const Jn=/^\$([1-9]\d?)?$/;function Wn(e,t){return t&&(e[2]=t),e}function qn(e,t){switch(e){case"^":return 12;case"*":case"/":case"%":return 11;case"+":case"-":return 10;case"<<":case">>":case">>>":return 9;case"++":return 8;case"<":case"<=":case"≤":case">":case">=":case"≥":return 7;case"==":case"!=":case"≠":return 6;case"&":case"xor":case"|":return 5;case"&&":case"||":case"??":return 4;case"|>":return 2;default:throw new n(`Unknown binary operator: ${e}`,t)}}function Yn(e,t,n){const r=Wn([s.NormalExpression,[e,t]],n);return tt(e)&&W(Xe[e[1]].arity,r[1][1].length,n),r}function Gn(e,t,n){return Wn([s.NormalExpression,[[s.NormalBuiltinSymbol,Ke.get],[e,t]]],n)}function Kn(e,t,r,i,o){const a=e[1];switch(a){case"^":case"*":case"/":case"%":case"+":case"-":case"<<":case">>":case">>>":case"++":case"<":case"<=":case"≤":case">":case">=":case"≥":case"==":case"!=":case"≠":case"&":case"xor":case"|":case"|>":return Yn(t,[r,i],o);case"&&":case"||":case"??":return Wn([s.SpecialExpression,[Ot[a],[r,i]]],o);default:throw new n(`Unknown binary operator: ${a}`,o)}}class Xn{tokenStream;parseState;constructor(e,t){this.tokenStream=e,this.parseState=t}peek(){return this.tokenStream.tokens[this.parseState.position]}peekSourceCodeInfo(){const e=this.peek();return e?e[2]:this.tokenStream.tokens.at(-1)?.[2]}peekAhead(e){return this.tokenStream.tokens[this.parseState.position+e]}advance(){this.parseState.position+=1}parse(){this.tokenStream.tokens.forEach(e=>{if("Error"===e[0])throw new n(e[3],e[2])});const e=[];for(;!this.isAtEnd();)if(e.push(this.parseExpression(0,!0)),En(this.peek(),";"))this.advance();else if(!this.isAtEnd())throw new n("Expected ;",this.peekSourceCodeInfo());return e}parseExpression(e=0,t=!1){const r=this.peek();let i;if(bn(r))switch(r[1]){case"let":return this.parseLet(r);case"if":case"unless":i=this.parseIfOrUnless(r);break;case"cond":i=this.parseCond(r);break;case"switch":i=this.parseSwitch(r);break;case"for":case"doseq":i=this.parseForOrDoseq(r);break;case"loop":i=this.parseLoop(r);break;case"try":i=this.parseTry(r)}else if(xn(r,"do"))i=this.parseBlock()[0];else if(xn(r,"export")){if(!t)throw new n("export is only allowed in module scope",r[2]);return this.parseExport(r)}i||=this.parseOperand();let o=this.peek();for(;!this.isAtExpressionEnd();){if(Rn(o)){const t=o[1],n=qn(t,o[2]);if(n<=e&&(12!==n||12!==e))break;const r=Wn(Ot[t]?[s.SpecialBuiltinSymbol,Ot[t]]:[s.NormalBuiltinSymbol,Ke[t]],o[2]);this.advance();i=Kn(o,r,i,this.parseExpression(n),o[2])}else if(bn(o)){if(!Xt(o[1]))break;const t=3;if(t<=e)break;const r=this.parseSymbol(),s=this.parseExpression(t);if(nt(r))throw new n("Special expressions are not allowed in binary functional operators",r[2]);i=Yn(r,[i,s],o[2])}else{if("?"!==o?.[1])break;{if(1<=e)break;this.advance();const t=this.parseExpression();if(!En(this.peek(),":"))throw new n("Expected :",this.peekSourceCodeInfo());this.advance();const r=this.parseExpression();i=Wn([s.SpecialExpression,[Ot.if,[i,t,r]]],i[2])}}o=this.peek()}return i}asToken(e){if(!e)throw new n("Unexpected end of input",this.peekSourceCodeInfo());return e}parseOperand(){let e=this.parseOperandPart(),t=this.peek();for(;En(t,".")||Cn(t)||An(t);)if("."===t[1]){this.advance();const r=this.asToken(this.peek());if(!bn(r))throw new n("Expected symbol",this.peekSourceCodeInfo());e=Gn(e,Wn([s.String,r[1]],r[2]),t[2]),this.advance(),t=this.peek()}else if(Cn(t)){this.advance();const r=this.parseExpression();if(!Fn(this.peek()))throw new n("Expected closing bracket",this.peekSourceCodeInfo());e=Gn(e,r,t[2]),this.advance(),t=this.peek()}else An(t)&&(e=this.parseFunctionCall(e),t=this.peek());return e}parseOperandPart(){const e=this.asToken(this.peek());if(An(e)){const e=this.parseState.position,t=this.parseLambdaFunction();if(t)return t;this.parseState.position=e,this.advance();const r=this.parseExpression();if(!In(this.peek()))throw new n("Expected closing parenthesis",this.peekSourceCodeInfo());return this.advance(),r}if(En(e)){const t=e[1];if(Ht(t))return this.advance(),Wn(void 0!==Ot[t]?[s.SpecialBuiltinSymbol,Ot[t]]:[s.NormalBuiltinSymbol,Ke[t]],e[2]);if("->"===t)return this.parseShorthandLamdaFunction();throw new n(`Illegal operator: ${t}`,e[2])}if(Un(e))return this.parseObject();if(Cn(e))return this.parseArray();const t=e[0];switch(t){case"Number":case"BasePrefixedNumber":return this.parseNumber();case"String":return this.parseString(e);case"Symbol":{const e=this.parseState.position,t=this.parseLambdaFunction();return t||(this.parseState.position=e,this.parseSymbol())}case"ReservedSymbol":return this.parseReservedSymbol();case"RegexpShorthand":return this.parseRegexpShorthand();default:throw new n(`Unknown token type: ${t}`,e[2])}}parseObject(){const e=Tn(this.peek());this.advance();const t=[];for(;!this.isAtEnd()&&!Bn(this.peek());){if(En(this.peek(),"..."))this.advance(),t.push(Wn([s.Spread,this.parseExpression()],this.peekSourceCodeInfo()));else{const e=this.peek();if(Pn(e)){const n=this.parseString(e);t.push(Wn([s.String,n[1]],e[2]))}else if(bn(e)){const n=e[1].startsWith("'")?this.stringFromQuotedSymbol(e[1]):e[1];t.push(Wn([s.String,n],e[2])),this.advance()}else{if(!Cn(e))throw new n("Expected key to be a symbol or a string",this.peekSourceCodeInfo());this.advance(),t.push(this.parseExpression()),Mn(this.peek()),this.advance()}Nn(this.peek(),":"),this.advance(),t.push(this.parseExpression())}const e=this.peek();if(!En(e,",")&&!Bn(e))throw new n("Expected comma or closing brace",this.peekSourceCodeInfo());En(e,",")&&this.advance()}var r;return Bn(r=this.peek())||Dn("RBrace",void 0,r),this.advance(),Wn([s.SpecialExpression,[Ot.object,t]],e[2])}parseArray(){const e=On(this.peek());this.advance();const t=[];for(;!this.isAtEnd()&&!Fn(this.peek());){En(this.peek(),"...")?(this.advance(),t.push(Wn([s.Spread,this.parseExpression()],this.peekSourceCodeInfo()))):t.push(this.parseExpression());const e=this.peek();if(!En(e,",")&&!Fn(e))throw new n("Expected comma or closing parenthesis",this.peekSourceCodeInfo());En(e,",")&&this.advance()}return Mn(this.peek()),this.advance(),Wn([s.SpecialExpression,[Ot.array,t]],e[2])}parseFunctionCall(e){this.advance();const t=[];for(;!this.isAtEnd()&&!In(this.peek());){En(this.peek(),"...")?(this.advance(),t.push(Wn([s.Spread,this.parseExpression()],this.peekSourceCodeInfo()))):t.push(this.parseExpression());const e=this.peek();if(!En(e,",")&&!In(e))throw new n("Expected comma or closing parenthesis",this.peek()?.[2]);En(e,",")&&this.advance()}if(!In(this.peek()))throw new n("Expected closing parenthesis",this.peekSourceCodeInfo());if(this.advance(),!nt(e))return tt(e)||tt(e)?Yn(e,t,e[2]):Wn([s.NormalExpression,[e,t]],e[2]);{const r=e[1];switch(W(Mt.specialExpressions[r].arity,t.length,e[2]),r){case Ot["||"]:case Ot["&&"]:case Ot.recur:case Ot.array:case Ot.object:case Ot["??"]:return Wn([s.SpecialExpression,[r,t]],e[2]);case Ot["defined?"]:{const[n]=t;return Wn([s.SpecialExpression,[r,n]],e[2])}case Ot.throw:{const[n]=t;return Wn([s.SpecialExpression,[r,n]],e[2])}case Ot["0_lambda"]:case Ot["0_def"]:throw new n(`${r} is not allowed`,e[2]);default:throw new n(`Unknown special expression: ${r}`,e[2])}}}parseLambdaFunction(){const e=this.asToken(this.peek());if(An(e)&&bn(this.peekAhead(1))&&En(this.peekAhead(2),"->"))return null;try{const t=this.parseFunctionArguments();if(!En(this.peek(),"->"))return null;let n;this.advance();let r="";if(xn(this.peek(),"do")){const e=this.parseBlock(!0);r=e[1],n=e[0][1][1]}else n=[this.parseExpression()];return Wn([s.SpecialExpression,[Ot["0_lambda"],[t,n],r]],e[2])}catch{return null}}parseFunctionArguments(){const e=this.peek();if(bn(e))return[Wn([ot,[this.parseSymbol(),void 0]],e[2])];$n(e),this.advance();let t=!1,r=!1;const i=[];for(;!this.isAtEnd()&&!In(this.peek())&&!bn(this.peek(),"let");){if(t)throw new n("Rest argument must be last",this.peekSourceCodeInfo());const e=this.parseBindingTarget();if(void 0!==e[1][1]&&(r=!0),e[0]===at&&(t=!0),r&&!e[1][1])throw new n("Default arguments must be last",this.peekSourceCodeInfo());if(i.push(e),!En(this.peek(),",")&&!In(this.peek())&&!bn(this.peek(),"let"))throw new n("Expected comma or closing parenthesis",this.peekSourceCodeInfo());En(this.peek(),",")&&this.advance()}if(!In(this.peek()))throw new n("Expected closing parenthesis",this.peekSourceCodeInfo());return this.advance(),i}parseShorthandLamdaFunction(){const e=this.asToken(this.peek());this.advance();const t=this.parseState.position;let r,i="";if(xn(this.peek(),"do")){const e=this.parseBlock(!0);i=e[1],r=e[0][1][1]}else r=[this.parseExpression()];const o=this.parseState.position-1;let a=0,u="NOT_SET";for(let r=t;r<=o;r+=1){const t=this.tokenStream.tokens[r];if(bn(t)){const r=Jn.exec(t[1]);if(r){const t=r[1]??"1";if("1"===t){if(!r[1]&&"WITH_1"===u||r[1]&&"NAKED"===u)throw new n("Please make up your mind, either use $ or $1",e[2]);u=r[1]?"WITH_1":"NAKED"}if(a=Math.max(a,Number(t)),a>20)throw new n("Can't specify more than 20 arguments",e[2])}}}const c=[];for(let t=1;t<=a;t+=1)1===t&&"NAKED"===u?c.push(Wn([ot,[[s.UserDefinedSymbol,"$"],void 0]],e[2])):c.push(Wn([ot,[[s.UserDefinedSymbol,`$${t}`],void 0]],e[2]));return Wn([s.SpecialExpression,[Ot["0_lambda"],[c,r],i]],e[2])}parseOptionalDefaulValue(){if(En(this.peek(),"="))return this.advance(),this.parseExpression()}parseBindingTarget({requireDefaultValue:e,noRest:t}={}){const r=this.peek();if(bn(r)){const t=this.parseSymbol();if(!Qe(t))throw new n("Expected user defined symbol",r[2]);const i=this.parseOptionalDefaulValue();if(e&&!i)throw new n("Expected assignment",this.peekSourceCodeInfo());return Wn([ot,[t,i]],r[2])}if(En(r,"...")){if(t)throw new n("Rest element not allowed",r[2]);this.advance();const e=et(this.parseSymbol());if(En(this.peek(),"="))throw new n("Rest argument can not have default value",this.peekSourceCodeInfo());return Wn([at,[e[1],void 0]],r[2])}if(Cn(r)){this.advance();const t=[];let i=this.asToken(this.peek()),s=!1;for(;!Fn(i);){if(s)throw new n("Rest argument must be last",i[2]);if(En(i,",")){t.push(null),this.advance(),i=this.asToken(this.peek());continue}const e=this.parseBindingTarget();e[0]===at&&(s=!0),t.push(e),i=this.asToken(this.peek()),Fn(i)||(Nn(i,","),this.advance()),i=this.asToken(this.peek())}this.advance();const o=this.parseOptionalDefaulValue();if(e&&!o)throw new n("Expected assignment",this.peekSourceCodeInfo());return Wn([ct,[t,o]],r[2])}if(Un(r)){this.advance();const t={};let i=this.asToken(this.peek()),s=!1;for(;!Bn(i);){if(s)throw new n("Rest argument must be last",i[2]);En(i,"...")&&(s=!0,this.advance());const e=this.parseSymbol(),o=zn(e);if(i=this.asToken(this.peek()),xn(i,"as")){if(s)throw new n("Rest argument can not have alias",i[2]);this.advance();const e=et(this.parseSymbol());if(t[e[1]])throw new n(`Duplicate binding name: ${e}`,i[2]);t[o]=Wn([ot,[e,this.parseOptionalDefaulValue()]],r[2])}else if(Bn(i)||En(i,",")||En(i,"=")){const o=et(e,e[2]);if(t[o[1]])throw new n(`Duplicate binding name: ${o}`,i[2]);if(s&&En(this.peek(),"="))throw new n("Rest argument can not have default value",this.peekSourceCodeInfo());t[o[1]]=Wn(s?[at,[o[1],this.parseOptionalDefaulValue()]]:[ot,[o,this.parseOptionalDefaulValue()]],r[2])}else if(En(i,":")){if(this.advance(),i=this.asToken(this.peek()),!Un(i)&&!Cn(i))throw new n("Expected object or array",i[2]);t[o]=this.parseBindingTarget()}Bn(this.peek())||(Nn(this.peek(),","),this.advance()),i=this.asToken(this.peek())}this.advance(),i=this.asToken(this.peek());const o=this.parseOptionalDefaulValue();if(e&&!o)throw new n("Expected assignment",i[2]);return Wn([ut,[t,o]],r[2])}throw new n("Expected symbol",this.peekSourceCodeInfo())}parseLet(e){this.advance();const t=this.parseBindingTarget({requireDefaultValue:!0,noRest:!0}),n=t[1][1];t[1][1]=void 0;const r=Wn([s.Binding,[t,n]],e[2]);return Wn([s.SpecialExpression,[Ot.let,r]],e[2])}parseBlock(e=!1){const t=kn(this.peek(),"do");this.advance();let r="";e&&function(e){return"DocString"===e?.[0]}(this.peek())&&(r=this.parseDocString());const i=[];for(;!this.isAtEnd()&&!xn(this.peek(),"end");)if(i.push(this.parseExpression()),En(this.peek(),";"))this.advance();else if(!xn(this.peek(),"end"))throw new n("Expected end",this.peekSourceCodeInfo());return Sn(this.peek(),"end"),this.advance(),[Wn([s.SpecialExpression,[Ot.block,i]],t[2]),r]}parseImplicitBlock(e){const t=[];for(;!this.isAtEnd()&&!this.isImplicitBlockEnd(e);)En(this.peek(),";")?this.advance():t.push(this.parseExpression());if(this.assertImplicitBlockEnd(e),0===t.length)throw new n("Expected expression",this.peekSourceCodeInfo());return 1===t.length?t[0]:Wn([s.SpecialExpression,[Ot.block,t]],this.peekSourceCodeInfo())}assertImplicitBlockEnd(e){if(!this.isImplicitBlockEnd(e))throw new n(`Expected ${e.map(e=>e[1]).join(" or ")}`,this.peekSourceCodeInfo())}isImplicitBlockEnd(e){for(const t of e)if(xn(this.peek(),t))return!0;return!1}parseLoop(e){this.advance(),$n(this.peek()),this.advance();const t=[];let r=this.peek();for(;!this.isAtEnd()&&!In(r);){const e=this.parseBindingTarget({requireDefaultValue:!0,noRest:!0}),n=e[1][1];e[1][1]=void 0,t.push(Wn([s.Binding,[e,n]],e[2])),En(this.peek(),",")&&this.advance(),r=this.peek()}if(0===t.length)throw new n("Expected binding",this.peekSourceCodeInfo());jn(r),this.advance(),Nn(this.peek(),"->"),this.advance();const i=this.parseExpression();return Wn([s.SpecialExpression,[Ot.loop,t,i]],e[2])}parseTry(e){this.advance();const t=this.parseImplicitBlock(["catch"]);let n;this.advance(),An(this.peek())&&(this.advance(),n=this.parseSymbol(),jn(this.peek()),this.advance());const r=this.parseImplicitBlock(["end"]);return this.advance(),Wn([s.SpecialExpression,[Ot.try,t,n,r]],e[2])}parseForOrDoseq(e){const t="doseq"===e[1];this.advance(),$n(this.peek()),this.advance();const r=[];for(;!this.isAtEnd()&&!In(this.peek());){const e=this.parseForLoopBinding(),t=r.flatMap(e=>Object.keys(pt(e[0][1][0]))),i=pt(e[0][1][0]);if(Object.keys(i).some(e=>t.includes(e)))throw new n("Duplicate binding",e[0][2]);r.push(e),En(this.peek(),",")&&this.advance()}jn(this.peek()),this.advance(),Nn(this.peek(),"->"),this.advance();const i=this.parseExpression();return Wn(t?[s.SpecialExpression,[Ot.doseq,r,i]]:[s.SpecialExpression,[Ot.for,r,i]],e[2])}parseForLoopBinding(){const e=this.parseBinding(),t=[];let r=this.asToken(this.peek());this.assertInternalLoopBindingDelimiter(r,["let","when","while"]);const i=[];if("let"===r[1])for(t.push("&let");bn(r,"let");){const e=this.parseLet(r),t=i.flatMap(e=>Object.keys(pt(e[1][0])));if(Object.keys(pt(e[1][1][1][0])).some(e=>t.includes(e)))throw new n("Duplicate binding",e[1][1][2]);i.push(e[1][1]),r=this.asToken(this.peek()),this.assertInternalLoopBindingDelimiter(r,["let","when","while"]),r=this.asToken(this.peek())}let s,o;for(;xn(r,"when")||xn(r,"while");){this.advance(),"when"===r[1]?(t.push("&when"),s=this.parseExpression()):(t.push("&while"),o=this.parseExpression()),r=this.asToken(this.peek());const e=t.includes("&when")&&t.includes("&while")?[]:t.includes("&when")?["while"]:["when"];this.assertInternalLoopBindingDelimiter(r,e),r=this.asToken(this.peek())}return this.assertInternalLoopBindingDelimiter(r,[]),[e,i,s,o]}assertInternalLoopBindingDelimiter(e,t){if(!this.isInternalLoopBindingDelimiter(e,t)){const r=`${[...t,","].map(e=>`"${e}"`).join(", ")} or ")"`;throw new n(`Expected symbol ${r}`,e[2])}}isInternalLoopBindingDelimiter(e,t){if(En(e,",")||In(e))return!0;for(const n of t){if("let"===n&&bn(e,"let"))return!0;if(["when","while"].includes(n)&&xn(e,n))return!0}return!1}parseBinding(){const e=wn(this.peek()),t=et(this.parseSymbol());Sn(this.peek(),"in"),this.advance();const n=this.parseExpression();return Wn([s.Binding,[Wn([ot,[t,void 0]],e[2]),n]],e[2])}parseIfOrUnless(e){const t="unless"===e[1];this.advance();const n=this.parseExpression();Sn(this.peek(),"then"),this.advance();const r=this.parseImplicitBlock(["else","end"]);let i;return xn(this.peek(),"else")&&(this.advance(),i=this.parseImplicitBlock(["end"])),this.advance(),Wn(t?[s.SpecialExpression,[Ot.unless,[n,r,i]]]:[s.SpecialExpression,[Ot.if,[n,r,i]]],e[2])}parseCond(e){this.advance();const t=[];for(;!this.isAtEnd()&&!xn(this.peek(),"end");){Sn(this.peek(),"case"),this.advance();const e=this.parseExpression();Sn(this.peek(),"then"),this.advance();const n=this.parseImplicitBlock(["case","end"]);if(t.push([e,n]),xn(this.peek(),"end"))break}return Sn(this.peek()),this.advance(),Wn([s.SpecialExpression,[Ot.cond,t]],e[2])}parseSwitch(e){this.advance();const t=this.parseExpression(),n=[];for(;!this.isAtEnd()&&!xn(this.peek(),"end");){Sn(this.peek(),"case"),this.advance();const e=this.parseExpression();Sn(this.peek(),"then"),this.advance();const t=this.parseImplicitBlock(["case","end"]);if(n.push([e,t]),xn(this.peek(),"end"))break}return Sn(this.peek(),"end"),this.advance(),Wn([s.SpecialExpression,[Ot.switch,t,n]],e[2])}isAtEnd(){return this.parseState.position>=this.tokenStream.tokens.length}isAtExpressionEnd(){if(this.isAtEnd())return!0;const e=this.peek();return En(e)?[";",",",":"].includes(e[1]):!!xn(e)&&["else","when","while","case","catch","let","then","end","do"].includes(e[1])}parseExport(e){this.advance();const t=this.peek();if(bn(t,"let")){const n=this.parseLet(wn(t));return Wn([s.SpecialExpression,[Ot["0_def"],n[1][1]]],e[2])}throw new n("Expected let",this.peekSourceCodeInfo())}stringToSymbolNode(e,t){return void 0!==Ot[e]&&"fn"!==e&&"def"!==e&&"defn"!==e?Wn([s.SpecialBuiltinSymbol,Ot[e]],t):void 0!==Ke[e]?Wn([s.NormalBuiltinSymbol,Ke[e]],t):Wn([s.UserDefinedSymbol,e],t)}stringFromQuotedSymbol(e){return e.substring(1,e.length-1).replace(/(\\{2})|(\\')|\\(.)/g,(e,t,n,r)=>t?"\\":n?"'":`\\${r}`)}parseSymbol(){const e=this.asToken(this.peek());if(this.advance(),!bn(e))throw new n(`Expected symbol token, got ${e[0]}`,e[2]);return"'"===e[1][0]?this.stringToSymbolNode(this.stringFromQuotedSymbol(e[1]),e[2]):this.stringToSymbolNode(e[1],e[2])}parseReservedSymbol(){const e=kn(this.peek());this.advance();const t=e[1];return function(e){return e in Dt}(t)?Wn([s.Number,Dt[t]],e[2]):Wn([s.ReservedSymbol,e[1]],e[2])}parseNumber(){const e=this.asToken(this.peek());this.advance();const t=e[1],n="-"===t[0],r=(n?t.substring(1):t).replace(/_/g,"");return Wn([s.Number,n?-Number(r):Number(r)],e[2])}parseDocString(){const e=this.asToken(this.peek()),t=e[2]?["String",e[1].slice(2,-2),e[2]]:["String",e[1].slice(2,-2)];return le(this.parseString(t)[1])}parseString(e){this.advance();const t=e[1].substring(1,e[1].length-1).replace(/(\\{2})|(\\")|(\\n)|(\\t)|(\\r)|(\\b)|(\\f)|\\(.)/g,(e,t,n,r,i,s,o,a,u)=>t?"\\":r?"\n":i?"\t":s?"\r":o?"\b":a?"\f":n?'"':u);return Wn([s.String,t],e[2])}parseRegexpShorthand(){const e=this.asToken(this.peek());this.advance();const t=e[1].lastIndexOf('"'),n=e[1].substring(2,t),r=e[1].substring(t+1),i=Wn([s.String,n],e[2]),o=Wn([s.String,r],e[2]);return Wn([s.NormalExpression,[Wn([s.NormalBuiltinSymbol,Ke.regexp],e[2]),[i,o]]],e[2])}}const Zn=new Set([...Ut,...Tt,...Object.keys(Lt)]);class Hn{originalProgram;originalPosition;prefixProgram="";suffixProgram="";searchString="";suggestions=[];suggestionIndex=null;constructor(e,t,n,r){this.originalProgram=e,this.originalPosition=t;const i=this.originalProgram.slice(0,this.originalPosition),s=n.tokenize(i).tokens.at(-1);s&&"Error"!==s[0]&&(this.searchString=s[1],this.prefixProgram=this.originalProgram.slice(0,this.originalPosition-this.searchString.length),this.suffixProgram=this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.suggestions=this.generateSuggestions(r))}getNextSuggestion(){return this.getAutoCompleteSuggestionResult(this.getNextSuggestionSymbol())}getPreviousSuggestion(){return this.getAutoCompleteSuggestionResult(this.getPreviousSuggestionSymbol())}getAutoCompleteSuggestionResult(e){return null===e?null:{program:this.prefixProgram+e+this.suffixProgram,position:this.prefixProgram.length+e.length}}getNextSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=0:(this.suggestionIndex+=1,this.suggestionIndex>=this.suggestions.length&&(this.suggestionIndex=0)),this.suggestions[this.suggestionIndex])}getPreviousSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=this.suggestions.length-1:(this.suggestionIndex-=1,this.suggestionIndex<0&&(this.suggestionIndex=this.suggestions.length-1)),this.suggestions[this.suggestionIndex])}getSuggestions(){return[...this.suggestions]}getSearchString(){return this.searchString}generateSuggestions(e){const t=new Set(["0_def","0_defn","0_lambda"]),n=this.generateWithPredicate(e,e=>!t.has(e)&&e.startsWith(this.searchString));n.forEach(e=>t.add(e));const r=this.generateWithPredicate(e,e=>!t.has(e)&&e.toLowerCase().startsWith(this.searchString.toLowerCase()));r.forEach(e=>t.add(e));const i=this.generateWithPredicate(e,e=>!t.has(e)&&e.includes(this.searchString));i.forEach(e=>t.add(e));const s=this.generateWithPredicate(e,e=>!t.has(e)&&e.includes(this.searchString.toLowerCase()));return s.forEach(e=>t.add(e)),[...n,...r,...i,...s]}generateWithPredicate(e,t){const n=new Set;return Zn.forEach(e=>{t(e)&&n.add(e)}),Object.keys(e.globalContext??{}).filter(t).forEach(e=>n.add(e)),e.contexts?.forEach(e=>{Object.keys(e).filter(t).forEach(e=>n.add(e))}),Object.keys(e.jsFunctions??{}).filter(t).forEach(e=>n.add(e)),Object.keys(e.values??{}).filter(t).forEach(e=>n.add(e)),[...n].sort((e,t)=>e.localeCompare(t))}}class Qn{cache={};firstEntry=void 0;lastEntry=void 0;_size=0;maxSize;constructor(e){if(this.maxSize=null===e?null:re(e),"number"==typeof this.maxSize&&this.maxSize<1)throw new Error(`1 is the minimum maxSize, got ${p(e)}`)}getContent(){return Object.entries(this.cache).reduce((e,[t,n])=>(e[t]=n.value,e),{})}get size(){return this._size}get(e){return this.cache[e]?.value}clear(){this.cache={},this.firstEntry=void 0,this.lastEntry=void 0,this._size=0}has(e){return!!this.cache[e]}set(e,t){if(this.has(e))throw new Error(`AstCache - key already present: ${e}`);const n={value:t,nextEntry:void 0,key:e};for(this.cache[e]=n,this._size+=1,this.lastEntry&&(this.lastEntry.nextEntry=n),this.lastEntry=n,this.firstEntry||(this.firstEntry=this.lastEntry);null!==this.maxSize&&this.size>this.maxSize;)this.dropFirstEntry()}dropFirstEntry(){const e=this.firstEntry;delete this.cache[e.key],this._size-=1,this.firstEntry=e.nextEntry}}exports.Lits=class{astCache;astCacheSize;debug;modules;constructor(e={}){if(this.debug=e.debug??!1,this.astCacheSize=e.astCacheSize??null,this.astCacheSize){this.astCache=new Qn(this.astCacheSize);const t=e.initialCache??{};for(const e of Object.keys(t))this.astCache.set(e,t[e])}else this.astCache=null;const t=e.modules??[];this.modules=new Map(t.map(e=>[e.name,e]))}getRuntimeInfo(){return{astCacheSize:this.astCacheSize,astCache:this.astCache,debug:this.debug}}run(e,t={}){const n=this.generateAst(e,t);return this.evaluate(n,t)}context(e,t={}){const n="string"==typeof e?this.generateAst(e,t):e,r=qt(t,this.modules);return Vt(n,r),r.globalContext}getUndefinedSymbols(e,t={}){const n="string"==typeof e?this.generateAst(e,t):e,r=qt(t,this.modules);return Bt(n,r,Mt,zt)}tokenize(e,t={}){const n=function(e,t,n){let r=0;const i={tokens:[],filePath:n,hasDebugData:t};for(;r<e.length;){const s=t?mn(e,r,n):void 0,o=vn(e,r),[a,u]=o;r+=a,u&&(s&&(u[2]=s),i.tokens.push(u))}return i}(e,this.debug,t.filePath);return t.minify?Ln(n,{removeWhiteSpace:!1}):n}parse(e){const t={body:[],hasDebugData:(e=Ln(e,{removeWhiteSpace:!0})).hasDebugData};return t.body=new Xn(e,{position:0}).parse(),t}evaluate(e,t){return Vt(e,qt(t,this.modules))}transformSymbols(e,t){return function(e,t){return{...e,tokens:e.tokens.map(e=>bn(e)?[e[0],t(e[1])]:e)}}(e,t)}untokenize(e){return function(e){return e.tokens.reduce((e,t)=>`${e}${t[1]}`,"")}(e)}apply(e,t,n={}){const r="FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59",i=this.generateApplyFunctionCall(r,t),s=this.generateAst(i,n),o=t.reduce((e,t,n)=>(e[`${r}_${n}`]=t,e),{[r]:e});return n.values={...n.values,...o},this.evaluate(s,n)}generateApplyFunctionCall(e,t){const n=t.map((t,n)=>`${e}_${n}`).join(", ");return`${e}(${n})`}generateAst(e,t){if(this.astCache){const t=this.astCache.get(e);if(t)return t}const n=this.tokenize(e,{filePath:t.filePath}),r=this.parse(n);return this.astCache?.set(e,r),r}getAutoCompleter(e,t,n={}){return new Hn(e,t,this,n)}},exports.asLitsFunction=function(e,t){return w(e,t),e},exports.asNativeJsFunction=function(e,t){return E(e,t),e},exports.asUserDefinedFunction=function(e,t){return S(e,t),e},exports.assertLitsFunction=w,exports.assertNativeJsFunction=E,exports.assertUserDefinedFunction=S,exports.isBuiltinFunction=function(e){return v(e)&&"Builtin"===e.functionType},exports.isGrid=Ie,exports.isLitsError=function(e){return e instanceof n},exports.isLitsFunction=b,exports.isMatrix=je,exports.isNativeJsFunction=k,exports.isUserDefinedFunction=x,exports.isVector=$e,exports.normalExpressionKeys=Ut,exports.specialExpressionKeys=Tt;
|
|
1
|
+
"use strict";function e(e){if(!e.position||!e.code)return"";const t=e.position.column-1,n=e.code.length-t-1;return`${" ".repeat(Math.max(t,0))}^${" ".repeat(Math.max(n,0))}`}class t extends Error{params;constructor(e){super(`recur, params: ${e}`),Object.setPrototypeOf(this,t.prototype),this.name="RecurSignal",this.params=e}}class n extends Error{sourceCodeInfo;shortMessage;constructor(t,r){const i=t instanceof Error?t.message:`${t}`;super(function(t,n){if(!n)return t;const r=`${n.position.line}:${n.position.column}`;return`${t}${n.filePath?`\n${n.filePath}:${r}`:`\nLocation ${r}`}\n${n.code}\n${e(n)}`}(i,r)),this.shortMessage=i,this.sourceCodeInfo=r,Object.setPrototypeOf(this,n.prototype),this.name="LitsError"}getCodeMarker(){return this.sourceCodeInfo&&e(this.sourceCodeInfo)}}class r extends n{userMessage;constructor(e,t){super(e,t),this.userMessage=e,Object.setPrototypeOf(this,r.prototype),this.name="UserDefinedError"}}class i extends n{symbol;constructor(e,t){super(`Undefined symbol '${e}'.`,t),this.symbol=e,Object.setPrototypeOf(this,i.prototype),this.name="UndefinedSymbolError"}}const s={Number:1,String:2,NormalExpression:3,SpecialExpression:4,UserDefinedSymbol:5,NormalBuiltinSymbol:6,SpecialBuiltinSymbol:7,ReservedSymbol:8,Binding:9,Spread:10},o=new Set(Object.values(s));function a(e){return Object.keys(s).find(t=>s[t]===e)}const u=new Set(["UserDefined","Partial","Comp","Constantly","Juxt","Complement","EveryPred","SomePred","Fnull","Builtin","SpecialBuiltin","NativeJsFunction","Module"]);const c="^^fn^^",l="^^re^^";function f(e){return null!==e&&"object"==typeof e&&(c in e&&"functionType"in e&&function(e){return"string"==typeof e&&u.has(e)}(e.functionType))}function h(e){return!(!Array.isArray(e)||e.length<2)&&function(e){return"number"==typeof e&&o.has(e)}(e[0])}function p(e){return f(e)?`<function ${e.name||"λ"}>`:h(e)?`${a(e[0])}-node`:null===e?"null":"object"==typeof e&&e instanceof RegExp?`${e}`:"object"==typeof e&&e instanceof Error?e.toString():JSON.stringify(e)}function d(e,t){return e?.sourceCodeInfo??t}function g(e,t,r){return new n(`Expected ${e}, got ${p(t)}.`,d(t,r))}function m(e,t){return y(e,t),e}function y(e,t){if(!function(e){return void 0!==e}(e))throw new n("Unexpected undefined",d(e,t))}function v(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function b(e){return null!==e&&"object"==typeof e&&!!e[c]}function w(e,t){if(!b(e))throw g("LitsFunction",e,t)}function S(e){return b(e)&&"UserDefined"===e.functionType}function x(e,t){if(!S(e))throw g("NativeJsFunction",e,t)}function k(e){return b(e)&&"NativeJsFunction"===e.functionType}function E(e,t){if(!k(e))throw g("NativeJsFunction",e,t)}function N(e,t={}){return"number"==typeof e&&(!Number.isNaN(e)&&(!(t.integer&&!Number.isInteger(e))&&(!(t.finite&&!Number.isFinite(e))&&((!t.zero||0===e)&&((!t.nonZero||0!==e)&&(!(t.positive&&e<=0)&&(!(t.negative&&e>=0)&&(!(t.nonPositive&&e>0)&&(!(t.nonNegative&&e<0)&&(!("number"==typeof t.gt&&e<=t.gt)&&(!("number"==typeof t.gte&&e<t.gte)&&(!("number"==typeof t.lt&&e>=t.lt)&&!("number"==typeof t.lte&&e>t.lte)))))))))))))}function $(e,t,r={}){if(!N(e,r))throw new n(`Expected ${function(e){if(e.zero)return"zero";const t=function(e){return e.positive?"positive":e.negative?"negative":e.nonNegative?"non negative":e.nonPositive?"non positive":e.nonZero?"non zero":""}(e),n=e.integer?"integer":"number",r=e.finite?"finite":"",i=function(e){return"number"!=typeof e.gt&&"number"!=typeof e.gte||"number"!=typeof e.lt&&"number"!=typeof e.lte?"number"==typeof e.gt||"number"==typeof e.gte?"number"==typeof e.gt?`n > ${e.gt}`:`n >= ${e.gte}`:"number"==typeof e.lt||"number"==typeof e.lte?"number"==typeof e.lt?`n < ${e.lt}`:`n <= ${e.lte}`:"":`${"number"==typeof e.gt?`${e.gt} < n `:`${e.gte} <= n `}${"number"==typeof e.lt?`< ${e.lt}`:`<= ${e.lte}`}`}(e);return[t,r,n,i].filter(e=>!!e).join(" ")}(r)}, got ${p(e)}.`,d(e,t))}function I(e){return void 0!==e}function A(e,t){return j(e,t),e}function j(e,t){if(!I(e))throw g("not undefined",e,t)}function O(e){return Array.isArray(e)||"string"==typeof e}function C(e,t){if(!O(e))throw g("string or array",e,t)}function F(e){return!(null===e||"object"!=typeof e||Array.isArray(e)||e instanceof RegExp||b(e)||M(e))}function U(e,t){if(!F(e))throw g("object",e,t)}function T(e){return O(e)||F(e)}function B(e,t){return P(e,t),e}function P(e,t){if(!T(e))throw g("string, array or object",e,t)}function M(e){return null!==e&&"object"==typeof e&&!!e[l]}function D(e,t){if(!function(e){return M(e)||"string"==typeof e}(e))throw g("string or RegularExpression",e,t)}function R(e,t){return _(e,t),e}function _(e,t){if(!function(e){return"number"==typeof e||!!T(e)||!!b(e)}(e))throw g("FunctionLike",e,t)}function L(e,t){const{min:n}=e;return!("number"==typeof n&&t<n)}function V(e,t,r){const{min:i,max:s}=e;if("number"==typeof i&&t<i)throw new n(`Wrong number of arguments, expected at least ${i}, got ${p(t)}.`,r);if("number"==typeof s&&t>s)throw new n(`Wrong number of arguments, expected at most ${s}, got ${p(t)}.`,r)}function z(e){return{min:e,max:e}}const J={"<<":{evaluate:([e,t],n)=>($(e,n,{integer:!0}),$(t,n,{integer:!0,nonNegative:!0}),e<<t),arity:z(2)},">>":{evaluate:([e,t],n)=>($(e,n,{integer:!0}),$(t,n,{integer:!0,nonNegative:!0}),e>>t),arity:z(2)},">>>":{evaluate:([e,t],n)=>($(e,n,{integer:!0}),$(t,n,{integer:!0,nonNegative:!0}),e>>>t),arity:z(2)},"&":{evaluate:([e,...t],n)=>($(e,n,{integer:!0}),t.reduce((e,t)=>($(t,n,{integer:!0}),e&t),e)),arity:{min:2}},"|":{evaluate:([e,...t],n)=>($(e,n,{integer:!0}),t.reduce((e,t)=>($(t,n,{integer:!0}),e|t),e)),arity:{min:2}},xor:{evaluate:([e,...t],n)=>($(e,n,{integer:!0}),t.reduce((e,t)=>($(t,n,{integer:!0}),e^t),e)),arity:{min:2}}};function W(e,t={}){return"string"==typeof e&&((!t.nonEmpty||0!==e.length)&&(!t.char||1===e.length))}function q(e,t,n={}){if(!W(e,n))throw g(""+(n.nonEmpty?"non empty string":n.char?"character":"string"),e,t)}function Y(e,t,n={}){return q(e,t,n),e}function G(e){return"string"==typeof e||"number"==typeof e}function K(e,t){return X(e,t),e}function X(e,t){if(!G(e))throw g("string or number",e,t)}function Z(e,t){return!!T(e)&&("string"==typeof e||Array.isArray(e)?!!N(t,{integer:!0})&&(t>=0&&t<e.length):!!Object.getOwnPropertyDescriptor(e,t))}function H(e,t,r){if(X(e,r),X(t,r),"string"==typeof e&&"string"==typeof t)return e<t?-1:e>t?1:0;if("number"==typeof e&&"number"==typeof t)return Math.sign(e-t);throw new n(`Cannot compare values of different types: ${typeof e} and ${typeof t}`,r)}function Q(e,t,n){if(e===t)return!0;if("number"==typeof e&&"number"==typeof t)return function(e,t,n=re){if(e===t)return!0;const r=Math.abs(e-t);if(0===e||0===t||r<n)return r<n;const i=Math.abs(e),s=Math.abs(t);return r/(i+s)<n}(e,t);if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(!Q(A(e[r],n),A(t[r],n),n))return!1;return!0}if(M(e)&&M(t))return e.s===t.s&&e.f===t.f;if(v(e)&&v(t)){const r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let i=0;i<r.length;i+=1){const s=Y(r[i],n);if(!Q(e[s],t[s],n))return!1}return!0}return!1}function ee(e){return e??null}function te(...e){const t=new Set;for(const n of e)n.forEach(e=>t.add(e));return t}function ne(e,t){t.forEach(t=>e.add(t))}const re=1e-10;function ie(e,t=0){const n=e.split("\n");for(;n[0]?.match(/^\s*$/);)n.shift();for(;n[n.length-1]?.match(/^\s*$/);)n.pop();const r=n.reduce((e,t)=>{if(t.match(/^\s*$/))return e;const n=t.match(/^\s*/)[0].length;return Math.min(e,n)},1/0);return n.map(e=>" ".repeat(t)+e.slice(r)).join("\n").trimEnd()}function se(e,t){if(!Array.isArray(e))throw g("array",e,t)}function oe(e,t){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}(e))throw g("array of strings",e,t)}function ae(e,t){if(!function(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e&&1===e.length)}(e))throw g("array of strings",e,t)}const ue={filter:{evaluate:([e,t],n,r,{executeFunction:i})=>{if(P(e,n),_(t,n),Array.isArray(e)){return e.filter(e=>i(t,[e],r,n))}return W(e)?e.split("").filter(e=>i(t,[e],r,n)).join(""):Object.entries(e).filter(([,e])=>i(t,[e],r,n)).reduce((e,[t,n])=>(e[t]=n,e),{})},arity:z(2)},map:{evaluate:(e,t,r,{executeFunction:i})=>{const s=R(e.at(-1),t);if(F(e[0]))return function({colls:e,contextStack:t,executeFunction:r,fn:i,sourceCodeInfo:s}){U(e[0],s);const o=Object.keys(e[0]),a={};return e.forEach(e=>{U(e,s);const t=Object.keys(e);if(t.length!==o.length)throw new n(`All objects must have the same keys. Expected: ${o.join(", ")}. Found: ${t.join(", ")}`,s);if(!t.every(e=>o.includes(e)))throw new n(`All objects must have the same keys. Expected: ${o.join(", ")}. Found: ${t.join(", ")}`,s);Object.entries(e).forEach(([e,t])=>{a[e]||(a[e]=[]),a[e].push(t)})}),o.reduce((e,n)=>(e[n]=r(i,a[n],t,s),e),{})}({colls:e.slice(0,-1),fn:s,sourceCodeInfo:t,contextStack:r,executeFunction:i});const o=e.slice(0,-1);C(o[0],t);const a="string"==typeof o[0];let u=o[0].length;o.slice(1).forEach(e=>{a?q(e,t):se(e,t),u=Math.min(u,e.length)});const c=[];for(let e=0;e<u;e++)c.push(o.map(t=>t[e]));const l=c.map(e=>i(s,e,r,t));return a?(l.forEach(e=>q(e,t)),l.join("")):l},arity:{min:2}},reduce:{evaluate:([e,t,n],r,i,{executeFunction:s})=>(P(e,r),_(t,r),j(n,r),"string"==typeof e?(q(n,r),0===e.length?n:e.split("").reduce((e,n)=>s(t,[e,n],i,r),n)):Array.isArray(e)?0===e.length?n:e.reduce((e,n)=>s(t,[e,n],i,r),n):0===Object.keys(e).length?n:Object.entries(e).reduce((e,[,n])=>s(t,[e,n],i,r),n)),arity:z(3)},get:{evaluate:(e,t)=>{const[n,r]=e,i=ee(e[2]);if(X(r,t),null===n)return i;P(n,t);const s=function(e,t){if(F(e)){if("string"==typeof t&&Z(e,t))return ee(e[t])}else if(N(t,{nonNegative:!0,integer:!0})&&t>=0&&t<e.length)return ee(e[t])}(n,r);return void 0===s?i:s},arity:{min:2,max:3}},count:{evaluate:([e],t)=>null===e?0:"string"==typeof e?e.length:(P(e,t),Array.isArray(e)?e.length:Object.keys(e).length),arity:z(1)},"contains?":{evaluate:([e,t],n)=>null!==e&&(P(e,n),W(e)?(q(t,n),e.includes(t)):O(e)?(j(t,n),!!e.find(e=>Q(A(e),t,n))):(q(t,n),t in e)),arity:z(2)},assoc:{evaluate:([e,t,n],r)=>(P(e,r),X(t,r),j(n,r),function(e,t,n,r){if(P(e,r),X(t,r),Array.isArray(e)||"string"==typeof e){if($(t,r,{integer:!0}),$(t,r,{gte:0}),$(t,r,{lte:e.length}),"string"==typeof e)return q(n,r,{char:!0}),`${e.slice(0,t)}${n}${e.slice(t+1)}`;const i=[...e];return i[t]=n,i}q(t,r);const i={...e};return i[t]=n,i}(e,t,n,r)),arity:z(3)},"++":{evaluate:(e,t)=>(N(e[0])||P(e[0],t),Array.isArray(e[0])?e.reduce((e,n)=>(se(n,t),e.concat(n)),[]):G(e[0])?e.reduce((e,n)=>(X(n,t),`${e}${n}`),""):e.reduce((e,n)=>(U(n,t),Object.assign(e,n)),{})),arity:{min:1}}},ce={range:{evaluate:(e,t)=>{const[n,r,i]=e;let s,o,a;$(n,t,{finite:!0}),1===e.length?(s=0,o=n,a=o>=0?1:-1):2===e.length?($(r,t,{finite:!0}),s=n,o=r,a=o>=s?1:-1):($(r,t,{finite:!0}),$(i,t,{finite:!0}),s=n,o=r,a=i,$(a,t,o>s?{positive:!0}:o<s?{negative:!0}:{nonZero:!0}));const u=[];for(let e=s;a<0?e>o:e<o;e+=a)u.push(e);return u},arity:{min:1,max:3}},repeat:{evaluate:([e,t],n)=>{$(t,n,{integer:!0,nonNegative:!0});const r=[];for(let n=0;n<t;n+=1)r.push(e);return r},arity:z(2)},flatten:{evaluate:([e,t],n)=>{se(e,n);const r=void 0===t||t===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:function(e,t,n={}){return $(e,t,n),e}(t,n,{integer:!0,nonNegative:!0});return e.flat(r)},arity:{min:1,max:2}},mapcat:{evaluate:([e,t],n,r,{executeFunction:i})=>(se(e,n),_(t,n),e.map(e=>i(t,[e],r,n)).flat(1)),arity:z(2)},"moving-fn":{evaluate:([e,t,n],r,i,{executeFunction:s})=>{se(e,r),$(t,r,{integer:!0,lte:e.length}),_(n,r);const o=[];for(let a=0;a<=e.length-t;a++){const u=s(n,[e.slice(a,a+t)],i,r);o.push(u)}return o},arity:z(3)},"running-fn":{evaluate:([e,t],n,r,{executeFunction:i})=>{se(e,n),_(t,n);const s=[];for(let o=0;o<e.length;o+=1){const a=e.slice(0,o+1);s.push(i(t,[a],r,n))}return s},arity:z(2)}},le={nth:{evaluate:(e,t)=>{const[n,r]=e,i=ee(e[2]);if($(r,t,{integer:!0}),null===n)return i;if(C(n,t),r>=0&&r<n.length){return ee(n[r])}return i},arity:{min:2,max:3}},first:{evaluate:([e],t)=>{if(null===e)return null;C(e,t);return ee(e[0])},arity:z(1)},last:{evaluate:([e],t)=>{if(null===e)return null;C(e,t);return ee(e.at(-1))},arity:z(1)},pop:{evaluate:([e],t)=>(C(e,t),"string"==typeof e?e.substring(0,e.length-1):e.slice(0,e.length-1)),arity:z(1)},"index-of":{evaluate:([e,t],n)=>{if(j(t,n),null===e)return null;if(C(e,n),"string"==typeof e){q(t,n);const r=e.indexOf(t);return-1!==r?r:null}{const r=e.findIndex(e=>Q(A(e,n),t),n);return-1!==r?r:null}},arity:z(2)},push:{evaluate:([e,...t],n)=>(C(e,n),"string"==typeof e?(ae(t,n),[e,...t].join("")):[...e,...t]),arity:{min:2}},rest:{evaluate:([e],t)=>(C(e,t),Array.isArray(e)?e.length<=1?[]:e.slice(1):e.substring(1)),arity:z(1)},next:{evaluate:([e],t)=>(C(e,t),Array.isArray(e)?e.length<=1?null:e.slice(1):e.length<=1?null:e.substring(1)),arity:z(1)},reverse:{evaluate:([e],t)=>null===e?null:(C(e,t),Array.isArray(e)?[...e].reverse():e.split("").reverse().join("")),arity:z(1)},second:{evaluate:([e],t)=>null===e?null:(C(e,t),ee(e[1])),arity:z(1)},slice:{evaluate:(e,t)=>{const[n,r,i]=e;return C(n,t),$(r,t,{integer:!0}),2===e.length?(Array.isArray(n),n.slice(r)):($(i,t,{integer:!0}),Array.isArray(n),n.slice(r,i))},arity:{min:2,max:3}},some:{evaluate:([e,t],n,r,{executeFunction:i})=>(_(t,n),null===e?null:(C(e,n),0===e.length?null:"string"==typeof e?e.split("").find(e=>i(t,[e],r,n))??null:ee(e.find(e=>i(t,[e],r,n))))),arity:z(2)},sort:{evaluate:(e,t,n,{executeFunction:r})=>{const[i]=e,s=1===e.length,o=s?null:e[1];if(C(i,t),"string"==typeof i){const e=i.split("");return s?e.sort((e,n)=>H(e,n,t)):(_(o,t),e.sort((e,i)=>{const s=r(o,[e,i],n,t);return $(s,t,{finite:!0}),s})),e.join("")}const a=[...i];return s?a.sort((e,n)=>(X(e,t),X(n,t),H(e,n,t))):a.sort((e,i)=>{_(o,t);const s=r(o,[e,i],n,t);return $(s,t,{finite:!0}),s}),a},arity:{min:1,max:2}}},fe=new WeakSet,he=new WeakSet,pe=new WeakSet,de=new WeakSet,ge=new WeakSet,me=new WeakSet,ye=new WeakSet;function ve(e){return Array.isArray(e)?(fe.has(e)||(be(e),ke(e)||xe(e)),e):e}function be(e){return!!Array.isArray(e)&&(!!he.has(e)||!pe.has(e)&&(e.every(e=>N(e))?(fe.add(e),he.add(e),!0):(pe.add(e),!1)))}function we(e,t){if(!be(e))throw new n(`Expected a vector, but got ${e}`,t)}function Se(e,t){if(we(e,t),0===e.length)throw new n(`Expected a non empty vector, but got ${e}`,t)}function xe(e){if(!Array.isArray(e))return!1;if(me.has(e))return!0;if(ye.has(e))return!1;if(0===e.length)return ye.add(e),!1;if(!Array.isArray(e[0]))return ye.add(e),!1;const t=e[0].length;for(const n of e.slice(1)){if(!Array.isArray(n))return ye.add(e),!1;if(n.length!==t)return ye.add(e),!1}return fe.add(e),me.add(e),!0}function ke(e){if(!Array.isArray(e))return!1;if(de.has(e))return!0;if(ge.has(e))return!1;if(0===e.length)return ge.add(e),!1;if(!Array.isArray(e[0])||0===e[0].length)return ge.add(e),!1;const t=e[0].length;for(const n of e)if(!Array.isArray(n)||n.length!==t||n.some(e=>!N(e)))return ge.add(e),!1;return fe.add(e),me.add(e),de.add(e),!0}function Ee(e,t){let r=!1,i=!1;for(const s of e)if(be(s))r=!0;else if(ke(s))i=!0;else if(!N(s))throw new n("Invalid parameter type: "+typeof s,t);if(i){if(r)throw new n("Cannot mix vector and matrix types",t);let i=null,s=null;for(const r of e)if(ke(r))if(null===i)i=r.length,s=r[0].length;else if(r.length!==i||r[0].length!==s)throw new n("Matrix dimensions do not match",t);return["matrix",e.map(e=>ke(e)?e:Array.from({length:i},()=>Array.from({length:s},()=>e)))]}if(r){let r=null;for(const i of e)if(be(i))if(null===r)r=i.length;else if(i.length!==r)throw new n("Vector lengths do not match",t);return["vector",e.map(e=>be(e)?e:Array.from({length:r},()=>e))]}return["number",e]}function Ne(e){return(t,n)=>{const[r,i]=Ee(t,n);return"number"===r?e(i[0]):"vector"===r?i[0].map(t=>e(t)):i[0].map(t=>t.map(t=>e(t)))}}function $e(e){return(t,n)=>{const[r,i]=Ee(t,n);return"number"===r?e(i[0],i[1]):"vector"===r?i[0].map((t,n)=>e(t,i[1][n])):i[0].map((t,n)=>t.map((t,r)=>e(t,i[1][n][r])))}}function Ie(e,t){return(n,r)=>{if(0===n.length)return e;const[i,s]=Ee(n,r);if("number"===i)return s.reduce((e,n)=>t(e,n),e);if("vector"===i){const[e,...n]=s;return n.reduce((e,n)=>e.map((e,r)=>t(e,n[r])),e)}{const[e,...n]=s;return n.reduce((e,n)=>e.map((e,r)=>e.map((e,i)=>t(e,n[r][i]))),e)}}}const Ae={inc:{evaluate:Ne(e=>e+1),arity:z(1)},dec:{evaluate:Ne(e=>e-1),arity:z(1)},"+":{evaluate:Ie(0,(e,t)=>e+t),arity:{}},"*":{evaluate:Ie(1,(e,t)=>e*t),arity:{}},"/":{evaluate:(e,t)=>{if(0===e.length)return 1;const[n,r]=Ee(e,t);if("number"===n){const[e,...t]=r;return 0===t.length?1/e:t.reduce((e,t)=>e/t,e)}if("vector"===n){const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e/t[n]),e)}{const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e.map((e,r)=>e/t[n][r])),e)}},arity:{}},"-":{evaluate:(e,t)=>{if(0===e.length)return 0;const[n,r]=Ee(e,t);if("number"===n){const[e,...t]=r;return 0===t.length?-e:t.reduce((e,t)=>e-t,e)}if("vector"===n){const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e-t[n]),e)}{const e=r[0];return r.slice(1).reduce((e,t)=>e.map((e,n)=>e.map((e,r)=>e-t[n][r])),e)}},arity:{}},quot:{evaluate:$e((e,t)=>Math.trunc(e/t)),arity:z(2)},mod:{evaluate:$e((e,t)=>e-t*Math.floor(e/t)),arity:z(2)},"%":{evaluate:$e((e,t)=>e%t),arity:z(2)},sqrt:{evaluate:Ne(e=>Math.sqrt(e)),arity:z(1)},cbrt:{evaluate:Ne(e=>Math.cbrt(e)),arity:z(1)},"^":{evaluate:$e((e,t)=>e**t),arity:z(2)},round:{evaluate:([e,t],n)=>{const[r,i]=Ee([e],n);if("number"===r){if(void 0===t||0===t)return Math.round(i[0]);{$(t,n,{integer:!0,positive:!0});const e=10**t;return Math.round(i[0]*e)/e}}if("vector"===r){const e=i[0];if(void 0===t||0===t)return e.map(e=>Math.round(e));{$(t,n,{integer:!0,positive:!0});const r=10**t;return e.map(e=>Math.round(e*r)/r)}}{const e=i[0];if(void 0===t||0===t)return e.map(e=>e.map(e=>Math.round(e)));{$(t,n,{integer:!0,positive:!0});const r=10**t;return e.map(e=>e.map(e=>Math.round(e*r)/r))}}},arity:{min:1,max:2}},trunc:{evaluate:Ne(e=>Math.trunc(e)),arity:z(1)},floor:{evaluate:Ne(e=>Math.floor(e)),arity:z(1)},ceil:{evaluate:Ne(e=>Math.ceil(e)),arity:z(1)},min:{evaluate:(e,t)=>{if(1===e.length&&be(e[0])){const n=e[0];return Se(n,t),n.reduce((e,t)=>Math.min(e,t),1/0)}const[n,...r]=e;return $(n,t),r.reduce((e,n)=>($(n,t),Math.min(e,n)),n)},arity:{min:1}},max:{evaluate:(e,t)=>{if(1===e.length&&be(e[0])){const n=e[0];return Se(n,t),n.reduce((e,t)=>Math.max(e,t),-1/0)}const[n,...r]=e;return $(n,t),r.reduce((e,n)=>($(n,t),Math.max(e,n)),n)},arity:{min:1}},abs:{evaluate:Ne(e=>Math.abs(e)),arity:z(1)},sign:{evaluate:Ne(e=>Math.sign(e)),arity:z(1)}};function je([e,...t],n){const r=A(e,n);for(const e of t)if(!Q(r,A(e,n),n))return!1;return!0}const Oe={"==":{evaluate:(e,t)=>je(e,t),arity:{min:1}},"≠":{evaluate:(e,t)=>!je(e,t),arity:{min:1}},"identical?":{evaluate:e=>function([e,...t]){for(const n of t)if(n!==e)return!1;return!0}(e),arity:{min:1}},">":{evaluate:([e,...t],n)=>{let r=K(e);for(const e of t){if(H(r,K(e),n)<=0)return!1;r=K(e)}return!0},arity:{min:1}},"<":{evaluate:([e,...t],n)=>{let r=K(e);for(const e of t){if(H(r,K(e),n)>=0)return!1;r=K(e)}return!0},arity:{min:1}},">=":{evaluate:([e,...t],n)=>{let r=K(e);for(const e of t){if(H(r,K(e),n)<0)return!1;r=K(e)}return!0},arity:{min:1}},"<=":{evaluate:([e,...t],n)=>{let r=K(e);for(const e of t){if(H(r,K(e),n)>0)return!1;r=K(e)}return!0},arity:{min:1}},"!":{evaluate:([e])=>!e,arity:z(1)},"epoch->iso-date":{evaluate:([e],t)=>($(e,t),new Date(e).toISOString()),arity:z(1)},"iso-date->epoch":{evaluate:([e],t)=>{q(e,t);const n=new Date(e).valueOf();return $(n,t,{finite:!0}),n},arity:z(1)},"write!":{evaluate:(e,t)=>(console.log(...e),e.length>0?A(e[e.length-1],t):null),arity:{}},boolean:{evaluate:([e])=>!!e,arity:z(1)},compare:{evaluate:([e,t],n)=>(X(e,n),X(t,n),H(e,t,n)),arity:z(2)},"json-parse":{evaluate:([e],t)=>(q(e,t),JSON.parse(e)),arity:z(1)},"json-stringify":{evaluate:([e,t],n)=>(j(e,n),void 0===t?JSON.stringify(e):($(t,n),JSON.stringify(e,null,t))),arity:{min:1,max:2}},import:{evaluate:([e],t,r)=>{q(e,t);const i=e.indexOf(".");if(-1!==i){const s=e.substring(0,i),o=e.substring(i+1),a=r.getModule(s);if(!a)throw new n(`Unknown module: '${s}'`,t);const u=a.functions[o];if(!u)throw new n(`Function '${o}' not found in module '${s}'`,t);return{[c]:!0,sourceCodeInfo:t,functionType:"Module",moduleName:s,functionName:o,arity:u.arity}}const s=e,o=r.getModule(s);if(!o)throw new n(`Unknown module: '${s}'`,t);const a={};for(const[e,n]of Object.entries(o.functions))a[e]={[c]:!0,sourceCodeInfo:t,functionType:"Module",moduleName:s,functionName:e,arity:n.arity};return a},arity:z(1)}},Ce={keys:{evaluate:([e],t)=>(U(e,t),Object.keys(e)),arity:z(1)},vals:{evaluate:([e],t)=>(U(e,t),Object.values(e)),arity:z(1)},entries:{evaluate:([e],t)=>(U(e,t),Object.entries(e)),arity:z(1)},find:{evaluate:([e,t],n)=>(U(e,n),q(t,n),Z(e,t)?[t,e[t]]:null),arity:z(2)},dissoc:{evaluate:([e,t],n)=>{U(e,n),q(t,n);const r={...e};return delete r[t],r},arity:z(2)},merge:{evaluate:(e,t)=>{if(0===e.length)return null;const[n,...r]=e;return U(n,t),r.reduce((e,n)=>(U(n,t),{...e,...n}),{...n})},arity:{min:0}},"merge-with":{evaluate:(e,t,n,{executeFunction:r})=>{const i=e[0],s=e.at(-1),o=e.slice(1,-1);return U(i,t),_(s,t),o.reduce((e,i)=>(U(i,t),Object.entries(i).forEach(i=>{const o=Y(i[0],t),a=ee(i[1]);Z(e,o)?e[o]=r(s,[e[o],a],n,t):e[o]=a}),e),{...i})},arity:{min:2}},zipmap:{evaluate:([e,t],n)=>{oe(e,n),se(t,n);const r=Math.min(e.length,t.length),i={};for(let s=0;s<r;s+=1){i[Y(e[s],n)]=ee(t[s])}return i},arity:z(2)},"select-keys":{evaluate:([e,t],n)=>(oe(t,n),U(e,n),t.reduce((t,n)=>(Z(e,n)&&(t[n]=ee(e[n])),t),{})),arity:z(2)}},Fe={"function?":{evaluate:([e])=>b(e),arity:z(1)},"string?":{evaluate:([e])=>"string"==typeof e,arity:z(1)},"number?":{evaluate:([e])=>"number"==typeof e,arity:z(1)},"integer?":{evaluate:([e])=>"number"==typeof e&&N(e,{integer:!0}),arity:z(1)},"boolean?":{evaluate:([e])=>"boolean"==typeof e,arity:z(1)},"null?":{evaluate:([e])=>null==e,arity:z(1)},"zero?":{evaluate:([e],t)=>($(e,t,{finite:!0}),Math.abs(e)<re),arity:z(1)},"pos?":{evaluate:([e],t)=>($(e,t,{finite:!0}),e>0),arity:z(1)},"neg?":{evaluate:([e],t)=>($(e,t,{finite:!0}),e<0),arity:z(1)},"even?":{evaluate:([e],t)=>($(e,t,{finite:!0}),e%2==0),arity:z(1)},"odd?":{evaluate:([e],t)=>($(e,t,{finite:!0}),N(e,{integer:!0})&&e%2!=0),arity:z(1)},"array?":{evaluate:([e])=>Array.isArray(e),arity:z(1)},"collection?":{evaluate:([e])=>T(e),arity:z(1)},"sequence?":{evaluate:([e])=>O(e),arity:z(1)},"object?":{evaluate:([e])=>F(e),arity:z(1)},"regexp?":{evaluate:([e])=>M(e),arity:z(1)},"finite?":{evaluate:([e],t)=>($(e,t),Number.isFinite(e)),arity:z(1)},"positive-infinity?":{evaluate:([e],t)=>($(e,t),e===Number.POSITIVE_INFINITY),arity:z(1)},"negative-infinity?":{evaluate:([e],t)=>($(e,t),e===Number.NEGATIVE_INFINITY),arity:z(1)},"true?":{evaluate:([e])=>!0===e,arity:z(1)},"false?":{evaluate:([e])=>!1===e,arity:z(1)},"empty?":{evaluate:([e],t)=>null===e||(P(e,t),"string"==typeof e||Array.isArray(e)?0===e.length:0===Object.keys(e).length),arity:z(1)},"not-empty?":{evaluate:([e],t)=>null!==e&&(P(e,t),"string"==typeof e||Array.isArray(e)?e.length>0:Object.keys(e).length>0),arity:z(1)},"vector?":{evaluate:([e])=>be(e),arity:z(1)},"matrix?":{evaluate:([e])=>ke(e),arity:z(1)},"grid?":{evaluate:([e])=>xe(e),arity:z(1)}},Ue={regexp:{evaluate:([e,t],r)=>{q(e,r);const i=e||"(?:)",s="string"==typeof t?t:"";try{new RegExp(i,s)}catch(e){throw new n(`Invalid regular expression: ${i} ${s}`,r)}return{[l]:!0,sourceCodeInfo:r,s:i,f:s}},arity:{min:1,max:2}},match:{evaluate:([e,t],n)=>{if(function(e,t){if(!M(e))throw g("RegularExpression",e,t)}(t,n),!W(e))return null;const r=new RegExp(t.s,t.f).exec(e);return r?[...r]:null},arity:z(2)},replace:{evaluate:([e,t,n],r)=>{q(e,r),D(t,r),q(n,r);const i=M(t)?new RegExp(t.s,`${t.f}`):t;return e.replace(i,n)},arity:z(3)},"replace-all":{evaluate:([e,t,n],r)=>{q(e,r),D(t,r),q(n,r);const i=M(t)?new RegExp(t.s,`${t.f.includes("g")?t.f:`${t.f}g`}`):t;return e.replaceAll(i,n)},arity:z(3)}},Te=/^\s*$/,Be={str:{evaluate:e=>e.reduce((e,t)=>e+(null==t?"":F(t)||Array.isArray(t)?JSON.stringify(t):`${t}`),""),arity:{}},number:{evaluate:([e],t)=>{q(e,t);const r=Number(e);if(Number.isNaN(r))throw new n(`Could not convert '${e}' to a number.`,t);return r},arity:z(1)},"lower-case":{evaluate:([e],t)=>(q(e,t),e.toLowerCase()),arity:z(1)},"upper-case":{evaluate:([e],t)=>(q(e,t),e.toUpperCase()),arity:z(1)},trim:{evaluate:([e],t)=>(q(e,t),e.trim()),arity:z(1)},join:{evaluate:([e,t],n)=>(se(e,n),e.forEach(e=>X(e,n)),q(t,n),e.join(t)),arity:z(2)},split:{evaluate:([e,t,n],r)=>{q(e,r),D(t,r),void 0!==n&&$(n,r,{integer:!0,nonNegative:!0});const i="string"==typeof t?t:new RegExp(t.s,t.f);return e.split(i,n)},arity:{min:2,max:3}},"blank?":{evaluate:([e],t)=>null===e||(q(e,t),Te.test(e)),arity:z(1)}},Pe={"|>":{evaluate:([e,t],n,r,{executeFunction:i})=>(_(t,n),i(t,[e],r,n)),arity:z(2)},apply:{evaluate:([e,...t],n,r,{executeFunction:i})=>{_(e,n);const s=t[t.length-1];se(s,n);return i(e,[...t.slice(0,-1),...s],r,n)},arity:{min:2}},identity:{evaluate:([e])=>ee(e),arity:z(1)},comp:{evaluate:(e,t)=>{return e.forEach(e=>_(e,t)),{[c]:!0,sourceCodeInfo:t,functionType:"Comp",params:e,arity:e.length>0?(n=e.at(-1),"number"==typeof n||T(n)?z(1):n.arity):{min:1,max:1}};var n},arity:{}},constantly:{evaluate:([e],t)=>({[c]:!0,sourceCodeInfo:t,functionType:"Constantly",value:ee(e),arity:{}}),arity:z(1)}};function Me(e){return ie(`\n ${e.title}\n\n ${e.description.replace(/`(.+?)`/g,"$1").replace(/\$(\w+)/g,"$1").replace(/\*\*\*(.+)\*\*\*/g,"$1").replace(/\*\*(.+)\*\*/g,"$1")}\n\n Signature:\n ${function({title:e,variants:t,args:n,returns:r,_isOperator:i}){const s=t.map(t=>`${` ${e}(${t.argumentNames.map(e=>{let t="";return n[e].rest&&(t+="..."),t+=e,t}).join(", ")})`} -> ${De(r)}`),o=i?["","Operator:",` a ${e} b -> ${De(r)}`]:[];return[...s,...o]}(e).join("\n ")}\n\n Arguments:\n ${function(e){return Object.entries(e.args).map(([e,t])=>`${e}: ${De(t)}`)}(e).join("\n ")}\n\n Examples:\n${e.examples.map(e=>ie(e,4)).join("\n\n")}`)}function De(e){const t=e.type,n=(Array.isArray(t)?t:[t]).join(" | ");return e.array||e.rest?`Array<${n}>`:n}const Re={sum:{evaluate:([e],t)=>(we(e,t),e.reduce((e,t)=>e+t,0)),arity:z(1)},prod:{evaluate:([e],t)=>(we(e,t),e.reduce((e,t)=>e*t,1)),arity:z(1)},mean:{evaluate:([e],t)=>(Se(e,t),e.reduce((e,t)=>e+t,0)/e.length),arity:z(1)},median:{evaluate:([e],t)=>(Se(e,t),function(e){const t=[...e].sort((e,t)=>e-t),n=Math.floor(t.length/2);return t.length%2==0?(t[n-1]+t[n])/2:t[n]}(e)),arity:z(1)}},_e={...J,...ue,...ce,...le,...Ae,...function(e){return{doc:{evaluate:([t],n)=>{if(y(e),_(t,n),!b(t))return"";if("Builtin"===t.functionType){const n=e[t.name];return n?Me(n):""}return"UserDefined"===t.functionType||"NativeJsFunction"===t.functionType?t.docString:""},arity:z(1)},arity:{evaluate:([e],t)=>(_(e,t),b(e)?e.arity:z(1)),arity:z(1)}}}({}),...Oe,...Ce,...Fe,...Ue,...Be,...Pe,...Re};Object.entries(_e).forEach(([e,t])=>{t.name=e});const Le={..._e},Ve={},ze=[];Object.entries(Le).forEach(([e,t],n)=>{Ve[e]=n,ze.push(t)});const Je={arity:{},evaluate:(e,t,{evaluateNode:n})=>{let r=!0;for(const i of e[1][1])if(r=n(i,t),!r)break;return r},evaluateAsNormalExpression:(e,t)=>{let n=!0;for(const r of e)if(n=A(r,t),!n)break;return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)};function We(e){const t=e[0];return s.UserDefinedSymbol===t||s.NormalBuiltinSymbol===t||s.SpecialBuiltinSymbol===t}function qe(e){return s.UserDefinedSymbol===e[0]}function Ye(e,t){return function(e,t){if(!qe(e))throw g("UserDefinedSymbolNode",e,t)}(e,t),e}function Ge(e){return s.NormalBuiltinSymbol===e[0]}function Ke(e){return s.SpecialBuiltinSymbol===e[0]}function Xe(e){return!!function(e){return e[0]===s.NormalExpression}(e)&&We(e[1][0])}function Ze(e){return e[0]===s.Spread}const He={arity:z(1),evaluate:(e,t)=>{const n=e[1][1];if(function(e,t){if(!We(e))throw g("SymbolNode",e,t)}(n),!qe(n))return!0;return null!==t.lookUp(n)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n([e[1][1]],t,r,i)};const Qe=11,et=12,tt=13,nt=14;function rt(e,t){if(e[0]===tt)Object.values(e[1][0]).forEach(e=>{e[1][1]&&t(e[1][1]),rt(e,t)});else if(e[0]===nt)for(let n=0;n<e[1][0].length;n+=1){const r=e[1][0][n]??null;null!==r&&(r[1][1]&&t(r[1][1]),rt(r,t))}}function it(e,t,n){const r={};return st(e,t,n,e[2],r),r}function st(e,t,r,i,s){if(e[0]===tt){!function(e,t){if(!v(e))throw new n(`Expected UnknownRecord, got ${p(e)}.`,d(e,t))}(t,i);const o=new Set;let a;if(Object.entries(e[1][0]).forEach(([e,n])=>{if(n[0]===et)return void(a=n);o.add(e);const u=(void 0!==t[e]?t[e]:n[1][1]&&r(n[1][1]))??null;j(u,i),st(n,u,r,i,s)}),a){const e=Object.entries(t).filter(([e])=>!o.has(e)).reduce((e,[t,n])=>(e[t]=A(n),e),{});s[a[1][0]]=e}}else if(e[0]===nt){let n=null;se(t,i);for(let o=0;o<e[1][0].length;o+=1){const a=e[1][0][o]??null;if(null===a)continue;if(a[0]===et){n=o;break}const u=(void 0!==t[o]?t[o]:a[1][1]&&r(a[1][1]))??null;j(u,i),st(a,u,r,i,s)}if(null!==n){const r=t.slice(n),i=e[1][0][n];s[i[1][0]]=r}}else e[0]===et?s[e[1][0]]=A(t):s[e[1][0][1]]=A(t)}function ot(e){const t={};return at(e,t),t}function at(e,t){if(null!==e)if(e[0]===nt)for(const n of e[1][0])at(n,t);else if(e[0]===tt)for(const n of Object.values(e[1][0]))at(n,t);else if(e[0]===et){if(t[e[1][0]])throw new n(`Duplicate binding name: ${e[1][0]}`,e[2]);t[e[1][0]]=!0}else{if(t[e[1][0][1]])throw new n(`Duplicate binding name: ${e[1][0]}`,e[2]);t[e[1][0][1]]=!0}}const ut={arity:{},evaluate:(e,t,{evaluateNode:n})=>{const r=e[1][1],i=r[1][0],s=r[1][1],o=n(s,t),a=it(i,o,e=>n(e,t));return t.exportValues(a,i[2]),o},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const s=e[1][1],o=s[1][0],a=s[1][1],u=n([a],t,r,i);return rt(o,e=>{ne(u,n([e],t,r,i))}),t.addValues(ot(o),o[2]),u}},ct={arity:{},evaluate:(e,t,{builtin:n,getUndefinedSymbols:r,evaluateNode:i})=>{const s=e[1][1],o=e[1][2],a=function(e,t,n,r,i){const s={},o=e[0].reduce((e,t)=>(Object.keys(ot(t)).forEach(t=>{e[t]={value:null}}),e),{}),a=r(e[1],t.new(o),n,i);a.forEach(e=>{const n=t.getValue(e);I(n)&&(s[e]={value:n})});const u=[e[0],e[1],s];return u}(s,t,n,r,i),u=a[0].filter(e=>e[0]!==et&&void 0===e[1][1]).length,l={min:u>0?u:void 0,max:a[0].some(e=>e[0]===et)?void 0:a[0].length};return{[c]:!0,sourceCodeInfo:e[2],functionType:"UserDefined",name:void 0,evaluatedfunction:a,arity:l,docString:o}},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>function(e,t,n,r,i){const s=new Set,o={self:{value:null}};e[0].forEach(e=>{Object.assign(o,ot(e)),rt(e,e=>{ne(s,n([e],t,r,i))})});const a=t.create(o),u=n(e[1],a,r,i);return ne(s,u),s}(e[1][1],t,n,r,i)};const lt={arity:z(0),evaluate:(e,t,{evaluateNode:n})=>{const r=e[1][1],i=r[1][0],s=r[1][1],o=n(s,t),a=it(i,o,e=>n(e,t));return t.addValues(a,i[2]),o},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const s=e[1][1],o=s[1][0],a=s[1][1],u=n([a],t,r,i);return rt(o,e=>{ne(u,n([e],t,r,i))}),t.addValues(ot(o),o[2]),u}},ft={arity:{},evaluate:(e,r,{evaluateNode:i})=>{const s=e[1][1],o=s.reduce((e,t)=>{const n=i(t[1][1],r.create(e)),s=it(t[1][0],n,e=>i(e,r));return Object.entries(s).forEach(([t,n])=>{e[t]={value:n}}),e},{}),a=r.create(o),u=e[1][2];for(;;){let c=null;try{c=i(u,a)}catch(a){if(a instanceof t){const t=a.params;if(t.length!==s.length)throw new n(`recur expected ${s.length} parameters, got ${p(t.length)}`,e[2]);s.forEach((e,n)=>{const s=it(e[1][0],A(t[n]),e=>i(e,r));for(const[e,t]of Object.entries(s))o[e].value=t});continue}throw a}return c}},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const s=e[1][1],o=s.reduce((e,t)=>{const n=ot(t[1][0]);return Object.keys(n).forEach(t=>{e[t]={value:!0}}),e},{});return te(n(s.map(e=>e[1][1]),t,r,i),n([e[1][2]],t.create(o),r,i))}};function ht(e,t,n,r){for(const i of e){const[e,s]=i[1],o=it(e,r(s,n),e=>r(e,n));Object.entries(o).forEach(([e,n])=>{t[e]={value:n}})}}function pt(e,t,n,r){const i=t[2],[,s,o]=t[1],a=[],u=s.map(()=>0);let c=!1;for(;!c;){const t={},l=n.create(t);let f=!1;e:for(let e=0;e<s.length;e+=1){const[n,o,a,h]=s[e],[p,d]=n[1],g=B(r(d,l),i),y=O(g)?g:Object.entries(g);if(0===y.length){f=!0,c=!0;break}const v=m(u[e],i);if(v>=y.length){if(f=!0,0===e){c=!0;break}u[e]=0,u[e-1]=m(u[e-1],i)+1;break}const b=it(p,A(y[v],i),e=>r(e,l));if(Object.entries(b).forEach(([e,n])=>{t[e]={value:n}}),o&&ht(o,t,l,r),a&&!r(a,l)){u[e]=m(u[e],i)+1,f=!0;break e}if(h&&!r(h,l)){u[e]=Number.POSITIVE_INFINITY,f=!0;break e}}if(!f){const t=r(o,l);e&&a.push(t),u.length>0&&(u[u.length-1]+=1)}}return e?a:null}function dt(e,t,n,r,i){const s=new Set,o={},[,a,u]=e[1];return a.forEach(e=>{const[a,u,c,l]=e,[f,h]=a[1];n([h],t.create(o),r,i).forEach(e=>s.add(e)),Object.assign(o,ot(f)),u&&u.forEach(e=>{const[a,u]=e[1];n([u],t.create(o),r,i).forEach(e=>s.add(e)),Object.assign(o,ot(a))}),c&&n([c],t.create(o),r,i).forEach(e=>s.add(e)),l&&n([l],t.create(o),r,i).forEach(e=>s.add(e))}),n([u],t.create(o),r,i).forEach(e=>s.add(e)),s}const gt={arity:z(1),evaluate:(e,t,n)=>pt(!0,e,t,n.evaluateNode),getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>dt(e,t,n,r,i)},mt={arity:z(1),evaluate:(e,t,n)=>(pt(!1,e,t,n.evaluateNode),null),getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>dt(e,t,n,r,i)},yt={arity:{},evaluate:(e,t,{evaluateNode:n})=>{let r=!1;for(const i of e[1][1])if(r=n(i,t),r)break;return r},evaluateAsNormalExpression:(e,t)=>{let n=!1;for(const r of e)if(n=A(r,t),n)break;return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},vt={arity:{min:1},evaluate:(e,t,{evaluateNode:n})=>{for(const r of e[1][1]){if(qe(r)&&null===t.lookUp(r))continue;const e=n(r,t);if(null!==e)return e}return null},evaluateAsNormalExpression:(e,t)=>{for(const n of e){const e=A(n,t);if(null!==e)return e}return null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},bt={arity:{},evaluate:(e,n,{evaluateNode:r})=>{const i=e[1][1].map(e=>r(e,n));throw new t(i)},evaluateAsNormalExpression:e=>{throw new t(e)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},wt={arity:z(1),evaluate:(e,t,{evaluateNode:n})=>{const i=Y(n(e[1][1],t),e[2],{nonEmpty:!0});throw new r(i,e[2])},evaluateAsNormalExpression:(e,t)=>{const n=Y(e[0],t,{nonEmpty:!0});throw new r(n,void 0)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n([e[1][1]],t,r,i)},St={arity:{},evaluate:(e,t,{evaluateNode:n})=>{const[,r,i,s]=e[1];try{return n(r,t)}catch(e){const r=i?{[i[1]]:{value:e}}:{};return n(s,t.create(r))}},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>{const[,s,o,a]=e[1],u=n([s],t,r,i),c=o?{[o[1]]:{value:!0}}:{};return te(u,n([a],t.create(c),r,i))}},xt={arity:{},evaluate:(e,t,{evaluateNode:r})=>{const i=[];for(const s of e[1][1])if(Ze(s)){const e=r(s[1],t);if(!Array.isArray(e))throw new n("Spread value is not an array",s[2]);i.push(...e)}else i.push(r(s,t));return i},evaluateAsNormalExpression:(e,t)=>{const n=[];for(const r of e)n.push(A(r,t));return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},kt={arity:{},evaluate:(e,t,{evaluateNode:r})=>{const i={},s=e[1][1];for(let e=0;e<s.length;e+=2){const o=s[e];if(Ze(o)){const s=r(o[1],t);if(!v(s))throw new n("Spread value is not an object",o[2]);Object.assign(i,s),e-=1}else{const a=r(o,t),u=s[e+1];if(void 0===u)throw new n("Missing value for key",o[2]);const c=r(u,t);q(a,o[2]),i[a]=c}}return i},evaluateAsNormalExpression:(e,t)=>{const n={};for(let r=0;r<e.length;r+=2){const i=e[r],s=e[r+1];q(i,t),n[i]=s??null}return n},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t,r,i)},Et={"??":0,"&&":1,"||":2,array:3,cond:4,"0_def":5,"defined?":6,block:7,doseq:8,"0_lambda":9,for:10,if:11,let:12,loop:13,object:14,recur:15,switch:16,throw:17,try:18,unless:19},Nt=[vt,Je,yt,xt,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const r=e[1][1];for(const[e,i]of r){if(n(e,t))return n(i,t)}return null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1].flat(),t,r,i)},ut,He,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const r=t.create({});let i=null;for(const t of e[1][1])i=n(t,r);return i},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1],t.create({}),r,i)},mt,ct,gt,{arity:{min:2,max:3},evaluate:(e,t,{evaluateNode:n})=>{const[r,i,s]=e[1][1];return n(r,t)?n(i,t):s?n(s,t):null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1].filter(e=>!!e),t,r,i)},lt,ft,kt,bt,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const[,r,i]=e[1],s=n(r,t);for(const[e,r]of i){if(n(e,t)===s)return n(r,t)}return null},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n([e[1][1],...e[1][2].flat()],t,r,i)},wt,St,{arity:{},evaluate:(e,t,{evaluateNode:n})=>{const[r,i,s]=e[1][1];return n(r,t)?s?n(s,t):null:n(i,t)},getUndefinedSymbols:(e,t,{getUndefinedSymbols:n,builtin:r,evaluateNode:i})=>n(e[1][1].filter(e=>!!e),t,r,i)}],$t={normalExpressions:Le,specialExpressions:Nt,allNormalExpressions:ze},It=Object.keys(Le),At=Object.keys(Et);new Set(At);const jt=(e,t,n,r)=>{const i=Array.isArray(e)?e:[[s.SpecialExpression,[Et.block,e.body]]],o=new Set;for(const e of i)Ot(e,t,n,r)?.forEach(e=>o.add(e));return o};function Ot(e,t,r,i){const o=e[0];switch(o){case s.UserDefinedSymbol:{const n=e;return null===t.lookUp(n)?new Set([n[1]]):null}case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.String:case s.Number:case s.ReservedSymbol:case s.Binding:return null;case s.NormalExpression:{const n=e,s=new Set;if(Xe(n)){const[,[e]]=n;if(qe(e)){null===t.lookUp(e)&&s.add(e[1])}}else{const[,[e]]=n;Ot(e,t,r,i)?.forEach(e=>s.add(e))}for(const e of n[1][1])Ot(e,t,r,i)?.forEach(e=>s.add(e));return s}case s.SpecialExpression:{const n=e,s=n[1][0];return(0,r.specialExpressions[s].getUndefinedSymbols)(n,t,{getUndefinedSymbols:jt,builtin:r,evaluateNode:i})}case s.Spread:return Ot(e[1],t,r,i);default:throw new n(`Unhandled node type: ${o}`,e[2])}}const Ct=(1+Math.sqrt(5))/2,Ft={E:Math.E,"-E":-Math.E,"ε":Math.E,"-ε":-Math.E,PI:Math.PI,"-PI":-Math.PI,"π":Math.PI,"-π":-Math.PI,PHI:Ct,"-PHI":-Ct,"φ":Ct,"-φ":-Ct,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,"∞":Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,"-∞":Number.NEGATIVE_INFINITY,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,NaN:Number.NaN},Ut={true:!0,false:!1,null:null,do:null,else:null,case:null,each:null,in:null,when:null,while:null,catch:null,function:null,export:null,as:null,then:null,end:null,_:null,...Ft};const Tt={NativeJsFunction:(e,t,r)=>{try{return ee(e.nativeFn.fn(...t))}catch(e){const t="string"==typeof e?e:v(e)&&"string"==typeof e.message?e.message:"<no message>";throw new n(`Native function threw: "${t}"`,r)}},UserDefined:(e,r,i,s,{evaluateNode:o})=>{for(;;){if(!L(e.arity,r.length))throw new n(`Expected ${e.arity} arguments, got ${r.length}.`,i);const a=e.evaluatedfunction,u=a[0],c=u.filter(e=>e[0]!==et).length,l=s.create(e.evaluatedfunction[2]),f={self:{value:e}},h=[];for(let e=0;e<r.length;e+=1)if(e<c){const t=ee(r[e]),n=it(u[e],t,e=>o(e,l.create(f)));Object.entries(n).forEach(([e,t])=>{f[e]={value:t}})}else h.push(ee(r[e]));for(let e=r.length;e<c;e++){const t=u[e],n=it(t,o(t[1][1],s.create(f)),e=>o(e,s.create(f)));Object.entries(n).forEach(([e,t])=>{f[e]={value:t}})}const p=u.find(e=>e[0]===et);if(void 0!==p){const e=it(p,h,e=>o(e,s.create(f)));Object.entries(e).forEach(([e,t])=>{f[e]={value:t}})}try{let e=null;const t=l.create(f);for(const n of a[1])e=o(n,t);return e}catch(e){if(e instanceof t){r=e.params;continue}throw e}}},Partial:(e,t,r,i,{executeFunction:s})=>{const o=[...e.params];if(t.length!==e.placeholders.length)throw new n(`(partial) expects ${e.placeholders.length} arguments, got ${t.length}.`,r);const a=[...t];for(const t of e.placeholders)o.splice(t,0,a.shift());return s(e.function,o,i,r)},Comp:(e,t,r,i,{executeFunction:s})=>{const{params:o}=e;if(0===o.length){if(1!==t.length)throw new n(`(comp) expects one argument, got ${p(t.length)}.`,r);return A(t[0],r)}return A(o.reduceRight((e,t)=>[s(R(t,r),e,i,r)],t)[0],r)},Constantly:e=>e.value,Juxt:(e,t,n,r,{executeFunction:i})=>e.params.map(e=>i(R(e,n),t,r,n)),Complement:(e,t,n,r,{executeFunction:i})=>!i(e.function,t,r,n),EveryPred:(e,t,n,r,{executeFunction:i})=>{for(const s of e.params)for(const e of t){if(!i(R(s,n),[e],r,n))return!1}return!0},SomePred:(e,t,n,r,{executeFunction:i})=>{for(const s of e.params)for(const e of t){if(i(R(s,n),[e],r,n))return!0}return!1},Fnull:(e,t,n,r,{executeFunction:i})=>{const s=t.map((t,n)=>null===t?ee(e.params[n]):t);return i(R(e.function,n),s,r,n)},Builtin:(e,t,n,r,{executeFunction:i})=>m(ze[e.normalBuiltinSymbolType],n).evaluate(t,n,r,{executeFunction:i}),SpecialBuiltin:(e,t,r,i,{executeFunction:s})=>{const o=m(Nt[e.specialBuiltinSymbolType],r);if(o.evaluateAsNormalExpression)return o.evaluateAsNormalExpression(t,r,i,{executeFunction:s});throw new n(`Special builtin function ${e.specialBuiltinSymbolType} is not supported as normal expression.`,r)},Module:(e,t,r,i,{executeFunction:s})=>{const o=i.getModule(e.moduleName);if(!o)throw new n(`Module '${e.moduleName}' not found.`,r);const a=o.functions[e.functionName];if(!a)throw new n(`Function '${e.functionName}' not found in module '${e.moduleName}'.`,r);return V(a.arity,t.length,r),a.evaluate(t,r,i,{executeFunction:s})}};function Bt(e,t){let n=null;for(const r of e.body)n=Pt(r,t);return n}function Pt(e,t){switch(e[0]){case s.Number:case s.String:return function(e){return e[1]}(e);case s.NormalBuiltinSymbol:case s.SpecialBuiltinSymbol:case s.UserDefinedSymbol:return t.evaluateSymbol(e);case s.ReservedSymbol:return function(e){const t=e[1];if(!["true","false","null"].includes(t))throw new n(`Reserved symbol ${t} cannot be evaluated`,e[2]);return m(Ut[t],e[2])}(e);case s.NormalExpression:{const r=function(e,t){const r=e[2],o=e[1][1],a=[],u=[];if(o.forEach((e,r)=>{if(Ze(e)){const r=Pt(e[1],t);if(!Array.isArray(r))throw new n(`Spread operator requires an array, got ${p(e)}`,e[2]);a.push(...r)}else e[0]===s.ReservedSymbol&&"_"===e[1]?u.push(r):a.push(Pt(e,t))}),Xe(e)){const n=e[1][0];if(u.length>0){const e=Pt(n,t);return{[c]:!0,function:R(e,r),functionType:"Partial",params:a,placeholders:u,sourceCodeInfo:r,arity:z(u.length)}}if(Ge(n)){const r=n[1];return $t.allNormalExpressions[r].evaluate(a,e[2],t,{executeFunction:Mt})}{const s=t.getValue(n[1]);if(void 0!==s)return Mt(R(s,r),a,t,r);throw new i(n[1],e[2])}}{const n=R(Pt(e[1][0],t),r);if(u.length>0){return{[c]:!0,function:n,functionType:"Partial",params:a,placeholders:u,sourceCodeInfo:r,arity:z(u.length)}}return Mt(n,a,t,r)}}(e,t);if("number"==typeof r&&Number.isNaN(r))throw new n("Number is NaN",e[2]);return ve(r)}case s.SpecialExpression:return ve(function(e,t){const n=e[1][0],r=m($t.specialExpressions[n],e[2]);return(0,r.evaluate)(e,t,{evaluateNode:Pt,builtin:$t,getUndefinedSymbols:jt})}(e,t));default:throw new n(`${a(e[0])}-node cannot be evaluated`,e[2])}}function Mt(e,t,r,i){if(b(e))return Tt[e.functionType](e,t,i,r,{evaluateNode:Pt,executeFunction:Mt});if(Array.isArray(e))return function(e,t,r){if(1!==t.length)throw new n("Array as function requires one non negative integer parameter.",r);const i=t[0];return $(i,r,{integer:!0,nonNegative:!0}),ee(e[i])}(e,t,i);if(F(e))return function(e,t,r){if(1!==t.length)throw new n("Object as function requires one string parameter.",r);const i=t[0];return q(i,r),ee(e[i])}(e,t,i);if("string"==typeof e)return function(e,t,r){if(1!==t.length)throw new n("String as function requires one Obj parameter.",r);const i=ee(t[0]);if(F(i))return ee(i[e]);if(N(i,{integer:!0}))return ee(e[i]);throw new n(`string as function expects Obj or integer parameter, got ${p(i)}`,r)}(e,t,i);if(N(e))return function(e,t,r){if($(e,r,{integer:!0}),1!==t.length)throw new n("Number as function requires one Arr parameter.",r);const i=t[0];return C(i,r),ee(i[e])}(e,t,i);throw new n("Unexpected function type",i)}class Dt{contexts;globalContext;values;nativeJsFunctions;modules;constructor({contexts:e,values:t,nativeJsFunctions:n,modules:r}){this.globalContext=m(e[0]),this.contexts=e,this.values=t,this.nativeJsFunctions=n,this.modules=r??new Map}getModule(e){return this.modules.get(e)}create(e){const t=this.globalContext,n=new Dt({contexts:[e,...this.contexts],values:this.values,nativeJsFunctions:this.nativeJsFunctions,modules:this.modules});return n.globalContext=t,n}new(e){return new Dt({contexts:[{},e],modules:this.modules})}exportValues(e,t){for(const[r,i]of Object.entries(e)){if(this.globalContext[r])throw new n(`Cannot redefine exported value "${r}"`,t);const e=Rt(r);if(e)throw new n(`Cannot shadow ${e}`,t);this.globalContext[r]={value:i}}this.contexts[0]!==this.globalContext&&this.addValues(e,t)}addValues(e,t){const r=this.contexts[0];for(const[i,s]of Object.entries(e)){if(r[i])throw new n(`Cannot redefine value "${i}"`,t);const e=Rt(i);if(e)throw new n(`Cannot shadow ${e}`,t);r[i]={value:ee(s)}}}getValue(e){for(const t of this.contexts){const n=t[e];if(n)return n.value}const t=this.nativeJsFunctions?.[e];return t||this.values?.[e]}lookUp(e){const t=e[1];for(const e of this.contexts){const n=e[t];if(n)return n}const n=this.values?.[t];if(void 0!==n)return{value:ee(n)};const r=this.nativeJsFunctions?.[t];return r?{value:r}:null}evaluateSymbol(e){if(Ke(e)){const t=e[1];switch(t){case Et["&&"]:case Et["||"]:case Et.array:case Et.object:case Et["defined?"]:case Et.recur:case Et.throw:case Et["??"]:{const n=m($t.specialExpressions[t],e[2]);return{[c]:!0,functionType:"SpecialBuiltin",specialBuiltinSymbolType:t,sourceCodeInfo:e[2],arity:n.arity}}default:throw new n(`Unknown special builtin symbol type: ${t}`,e[2])}}if(Ge(e)){const t=e[1],n=ze[t],r=n.name;return{[c]:!0,functionType:"Builtin",normalBuiltinSymbolType:t,sourceCodeInfo:e[2],arity:n.arity,name:r}}const t=this.lookUp(e);if(v(r=t)&&void 0!==r.value)return t.value;var r;throw new i(e[1],e[2])}}function Rt(e){return At.includes(e)?`special expression "${e}"`:It.includes(e)?`builtin function "${e}"`:"self"===e?`builtin value "${e}"`:null}function _t(e={},t){const r=e.globalContext??{},i=e.contexts?[r,...e.contexts]:[r],s=new Dt({contexts:i,values:e.values,modules:t,nativeJsFunctions:e.jsFunctions&&Object.entries(e.jsFunctions).reduce((e,[t,r])=>{const i=t.split("."),s=i.pop();if(/^[A-Z]/.test(s))throw new n(`Invalid identifier "${t}" in jsFunctions, function name must not start with an uppercase letter`,void 0);let o=e;for(const e of i){if(0===e.length)throw new n(`Invalid empty identifier "${t}" in jsFunctions`,void 0);if(!/^[A-Z]/.test(e))throw new n(`Invalid identifier "${t}" in jsFunctions, module name must start with an uppercase letter`,void 0);o[e]||(o[e]={}),o=o[e]}!function(e){if(!function(e){return"object"==typeof e&&null!==e&&"fn"in e&&"function"==typeof e.fn}(e))throw new TypeError("Expected a NativeJsFunction")}(r);const a={functionType:"NativeJsFunction",nativeFn:r,name:s,[c]:!0,arity:r.arity??{},docString:r.docString??""};return o===e&&function(e){const t=Rt(e);if(t)throw new n(`Cannot shadow ${t}`,void 0)}(s),o[s]=a,e},{})});return e.globalModuleScope?s:s.create({})}const Lt=["^","*","/","%","+","-","<<",">>",">>>","++","<","<=","≤",">",">=","≥","==","!=","≠","&","xor","|","&&","||","??","|>"],Vt=[...Lt,"?",":","->","...",".",",","=",":",";"],zt=new Set(["comment","cond","def","defined?","block","doseq","if","let","loop","recur","throw","try","unless","while"]);function Jt(e){return!zt.has(e)}const Wt=new Set(Lt);function qt(e){return Wt.has(e)}const Yt=new Set(Vt);function Gt(e){return Yt.has(e)}const Kt=["(",")","[","]","{","}","'",'"',"`",",",".",";"," ","\n","\r","\t"],Xt=["0","1","2","3","4","5","6","7","8","9",...Kt],Zt=new Set(Kt),Ht=new Set(Xt),Qt=/\s/,en=[0],tn=(e,t)=>{if('"'!==e[t])return en;let n='"',r=1,i=e[t+r],s=!1;for(;i&&('"'!==i||s);)r+=1,s?(s=!1,n+=i):("\\"===i&&(s=!0),n+=i),i=e[t+r];return i?(n+='"',[r+1,["string",n]]):[r,["Error",n,void 0,`Unclosed string at position ${t}`]]};function nn(e,t,n,r){return t===n.slice(r,r+t.length)?[t.length,[e,t]]:en}const rn=/\d/,sn=/[0-7]/,on=/[0-9a-f]/i,an=/[01]/,un=/[\s)\]}(,;]/,cn=(e,t)=>{let n=e[t];if("'"===n){let r=1,i=e[t+r],s=!1;for(;"'"!==i||s;){if(void 0===i)return[r,["Error",n,void 0,`Unclosed quoted symbol at position ${t}`]];r+=1,s?(s=!1,n+=i):("\\"===i&&(s=!0),n+=i),i=e[t+r]}return n+="'",[r+1,["Symbol",n]]}if(!Ht.has(n)){const r=t;let i=e[t+=1];for(;i&&!Zt.has(i);)n+=i,i=e[t+=1];return n.endsWith(":")?[t-r-1,["Symbol",n.slice(0,-1)]]:[t-r,["Symbol",n]]}return en},ln=[(e,t)=>{let n=e[t];if(!n||!Qt.test(n))return en;let r=n;for(n=e[t+=1];n&&Qt.test(n);)r+=n,n=e[t+=1];return[r.length,["Whitespace",r]]},(e,t)=>{if("/"===e[t]&&"*"===e[t+1]){let n=2,r="/*";for(;("*"!==e[t+n]||"/"!==e[t+n+1])&&t+n+1<e.length;)r+=e[t+n],n+=1;return t+n+1>=e.length?[n,["Error",r,void 0,`Unclosed multi-line comment at position ${t}`]]:(r+="*/",n+=2,[n,["MultiLineComment",r]])}return en},(e,t)=>{if("/"===e[t]&&"/"===e[t+1]){let n=2,r="//";for(;"\n"!==e[t+n]&&t+n<e.length;)r+=e[t+n],n+=1;return[n,["SingleLineComment",r]]}return en},(e,t)=>{const n=cn(e,t);if(0===n[0]||!n[1])return en;let r=n[1][1];r=r.startsWith("'")?r.slice(1,r.length-1):r;return void 0===Ut[r]?en:[n[0],["ReservedSymbol",r]]},(e,t)=>nn("LParen","(",e,t),(e,t)=>nn("RParen",")",e,t),(e,t)=>nn("LBracket","[",e,t),(e,t)=>nn("RBracket","]",e,t),(e,t)=>nn("LBrace","{",e,t),(e,t)=>nn("RBrace","}",e,t),(e,t)=>{if('"'!==e[t]||'"'!==e[t+1]||'"'!==e[t+2])return en;let n='"""',r=3,i=e[t+r],s=e.slice(t+r,t+r+3),o=!1;for(;i&&('"""'!==s||o);)r+=1,o?(o=!1,n+=i):("\\"===i&&(o=!0),n+=i),i=e[t+r],s=e.slice(t+r,t+r+3);return i?(n+='"""',[r+3,["DocString",n]]):[r,["Error",n,void 0,`Unclosed doc string at position ${t}`]]},tn,(e,t)=>{if("#"!==e[t])return en;const[n,r]=tn(e,t+1);if(!r)return en;if("Error"===r[0]){return[n+1,["Error",`#${r[1]}`,void 0,`Unclosed regexp at position ${t}`]]}t+=n+1;let i=n+1,s="";for(;"g"===e[t]||"i"===e[t];)if(s+=e[t],i+=1,t+=1,s.includes(e[t]))return[i,["Error",`#${r[1]}${s}`,void 0,`Duplicated regexp option "${e[t]}"`]];return[i,["RegexpShorthand",`#${r[1]}${s}`]]},(e,t)=>{if("0"!==e[t])return en;const n=e[t+1],r="b"===n||"B"===n?"binary":"o"===n||"O"===n?"octal":"x"===n||"X"===n?"hex":null;if(null===r)return en;let i;for(i=t+2;i<e.length;i+=1){const t=e[i];if("binary"===r&&!an.test(t))break;if("octal"===r&&!sn.test(t))break;if("hex"===r&&!on.test(t))break}const s=i-t;if(s<=2)return en;const o=e[i];return o&&!un.test(o)?en:[s,["BasePrefixedNumber",e.substring(t,i)]]},(e,t)=>{let n;const r="-"===e[t],i="+"===e[t],s=r||i?t+1:t;let o=!1,a=!1;for(n=s;n<e.length;n+=1){const r=e[n];if("_"===r){if(!rn.test(e[n-1])||!rn.test(e[n+1]))return n===s?en:[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]]}else if("."===r){if(n===s)return en;if(o||a)return[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]];o=!0}else if("e"===r||"E"===r){if(n===s)return en;if(a)return[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]];if("."===e[n-1]||"+"===e[n-1]||"-"===e[n-1])return[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]];"+"!==e[n+1]&&"-"!==e[n+1]||(n+=1),a=!0}else if(!rn.test(r))break}if((r||i)&&n===s)return en;const u=n-t;if(0===u)return en;const c=e[n];return c&&":"!==c&&!un.test(c)?[n-t+1,["Error",e.substring(t,n+1),void 0,`Invalid number format at position ${n+1}`]]:[u,["Number",e.substring(t,n)]]},(e,t)=>{const n=e.slice(t,t+3);if(t+2<e.length&&Gt(n))return[3,["Operator",n]];const r=e.slice(t,t+2);if(t+1<e.length&&Gt(r))return[2,["Operator",r]];const i=e[t]??"";return Gt(i)?[1,["Operator",i]]:en},cn];function fn(e,t,n){const r=e.substring(0,t+1).split(/\r\n|\r|\n/),i=r[r.length-1],s=function(e,t){return e.split(/\r\n|\r|\n/)[t]}(e,r.length-1);return{code:s,position:{line:r.length,column:i.length},filePath:n}}function hn(e,t){const n=t;if(0===t){const[r,i]=((e,t)=>{if("#"===e[t]&&"!"===e[t+1]){let n=2,r="#!";for(;"\n"!==e[t+n]&&t+n<e.length;)r+=e[t+n],n+=1;return[n,["SingleLineComment",r]]}return en})(e,t);if(t+=r,r>0)return[t-n,i]}for(const r of ln){const[i,s]=r(e,t);if(t+=i,0!==i)return[t-n,s]}return[1,["Error",e[n],void 0,"Unrecognized character"]]}function pn(e,t){return"Symbol"===e?.[0]&&(!t||e[1]===t)}function dn(e,t){return function(e,t){pn(e,t)||Un("Symbol",void 0,e)}(e,t),e}function gn(e,t){return"ReservedSymbol"===e?.[0]&&(!t||e[1]===t)}function mn(e,t){gn(e,t)||Un("ReservedSymbol",t,e)}function yn(e,t){return mn(e,t),e}function vn(e,t){return"Operator"===e?.[0]&&(!t||e[1]===t)}function bn(e,t){vn(e,t)||Un("Operator",t,e)}function wn(e){return"LParen"===e?.[0]}function Sn(e){wn(e)||Un("LParen",void 0,e)}function xn(e){return"RParen"===e?.[0]}function kn(e){xn(e)||Un("RParen",void 0,e)}function En(e){return"LBracket"===e?.[0]}function Nn(e){return function(e){En(e)||Un("LBracket",void 0,e)}(e),e}function $n(e){return"RBracket"===e?.[0]}function In(e){$n(e)||Un("RBracket",void 0,e)}function An(e){return"LBrace"===e?.[0]}function jn(e){return function(e){An(e)||Un("LBrace",void 0,e)}(e),e}function On(e){return"RBrace"===e?.[0]}function Cn(e){return"string"===e?.[0]}function Fn(e){return"Operator"===e?.[0]&&qt(e[1])}function Un(e,t,r){const i=r?`${r[0]} '${r[1]}'`:"end of input";throw new n(`Unexpected token: ${i}, expected ${e}${t?` '${t}'`:""}`,r?.[2])}function Tn(e,{removeWhiteSpace:t}){const n=e.tokens.filter(e=>!(function(e){return"SingleLineComment"===e?.[0]}(e)||function(e){return"MultiLineComment"===e?.[0]}(e)||function(e){return"Shebang"===e?.[0]}(e)||t&&function(e){return"Whitespace"===e?.[0]}(e)));return{...e,tokens:n}}const Bn=Object.entries(Ve).reduce((e,[t,n])=>(e[n]=t,e),[]),Pn=Object.entries(Et).reduce((e,[t,n])=>(e[n]=t,e),[]);function Mn(e){return qe(e)?e[1]:Ge(e)?Bn[e[1]]:Pn[e[1]]}const Dn=/^\$([1-9]\d?)?$/;function Rn(e,t){return t&&(e[2]=t),e}function _n(e,t){switch(e){case"^":return 12;case"*":case"/":case"%":return 11;case"+":case"-":return 10;case"<<":case">>":case">>>":return 9;case"++":return 8;case"<":case"<=":case"≤":case">":case">=":case"≥":return 7;case"==":case"!=":case"≠":return 6;case"&":case"xor":case"|":return 5;case"&&":case"||":case"??":return 4;case"|>":return 2;default:throw new n(`Unknown binary operator: ${e}`,t)}}function Ln(e,t,n){const r=Rn([s.NormalExpression,[e,t]],n);return Ge(e)&&V(ze[e[1]].arity,r[1][1].length,n),r}function Vn(e,t,n){return Rn([s.NormalExpression,[[s.NormalBuiltinSymbol,Ve.get],[e,t]]],n)}function zn(e,t,r,i,o){const a=e[1];switch(a){case"^":case"*":case"/":case"%":case"+":case"-":case"<<":case">>":case">>>":case"++":case"<":case"<=":case"≤":case">":case">=":case"≥":case"==":case"!=":case"≠":case"&":case"xor":case"|":case"|>":return Ln(t,[r,i],o);case"&&":case"||":case"??":return Rn([s.SpecialExpression,[Et[a],[r,i]]],o);default:throw new n(`Unknown binary operator: ${a}`,o)}}class Jn{tokenStream;parseState;constructor(e,t){this.tokenStream=e,this.parseState=t}peek(){return this.tokenStream.tokens[this.parseState.position]}peekSourceCodeInfo(){const e=this.peek();return e?e[2]:this.tokenStream.tokens.at(-1)?.[2]}peekAhead(e){return this.tokenStream.tokens[this.parseState.position+e]}advance(){this.parseState.position+=1}parse(){this.tokenStream.tokens.forEach(e=>{if("Error"===e[0])throw new n(e[3],e[2])});const e=[];for(;!this.isAtEnd();)if(e.push(this.parseExpression(0,!0)),vn(this.peek(),";"))this.advance();else if(!this.isAtEnd())throw new n("Expected ;",this.peekSourceCodeInfo());return e}parseExpression(e=0,t=!1){const r=this.peek();let i;if(pn(r))switch(r[1]){case"let":return this.parseLet(r);case"if":case"unless":i=this.parseIfOrUnless(r);break;case"cond":i=this.parseCond(r);break;case"switch":i=this.parseSwitch(r);break;case"for":case"doseq":i=this.parseForOrDoseq(r);break;case"loop":i=this.parseLoop(r);break;case"try":i=this.parseTry(r)}else if(gn(r,"do"))i=this.parseBlock()[0];else if(gn(r,"export")){if(!t)throw new n("export is only allowed in module scope",r[2]);return this.parseExport(r)}i||=this.parseOperand();let o=this.peek();for(;!this.isAtExpressionEnd();){if(Fn(o)){const t=o[1],n=_n(t,o[2]);if(n<=e&&(12!==n||12!==e))break;const r=Rn(Et[t]?[s.SpecialBuiltinSymbol,Et[t]]:[s.NormalBuiltinSymbol,Ve[t]],o[2]);this.advance();i=zn(o,r,i,this.parseExpression(n),o[2])}else if(pn(o)){if(!Jt(o[1]))break;const t=3;if(t<=e)break;const r=this.parseSymbol(),s=this.parseExpression(t);if(Ke(r))throw new n("Special expressions are not allowed in binary functional operators",r[2]);i=Ln(r,[i,s],o[2])}else{if("?"!==o?.[1])break;{if(1<=e)break;this.advance();const t=this.parseExpression();if(!vn(this.peek(),":"))throw new n("Expected :",this.peekSourceCodeInfo());this.advance();const r=this.parseExpression();i=Rn([s.SpecialExpression,[Et.if,[i,t,r]]],i[2])}}o=this.peek()}return i}asToken(e){if(!e)throw new n("Unexpected end of input",this.peekSourceCodeInfo());return e}parseOperand(){let e=this.parseOperandPart(),t=this.peek();for(;vn(t,".")||En(t)||wn(t);)if("."===t[1]){this.advance();const r=this.asToken(this.peek());if(!pn(r))throw new n("Expected symbol",this.peekSourceCodeInfo());e=Vn(e,Rn([s.String,r[1]],r[2]),t[2]),this.advance(),t=this.peek()}else if(En(t)){this.advance();const r=this.parseExpression();if(!$n(this.peek()))throw new n("Expected closing bracket",this.peekSourceCodeInfo());e=Vn(e,r,t[2]),this.advance(),t=this.peek()}else wn(t)&&(e=this.parseFunctionCall(e),t=this.peek());return e}parseOperandPart(){const e=this.asToken(this.peek());if(wn(e)){const e=this.parseState.position,t=this.parseLambdaFunction();if(t)return t;this.parseState.position=e,this.advance();const r=this.parseExpression();if(!xn(this.peek()))throw new n("Expected closing parenthesis",this.peekSourceCodeInfo());return this.advance(),r}if(vn(e)){const t=e[1];if(qt(t))return this.advance(),Rn(void 0!==Et[t]?[s.SpecialBuiltinSymbol,Et[t]]:[s.NormalBuiltinSymbol,Ve[t]],e[2]);if("->"===t)return this.parseShorthandLambdaFunction();throw new n(`Illegal operator: ${t}`,e[2])}if(An(e))return this.parseObject();if(En(e))return this.parseArray();const t=e[0];switch(t){case"Number":case"BasePrefixedNumber":return this.parseNumber();case"string":return this.parseString(e);case"Symbol":{const e=this.parseState.position,t=this.parseLambdaFunction();return t||(this.parseState.position=e,this.parseSymbol())}case"ReservedSymbol":return this.parseReservedSymbol();case"RegexpShorthand":return this.parseRegexpShorthand();default:throw new n(`Unknown token type: ${t}`,e[2])}}parseObject(){const e=jn(this.peek());this.advance();const t=[];for(;!this.isAtEnd()&&!On(this.peek());){if(vn(this.peek(),"..."))this.advance(),t.push(Rn([s.Spread,this.parseExpression()],this.peekSourceCodeInfo()));else{const e=this.peek();if(Cn(e)){const n=this.parseString(e);t.push(Rn([s.String,n[1]],e[2]))}else if(pn(e)){const n=e[1].startsWith("'")?this.stringFromQuotedSymbol(e[1]):e[1];t.push(Rn([s.String,n],e[2])),this.advance()}else{if(!En(e))throw new n("Expected key to be a symbol or a string",this.peekSourceCodeInfo());this.advance(),t.push(this.parseExpression()),In(this.peek()),this.advance()}bn(this.peek(),":"),this.advance(),t.push(this.parseExpression())}const e=this.peek();if(!vn(e,",")&&!On(e))throw new n("Expected comma or closing brace",this.peekSourceCodeInfo());vn(e,",")&&this.advance()}var r;return On(r=this.peek())||Un("RBrace",void 0,r),this.advance(),Rn([s.SpecialExpression,[Et.object,t]],e[2])}parseArray(){const e=Nn(this.peek());this.advance();const t=[];for(;!this.isAtEnd()&&!$n(this.peek());){vn(this.peek(),"...")?(this.advance(),t.push(Rn([s.Spread,this.parseExpression()],this.peekSourceCodeInfo()))):t.push(this.parseExpression());const e=this.peek();if(!vn(e,",")&&!$n(e))throw new n("Expected comma or closing parenthesis",this.peekSourceCodeInfo());vn(e,",")&&this.advance()}return In(this.peek()),this.advance(),Rn([s.SpecialExpression,[Et.array,t]],e[2])}parseFunctionCall(e){this.advance();const t=[];for(;!this.isAtEnd()&&!xn(this.peek());){vn(this.peek(),"...")?(this.advance(),t.push(Rn([s.Spread,this.parseExpression()],this.peekSourceCodeInfo()))):t.push(this.parseExpression());const e=this.peek();if(!vn(e,",")&&!xn(e))throw new n("Expected comma or closing parenthesis",this.peek()?.[2]);vn(e,",")&&this.advance()}if(!xn(this.peek()))throw new n("Expected closing parenthesis",this.peekSourceCodeInfo());if(this.advance(),!Ke(e))return Ge(e)||qe(e)?Ln(e,t,e[2]):Rn([s.NormalExpression,[e,t]],e[2]);{const r=e[1];switch(V($t.specialExpressions[r].arity,t.length,e[2]),r){case Et["||"]:case Et["&&"]:case Et.recur:case Et.array:case Et.object:case Et["??"]:return Rn([s.SpecialExpression,[r,t]],e[2]);case Et["defined?"]:{const[n]=t;return Rn([s.SpecialExpression,[r,n]],e[2])}case Et.throw:{const[n]=t;return Rn([s.SpecialExpression,[r,n]],e[2])}case Et["0_lambda"]:case Et["0_def"]:throw new n(`${r} is not allowed`,e[2]);default:throw new n(`Unknown special expression: ${r}`,e[2])}}}parseLambdaFunction(){const e=this.asToken(this.peek());if(wn(e)&&pn(this.peekAhead(1))&&vn(this.peekAhead(2),"->"))return null;try{const t=this.parseFunctionArguments();if(!vn(this.peek(),"->"))return null;let n;this.advance();let r="";if(gn(this.peek(),"do")){const e=this.parseBlock(!0);r=e[1],n=e[0][1][1]}else n=[this.parseExpression()];return Rn([s.SpecialExpression,[Et["0_lambda"],[t,n],r]],e[2])}catch{return null}}parseFunctionArguments(){const e=this.peek();if(pn(e))return[Rn([Qe,[this.parseSymbol(),void 0]],e[2])];Sn(e),this.advance();let t=!1,r=!1;const i=[];for(;!this.isAtEnd()&&!xn(this.peek())&&!pn(this.peek(),"let");){if(t)throw new n("Rest argument must be last",this.peekSourceCodeInfo());const e=this.parseBindingTarget();if(void 0!==e[1][1]&&(r=!0),e[0]===et&&(t=!0),r&&!e[1][1])throw new n("Default arguments must be last",this.peekSourceCodeInfo());if(i.push(e),!vn(this.peek(),",")&&!xn(this.peek())&&!pn(this.peek(),"let"))throw new n("Expected comma or closing parenthesis",this.peekSourceCodeInfo());vn(this.peek(),",")&&this.advance()}if(!xn(this.peek()))throw new n("Expected closing parenthesis",this.peekSourceCodeInfo());return this.advance(),i}parseShorthandLambdaFunction(){const e=this.asToken(this.peek());this.advance();const t=this.parseState.position;let r,i="";if(gn(this.peek(),"do")){const e=this.parseBlock(!0);i=e[1],r=e[0][1][1]}else r=[this.parseExpression()];const o=this.parseState.position-1;let a=0,u="NOT_SET";for(let r=t;r<=o;r+=1){const t=this.tokenStream.tokens[r];if(pn(t)){const r=Dn.exec(t[1]);if(r){const t=r[1]??"1";if("1"===t){if(!r[1]&&"WITH_1"===u||r[1]&&"NAKED"===u)throw new n("Please make up your mind, either use $ or $1",e[2]);u=r[1]?"WITH_1":"NAKED"}if(a=Math.max(a,Number(t)),a>20)throw new n("Can't specify more than 20 arguments",e[2])}}}const c=[];for(let t=1;t<=a;t+=1)1===t&&"NAKED"===u?c.push(Rn([Qe,[[s.UserDefinedSymbol,"$"],void 0]],e[2])):c.push(Rn([Qe,[[s.UserDefinedSymbol,`$${t}`],void 0]],e[2]));return Rn([s.SpecialExpression,[Et["0_lambda"],[c,r],i]],e[2])}parseOptionalDefaulValue(){if(vn(this.peek(),"="))return this.advance(),this.parseExpression()}parseBindingTarget({requireDefaultValue:e,noRest:t}={}){const r=this.peek();if(pn(r)){const t=this.parseSymbol();if(!qe(t))throw new n("Expected user defined symbol",r[2]);const i=this.parseOptionalDefaulValue();if(e&&!i)throw new n("Expected assignment",this.peekSourceCodeInfo());return Rn([Qe,[t,i]],r[2])}if(vn(r,"...")){if(t)throw new n("Rest element not allowed",r[2]);this.advance();const e=Ye(this.parseSymbol());if(vn(this.peek(),"="))throw new n("Rest argument can not have default value",this.peekSourceCodeInfo());return Rn([et,[e[1],void 0]],r[2])}if(En(r)){this.advance();const t=[];let i=this.asToken(this.peek()),s=!1;for(;!$n(i);){if(s)throw new n("Rest argument must be last",i[2]);if(vn(i,",")){t.push(null),this.advance(),i=this.asToken(this.peek());continue}const e=this.parseBindingTarget();e[0]===et&&(s=!0),t.push(e),i=this.asToken(this.peek()),$n(i)||(bn(i,","),this.advance()),i=this.asToken(this.peek())}this.advance();const o=this.parseOptionalDefaulValue();if(e&&!o)throw new n("Expected assignment",this.peekSourceCodeInfo());return Rn([nt,[t,o]],r[2])}if(An(r)){this.advance();const t={};let i=this.asToken(this.peek()),s=!1;for(;!On(i);){if(s)throw new n("Rest argument must be last",i[2]);vn(i,"...")&&(s=!0,this.advance());const e=this.parseSymbol(),o=Mn(e);if(i=this.asToken(this.peek()),gn(i,"as")){if(s)throw new n("Rest argument can not have alias",i[2]);this.advance();const e=Ye(this.parseSymbol());if(t[e[1]])throw new n(`Duplicate binding name: ${e}`,i[2]);t[o]=Rn([Qe,[e,this.parseOptionalDefaulValue()]],r[2])}else if(On(i)||vn(i,",")||vn(i,"=")){const o=Ye(e,e[2]);if(t[o[1]])throw new n(`Duplicate binding name: ${o}`,i[2]);if(s&&vn(this.peek(),"="))throw new n("Rest argument can not have default value",this.peekSourceCodeInfo());t[o[1]]=Rn(s?[et,[o[1],this.parseOptionalDefaulValue()]]:[Qe,[o,this.parseOptionalDefaulValue()]],r[2])}else if(vn(i,":")){if(this.advance(),i=this.asToken(this.peek()),!An(i)&&!En(i))throw new n("Expected object or array",i[2]);t[o]=this.parseBindingTarget()}On(this.peek())||(bn(this.peek(),","),this.advance()),i=this.asToken(this.peek())}this.advance(),i=this.asToken(this.peek());const o=this.parseOptionalDefaulValue();if(e&&!o)throw new n("Expected assignment",i[2]);return Rn([tt,[t,o]],r[2])}throw new n("Expected symbol",this.peekSourceCodeInfo())}parseLet(e){this.advance();const t=this.parseBindingTarget({requireDefaultValue:!0,noRest:!0}),n=t[1][1];t[1][1]=void 0;const r=Rn([s.Binding,[t,n]],e[2]);return Rn([s.SpecialExpression,[Et.let,r]],e[2])}parseBlock(e=!1){const t=yn(this.peek(),"do");this.advance();let r="";e&&function(e){return"DocString"===e?.[0]}(this.peek())&&(r=this.parseDocString());const i=[];for(;!this.isAtEnd()&&!gn(this.peek(),"end");)if(i.push(this.parseExpression()),vn(this.peek(),";"))this.advance();else if(!gn(this.peek(),"end"))throw new n("Expected end",this.peekSourceCodeInfo());return mn(this.peek(),"end"),this.advance(),[Rn([s.SpecialExpression,[Et.block,i]],t[2]),r]}parseImplicitBlock(e){const t=[];for(;!this.isAtEnd()&&!this.isImplicitBlockEnd(e);)vn(this.peek(),";")?this.advance():t.push(this.parseExpression());if(this.assertImplicitBlockEnd(e),0===t.length)throw new n("Expected expression",this.peekSourceCodeInfo());return 1===t.length?t[0]:Rn([s.SpecialExpression,[Et.block,t]],this.peekSourceCodeInfo())}assertImplicitBlockEnd(e){if(!this.isImplicitBlockEnd(e))throw new n(`Expected ${e.map(e=>e[1]).join(" or ")}`,this.peekSourceCodeInfo())}isImplicitBlockEnd(e){for(const t of e)if(gn(this.peek(),t))return!0;return!1}parseLoop(e){this.advance(),Sn(this.peek()),this.advance();const t=[];let r=this.peek();for(;!this.isAtEnd()&&!xn(r);){const e=this.parseBindingTarget({requireDefaultValue:!0,noRest:!0}),n=e[1][1];e[1][1]=void 0,t.push(Rn([s.Binding,[e,n]],e[2])),vn(this.peek(),",")&&this.advance(),r=this.peek()}if(0===t.length)throw new n("Expected binding",this.peekSourceCodeInfo());kn(r),this.advance(),bn(this.peek(),"->"),this.advance();const i=this.parseExpression();return Rn([s.SpecialExpression,[Et.loop,t,i]],e[2])}parseTry(e){this.advance();const t=this.parseImplicitBlock(["catch"]);let n;this.advance(),wn(this.peek())&&(this.advance(),n=this.parseSymbol(),kn(this.peek()),this.advance());const r=this.parseImplicitBlock(["end"]);return this.advance(),Rn([s.SpecialExpression,[Et.try,t,n,r]],e[2])}parseForOrDoseq(e){const t="doseq"===e[1];this.advance(),Sn(this.peek()),this.advance();const r=[];for(;!this.isAtEnd()&&!xn(this.peek());){const e=this.parseForLoopBinding(),t=r.flatMap(e=>Object.keys(ot(e[0][1][0]))),i=ot(e[0][1][0]);if(Object.keys(i).some(e=>t.includes(e)))throw new n("Duplicate binding",e[0][2]);r.push(e),vn(this.peek(),",")&&this.advance()}kn(this.peek()),this.advance(),bn(this.peek(),"->"),this.advance();const i=this.parseExpression();return Rn(t?[s.SpecialExpression,[Et.doseq,r,i]]:[s.SpecialExpression,[Et.for,r,i]],e[2])}parseForLoopBinding(){const e=this.parseBinding(),t=[];let r=this.asToken(this.peek());this.assertInternalLoopBindingDelimiter(r,["let","when","while"]);const i=[];if("let"===r[1])for(t.push("&let");pn(r,"let");){const e=this.parseLet(r),t=i.flatMap(e=>Object.keys(ot(e[1][0])));if(Object.keys(ot(e[1][1][1][0])).some(e=>t.includes(e)))throw new n("Duplicate binding",e[1][1][2]);i.push(e[1][1]),r=this.asToken(this.peek()),this.assertInternalLoopBindingDelimiter(r,["let","when","while"]),r=this.asToken(this.peek())}let s,o;for(;gn(r,"when")||gn(r,"while");){this.advance(),"when"===r[1]?(t.push("&when"),s=this.parseExpression()):(t.push("&while"),o=this.parseExpression()),r=this.asToken(this.peek());const e=t.includes("&when")&&t.includes("&while")?[]:t.includes("&when")?["while"]:["when"];this.assertInternalLoopBindingDelimiter(r,e),r=this.asToken(this.peek())}return this.assertInternalLoopBindingDelimiter(r,[]),[e,i,s,o]}assertInternalLoopBindingDelimiter(e,t){if(!this.isInternalLoopBindingDelimiter(e,t)){const r=`${[...t,","].map(e=>`"${e}"`).join(", ")} or ")"`;throw new n(`Expected symbol ${r}`,e[2])}}isInternalLoopBindingDelimiter(e,t){if(vn(e,",")||xn(e))return!0;for(const n of t){if("let"===n&&pn(e,"let"))return!0;if(["when","while"].includes(n)&&gn(e,n))return!0}return!1}parseBinding(){const e=dn(this.peek()),t=Ye(this.parseSymbol());mn(this.peek(),"in"),this.advance();const n=this.parseExpression();return Rn([s.Binding,[Rn([Qe,[t,void 0]],e[2]),n]],e[2])}parseIfOrUnless(e){const t="unless"===e[1];this.advance();const n=this.parseExpression();mn(this.peek(),"then"),this.advance();const r=this.parseImplicitBlock(["else","end"]);let i;return gn(this.peek(),"else")&&(this.advance(),i=this.parseImplicitBlock(["end"])),this.advance(),Rn(t?[s.SpecialExpression,[Et.unless,[n,r,i]]]:[s.SpecialExpression,[Et.if,[n,r,i]]],e[2])}parseCond(e){this.advance();const t=[];for(;!this.isAtEnd()&&!gn(this.peek(),"end");){mn(this.peek(),"case"),this.advance();const e=this.parseExpression();mn(this.peek(),"then"),this.advance();const n=this.parseImplicitBlock(["case","end"]);if(t.push([e,n]),gn(this.peek(),"end"))break}return mn(this.peek()),this.advance(),Rn([s.SpecialExpression,[Et.cond,t]],e[2])}parseSwitch(e){this.advance();const t=this.parseExpression(),n=[];for(;!this.isAtEnd()&&!gn(this.peek(),"end");){mn(this.peek(),"case"),this.advance();const e=this.parseExpression();mn(this.peek(),"then"),this.advance();const t=this.parseImplicitBlock(["case","end"]);if(n.push([e,t]),gn(this.peek(),"end"))break}return mn(this.peek(),"end"),this.advance(),Rn([s.SpecialExpression,[Et.switch,t,n]],e[2])}isAtEnd(){return this.parseState.position>=this.tokenStream.tokens.length}isAtExpressionEnd(){if(this.isAtEnd())return!0;const e=this.peek();return vn(e)?[";",",",":"].includes(e[1]):!!gn(e)&&["else","when","while","case","catch","let","then","end","do"].includes(e[1])}parseExport(e){this.advance();const t=this.peek();if(pn(t,"let")){const n=this.parseLet(dn(t));return Rn([s.SpecialExpression,[Et["0_def"],n[1][1]]],e[2])}throw new n("Expected let",this.peekSourceCodeInfo())}stringToSymbolNode(e,t){return void 0!==Et[e]&&"fn"!==e&&"def"!==e&&"defn"!==e?Rn([s.SpecialBuiltinSymbol,Et[e]],t):void 0!==Ve[e]?Rn([s.NormalBuiltinSymbol,Ve[e]],t):Rn([s.UserDefinedSymbol,e],t)}stringFromQuotedSymbol(e){return e.substring(1,e.length-1).replace(/(\\{2})|(\\')|\\(.)/g,(e,t,n,r)=>t?"\\":n?"'":`\\${r}`)}parseSymbol(){const e=this.asToken(this.peek());if(this.advance(),!pn(e))throw new n(`Expected symbol token, got ${e[0]}`,e[2]);return"'"===e[1][0]?this.stringToSymbolNode(this.stringFromQuotedSymbol(e[1]),e[2]):this.stringToSymbolNode(e[1],e[2])}parseReservedSymbol(){const e=yn(this.peek());this.advance();const t=e[1];return function(e){return e in Ft}(t)?Rn([s.Number,Ft[t]],e[2]):Rn([s.ReservedSymbol,e[1]],e[2])}parseNumber(){const e=this.asToken(this.peek());this.advance();const t=e[1],n="-"===t[0],r=(n?t.substring(1):t).replace(/_/g,"");return Rn([s.Number,n?-Number(r):Number(r)],e[2])}parseDocString(){const e=this.asToken(this.peek()),t=e[2]?["string",e[1].slice(2,-2),e[2]]:["string",e[1].slice(2,-2)];return ie(this.parseString(t)[1])}parseString(e){this.advance();const t=e[1].substring(1,e[1].length-1).replace(/(\\{2})|(\\")|(\\n)|(\\t)|(\\r)|(\\b)|(\\f)|\\(.)/g,(e,t,n,r,i,s,o,a,u)=>t?"\\":r?"\n":i?"\t":s?"\r":o?"\b":a?"\f":n?'"':u);return Rn([s.String,t],e[2])}parseRegexpShorthand(){const e=this.asToken(this.peek());this.advance();const t=e[1].lastIndexOf('"'),n=e[1].substring(2,t),r=e[1].substring(t+1),i=Rn([s.String,n],e[2]),o=Rn([s.String,r],e[2]);return Rn([s.NormalExpression,[Rn([s.NormalBuiltinSymbol,Ve.regexp],e[2]),[i,o]]],e[2])}}const Wn=new Set([...It,...At,...Object.keys(Ut)]);class qn{originalProgram;originalPosition;prefixProgram="";suffixProgram="";searchString="";suggestions=[];suggestionIndex=null;constructor(e,t,n,r){this.originalProgram=e,this.originalPosition=t;const i=this.originalProgram.slice(0,this.originalPosition),s=n.tokenize(i).tokens.at(-1);s&&"Error"!==s[0]&&(this.searchString=s[1],this.prefixProgram=this.originalProgram.slice(0,this.originalPosition-this.searchString.length),this.suffixProgram=this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.originalProgram.slice(this.prefixProgram.length+this.searchString.length),this.suggestions=this.generateSuggestions(r))}getNextSuggestion(){return this.getAutoCompleteSuggestionResult(this.getNextSuggestionSymbol())}getPreviousSuggestion(){return this.getAutoCompleteSuggestionResult(this.getPreviousSuggestionSymbol())}getAutoCompleteSuggestionResult(e){return null===e?null:{program:this.prefixProgram+e+this.suffixProgram,position:this.prefixProgram.length+e.length}}getNextSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=0:(this.suggestionIndex+=1,this.suggestionIndex>=this.suggestions.length&&(this.suggestionIndex=0)),this.suggestions[this.suggestionIndex])}getPreviousSuggestionSymbol(){return 0===this.suggestions.length?null:(null===this.suggestionIndex?this.suggestionIndex=this.suggestions.length-1:(this.suggestionIndex-=1,this.suggestionIndex<0&&(this.suggestionIndex=this.suggestions.length-1)),this.suggestions[this.suggestionIndex])}getSuggestions(){return[...this.suggestions]}getSearchString(){return this.searchString}generateSuggestions(e){const t=new Set(["0_def","0_defn","0_lambda"]),n=this.generateWithPredicate(e,e=>!t.has(e)&&e.startsWith(this.searchString));n.forEach(e=>t.add(e));const r=this.generateWithPredicate(e,e=>!t.has(e)&&e.toLowerCase().startsWith(this.searchString.toLowerCase()));r.forEach(e=>t.add(e));const i=this.generateWithPredicate(e,e=>!t.has(e)&&e.includes(this.searchString));i.forEach(e=>t.add(e));const s=this.generateWithPredicate(e,e=>!t.has(e)&&e.includes(this.searchString.toLowerCase()));return s.forEach(e=>t.add(e)),[...n,...r,...i,...s]}generateWithPredicate(e,t){const n=new Set;return Wn.forEach(e=>{t(e)&&n.add(e)}),Object.keys(e.globalContext??{}).filter(t).forEach(e=>n.add(e)),e.contexts?.forEach(e=>{Object.keys(e).filter(t).forEach(e=>n.add(e))}),Object.keys(e.jsFunctions??{}).filter(t).forEach(e=>n.add(e)),Object.keys(e.values??{}).filter(t).forEach(e=>n.add(e)),[...n].sort((e,t)=>e.localeCompare(t))}}class Yn{cache={};firstEntry=void 0;lastEntry=void 0;_size=0;maxSize;constructor(e){var t;if(this.maxSize=null===e?null:(t=e,Math.max(0,Math.ceil(t))),"number"==typeof this.maxSize&&this.maxSize<1)throw new Error(`1 is the minimum maxSize, got ${p(e)}`)}getContent(){return Object.entries(this.cache).reduce((e,[t,n])=>(e[t]=n.value,e),{})}get size(){return this._size}get(e){return this.cache[e]?.value}clear(){this.cache={},this.firstEntry=void 0,this.lastEntry=void 0,this._size=0}has(e){return!!this.cache[e]}set(e,t){if(this.has(e))throw new Error(`AstCache - key already present: ${e}`);const n={value:t,nextEntry:void 0,key:e};for(this.cache[e]=n,this._size+=1,this.lastEntry&&(this.lastEntry.nextEntry=n),this.lastEntry=n,this.firstEntry||(this.firstEntry=this.lastEntry);null!==this.maxSize&&this.size>this.maxSize;)this.dropFirstEntry()}dropFirstEntry(){const e=this.firstEntry;delete this.cache[e.key],this._size-=1,this.firstEntry=e.nextEntry}}exports.Lits=class{astCache;astCacheSize;debug;modules;constructor(e={}){if(this.debug=e.debug??!1,this.astCacheSize=e.astCacheSize??null,this.astCacheSize){this.astCache=new Yn(this.astCacheSize);const t=e.initialCache??{};for(const e of Object.keys(t))this.astCache.set(e,t[e])}else this.astCache=null;const t=e.modules??[];this.modules=new Map(t.map(e=>[e.name,e]))}getRuntimeInfo(){return{astCacheSize:this.astCacheSize,astCache:this.astCache,debug:this.debug}}run(e,t={}){const n=this.generateAst(e,t);return this.evaluate(n,t)}context(e,t={}){const n="string"==typeof e?this.generateAst(e,t):e,r=_t(t,this.modules);return Bt(n,r),r.globalContext}getUndefinedSymbols(e,t={}){const n="string"==typeof e?this.generateAst(e,t):e,r=_t(t,this.modules);return jt(n,r,$t,Pt)}tokenize(e,t={}){const n=function(e,t,n){let r=0;const i={tokens:[],filePath:n,hasDebugData:t};for(;r<e.length;){const s=t?fn(e,r,n):void 0,o=hn(e,r),[a,u]=o;r+=a,u&&(s&&(u[2]=s),i.tokens.push(u))}return i}(e,this.debug,t.filePath);return t.minify?Tn(n,{removeWhiteSpace:!1}):n}parse(e){const t={body:[],hasDebugData:(e=Tn(e,{removeWhiteSpace:!0})).hasDebugData};return t.body=new Jn(e,{position:0}).parse(),t}evaluate(e,t){return Bt(e,_t(t,this.modules))}transformSymbols(e,t){return function(e,t){return{...e,tokens:e.tokens.map(e=>pn(e)?[e[0],t(e[1])]:e)}}(e,t)}untokenize(e){return function(e){return e.tokens.reduce((e,t)=>`${e}${t[1]}`,"")}(e)}apply(e,t,n={}){const r="FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59",i=this.generateApplyFunctionCall(r,t),s=this.generateAst(i,n),o=t.reduce((e,t,n)=>(e[`${r}_${n}`]=t,e),{[r]:e});return n.values={...n.values,...o},this.evaluate(s,n)}generateApplyFunctionCall(e,t){const n=t.map((t,n)=>`${e}_${n}`).join(", ");return`${e}(${n})`}generateAst(e,t){if(this.astCache){const t=this.astCache.get(e);if(t)return t}const n=this.tokenize(e,{filePath:t.filePath}),r=this.parse(n);return this.astCache?.set(e,r),r}getAutoCompleter(e,t,n={}){return new qn(e,t,this,n)}},exports.asLitsFunction=function(e,t){return w(e,t),e},exports.asNativeJsFunction=function(e,t){return E(e,t),e},exports.asUserDefinedFunction=function(e,t){return x(e,t),e},exports.assertLitsFunction=w,exports.assertNativeJsFunction=E,exports.assertUserDefinedFunction=x,exports.isBuiltinFunction=function(e){return v(e)&&"Builtin"===e.functionType},exports.isGrid=xe,exports.isLitsError=function(e){return e instanceof n},exports.isLitsFunction=b,exports.isMatrix=ke,exports.isNativeJsFunction=k,exports.isUserDefinedFunction=S,exports.isVector=be,exports.normalExpressionKeys=It,exports.specialExpressionKeys=At;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|