{"version":3,"file":"xps-analysis.esm.js","sources":["../node_modules/is-any-array/lib/index.js","../node_modules/ml-spectra-processing/lib/x/getOutputArray.js","../node_modules/ml-spectra-processing/lib/x/xMedian.js","../node_modules/ml-spectra-processing/lib/x/xCheck.js","../node_modules/ml-spectra-processing/lib/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib/x/xAbsoluteSum.js","../node_modules/ml-spectra-processing/lib/x/xAdd.js","../node_modules/ml-spectra-processing/lib/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib/x/xBinning.js","../node_modules/ml-matrix/matrix.js","../node_modules/ml-matrix/matrix.mjs","../node_modules/ml-spectra-processing/lib/x/xMean.js","../node_modules/ml-spectra-processing/lib/x/xVariance.js","../node_modules/ml-spectra-processing/lib/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib/x/xDivide.js","../node_modules/ml-spectra-processing/lib/x/xEnsureFloat64.js","../node_modules/fft.js/lib/fft.js","../node_modules/ml-spectra-processing/lib/utils/createFromToArray.js","../node_modules/ml-xsadd/lib-esm/XSadd.js","../node_modules/ml-spectra-processing/lib/utils/createRandomArray.js","../node_modules/ml-spectra-processing/lib/utils/stringify.js","../node_modules/ml-spectra-processing/lib/x/xSubtract.js","../node_modules/ml-spectra-processing/lib/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib/x/xMinValue.js","../node_modules/ml-spectra-processing/lib/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib/x/xMaxAbsoluteValue.js","../node_modules/ml-spectra-processing/lib/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib/x/utils/erfcinv.js","../node_modules/ml-spectra-processing/lib/x/utils/simpleNormInv.js","../node_modules/ml-spectra-processing/lib/x/xNoiseSanPlot.js","../node_modules/ml-spectra-processing/lib/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib/x/xSum.js","../node_modules/ml-spectra-processing/lib/x/xNormed.js","../node_modules/ml-spectra-processing/lib/x/xPadding.js","../node_modules/ml-spectra-processing/lib/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/lib/x/xRescale.js","../node_modules/ml-spectra-processing/lib/x/xRolling.js","../node_modules/ml-spectra-processing/lib/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib/x/xRollingMedian.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCholeskySolver.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCuthillMckee.js","../node_modules/ml-spectra-processing/lib/matrix/matrixMinMaxZ.js","../node_modules/ml-spectra-processing/lib/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib/xy/xyFilterXPositive.js","../node_modules/ml-spectra-processing/lib/xy/xyGrowingX.js","../node_modules/ml-spectra-processing/lib/xy/xyInterpolateLinear.js","../node_modules/common-spectrum/lib/jsgraph/addStyle.js","../node_modules/common-spectrum/lib/jsgraph/colors.js","../node_modules/common-spectrum/lib/jsgraph/getJSGraph.js","../node_modules/common-spectrum/lib/jsgraph/getNormalizationAnnotations.js","../node_modules/ml-signal-processing/lib/filters/scaling/centerMean.js","../node_modules/ml-signal-processing/lib/filters/scaling/centerMedian.js","../node_modules/ml-signal-processing/lib/filters/x/fromTo.js","../node_modules/ml-signal-processing/lib/filters/scaling/normed.js","../node_modules/ml-signal-processing/lib/filters/scaling/divideBySD.js","../node_modules/ml-signal-processing/lib/filters/scaling/rescale.js","../node_modules/ml-signal-processing/lib/filters/scaling/paretoNormalization.js","../node_modules/ml-airpls/lib/utils.js","../node_modules/ml-airpls/lib/index.js","../node_modules/ml-array-sequential-fill/lib/index.js","../node_modules/baselines/src/airPLS.js","../node_modules/ml-regression-base/lib-esm/checkArrayLength.js","../node_modules/ml-regression-base/lib-esm/BaseRegression.js","../node_modules/ml-regression-base/lib-esm/maybeToPrecision.js","../node_modules/ml-regression-polynomial/lib/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/baselines/src/iterativePolynomial.js","../node_modules/baselines/src/rollingAverage.js","../node_modules/ml-rolling-ball-baseline/lib-esm/rollingBall.js","../node_modules/baselines/src/rollingBall.js","../node_modules/baselines/src/rollingMedian.js","../node_modules/ml-signal-processing/lib/filters/baseline/airPLSBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/iterativePolynomialBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingAverageBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingBallBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingMedianBaseline.js","../node_modules/ml-savitzky-golay-generalized/lib/index.js","../node_modules/ml-signal-processing/lib/filters/sg/firstDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/secondDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/thirdDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/savitzkyGolay.js","../node_modules/ml-signal-processing/lib/filters/x/ensureGrowing.js","../node_modules/ml-signal-processing/lib/filters/x/reverseIfNeeded.js","../node_modules/ml-signal-processing/lib/filters/x/equallySpaced.js","../node_modules/ml-signal-processing/lib/filters/x/filterX.js","../node_modules/ml-signal-processing/lib/filters/x/setMaxX.js","../node_modules/ml-signal-processing/lib/filters/x/setMinX.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/getMinMaxIntervals.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/tryMatchOneIntervalWithMinData.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/autoAlgorithm.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/getPeaksFromIntervals.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/xGetCrossZeroPoints.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/firstDerivative.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/secondDerivative.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/gsd.js","../node_modules/ml-signal-processing/lib/filters/x/calibrateX.js","../node_modules/ml-signal-processing/lib/filters/x/xFunction.js","../node_modules/ml-signal-processing/lib/filters/scaling/yFunction.js","../node_modules/ml-signal-processing/lib/filters/y/setMaxY.js","../node_modules/ml-signal-processing/lib/filters/y/setMinY.js","../node_modules/ml-signal-processing/lib/filterXY.js","../node_modules/common-spectrum/lib/util/getNormalizedSpectrum.js","../node_modules/js-quantities/build/quantities.js","../node_modules/common-spectrum/lib/util/convertUnit.js","../node_modules/common-spectrum/lib/util/ensureRegexp.js","../node_modules/common-spectrum/lib/util/getConvertedVariable.js","../node_modules/common-spectrum/lib/util/getXYSpectra.js","../node_modules/common-spectrum/lib/util/getXYSpectrum.js","../node_modules/common-spectrum/lib/Analysis.js","../node_modules/common-spectrum/lib/util/appendDistinctParameter.js","../node_modules/common-spectrum/lib/util/appendDistinctValue.js","../node_modules/common-spectrum/lib/AnalysesManager.js","../node_modules/ensure-string/lib/index.js","../node_modules/dynamic-typing/lib/parseString.js","../node_modules/gyromagnetic-ratio/lib-esm/gyromagneticRatioMHzT.js","../node_modules/gyromagnetic-ratio/lib-esm/getGyromagneticNucleus.js","../node_modules/gyromagnetic-ratio/lib-esm/getGyromagneticRatio.js","../node_modules/gyromagnetic-ratio/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib/index.js","../node_modules/jcampconverter/dist/jcampconverter.js","../node_modules/common-spectrum/lib/from/fromJcamp.js","../node_modules/convert-to-jcamp/lib-esm/utils/addInfoData.js","../node_modules/convert-to-jcamp/node_modules/is-any-array/lib-esm/index.js","../node_modules/convert-to-jcamp/lib-esm/utils/checkMatrix.js","../node_modules/convert-to-jcamp/lib-esm/utils/checkNumberOrArray.js","../node_modules/convert-to-jcamp/lib-esm/utils/getExtremeValues.js","../node_modules/convert-to-jcamp/lib-esm/creatorNtuples.js","../node_modules/convert-to-jcamp/lib-esm/utils/getFactorNumber.js","../node_modules/convert-to-jcamp/lib-esm/utils/getBestFactor.js","../node_modules/convert-to-jcamp/lib-esm/utils/getNumber.js","../node_modules/convert-to-jcamp/lib-esm/utils/peakTableCreator.js","../node_modules/convert-to-jcamp/lib-esm/utils/rescaleAndEnsureInteger.js","../node_modules/convert-to-jcamp/lib-esm/utils/vectorEncoder.js","../node_modules/convert-to-jcamp/lib-esm/utils/xyDataCreator.js","../node_modules/convert-to-jcamp/lib-esm/fromJSON.js","../node_modules/convert-to-jcamp/lib-esm/fromVariables.js","../node_modules/common-spectrum/lib/to/toJcamps.js","../node_modules/common-spectrum/lib/to/toJcamp.js","../node_modules/common-spectrum/lib/index.js","../src/jsgraph/getComponentsAnnotations.js","../src/jsgraph/getRegionsAnnotations.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/vamas/node_modules/ensure-string/lib-esm/index.js","../node_modules/vamas/src/parser/parse.js","../node_modules/vamas/src/parser/casa/appendCalibration.js","../node_modules/vamas/src/parser/casa/appendComponent.js","../node_modules/vamas/src/parser/casa/appendRegion.js","../node_modules/vamas/src/parser/parseCASA.js","../src/from/mapComponents.js","../src/from/mapRegions.js","../src/from/parseRegion.js","../src/from/getNormalizedMeta.js","../src/from/fromVamas.js","../node_modules/ml-gsd/lib/algorithms/getMinMaxIntervals.js","../node_modules/ml-gsd/lib/algorithms/tryMatchOneIntervalWithMinData.js","../node_modules/ml-gsd/lib/algorithms/autoAlgorithm.js","../node_modules/ml-gsd/lib/algorithms/getPeaksFromIntervals.js","../node_modules/ml-gsd/lib/algorithms/xGetCrossZeroPoints.js","../node_modules/ml-gsd/lib/algorithms/firstDerivative.js","../node_modules/ml-gsd/lib/algorithms/secondDerivative.js","../node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-gsd/lib/gsd.js","../src/peakPicking.js","../src/references.js","../node_modules/openchemlib-utils/lib/util/getXAtomicNumber.js","../node_modules/openchemlib-utils/lib/util/isCsp3.js","../node_modules/openchemlib-utils/lib/util/makeRacemic.js","../node_modules/openchemlib-utils/lib/util/tagAtom.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtomsAsFragments.js","../node_modules/openchemlib-utils/lib/util/getCompactCopyWithoutCustomLabels.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtomsAsStrings.js","../node_modules/openchemlib-utils/lib/diastereotopic/getChiralOrHeterotopicCarbons.js","../node_modules/openchemlib-utils/lib/diastereotopic/ensureHeterotopicChiralBonds.js","../node_modules/openchemlib-utils/lib/util/getSymmetryRanks.js","../node_modules/openchemlib-utils/lib/diastereotopic/getDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib/diastereotopic/getDiastereotopicAtomIDsAndH.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodes.js","../node_modules/openchemlib-utils/lib/polymer/createPolymer.js","../node_modules/atom-sorter/lib/src/index.js","../node_modules/papaparse/papaparse.min.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/util/constants.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/util/erfinv.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/gaussian/Gaussian.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/lorentzian/Lorentzian.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/lorentzianDispersive/LorentzianDispersive.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/pseudoVoigt/computeFactor.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/pseudoVoigtTCH/PseudoVoigtTCH.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/generalizedLorentzian/GeneralizedLorentzian.js","../node_modules/spectrum-generator/node_modules/ml-peak-shape-generator/lib/shapes/1d/getShape1D.js","../node_modules/spectrum-generator/lib/BaseSpectrumGenerator.js","../node_modules/spectrum-generator/lib/util/addBaseline.js","../node_modules/spectrum-generator/lib/util/addNoise.js","../node_modules/spectrum-generator/lib/SpectrumGenerator.js","../node_modules/spectrum-generator/lib/generateSpectrum.js","../src/utilities/prediction/predictUsingHoseCodes.js","../node_modules/crypt/crypt.js","../node_modules/charenc/charenc.js","../node_modules/is-buffer/index.js","../node_modules/md5/md5.js","../src/utilities/prediction/predictUsingAI.js","../src/utilities/prediction/predictPolymer.js","../src/index.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculates the median of an array.\n * @param input - Array containing values\n * @param options\n * @returns - median\n */\nexport function xMedian(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    const { exact = false } = options || {};\n    const array = input.slice();\n    const middleIndex = calcMiddle(0, array.length - 1);\n    const median = quickSelect(array, middleIndex);\n    if (array.length % 2 === 1 || !exact) {\n        return median;\n    }\n    const medianNext = quickSelect(array, middleIndex + 1);\n    return (median + medianNext) / 2;\n}\nfunction quickSelect(array, middleIndex) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    let currentLow = 0;\n    let currentHigh = 0;\n    while (true) {\n        if (high <= low) {\n            return array[middleIndex];\n        }\n        if (high === low + 1) {\n            if (array[low] > array[high]) {\n                swap(array, low, high);\n            }\n            return array[middleIndex];\n        }\n        // Find median of low, middle and high items; swap into position low\n        middle = calcMiddle(low, high);\n        if (array[middle] > array[high])\n            swap(array, middle, high);\n        if (array[low] > array[high])\n            swap(array, low, high);\n        if (array[middle] > array[low])\n            swap(array, middle, low);\n        // Swap low item (now in position middle) into position (low+1)\n        swap(array, middle, low + 1);\n        // Nibble from each end towards middle, swapping items when stuck\n        currentLow = low + 1;\n        currentHigh = high;\n        while (true) {\n            do\n                currentLow++;\n            while (array[low] > array[currentLow]);\n            do\n                currentHigh--;\n            while (array[currentHigh] > array[low]);\n            if (currentHigh < currentLow) {\n                break;\n            }\n            swap(array, currentLow, currentHigh);\n        }\n        // Swap middle item (in position low) back into correct position\n        swap(array, low, currentHigh);\n        // Re-set active partition\n        if (currentHigh <= middleIndex) {\n            low = currentLow;\n        }\n        if (currentHigh >= middleIndex) {\n            high = currentHigh - 1;\n        }\n    }\n}\nfunction swap(array, i, j) {\n    const temp = array[j];\n    array[j] = array[i];\n    array[i] = temp;\n}\nfunction calcMiddle(i, j) {\n    return Math.floor((i + j) / 2);\n}\n//# sourceMappingURL=xMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - Array to check.\n * @param options - Additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength } = options;\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (minLength && input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n * @param array - array of numbers\n * @param target - target\n * @param options\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from \"./xFindClosestIndex.js\";\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex } = options;\n    const { from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\nexport function xAbsoluteSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sum = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sum += Math.abs(array[i]);\n    }\n    return sum;\n}\n//# sourceMappingURL=xAbsoluteSum.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param array1 - the first array\n * @param array2 - the second array or number\n * @returns the result of the addition\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xAdd.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replaceAll(/(?<before>^|\\W)(?<after>[\\da-z]{2,}\\()/g, '$<before>Math.$<after>')\n        .replaceAll('Math.Math', 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (Number.isNaN(toReturn[i])) {\n            throw new Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { xCheck } from \"./xCheck.js\";\n/**\n * Downsample an array by averaging consecutive non-overlapping points (binning).\n * Either specify a fixed `binSize` or a target `numberOfPoints`.\n * @param array - Input array.\n * @param options - Options.\n * @returns Downsampled array.\n */\nexport function xBinning(array, options = {}) {\n    xCheck(array);\n    const { binSize, numberOfPoints, keepFirstAndLast = true } = options;\n    const { length } = array;\n    if (numberOfPoints !== undefined) {\n        if (binSize !== undefined) {\n            throw new RangeError('binSize and numberOfPoints are mutually exclusive');\n        }\n        if (!Number.isInteger(numberOfPoints) || numberOfPoints <= 0) {\n            throw new RangeError('numberOfPoints must be a positive integer');\n        }\n        if (numberOfPoints > length) {\n            throw new RangeError('numberOfPoints must be <= array.length');\n        }\n        return binByNumberOfPoints(array, numberOfPoints, keepFirstAndLast);\n    }\n    const effectiveBinSize = binSize ?? 10;\n    if (!Number.isInteger(effectiveBinSize) || effectiveBinSize <= 0) {\n        throw new RangeError('binSize must be a positive integer');\n    }\n    if (effectiveBinSize === 1) {\n        return Float64Array.from(array);\n    }\n    if (keepFirstAndLast) {\n        if (length <= 2) {\n            return Float64Array.from(array);\n        }\n        const innerLength = length - 2;\n        const innerBinCount = Math.ceil(innerLength / effectiveBinSize);\n        const output = new Float64Array(innerBinCount + 2);\n        output[0] = array[0];\n        output[output.length - 1] = array[length - 1];\n        for (let i = 0, j = 1; i < innerLength; i += effectiveBinSize, j++) {\n            const start = i + 1;\n            const end = Math.min(start + effectiveBinSize, length - 1);\n            let sum = 0;\n            for (let k = start; k < end; k++) {\n                sum += array[k];\n            }\n            output[j] = sum / (end - start);\n        }\n        return output;\n    }\n    const outputLength = Math.ceil(length / effectiveBinSize);\n    const output = new Float64Array(outputLength);\n    for (let i = 0, j = 0; i < length; i += effectiveBinSize, j++) {\n        const end = Math.min(i + effectiveBinSize, length);\n        let sum = 0;\n        for (let k = i; k < end; k++) {\n            sum += array[k];\n        }\n        output[j] = sum / (end - i);\n    }\n    return output;\n}\nfunction binByNumberOfPoints(array, numberOfPoints, keepFirstAndLast) {\n    const { length } = array;\n    const output = new Float64Array(numberOfPoints);\n    if (keepFirstAndLast) {\n        if (numberOfPoints < 2) {\n            throw new RangeError('numberOfPoints must be >= 2 when keepFirstAndLast is true');\n        }\n        output[0] = array[0];\n        output[numberOfPoints - 1] = array[length - 1];\n        if (numberOfPoints === 2) {\n            return output;\n        }\n        const innerLength = length - 2;\n        const innerBins = numberOfPoints - 2;\n        for (let j = 0; j < innerBins; j++) {\n            const start = 1 + Math.floor((j * innerLength) / innerBins);\n            const end = 1 + Math.floor(((j + 1) * innerLength) / innerBins);\n            let sum = 0;\n            for (let k = start; k < end; k++) {\n                sum += array[k];\n            }\n            output[j + 1] = sum / (end - start);\n        }\n        return output;\n    }\n    for (let j = 0; j < numberOfPoints; j++) {\n        const start = Math.floor((j * length) / numberOfPoints);\n        const end = Math.floor(((j + 1) * length) / numberOfPoints);\n        let sum = 0;\n        for (let k = start; k < end; k++) {\n            sum += array[k];\n        }\n        output[j] = sum / (end - start);\n    }\n    return output;\n}\n//# sourceMappingURL=xBinning.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nfunction isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n\n/**\n * Computes the maximum of the given values.\n *\n * @param input\n * @param options\n */\nfunction max(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    const { fromIndex = 0, toIndex = input.length } = options;\n    if (fromIndex < 0 ||\n        fromIndex >= input.length ||\n        !Number.isInteger(fromIndex)) {\n        throw new Error('fromIndex must be a positive integer smaller than length');\n    }\n    if (toIndex <= fromIndex ||\n        toIndex > input.length ||\n        !Number.isInteger(toIndex)) {\n        throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n    }\n    let maxValue = input[fromIndex];\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (input[i] > maxValue)\n            maxValue = input[i];\n    }\n    return maxValue;\n}\n\n/**\n * Computes the minimum of the given values.\n */\nfunction min(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    const { fromIndex = 0, toIndex = input.length } = options;\n    if (fromIndex < 0 ||\n        fromIndex >= input.length ||\n        !Number.isInteger(fromIndex)) {\n        throw new Error('fromIndex must be a positive integer smaller than length');\n    }\n    if (toIndex <= fromIndex ||\n        toIndex > input.length ||\n        !Number.isInteger(toIndex)) {\n        throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n    }\n    let minValue = input[fromIndex];\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (input[i] < minValue)\n            minValue = input[i];\n    }\n    return minValue;\n}\n\n/**\n * Rescale an array into a range.\n */\nfunction rescale(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    else if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    let output;\n    if (options.output !== undefined) {\n        if (!isAnyArray(options.output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        output = options.output;\n    }\n    else {\n        output = new Array(input.length);\n    }\n    const currentMin = min(input);\n    const currentMax = max(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min: minValue = options.autoMinMax ? currentMin : 0, max: maxValue = options.autoMinMax ? currentMax : 1, } = options;\n    if (minValue >= maxValue) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (maxValue - minValue) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + minValue;\n    }\n    return output;\n}\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n  const {\n    maxRows = 15,\n    maxColumns = 10,\n    maxNumSize = 8,\n    padMinus = 'auto',\n  } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n\n  if (padMinus === 'auto') {\n    padMinus = false;\n    loop: for (let i = 0; i < maxI; i++) {\n      for (let j = 0; j < maxJ; j++) {\n        if (matrix.get(i, j) < 0) {\n          padMinus = true;\n          break loop;\n        }\n      }\n    }\n  }\n\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n  return (\n    num >= 0 && padMinus\n      ? ` ${formatNumber2(num, maxNumSize - 1)}`\n      : formatNumber2(num, maxNumSize)\n  ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n  // small.length numbers should be as is\n  let str = num.toString();\n  if (str.length <= len) return str;\n\n  // (7)'0.00123' is better then (7)'1.23e-2'\n  // (8)'0.000123' is worse then (7)'1.23e-3',\n  let fix = num.toFixed(len);\n  if (fix.length > len) {\n    fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n  }\n  if (\n    fix.length <= len &&\n    !fix.startsWith('0.000') &&\n    !fix.startsWith('-0.000')\n  ) {\n    return fix;\n  }\n\n  // well, if it's still too long the user should've used longer numbers\n  let exp = num.toExponential(len);\n  if (exp.length > len) {\n    exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n  }\n  return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nfunction newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nfunction checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n\nfunction sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nfunction centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nfunction centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nfunction centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nfunction getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nfunction getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nfunction getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n\nclass AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isDistance() {\n    if (!this.isSymmetric()) return false;\n\n    for (let i = 0; i < this.rows; i++) {\n      if (this.get(i, i) !== 0) return false;\n    }\n\n    return true;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    switch (type) {\n      case 'max':\n        return this.max();\n      case 'frobenius':\n        return Math.sqrt(this.dot(this));\n      default:\n        throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  mpow(scalar) {\n    if (!this.isSquare()) {\n      throw new RangeError('Matrix must be square');\n    }\n    if (!Number.isInteger(scalar) || scalar < 0) {\n      throw new RangeError('Exponent must be a non-negative integer');\n    }\n    // Russian Peasant exponentiation, i.e. exponentiation by squaring\n    let result = Matrix.eye(this.rows);\n    let bb = this;\n    // Note: Don't bit shift. In JS, that would truncate at 32 bits\n    for (let e = scalar; e >= 1; e /= 2) {\n      if ((e & 1) !== 0) {\n        result = result.mmul(bb);\n      }\n      bb = bb.mmul(bb);\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      result = result.setSubMatrix(c11, 0, 0);\n      result = result.setSubMatrix(c12, c11.rows, 0);\n      result = result.setSubMatrix(c21, 0, c11.columns);\n      result = result.setSubMatrix(c22, c11.rows, c11.columns);\n      return result.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min,\n          max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n  }\n\n  /**\n   * @template {AbstractMatrix} M\n   * @param {AbstractMatrix} from\n   * @param {M} to\n   * @return {M}\n   */\n  static copy(from, to) {\n    for (const [row, column, value] of from.entries()) {\n      to.set(row, column, value);\n    }\n\n    return to;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield [row, column, value]\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *entries() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield [row, col, this.get(row, col)];\n      }\n    }\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield value\n   * @returns {Generator<number, void, void>}\n   */\n  *values() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield this.get(row, col);\n      }\n    }\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n  /**\n   * @type {Float64Array[]}\n   */\n  data;\n\n  /**\n   * Init an empty matrix\n   * @param {number} nRows\n   * @param {number} nColumns\n   */\n  #initData(nRows, nColumns) {\n    this.data = [];\n\n    if (Number.isInteger(nColumns) && nColumns >= 0) {\n      for (let i = 0; i < nRows; i++) {\n        this.data.push(new Float64Array(nColumns));\n      }\n    } else {\n      throw new TypeError('nColumns must be a positive integer');\n    }\n\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      this.#initData(nRows.rows, nRows.columns);\n      Matrix.copy(nRows, this);\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      this.#initData(nRows, nColumns);\n    } else if (isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n\n      this.rows = nRows;\n      this.columns = nColumns;\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n  /** @type {Matrix} */\n  #matrix;\n\n  get size() {\n    return this.#matrix.size;\n  }\n\n  get rows() {\n    return this.#matrix.rows;\n  }\n\n  get columns() {\n    return this.#matrix.columns;\n  }\n\n  get diagonalSize() {\n    return this.rows;\n  }\n\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isSymmetricMatrix(value) {\n    return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static zeros(diagonalSize) {\n    return new this(diagonalSize);\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static ones(diagonalSize) {\n    return new this(diagonalSize).fill(1);\n  }\n\n  /**\n   * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n   * @return {this}\n   */\n  constructor(diagonalSize) {\n    super();\n\n    if (Matrix.isMatrix(diagonalSize)) {\n      if (!diagonalSize.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n\n      this.#matrix = Matrix.copy(\n        diagonalSize,\n        new Matrix(diagonalSize.rows, diagonalSize.rows),\n      );\n    } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n      this.#matrix = new Matrix(diagonalSize, diagonalSize);\n    } else {\n      this.#matrix = new Matrix(diagonalSize);\n\n      if (!this.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n    }\n  }\n\n  clone() {\n    const matrix = new SymmetricMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  toMatrix() {\n    return new Matrix(this);\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.#matrix.get(rowIndex, columnIndex);\n  }\n  set(rowIndex, columnIndex, value) {\n    // symmetric set\n    this.#matrix.set(rowIndex, columnIndex, value);\n    this.#matrix.set(columnIndex, rowIndex, value);\n\n    return this;\n  }\n\n  removeCross(index) {\n    // symmetric remove side\n    this.#matrix.removeRow(index);\n    this.#matrix.removeColumn(index);\n\n    return this;\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    const row = array.slice();\n    row.splice(index, 1);\n\n    this.#matrix.addRow(index, row);\n    this.#matrix.addColumn(index, array);\n\n    return this;\n  }\n\n  /**\n   * @param {Mask[]} mask\n   */\n  applyMask(mask) {\n    if (mask.length !== this.diagonalSize) {\n      throw new RangeError('Mask size do not match with matrix size');\n    }\n\n    // prepare sides to remove from matrix from mask\n    /** @type {number[]} */\n    const sidesToRemove = [];\n    for (const [index, passthroughs] of mask.entries()) {\n      if (passthroughs) continue;\n      sidesToRemove.push(index);\n    }\n    // to remove from highest to lowest for no mutation shifting\n    sidesToRemove.reverse();\n\n    // remove sides\n    for (const sideIndex of sidesToRemove) {\n      this.removeCross(sideIndex);\n    }\n\n    return this;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * iterate from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 1 2 3 4\n   * B 2 5 6 7\n   * C 3 6 8 9\n   * D 4 7 9 10\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n   *\n   * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n\n    /** @type {number[]} */\n    const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n    for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   * @return {SymmetricMatrix}\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n    // compactSize = (sideSize * (sideSize + 1)) / 2\n    // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n    // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new SymmetricMatrix(diagonalSize);\n    for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return matrix;\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield [row, column, value]\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightEntries() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield [row, col, value];\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield value\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightValues() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield value;\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isDistanceMatrix(value) {\n    return (\n      SymmetricMatrix.isSymmetricMatrix(value) &&\n      value.klassSubType === 'DistanceMatrix'\n    );\n  }\n\n  constructor(sideSize) {\n    super(sideSize);\n\n    if (!this.isDistance()) {\n      throw new TypeError('Provided arguments do no produce a distance matrix');\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    // distance matrix diagonal is 0\n    if (rowIndex === columnIndex) value = 0;\n\n    return super.set(rowIndex, columnIndex, value);\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    // ensure distance\n    array = array.slice();\n    array[index] = 0;\n\n    return super.addCross(index, array);\n  }\n\n  toSymmetricMatrix() {\n    return new SymmetricMatrix(this);\n  }\n\n  clone() {\n    const matrix = new DistanceMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      if (row === col) continue;\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * no diagonal (only zeros)\n   * iterable from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 0 1 2 3\n   * B 1 0 4 5\n   * C 2 4 0 6\n   * D 3 5 6 0\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n   *\n   * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n    const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n    /** @type {number[]} */\n    const compact = new Array(compactLength);\n    for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n\n    if (compactSize === 0) {\n      return new this(0);\n    }\n\n    // compactSize in Natural integer range ]0;∞]\n    // compactSize = (sideSize * (sideSize - 1)) / 2\n    // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new this(diagonalSize);\n    for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return matrix;\n  }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n\nclass MatrixColumnView extends BaseView {\n  constructor(matrix, column) {\n    checkColumnIndex(matrix, column);\n    super(matrix, matrix.rows, 1);\n    this.column = column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.column, value);\n    return this;\n  }\n\n  get(rowIndex) {\n    return this.matrix.get(rowIndex, this.column);\n  }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n  constructor(matrix, columnIndices) {\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, matrix.rows, columnIndices.length);\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n  }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n  }\n}\n\nclass MatrixFlipRowView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n  }\n}\n\nclass MatrixRowView extends BaseView {\n  constructor(matrix, row) {\n    checkRowIndex(matrix, row);\n    super(matrix, 1, matrix.columns);\n    this.row = row;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.row, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.row, columnIndex);\n  }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n  constructor(matrix, rowIndices) {\n    checkRowIndices(matrix, rowIndices);\n    super(matrix, rowIndices.length, matrix.columns);\n    this.rowIndices = rowIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n  }\n}\n\nclass MatrixSelectionView extends BaseView {\n  constructor(matrix, rowIndices, columnIndices) {\n    checkRowIndices(matrix, rowIndices);\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, rowIndices.length, columnIndices.length);\n    this.rowIndices = rowIndices;\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n    );\n  }\n}\n\nclass MatrixSubView extends BaseView {\n  constructor(matrix, startRow, endRow, startColumn, endColumn) {\n    checkRange(matrix, startRow, endRow, startColumn, endColumn);\n    super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n    this.startRow = startRow;\n    this.startColumn = startColumn;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n    );\n  }\n}\n\nclass MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n  constructor(data, options = {}) {\n    const { rows = 1 } = options;\n\n    if (data.length % rows !== 0) {\n      throw new Error('the data length is not divisible by the number of rows');\n    }\n    super();\n    this.rows = rows;\n    this.columns = data.length / rows;\n    this.data = data;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    this.data[index] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    return this.data[index];\n  }\n\n  _calculateIndex(row, column) {\n    return row * this.columns + column;\n  }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n\nfunction wrap(array, options) {\n  if (isAnyArray(array)) {\n    if (array[0] && isAnyArray(array[0])) {\n      return new WrapperMatrix2D(array);\n    } else {\n      return new WrapperMatrix1D(array, options);\n    }\n  } else {\n    throw new Error('the argument is not an array');\n  }\n}\n\nclass LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n\nfunction hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n\nclass QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n\nclass SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n\nfunction inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n\nfunction determinant(matrix) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isSquare()) {\n    if (matrix.columns === 0) {\n      return 1;\n    }\n\n    let a, b, c, d;\n    if (matrix.columns === 2) {\n      // 2 x 2 matrix\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(1, 0);\n      d = matrix.get(1, 1);\n\n      return a * d - b * c;\n    } else if (matrix.columns === 3) {\n      // 3 x 3 matrix\n      let subMatrix0, subMatrix1, subMatrix2;\n      subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n      subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n      subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(0, 2);\n\n      return (\n        a * determinant(subMatrix0) -\n        b * determinant(subMatrix1) +\n        c * determinant(subMatrix2)\n      );\n    } else {\n      // general purpose determinant using the LU decomposition\n      return new LuDecomposition(matrix).determinant;\n    }\n  } else {\n    throw Error('determinant can only be calculated for a square matrix');\n  }\n}\n\nfunction xrange(n, exception) {\n  let range = [];\n  for (let i = 0; i < n; i++) {\n    if (i !== exception) {\n      range.push(i);\n    }\n  }\n  return range;\n}\n\nfunction dependenciesOneRow(\n  error,\n  matrix,\n  index,\n  thresholdValue = 10e-10,\n  thresholdError = 10e-10,\n) {\n  if (error > thresholdError) {\n    return new Array(matrix.rows + 1).fill(0);\n  } else {\n    let returnArray = matrix.addRow(index, [0]);\n    for (let i = 0; i < returnArray.rows; i++) {\n      if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n        returnArray.set(i, 0, 0);\n      }\n    }\n    return returnArray.to1DArray();\n  }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n  const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n  matrix = Matrix.checkMatrix(matrix);\n\n  let n = matrix.rows;\n  let results = new Matrix(n, n);\n\n  for (let i = 0; i < n; i++) {\n    let b = Matrix.columnVector(matrix.getRow(i));\n    let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n    let svd = new SingularValueDecomposition(Abis);\n    let x = svd.solve(b);\n    let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n    results.setRow(\n      i,\n      dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n    );\n  }\n  return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isEmpty()) {\n    // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n    // (0xn)*(nx0)*(0xn) = 0xn\n    // (nx0)*(0xn)*(nx0) = nx0\n    return matrix.transpose();\n  }\n  let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n  let U = svdSolution.leftSingularVectors;\n  let V = svdSolution.rightSingularVectors;\n  let s = svdSolution.diagonal;\n\n  for (let i = 0; i < s.length; i++) {\n    if (Math.abs(s[i]) > threshold) {\n      s[i] = 1.0 / s[i];\n    } else {\n      s[i] = 0.0;\n    }\n  }\n\n  return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n  const { center = true } = options;\n  if (center) {\n    xMatrix = xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix = yMatrix.center('column');\n    }\n  }\n  const cov = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < cov.rows; i++) {\n    for (let j = 0; j < cov.columns; j++) {\n      cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n    }\n  }\n  return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n\n  const { center = true, scale = true } = options;\n  if (center) {\n    xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix.center('column');\n    }\n  }\n  if (scale) {\n    xMatrix.scale('column');\n    if (!yIsSame) {\n      yMatrix.scale('column');\n    }\n  }\n\n  const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n  const sdy = yIsSame\n    ? sdx\n    : yMatrix.standardDeviation('column', { unbiased: true });\n\n  const corr = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < corr.rows; i++) {\n    for (let j = 0; j < corr.columns; j++) {\n      corr.set(\n        i,\n        j,\n        corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n      );\n    }\n  }\n  return corr;\n}\n\nclass EigenvalueDecomposition {\n  constructor(matrix, options = {}) {\n    const { assumeSymmetric = false } = options;\n\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n    if (!matrix.isSquare()) {\n      throw new Error('Matrix is not a square matrix');\n    }\n\n    if (matrix.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let n = matrix.columns;\n    let V = new Matrix(n, n);\n    let d = new Float64Array(n);\n    let e = new Float64Array(n);\n    let value = matrix;\n    let i, j;\n\n    let isSymmetric = false;\n    if (assumeSymmetric) {\n      isSymmetric = true;\n    } else {\n      isSymmetric = matrix.isSymmetric();\n    }\n\n    if (isSymmetric) {\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          V.set(i, j, value.get(i, j));\n        }\n      }\n      tred2(n, e, d, V);\n      tql2(n, e, d, V);\n    } else {\n      let H = new Matrix(n, n);\n      let ort = new Float64Array(n);\n      for (j = 0; j < n; j++) {\n        for (i = 0; i < n; i++) {\n          H.set(i, j, value.get(i, j));\n        }\n      }\n      orthes(n, H, ort, V);\n      hqr2(n, e, d, V, H);\n    }\n\n    this.n = n;\n    this.e = e;\n    this.d = d;\n    this.V = V;\n  }\n\n  get realEigenvalues() {\n    return Array.from(this.d);\n  }\n\n  get imaginaryEigenvalues() {\n    return Array.from(this.e);\n  }\n\n  get eigenvectorMatrix() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    let n = this.n;\n    let e = this.e;\n    let d = this.d;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        X.set(i, j, 0);\n      }\n      X.set(i, i, d[i]);\n      if (e[i] > 0) {\n        X.set(i, i + 1, e[i]);\n      } else if (e[i] < 0) {\n        X.set(i, i - 1, e[i]);\n      }\n    }\n    return X;\n  }\n}\n\nfunction tred2(n, e, d, V) {\n  let f, g, h, i, j, k, hh, scale;\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n  }\n\n  for (i = n - 1; i > 0; i--) {\n    scale = 0;\n    h = 0;\n    for (k = 0; k < i; k++) {\n      scale = scale + Math.abs(d[k]);\n    }\n\n    if (scale === 0) {\n      e[i] = d[i - 1];\n      for (j = 0; j < i; j++) {\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n        V.set(j, i, 0);\n      }\n    } else {\n      for (k = 0; k < i; k++) {\n        d[k] /= scale;\n        h += d[k] * d[k];\n      }\n\n      f = d[i - 1];\n      g = Math.sqrt(h);\n      if (f > 0) {\n        g = -g;\n      }\n\n      e[i] = scale * g;\n      h = h - f * g;\n      d[i - 1] = f - g;\n      for (j = 0; j < i; j++) {\n        e[j] = 0;\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        V.set(j, i, f);\n        g = e[j] + V.get(j, j) * f;\n        for (k = j + 1; k <= i - 1; k++) {\n          g += V.get(k, j) * d[k];\n          e[k] += V.get(k, j) * f;\n        }\n        e[j] = g;\n      }\n\n      f = 0;\n      for (j = 0; j < i; j++) {\n        e[j] /= h;\n        f += e[j] * d[j];\n      }\n\n      hh = f / (h + h);\n      for (j = 0; j < i; j++) {\n        e[j] -= hh * d[j];\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        g = e[j];\n        for (k = j; k <= i - 1; k++) {\n          V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n        }\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n      }\n    }\n    d[i] = h;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    V.set(n - 1, i, V.get(i, i));\n    V.set(i, i, 1);\n    h = d[i + 1];\n    if (h !== 0) {\n      for (k = 0; k <= i; k++) {\n        d[k] = V.get(k, i + 1) / h;\n      }\n\n      for (j = 0; j <= i; j++) {\n        g = 0;\n        for (k = 0; k <= i; k++) {\n          g += V.get(k, i + 1) * V.get(k, j);\n        }\n        for (k = 0; k <= i; k++) {\n          V.set(k, j, V.get(k, j) - g * d[k]);\n        }\n      }\n    }\n\n    for (k = 0; k <= i; k++) {\n      V.set(k, i + 1, 0);\n    }\n  }\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n    V.set(n - 1, j, 0);\n  }\n\n  V.set(n - 1, n - 1, 1);\n  e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n  let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n  for (i = 1; i < n; i++) {\n    e[i - 1] = e[i];\n  }\n\n  e[n - 1] = 0;\n\n  let f = 0;\n  let tst1 = 0;\n  let eps = Number.EPSILON;\n\n  for (l = 0; l < n; l++) {\n    tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n    m = l;\n    while (m < n) {\n      if (Math.abs(e[m]) <= eps * tst1) {\n        break;\n      }\n      m++;\n    }\n\n    if (m > l) {\n      do {\n\n        g = d[l];\n        p = (d[l + 1] - g) / (2 * e[l]);\n        r = hypotenuse(p, 1);\n        if (p < 0) {\n          r = -r;\n        }\n\n        d[l] = e[l] / (p + r);\n        d[l + 1] = e[l] * (p + r);\n        dl1 = d[l + 1];\n        h = g - d[l];\n        for (i = l + 2; i < n; i++) {\n          d[i] -= h;\n        }\n\n        f = f + h;\n\n        p = d[m];\n        c = 1;\n        c2 = c;\n        c3 = c;\n        el1 = e[l + 1];\n        s = 0;\n        s2 = 0;\n        for (i = m - 1; i >= l; i--) {\n          c3 = c2;\n          c2 = c;\n          s2 = s;\n          g = c * e[i];\n          h = c * p;\n          r = hypotenuse(p, e[i]);\n          e[i + 1] = s * r;\n          s = e[i] / r;\n          c = p / r;\n          p = c * d[i] - s * g;\n          d[i + 1] = h + s * (c * g + s * d[i]);\n\n          for (k = 0; k < n; k++) {\n            h = V.get(k, i + 1);\n            V.set(k, i + 1, s * V.get(k, i) + c * h);\n            V.set(k, i, c * V.get(k, i) - s * h);\n          }\n        }\n\n        p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n        e[l] = s * p;\n        d[l] = c * p;\n      } while (Math.abs(e[l]) > eps * tst1);\n    }\n    d[l] = d[l] + f;\n    e[l] = 0;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    k = i;\n    p = d[i];\n    for (j = i + 1; j < n; j++) {\n      if (d[j] < p) {\n        k = j;\n        p = d[j];\n      }\n    }\n\n    if (k !== i) {\n      d[k] = d[i];\n      d[i] = p;\n      for (j = 0; j < n; j++) {\n        p = V.get(j, i);\n        V.set(j, i, V.get(j, k));\n        V.set(j, k, p);\n      }\n    }\n  }\n}\n\nfunction orthes(n, H, ort, V) {\n  let low = 0;\n  let high = n - 1;\n  let f, g, h, i, j, m;\n  let scale;\n\n  for (m = low + 1; m <= high - 1; m++) {\n    scale = 0;\n    for (i = m; i <= high; i++) {\n      scale = scale + Math.abs(H.get(i, m - 1));\n    }\n\n    if (scale !== 0) {\n      h = 0;\n      for (i = high; i >= m; i--) {\n        ort[i] = H.get(i, m - 1) / scale;\n        h += ort[i] * ort[i];\n      }\n\n      g = Math.sqrt(h);\n      if (ort[m] > 0) {\n        g = -g;\n      }\n\n      h = h - ort[m] * g;\n      ort[m] = ort[m] - g;\n\n      for (j = m; j < n; j++) {\n        f = 0;\n        for (i = high; i >= m; i--) {\n          f += ort[i] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (i = m; i <= high; i++) {\n          H.set(i, j, H.get(i, j) - f * ort[i]);\n        }\n      }\n\n      for (i = 0; i <= high; i++) {\n        f = 0;\n        for (j = high; j >= m; j--) {\n          f += ort[j] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (j = m; j <= high; j++) {\n          H.set(i, j, H.get(i, j) - f * ort[j]);\n        }\n      }\n\n      ort[m] = scale * ort[m];\n      H.set(m, m - 1, scale * g);\n    }\n  }\n\n  for (i = 0; i < n; i++) {\n    for (j = 0; j < n; j++) {\n      V.set(i, j, i === j ? 1 : 0);\n    }\n  }\n\n  for (m = high - 1; m >= low + 1; m--) {\n    if (H.get(m, m - 1) !== 0) {\n      for (i = m + 1; i <= high; i++) {\n        ort[i] = H.get(i, m - 1);\n      }\n\n      for (j = m; j <= high; j++) {\n        g = 0;\n        for (i = m; i <= high; i++) {\n          g += ort[i] * V.get(i, j);\n        }\n\n        g = g / ort[m] / H.get(m, m - 1);\n        for (i = m; i <= high; i++) {\n          V.set(i, j, V.get(i, j) + g * ort[i]);\n        }\n      }\n    }\n  }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n  let n = nn - 1;\n  let low = 0;\n  let high = nn - 1;\n  let eps = Number.EPSILON;\n  let exshift = 0;\n  let norm = 0;\n  let p = 0;\n  let q = 0;\n  let r = 0;\n  let s = 0;\n  let z = 0;\n  let iter = 0;\n  let i, j, k, l, m, t, w, x, y;\n  let ra, sa, vr, vi;\n  let notlast, cdivres;\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      d[i] = H.get(i, i);\n      e[i] = 0;\n    }\n\n    for (j = Math.max(i - 1, 0); j < nn; j++) {\n      norm = norm + Math.abs(H.get(i, j));\n    }\n  }\n\n  while (n >= low) {\n    l = n;\n    while (l > low) {\n      s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n      if (s === 0) {\n        s = norm;\n      }\n      if (Math.abs(H.get(l, l - 1)) < eps * s) {\n        break;\n      }\n      l--;\n    }\n\n    if (l === n) {\n      H.set(n, n, H.get(n, n) + exshift);\n      d[n] = H.get(n, n);\n      e[n] = 0;\n      n--;\n      iter = 0;\n    } else if (l === n - 1) {\n      w = H.get(n, n - 1) * H.get(n - 1, n);\n      p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n      q = p * p + w;\n      z = Math.sqrt(Math.abs(q));\n      H.set(n, n, H.get(n, n) + exshift);\n      H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n      x = H.get(n, n);\n\n      if (q >= 0) {\n        z = p >= 0 ? p + z : p - z;\n        d[n - 1] = x + z;\n        d[n] = d[n - 1];\n        if (z !== 0) {\n          d[n] = x - w / z;\n        }\n        e[n - 1] = 0;\n        e[n] = 0;\n        x = H.get(n, n - 1);\n        s = Math.abs(x) + Math.abs(z);\n        p = x / s;\n        q = z / s;\n        r = Math.sqrt(p * p + q * q);\n        p = p / r;\n        q = q / r;\n\n        for (j = n - 1; j < nn; j++) {\n          z = H.get(n - 1, j);\n          H.set(n - 1, j, q * z + p * H.get(n, j));\n          H.set(n, j, q * H.get(n, j) - p * z);\n        }\n\n        for (i = 0; i <= n; i++) {\n          z = H.get(i, n - 1);\n          H.set(i, n - 1, q * z + p * H.get(i, n));\n          H.set(i, n, q * H.get(i, n) - p * z);\n        }\n\n        for (i = low; i <= high; i++) {\n          z = V.get(i, n - 1);\n          V.set(i, n - 1, q * z + p * V.get(i, n));\n          V.set(i, n, q * V.get(i, n) - p * z);\n        }\n      } else {\n        d[n - 1] = x + p;\n        d[n] = x + p;\n        e[n - 1] = z;\n        e[n] = -z;\n      }\n\n      n = n - 2;\n      iter = 0;\n    } else {\n      x = H.get(n, n);\n      y = 0;\n      w = 0;\n      if (l < n) {\n        y = H.get(n - 1, n - 1);\n        w = H.get(n, n - 1) * H.get(n - 1, n);\n      }\n\n      if (iter === 10) {\n        exshift += x;\n        for (i = low; i <= n; i++) {\n          H.set(i, i, H.get(i, i) - x);\n        }\n        s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n        // eslint-disable-next-line no-multi-assign\n        x = y = 0.75 * s;\n        w = -0.4375 * s * s;\n      }\n\n      if (iter === 30) {\n        s = (y - x) / 2;\n        s = s * s + w;\n        if (s > 0) {\n          s = Math.sqrt(s);\n          if (y < x) {\n            s = -s;\n          }\n          s = x - w / ((y - x) / 2 + s);\n          for (i = low; i <= n; i++) {\n            H.set(i, i, H.get(i, i) - s);\n          }\n          exshift += s;\n          // eslint-disable-next-line no-multi-assign\n          x = y = w = 0.964;\n        }\n      }\n\n      iter = iter + 1;\n\n      m = n - 2;\n      while (m >= l) {\n        z = H.get(m, m);\n        r = x - z;\n        s = y - z;\n        p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n        q = H.get(m + 1, m + 1) - z - r - s;\n        r = H.get(m + 2, m + 1);\n        s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n        p = p / s;\n        q = q / s;\n        r = r / s;\n        if (m === l) {\n          break;\n        }\n        if (\n          Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n          eps *\n            (Math.abs(p) *\n              (Math.abs(H.get(m - 1, m - 1)) +\n                Math.abs(z) +\n                Math.abs(H.get(m + 1, m + 1))))\n        ) {\n          break;\n        }\n        m--;\n      }\n\n      for (i = m + 2; i <= n; i++) {\n        H.set(i, i - 2, 0);\n        if (i > m + 2) {\n          H.set(i, i - 3, 0);\n        }\n      }\n\n      for (k = m; k <= n - 1; k++) {\n        notlast = k !== n - 1;\n        if (k !== m) {\n          p = H.get(k, k - 1);\n          q = H.get(k + 1, k - 1);\n          r = notlast ? H.get(k + 2, k - 1) : 0;\n          x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n          if (x !== 0) {\n            p = p / x;\n            q = q / x;\n            r = r / x;\n          }\n        }\n\n        if (x === 0) {\n          break;\n        }\n\n        s = Math.sqrt(p * p + q * q + r * r);\n        if (p < 0) {\n          s = -s;\n        }\n\n        if (s !== 0) {\n          if (k !== m) {\n            H.set(k, k - 1, -s * x);\n          } else if (l !== m) {\n            H.set(k, k - 1, -H.get(k, k - 1));\n          }\n\n          p = p + s;\n          x = p / s;\n          y = q / s;\n          z = r / s;\n          q = q / p;\n          r = r / p;\n\n          for (j = k; j < nn; j++) {\n            p = H.get(k, j) + q * H.get(k + 1, j);\n            if (notlast) {\n              p = p + r * H.get(k + 2, j);\n              H.set(k + 2, j, H.get(k + 2, j) - p * z);\n            }\n\n            H.set(k, j, H.get(k, j) - p * x);\n            H.set(k + 1, j, H.get(k + 1, j) - p * y);\n          }\n\n          for (i = 0; i <= Math.min(n, k + 3); i++) {\n            p = x * H.get(i, k) + y * H.get(i, k + 1);\n            if (notlast) {\n              p = p + z * H.get(i, k + 2);\n              H.set(i, k + 2, H.get(i, k + 2) - p * r);\n            }\n\n            H.set(i, k, H.get(i, k) - p);\n            H.set(i, k + 1, H.get(i, k + 1) - p * q);\n          }\n\n          for (i = low; i <= high; i++) {\n            p = x * V.get(i, k) + y * V.get(i, k + 1);\n            if (notlast) {\n              p = p + z * V.get(i, k + 2);\n              V.set(i, k + 2, V.get(i, k + 2) - p * r);\n            }\n\n            V.set(i, k, V.get(i, k) - p);\n            V.set(i, k + 1, V.get(i, k + 1) - p * q);\n          }\n        }\n      }\n    }\n  }\n\n  if (norm === 0) {\n    return;\n  }\n\n  for (n = nn - 1; n >= 0; n--) {\n    p = d[n];\n    q = e[n];\n\n    if (q === 0) {\n      l = n;\n      H.set(n, n, 1);\n      for (i = n - 1; i >= 0; i--) {\n        w = H.get(i, i) - p;\n        r = 0;\n        for (j = l; j <= n; j++) {\n          r = r + H.get(i, j) * H.get(j, n);\n        }\n\n        if (e[i] < 0) {\n          z = w;\n          s = r;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n            t = (x * s - z * r) / q;\n            H.set(i, n, t);\n            H.set(\n              i + 1,\n              n,\n              Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n            );\n          }\n\n          t = Math.abs(H.get(i, n));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    } else if (q < 0) {\n      l = n - 1;\n\n      if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n        H.set(n - 1, n - 1, q / H.get(n, n - 1));\n        H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n      } else {\n        cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n        H.set(n - 1, n - 1, cdivres[0]);\n        H.set(n - 1, n, cdivres[1]);\n      }\n\n      H.set(n, n - 1, 0);\n      H.set(n, n, 1);\n      for (i = n - 2; i >= 0; i--) {\n        ra = 0;\n        sa = 0;\n        for (j = l; j <= n; j++) {\n          ra = ra + H.get(i, j) * H.get(j, n - 1);\n          sa = sa + H.get(i, j) * H.get(j, n);\n        }\n\n        w = H.get(i, i) - p;\n\n        if (e[i] < 0) {\n          z = w;\n          r = ra;\n          s = sa;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            cdivres = cdiv(-ra, -sa, w, q);\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n            vi = (d[i] - p) * 2 * q;\n            if (vr === 0 && vi === 0) {\n              vr =\n                eps *\n                norm *\n                (Math.abs(w) +\n                  Math.abs(q) +\n                  Math.abs(x) +\n                  Math.abs(y) +\n                  Math.abs(z));\n            }\n            cdivres = cdiv(\n              x * r - z * ra + q * sa,\n              x * s - z * sa - q * ra,\n              vr,\n              vi,\n            );\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n            if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n              H.set(\n                i + 1,\n                n - 1,\n                (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n              );\n              H.set(\n                i + 1,\n                n,\n                (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n              );\n            } else {\n              cdivres = cdiv(\n                -r - y * H.get(i, n - 1),\n                -s - y * H.get(i, n),\n                z,\n                q,\n              );\n              H.set(i + 1, n - 1, cdivres[0]);\n              H.set(i + 1, n, cdivres[1]);\n            }\n          }\n\n          t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n - 1, H.get(j, n - 1) / t);\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      for (j = i; j < nn; j++) {\n        V.set(i, j, H.get(i, j));\n      }\n    }\n  }\n\n  for (j = nn - 1; j >= low; j--) {\n    for (i = low; i <= high; i++) {\n      z = 0;\n      for (k = low; k <= Math.min(j, high); k++) {\n        z = z + V.get(i, k) * H.get(k, j);\n      }\n      V.set(i, j, z);\n    }\n  }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n  let r, d;\n  if (Math.abs(yr) > Math.abs(yi)) {\n    r = yi / yr;\n    d = yr + r * yi;\n    return [(xr + r * xi) / d, (xi - r * xr) / d];\n  } else {\n    r = yr / yi;\n    d = yi + r * yr;\n    return [(r * xr + xi) / d, (r * xi - xr) / d];\n  }\n}\n\nclass CholeskyDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n    if (!value.isSymmetric()) {\n      throw new Error('Matrix is not symmetric');\n    }\n\n    let a = value;\n    let dimension = a.rows;\n    let l = new Matrix(dimension, dimension);\n    let positiveDefinite = true;\n    let i, j, k;\n\n    for (j = 0; j < dimension; j++) {\n      let d = 0;\n      for (k = 0; k < j; k++) {\n        let s = 0;\n        for (i = 0; i < k; i++) {\n          s += l.get(k, i) * l.get(j, i);\n        }\n        s = (a.get(j, k) - s) / l.get(k, k);\n        l.set(j, k, s);\n        d = d + s * s;\n      }\n\n      d = a.get(j, j) - d;\n\n      positiveDefinite &&= d > 0;\n      l.set(j, j, Math.sqrt(Math.max(d, 0)));\n      for (k = j + 1; k < dimension; k++) {\n        l.set(j, k, 0);\n      }\n    }\n\n    this.L = l;\n    this.positiveDefinite = positiveDefinite;\n  }\n\n  isPositiveDefinite() {\n    return this.positiveDefinite;\n  }\n\n  solve(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let l = this.L;\n    let dimension = l.rows;\n\n    if (value.rows !== dimension) {\n      throw new Error('Matrix dimensions do not match');\n    }\n    if (this.isPositiveDefinite() === false) {\n      throw new Error('Matrix is not positive definite');\n    }\n\n    let count = value.columns;\n    let B = value.clone();\n    let i, j, k;\n\n    for (k = 0; k < dimension; k++) {\n      for (j = 0; j < count; j++) {\n        for (i = 0; i < k; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    for (k = dimension - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        for (i = k + 1; i < dimension; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    return B;\n  }\n\n  get lowerTriangularMatrix() {\n    return this.L;\n  }\n}\n\nclass nipals {\n  constructor(X, options = {}) {\n    X = WrapperMatrix2D.checkMatrix(X);\n    let { Y } = options;\n    const {\n      scaleScores = false,\n      maxIterations = 1000,\n      terminationCriteria = 1e-10,\n    } = options;\n\n    let u;\n    if (Y) {\n      if (isAnyArray(Y) && typeof Y[0] === 'number') {\n        Y = Matrix.columnVector(Y);\n      } else {\n        Y = WrapperMatrix2D.checkMatrix(Y);\n      }\n      if (Y.rows !== X.rows) {\n        throw new Error('Y should have the same number of rows as X');\n      }\n      u = Y.getColumnVector(0);\n    } else {\n      u = X.getColumnVector(0);\n    }\n\n    let diff = 1;\n    let t, q, w, tOld;\n\n    for (\n      let counter = 0;\n      counter < maxIterations && diff > terminationCriteria;\n      counter++\n    ) {\n      w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n      w = w.div(w.norm());\n\n      t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n      if (counter > 0) {\n        diff = t.clone().sub(tOld).pow(2).sum();\n      }\n      tOld = t.clone();\n\n      if (Y) {\n        q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n        q = q.div(q.norm());\n\n        u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n      } else {\n        u = t;\n      }\n    }\n\n    if (Y) {\n      let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      p = p.div(p.norm());\n      let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n      let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      let yResidual = Y.clone().sub(\n        t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n      );\n\n      this.t = t;\n      this.p = p.transpose();\n      this.w = w.transpose();\n      this.q = q;\n      this.u = u;\n      this.s = t.transpose().mmul(t);\n      this.xResidual = xResidual;\n      this.yResidual = yResidual;\n      this.betas = residual;\n    } else {\n      this.w = w.transpose();\n      this.s = t.transpose().mmul(t).sqrt();\n      if (scaleScores) {\n        this.t = t.clone().div(this.s.get(0, 0));\n      } else {\n        this.t = t;\n      }\n      this.xResidual = X.sub(t.mmul(w.transpose()));\n    }\n  }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n//# sourceMappingURL=matrix.js.map\n","import * as matrix from './matrix.js';\n\nexport const AbstractMatrix = matrix.AbstractMatrix;\nexport const CHO = matrix.CHO;\nexport const CholeskyDecomposition = matrix.CholeskyDecomposition;\nexport const DistanceMatrix = matrix.DistanceMatrix;\nexport const EVD = matrix.EVD;\nexport const EigenvalueDecomposition = matrix.EigenvalueDecomposition;\nexport const LU = matrix.LU;\nexport const LuDecomposition = matrix.LuDecomposition;\nexport const Matrix = matrix.Matrix;\nexport const MatrixColumnSelectionView = matrix.MatrixColumnSelectionView;\nexport const MatrixColumnView = matrix.MatrixColumnView;\nexport const MatrixFlipColumnView = matrix.MatrixFlipColumnView;\nexport const MatrixFlipRowView = matrix.MatrixFlipRowView;\nexport const MatrixRowSelectionView = matrix.MatrixRowSelectionView;\nexport const MatrixRowView = matrix.MatrixRowView;\nexport const MatrixSelectionView = matrix.MatrixSelectionView;\nexport const MatrixSubView = matrix.MatrixSubView;\nexport const MatrixTransposeView = matrix.MatrixTransposeView;\nexport const NIPALS = matrix.NIPALS;\nexport const Nipals = matrix.Nipals;\nexport const QR = matrix.QR;\nexport const QrDecomposition = matrix.QrDecomposition;\nexport const SVD = matrix.SVD;\nexport const SingularValueDecomposition = matrix.SingularValueDecomposition;\nexport const SymmetricMatrix = matrix.SymmetricMatrix;\nexport const WrapperMatrix1D = matrix.WrapperMatrix1D;\nexport const WrapperMatrix2D = matrix.WrapperMatrix2D;\nexport const correlation = matrix.correlation;\nexport const covariance = matrix.covariance;\nexport default matrix.default.Matrix ? matrix.default.Matrix : matrix.Matrix;\nexport const determinant = matrix.determinant;\nexport const inverse = matrix.inverse;\nexport const linearDependencies = matrix.linearDependencies;\nexport const pseudoInverse = matrix.pseudoInverse;\nexport const solve = matrix.solve;\nexport const wrap = matrix.wrap;\n","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the mean value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from \"./xMean.js\";\n/**\n * Finds the variance of the data\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (const value of values) {\n        const x = value - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from \"./xVariance.js\";\n/**\n * Finds the standard deviation for the data at hand\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new RangeError('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","import { xCheck } from \"./xCheck.js\";\n/**\n * Returns a copy of the data as a Float64Array.\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","'use strict';\n\nfunction FFT(size) {\n  this.size = size | 0;\n  if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n    throw new Error('FFT size must be a power of two and bigger than 1');\n\n  this._csize = size << 1;\n\n  // NOTE: Use of `var` is intentional for old V8 versions\n  var table = new Array(this.size * 2);\n  for (var i = 0; i < table.length; i += 2) {\n    const angle = Math.PI * i / this.size;\n    table[i] = Math.cos(angle);\n    table[i + 1] = -Math.sin(angle);\n  }\n  this.table = table;\n\n  // Find size's power of two\n  var power = 0;\n  for (var t = 1; this.size > t; t <<= 1)\n    power++;\n\n  // Calculate initial step's width:\n  //   * If we are full radix-4 - it is 2x smaller to give inital len=8\n  //   * Otherwise it is the same as `power` to give len=4\n  this._width = power % 2 === 0 ? power - 1 : power;\n\n  // Pre-compute bit-reversal patterns\n  this._bitrev = new Array(1 << this._width);\n  for (var j = 0; j < this._bitrev.length; j++) {\n    this._bitrev[j] = 0;\n    for (var shift = 0; shift < this._width; shift += 2) {\n      var revShift = this._width - shift - 2;\n      this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n    }\n  }\n\n  this._out = null;\n  this._data = null;\n  this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n  var res = storage || new Array(complex.length >>> 1);\n  for (var i = 0; i < complex.length; i += 2)\n    res[i >>> 1] = complex[i];\n  return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n  const res = new Array(this._csize);\n  for (var i = 0; i < res.length; i++)\n    res[i] = 0;\n  return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n  var res = storage || this.createComplexArray();\n  for (var i = 0; i < res.length; i += 2) {\n    res[i] = input[i >>> 1];\n    res[i + 1] = 0;\n  }\n  return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n  var size = this._csize;\n  var half = size >>> 1;\n  for (var i = 2; i < half; i += 2) {\n    spectrum[size - i] = spectrum[i];\n    spectrum[size - i + 1] = -spectrum[i + 1];\n  }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._transform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._realTransform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 1;\n  this._transform4();\n  for (var i = 0; i < out.length; i++)\n    out[i] /= this.size;\n  this._out = null;\n  this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform2(outOff, off, step);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform4(outOff, off, step);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var quarterLen = len >>> 2;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      // Full case\n      var limit = outOff + quarterLen;\n      for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n        const A = i;\n        const B = A + quarterLen;\n        const C = B + quarterLen;\n        const D = C + quarterLen;\n\n        // Original values\n        const Ar = out[A];\n        const Ai = out[A + 1];\n        const Br = out[B];\n        const Bi = out[B + 1];\n        const Cr = out[C];\n        const Ci = out[C + 1];\n        const Dr = out[D];\n        const Di = out[D + 1];\n\n        // Middle values\n        const MAr = Ar;\n        const MAi = Ai;\n\n        const tableBr = table[k];\n        const tableBi = inv * table[k + 1];\n        const MBr = Br * tableBr - Bi * tableBi;\n        const MBi = Br * tableBi + Bi * tableBr;\n\n        const tableCr = table[2 * k];\n        const tableCi = inv * table[2 * k + 1];\n        const MCr = Cr * tableCr - Ci * tableCi;\n        const MCi = Cr * tableCi + Ci * tableCr;\n\n        const tableDr = table[3 * k];\n        const tableDi = inv * table[3 * k + 1];\n        const MDr = Dr * tableDr - Di * tableDi;\n        const MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        const T0r = MAr + MCr;\n        const T0i = MAi + MCi;\n        const T1r = MAr - MCr;\n        const T1i = MAi - MCi;\n        const T2r = MBr + MDr;\n        const T2i = MBi + MDi;\n        const T3r = inv * (MBr - MDr);\n        const T3i = inv * (MBi - MDi);\n\n        // Final values\n        const FAr = T0r + T2r;\n        const FAi = T0i + T2i;\n\n        const FCr = T0r - T2r;\n        const FCi = T0i - T2i;\n\n        const FBr = T1r + T3i;\n        const FBi = T1i - T3r;\n\n        const FDr = T1r - T3i;\n        const FDi = T1i + T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n        out[C] = FCr;\n        out[C + 1] = FCi;\n        out[D] = FDr;\n        out[D + 1] = FDi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const evenI = data[off + 1];\n  const oddR = data[off + step];\n  const oddI = data[off + step + 1];\n\n  const leftR = evenR + oddR;\n  const leftI = evenI + oddI;\n  const rightR = evenR - oddR;\n  const rightI = evenI - oddI;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = leftI;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Ai = data[off + 1];\n  const Br = data[off + step];\n  const Bi = data[off + step + 1];\n  const Cr = data[off + step2];\n  const Ci = data[off + step2 + 1];\n  const Dr = data[off + step3];\n  const Di = data[off + step3 + 1];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T0i = Ai + Ci;\n  const T1r = Ar - Cr;\n  const T1i = Ai - Ci;\n  const T2r = Br + Dr;\n  const T2i = Bi + Di;\n  const T3r = inv * (Br - Dr);\n  const T3i = inv * (Bi - Di);\n\n  // Final values\n  const FAr = T0r + T2r;\n  const FAi = T0i + T2i;\n\n  const FBr = T1r + T3i;\n  const FBi = T1i - T3r;\n\n  const FCr = T0r - T2r;\n  const FCi = T0i - T2i;\n\n  const FDr = T1r - T3i;\n  const FDi = T1i + T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = FAi;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = FCi;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var halfLen = len >>> 1;\n    var quarterLen = halfLen >>> 1;\n    var hquarterLen = quarterLen >>> 1;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n        var A = outOff + i;\n        var B = A + quarterLen;\n        var C = B + quarterLen;\n        var D = C + quarterLen;\n\n        // Original values\n        var Ar = out[A];\n        var Ai = out[A + 1];\n        var Br = out[B];\n        var Bi = out[B + 1];\n        var Cr = out[C];\n        var Ci = out[C + 1];\n        var Dr = out[D];\n        var Di = out[D + 1];\n\n        // Middle values\n        var MAr = Ar;\n        var MAi = Ai;\n\n        var tableBr = table[k];\n        var tableBi = inv * table[k + 1];\n        var MBr = Br * tableBr - Bi * tableBi;\n        var MBi = Br * tableBi + Bi * tableBr;\n\n        var tableCr = table[2 * k];\n        var tableCi = inv * table[2 * k + 1];\n        var MCr = Cr * tableCr - Ci * tableCi;\n        var MCi = Cr * tableCi + Ci * tableCr;\n\n        var tableDr = table[3 * k];\n        var tableDi = inv * table[3 * k + 1];\n        var MDr = Dr * tableDr - Di * tableDi;\n        var MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        var T0r = MAr + MCr;\n        var T0i = MAi + MCi;\n        var T1r = MAr - MCr;\n        var T1i = MAi - MCi;\n        var T2r = MBr + MDr;\n        var T2i = MBi + MDi;\n        var T3r = inv * (MBr - MDr);\n        var T3i = inv * (MBi - MDi);\n\n        // Final values\n        var FAr = T0r + T2r;\n        var FAi = T0i + T2i;\n\n        var FBr = T1r + T3i;\n        var FBi = T1i - T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n\n        // Output final middle point\n        if (i === 0) {\n          var FCr = T0r - T2r;\n          var FCi = T0i - T2i;\n          out[C] = FCr;\n          out[C + 1] = FCi;\n          continue;\n        }\n\n        // Do not overwrite ourselves\n        if (i === hquarterLen)\n          continue;\n\n        // In the flipped case:\n        // MAi = -MAi\n        // MBr=-MBi, MBi=-MBr\n        // MCr=-MCr\n        // MDr=MDi, MDi=MDr\n        var ST0r = T1r;\n        var ST0i = -T1i;\n        var ST1r = T0r;\n        var ST1i = -T0i;\n        var ST2r = -inv * T3i;\n        var ST2i = -inv * T3r;\n        var ST3r = -inv * T2i;\n        var ST3i = -inv * T2r;\n\n        var SFAr = ST0r + ST2r;\n        var SFAi = ST0i + ST2i;\n\n        var SFBr = ST1r + ST3i;\n        var SFBi = ST1i - ST3r;\n\n        var SA = outOff + quarterLen - i;\n        var SB = outOff + halfLen - i;\n\n        out[SA] = SFAr;\n        out[SA + 1] = SFAi;\n        out[SB] = SFBr;\n        out[SB + 1] = SFBi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const oddR = data[off + step];\n\n  const leftR = evenR + oddR;\n  const rightR = evenR - oddR;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Br = data[off + step];\n  const Cr = data[off + step2];\n  const Dr = data[off + step3];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T1r = Ar - Cr;\n  const T2r = Br + Dr;\n  const T3r = inv * (Br - Dr);\n\n  // Final values\n  const FAr = T0r + T2r;\n\n  const FBr = T1r;\n  const FBi = -T3r;\n\n  const FCr = T0r - T2r;\n\n  const FDr = T1r;\n  const FDi = T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = 0;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n * @param options - options\n * @returns - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    const { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    const delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        const base = (to / from) ** (1 / div);\n        const firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('distribution must be uniform or log');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","const LOOP = 8;\nconst FLOAT_MUL = 1 / 16777216;\nconst sh1 = 15;\nconst sh2 = 18;\nconst sh3 = 11;\nfunction multiplyUint32(n, m) {\n    n >>>= 0;\n    m >>>= 0;\n    const nlo = n & 0xffff;\n    const nhi = n - nlo;\n    return (((nhi * m) >>> 0) + nlo * m) >>> 0;\n}\nexport class XSadd {\n    random;\n    state;\n    /**\n     * create an instance of XSadd with the specified seed\n     * @param [seed=Date.now()]\n     */\n    constructor(seed = Date.now()) {\n        this.state = new Uint32Array(4);\n        this.init(seed);\n        this.random = this.getFloat.bind(this);\n    }\n    /**\n     * Returns a 32-bit integer r (0 <= r < 2^32)\n     */\n    getUint32() {\n        this.nextState();\n        return (this.state[3] + this.state[2]) >>> 0;\n    }\n    /**\n     * Returns a floating point number r (0.0 <= r < 1.0)\n     */\n    getFloat() {\n        return (this.getUint32() >>> 8) * FLOAT_MUL;\n    }\n    init(seed) {\n        if (!Number.isInteger(seed)) {\n            throw new TypeError(\"seed must be an integer\");\n        }\n        this.state[0] = seed;\n        this.state[1] = 0;\n        this.state[2] = 0;\n        this.state[3] = 0;\n        for (let i = 1; i < LOOP; i++) {\n            this.state[i & 3] ^=\n                (i +\n                    multiplyUint32(1812433253, this.state[(i - 1) & 3] ^ ((this.state[(i - 1) & 3] >>> 30) >>> 0))) >>>\n                    0;\n        }\n        this.periodCertification();\n        for (let i = 0; i < LOOP; i++) {\n            this.nextState();\n        }\n    }\n    periodCertification() {\n        if (this.state[0] === 0 &&\n            this.state[1] === 0 &&\n            this.state[2] === 0 &&\n            this.state[3] === 0) {\n            this.state[0] = 88; // X\n            this.state[1] = 83; // S\n            this.state[2] = 65; // A\n            this.state[3] = 68; // D\n        }\n    }\n    nextState() {\n        let t = this.state[0];\n        t ^= t << sh1;\n        t ^= t >>> sh2;\n        t ^= this.state[3] << sh3;\n        this.state[0] = this.state[1];\n        this.state[1] = this.state[2];\n        this.state[2] = this.state[3];\n        this.state[3] = t;\n    }\n}\n//# sourceMappingURL=XSadd.js.map","import { XSadd } from 'ml-xsadd';\n/**\n * Create a random array of numbers of a specific length.\n * @param options\n * @returns - array of random floats normally distributed\n */\nexport function createRandomArray(options = {}) {\n    const { mean = 0, standardDeviation = 1, length = 1000, range = 1, seed, distribution = 'normal', } = options;\n    const generator = new XSadd(seed);\n    const returnArray = new Float64Array(length);\n    switch (distribution) {\n        case 'normal': {\n            const gaussianGenerator = new GaussianGenerator(mean, standardDeviation, generator);\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = gaussianGenerator.generateGaussian();\n            }\n            break;\n        }\n        case 'uniform': {\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = (generator.random() - 0.5) * range + mean;\n            }\n            break;\n        }\n        default: {\n            throw new Error(`unknown distribution: ${String(distribution)}`);\n        }\n    }\n    return returnArray;\n}\nclass GaussianGenerator {\n    #spare = 0;\n    #hasSpare = false;\n    #mean;\n    #standardDeviation;\n    #generator;\n    constructor(mean, standardDeviation, generator) {\n        this.#mean = mean;\n        this.#standardDeviation = standardDeviation;\n        this.#generator = generator;\n    }\n    generateGaussian() {\n        let val, u, v, s;\n        if (this.#hasSpare) {\n            this.#hasSpare = false;\n            val = this.#spare * this.#standardDeviation + this.#mean;\n        }\n        else {\n            do {\n                u = this.#generator.random() * 2 - 1;\n                v = this.#generator.random() * 2 - 1;\n                s = u * u + v * v;\n            } while (s >= 1 || s === 0);\n            s = Math.sqrt((-2 * Math.log(s)) / s);\n            this.#spare = v * s;\n            this.#hasSpare = true;\n            val = this.#mean + this.#standardDeviation * u * s;\n        }\n        return val;\n    }\n}\n//# sourceMappingURL=createRandomArray.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Stringify an object and convert all typed arrays to arrays\n * @param object\n * @param replacer\n * @param space\n * @returns\n */\nexport function stringify(object, replacer, space) {\n    const internalReplacer = (key, value) => {\n        if (ArrayBuffer.isView(value)) {\n            value = Array.from(value);\n        }\n        if (replacer) {\n            return replacer(key, value);\n        }\n        return value;\n    };\n    return JSON.stringify(object, internalReplacer, space);\n}\n//# sourceMappingURL=stringify.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xSubtract.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the minimal value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","/**\n * Check if the values are separated always by the same difference\n * @param array - Monotone growing array of number\n * @param options\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        const absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxAbsoluteValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] >= 0) {\n            if (array[i] > maxValue) {\n                maxValue = array[i];\n            }\n        }\n        else if (-array[i] > maxValue) {\n            maxValue = -array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxAbsoluteValue.js.map","import { xMedian } from \"./xMedian.js\";\n/**\n * This function calculates the median absolute deviation (MAD).\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from \"./xCheck.js\";\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns - Object with 2 properties, min and max.\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (const value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/* eslint-disable no-loss-of-precision */\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n    -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n    2.19878681111168899165e-2, -3.65637971411762664006e-2,\n    -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n    -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n    8.86216390456424707504e-4, -2.33393759374190016776e-3,\n    7.95283687341571680018e-2, -5.27396382340099713954e-2,\n    -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n    -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n    -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n    -4.46382324441786960818e1, -1.88510648058714251895e1,\n    1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n    -2.02433508355938759655e-1,\n];\nconst Q2 = [\n    1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n    4.85609213108739935468e1, -2.01432634680485188801e1,\n    -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n    -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n    -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n    2.90157910005329060432e-2, 1.42869534408157156766e-1,\n    3.37785538912035898924e-1, 3.87079738972604337464e-1,\n    1.17030156341995252019e-1, -1.63794047193317060787e-1,\n    -1.31102781679951906451e-1,\n];\nconst Q3 = [\n    1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n    2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n    3.46625407242567245975, 1,\n];\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n    2.66339227425782031962e-12, -2.30404776911882601748e-10,\n    4.60469890584317994083e-6, 1.57544617424960554631e-4,\n    1.87123492819559223345e-3, 9.50804701325919603619e-3,\n    1.85573306514231072324e-2, -2.22426529213447927281e-3,\n    -3.50353787183177984712e-2,\n];\nconst Q4 = [\n    7.64675292302794483503e-5, 2.63861676657015992959e-3,\n    3.41589143670947727934e-2, 2.20091105764131249824e-1,\n    7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n    9.9055709973310326855e-17, -2.81128735628831791805e-14,\n    4.62596163522878599135e-9, 4.49696789927706453732e-7,\n    1.49624783758342370182e-5, 2.09386317487588078668e-4,\n    1.05628862152492910091e-3, -1.12951438745580278863e-3,\n    -1.67431005076633737133e-2,\n];\nconst Q5 = [\n    2.82243172016108031869e-7, 2.75335474764726041141e-5,\n    9.64011807005165528527e-4, 1.60746087093676504695e-2,\n    1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n/**\n * Polyval.\n * @param c - Array of Number.\n * @param x - Number.\n * @returns Number.\n */\nfunction polyval(c, x) {\n    let p = 0;\n    for (const coef of c) {\n        p = p * x + coef;\n    }\n    return p;\n}\n/**\n * Calculates a rational approximation.\n * @private\n * @param x - Number.\n * @param v - Number.\n * @param P - Array of polynomial coefficients.\n * @param Q - Array of polynomial coefficients.\n * @param Y - Number.\n * @returns Rational approximation.\n */\nfunction calc(x, v, P, Q, Y) {\n    const s = x - v;\n    const r = polyval(P, s) / polyval(Q, s);\n    return Y * x + r * x;\n}\n/**\n * Evaluates the complementary inverse error function for an input value.\n * @private\n * @param x - Input value.\n * @returns Evaluated complementary inverse error function.\n */\nexport default function erfcinv(x) {\n    let sign = false;\n    let val;\n    let q;\n    let g;\n    let r;\n    // [1] Special cases...\n    // NaN:\n    if (Number.isNaN(x)) {\n        return Number.NaN;\n    }\n    // x not on the interval: [0,2]\n    if (x < 0 || x > 2) {\n        throw new RangeError(`erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`);\n    }\n    if (x === 0) {\n        return Number.POSITIVE_INFINITY;\n    }\n    if (x === 2) {\n        return Number.NEGATIVE_INFINITY;\n    }\n    if (x === 1) {\n        return 0;\n    }\n    // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n    if (x > 1) {\n        q = 2 - x;\n        x = 1 - q;\n        sign = true;\n    }\n    else {\n        q = x;\n        x = 1 - x;\n    }\n    // [3] |x| <= 0.5\n    if (x <= 0.5) {\n        g = x * (x + 10);\n        r = polyval(P1, x) / polyval(Q1, x);\n        val = g * Y1 + g * r;\n        return sign ? -val : val;\n    }\n    // [4] 1-|x| >= 0.25\n    if (q >= 0.25) {\n        g = Math.sqrt(-2 * Math.log(q));\n        q = q - 0.25;\n        r = polyval(P2, q) / polyval(Q2, q);\n        val = g / (Y2 + r);\n        return sign ? -val : val;\n    }\n    q = Math.sqrt(-Math.log(q));\n    // [5] q < 3\n    if (q < 3) {\n        return calc(q, 1.125, P3, Q3, Y3);\n    }\n    // [6] q < 6\n    if (q < 6) {\n        return calc(q, 3, P4, Q4, Y4);\n    }\n    // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n    return calc(q, 6, P5, Q5, Y5);\n    // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n//# sourceMappingURL=erfcinv.js.map","import erfcinv from \"./erfcinv.js\";\n/**\n * Applies a simple normalization inverse transformation to the input data.\n * @param data - The input array of numbers to be transformed.\n * @param options - Optional parameters for the transformation.\n * @returns A new Float64Array containing the transformed data.\n */\nexport function simpleNormInv(data, options = {}) {\n    const { magnitudeMode = false } = options;\n    const result = new Float64Array(data.length);\n    if (magnitudeMode) {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -Math.sqrt(-2 * Math.log(1 - data[i]));\n        }\n    }\n    else {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n        }\n    }\n    return result;\n}\n/**\n * Convenience wrapper for single number processing by simpleNormInv function.\n * @param data - The number to be normalized.\n * @param options - The options for the normalization process.\n * @returns The normalized number.\n */\nexport function simpleNormInvNumber(data, options = {}) {\n    return simpleNormInv([data], options)[0];\n}\n//# sourceMappingURL=simpleNormInv.js.map","import { isAnyArray } from 'is-any-array';\nimport { createFromToArray } from \"../utils/index.js\";\nimport { simpleNormInvNumber } from \"./utils/simpleNormInv.js\";\nimport { xEnsureFloat64 } from \"./xEnsureFloat64.js\";\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param array - real or magnitude spectra data.\n * @param options - options\n * @returns noise level\n */\nexport function xNoiseSanPlot(array, options = {}) {\n    const { mask, cutOff, refine = true, magnitudeMode = false, scaleFactor = 1, factorStd = 5, fixOffset = true, } = options;\n    const input = prepareData(array, { scaleFactor, mask });\n    if (fixOffset && !magnitudeMode) {\n        const medianIndex = Math.floor(input.length / 2);\n        const median = input.length % 2 === 0\n            ? 0.5 * (input[medianIndex - 1] + input[medianIndex])\n            : input[medianIndex];\n        for (let i = 0; i < input.length; i++) {\n            input[i] -= median;\n        }\n    }\n    const firstNegativeValueIndex = input.at(-1) >= 0\n        ? input.length\n        : input.findIndex((e) => e < 0);\n    let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n    for (let i = lastPositiveValueIndex; i >= 0; i--) {\n        if (input[i] > 0) {\n            lastPositiveValueIndex = i;\n            break;\n        }\n    }\n    const signPositive = input.slice(0, lastPositiveValueIndex + 1);\n    const signNegative = input.slice(firstNegativeValueIndex);\n    const cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n    const pIndex = Math.floor(signPositive.length * cutOffDist);\n    const initialNoiseLevelPositive = signPositive[pIndex];\n    const skyPoint = signPositive[0];\n    let initialNoiseLevelNegative;\n    if (signNegative.length > 0) {\n        const nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n        initialNoiseLevelNegative = -1 * signNegative[nIndex];\n    }\n    else {\n        initialNoiseLevelNegative = 0;\n    }\n    let noiseLevelPositive = initialNoiseLevelPositive;\n    let noiseLevelNegative = initialNoiseLevelNegative;\n    let cloneSignPositive = signPositive.slice();\n    let cloneSignNegative = signNegative.slice();\n    let cutOffSignalsIndexPlus = 0;\n    let cutOffSignalsIndexNeg = 2;\n    if (refine) {\n        let cutOffSignals = noiseLevelPositive * factorStd;\n        cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexPlus > -1) {\n            cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n            noiseLevelPositive =\n                cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n        }\n        cutOffSignals = noiseLevelNegative * factorStd;\n        cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexNeg > -1) {\n            cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n            noiseLevelNegative =\n                cloneSignPositive[Math.floor(cloneSignNegative.length * (1 - cutOffDist))];\n        }\n    }\n    const correctionFactor = -simpleNormInvNumber(cutOffDist / 2, {\n        magnitudeMode,\n    });\n    let effectiveCutOffDist, refinedCorrectionFactor;\n    if (refine && cutOffSignalsIndexPlus > -1) {\n        effectiveCutOffDist =\n            (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n                (cloneSignPositive.length + cutOffSignalsIndexPlus);\n        refinedCorrectionFactor =\n            -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n        noiseLevelPositive /= refinedCorrectionFactor;\n        if (cutOffSignalsIndexNeg > -1) {\n            effectiveCutOffDist =\n                (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n                    (cloneSignNegative.length + cutOffSignalsIndexNeg);\n            refinedCorrectionFactor =\n                -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n            if (noiseLevelNegative !== 0) {\n                noiseLevelNegative /= refinedCorrectionFactor;\n            }\n        }\n    }\n    else {\n        noiseLevelPositive /= correctionFactor;\n        noiseLevelNegative /= correctionFactor;\n    }\n    return {\n        positive: noiseLevelPositive,\n        negative: noiseLevelNegative,\n        snr: skyPoint / noiseLevelPositive,\n        sanplot: generateSanPlot(input, {\n            fromTo: {\n                positive: { from: 0, to: lastPositiveValueIndex },\n                negative: { from: firstNegativeValueIndex, to: input.length },\n            },\n        }),\n    };\n}\n/**\n * Determines the optimal cut-off point for a given array of positive numbers.\n * @param signPositive - An array of positive numbers.\n * @param options - Optional parameters to configure the cut-off determination.\n * @param options.magnitudeMode - If true, uses magnitude mode for normalization. Default is false.\n * @param options.considerList - An object specifying the range and step for consideration.\n * @param options.considerList.from - The starting point of the range. Default is 0.5.\n * @param options.considerList.step - The step size for the range. Default is 0.1.\n * @param options.considerList.to - The ending point of the range. Default is 0.9.\n * @returns The optimal cut-off point as a number.\n */\nfunction determineCutOff(signPositive, options = {}) {\n    const { magnitudeMode = false, considerList = { from: 0.5, step: 0.1, to: 0.9 }, } = options;\n    //generate a list of values for\n    const cutOff = [];\n    const indexMax = signPositive.length - 1;\n    for (let i = 0.01; i <= 0.99; i += 0.01) {\n        const index = Math.round(indexMax * i);\n        const value = -signPositive[index] / simpleNormInvNumber(i / 2, { magnitudeMode });\n        cutOff.push([i, value]);\n    }\n    let minKi = Number.MAX_SAFE_INTEGER;\n    const { from, to, step } = considerList;\n    const delta = step / 2;\n    let whereToCutStat = 0.5;\n    for (let i = from; i <= to; i += step) {\n        const floor = i - delta;\n        const top = i + delta;\n        const elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n        let averageValue = 0;\n        for (const element of elementsOfCutOff) {\n            averageValue += Math.abs(element[1]);\n        }\n        let kiSqrt = 0;\n        for (const element of elementsOfCutOff) {\n            kiSqrt += (element[1] - averageValue) ** 2;\n        }\n        if (kiSqrt < minKi) {\n            minKi = kiSqrt;\n            whereToCutStat = i;\n        }\n    }\n    return whereToCutStat;\n}\n/**\n * Generates a SAN plot from the given array based on the specified options.\n * @param array - The input array of numbers to be processed.\n * @param options - An optional object containing configuration options.\n * @param options.logBaseY - The logarithmic base for the Y-axis. Defaults to 2.\n * @param options.fromTo - An object specifying the range for each key. Each key maps to an object with `from` and `to` properties.\n * @returns An object where each key maps to a DataXY object containing the processed data.\n */\nfunction generateSanPlot(array, options = {}) {\n    const { fromTo, logBaseY = 2 } = options;\n    const sanplot = {};\n    for (const key in fromTo) {\n        const { from, to } = fromTo[key];\n        sanplot[key] =\n            from !== to\n                ? scale(array.slice(from, to), {\n                    logBaseY,\n                })\n                : { x: [], y: [] };\n        if (key === 'negative') {\n            sanplot[key].y.reverse();\n        }\n    }\n    return sanplot;\n}\n/**\n * Scales the input array based on the provided options.\n * @param array - The input array to be scaled.\n * @param options - An optional object containing scaling options.\n * @param options.logBaseY - If provided, the array values will be scaled using the logarithm of this base.\n * @returns An object containing the scaled x and y arrays.\n */\nfunction scale(array, options = {}) {\n    const { log10, abs } = Math;\n    const { logBaseY } = options;\n    if (logBaseY) {\n        array = array.slice(0);\n        const logOfBase = log10(logBaseY);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = log10(abs(array[i])) / logOfBase;\n        }\n    }\n    const xAxis = createFromToArray({\n        from: 0,\n        to: array.length - 1,\n        length: array.length,\n    });\n    return { x: xAxis, y: array };\n}\n/**\n * Prepares and processes the input data array based on the provided options.\n * @param array - The input array of numbers to be processed.\n * @param options - An object containing the following properties:\n *   - scaleFactor: A number by which to scale each element of the array.\n *   - mask: An optional array of the same length as the input array, where\n *           elements corresponding to `true` values will be excluded from processing.\n * @param options.scaleFactor\n * @param options.mask\n * @returns A new Float64Array containing the processed data, scaled by the\n *          scaleFactor and sorted in descending order.\n */\nfunction prepareData(array, options) {\n    const { scaleFactor, mask } = options;\n    const input = xEnsureFloat64(isAnyArray(mask) && mask.length === array.length\n        ? array.filter((_e, i) => !mask[i])\n        : array);\n    if (scaleFactor > 1) {\n        for (let i = 0; i < input.length; i++) {\n            input[i] *= scaleFactor;\n        }\n    }\n    input.sort();\n    input.reverse();\n    return input;\n}\n//# sourceMappingURL=xNoiseSanPlot.js.map","import { xMedianAbsoluteDeviation } from \"./xMedianAbsoluteDeviation.js\";\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Calculate the sum of the values\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { getOutputArray } from \"./getOutputArray.js\";\nimport { xCheck } from \"./xCheck.js\";\nimport { xMaxValue } from \"./xMaxValue.js\";\nimport { xSum } from \"./xSum.js\";\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param input - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm) {\n        case 'absolute': {\n            const absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            const currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            const sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (const value of input) {\n        sumValue += Math.abs(value);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xEnsureFloat64 } from \"./xEnsureFloat64.js\";\n/**\n * This function pads an array\n *s\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm } = options;\n    xCheck(array);\n    if (!algorithm) {\n        return xEnsureFloat64(array);\n    }\n    const result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    const fromEnd = size + array.length;\n    const toEnd = 2 * size + array.length;\n    switch (algorithm) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array.at(-1);\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw new Error(`unknown algorithm ${String(algorithm)}`);\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xStandardDeviation } from \"./xStandardDeviation.js\";\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    const result = new Float64Array(array.length);\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let i = 0; i < array.length; i++) {\n        result[i] = array[i] / sqrtSD;\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { getOutputArray } from \"./getOutputArray.js\";\nimport { xCheck } from \"./xCheck.js\";\nimport { xMaxValue } from \"./xMaxValue.js\";\nimport { xMinValue } from \"./xMinValue.js\";\n/**\n * Function used to rescale data\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xPadding } from \"./xPadding.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param fct - callback function that from an array returns a value\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function') {\n        throw new TypeError('fct must be a function');\n    }\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    const padded = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < padded.length - window + 1; i++) {\n        // we will send a view to the original buffer\n        newArray.push(fct(padded.subarray(i, i + window)));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import { xMean } from \"./xMean.js\";\nimport { xRolling } from \"./xRolling.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, xMean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import { xMedian } from \"./xMedian.js\";\nimport { xRolling } from \"./xRolling.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, xMedian, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix must contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('all rows must has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","/*\nThe MIT License (MIT)\n\nCopyright (c) 2013 Eric Arnebäck\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n/**\n * Solves a system of linear equations using the Cholesky decomposition method.\n * It is a direct conversion to TS from {@link https://github.com/scijs/cholesky-solve}\n * @param nonZerosArray - The matrix in triplet form (array of arrays), where each sub-array contains three elements: row index, column index, and value.\n * @param dimension - The order of the matrix (number of rows/columns).\n * @param permutationEncoded - Optional permutation array. If provided, it will be used to permute the matrix.\n * @returns A function that takes a right-hand side vector `b` and returns the solution vector `x`, or `null` if the decomposition fails.\n */\nexport function matrixCholeskySolver(nonZerosArray, dimension, permutationEncoded) {\n    if (permutationEncoded) {\n        const pinv = new Int32Array(dimension);\n        for (let k = 0; k < dimension; k++) {\n            pinv[permutationEncoded[k]] = k;\n        }\n        // Build a permuted copy (kept as plain arrays for compatibility)\n        const mt = new Array(nonZerosArray.length);\n        for (let a = 0; a < nonZerosArray.length; ++a) {\n            const [r, c, value] = nonZerosArray[a];\n            const ar = pinv[r];\n            const ac = pinv[c];\n            mt[a] = ac < ar ? [ac, ar, value] : [ar, ac, value];\n        }\n        nonZerosArray = mt;\n    }\n    else {\n        // use a typed identity permutation\n        const p = new Int32Array(dimension);\n        for (let i = 0; i < dimension; ++i) {\n            p[i] = i;\n        }\n        permutationEncoded = p;\n    }\n    const nnz = nonZerosArray.length;\n    const ap = new Int32Array(dimension + 1);\n    const ai = new Int32Array(nnz);\n    const ax = new Float64Array(nnz);\n    const lnz = new Int32Array(dimension);\n    for (let idx = 0; idx < nnz; idx++) {\n        const col = nonZerosArray[idx][1];\n        lnz[col]++;\n    }\n    ap[0] = 0;\n    for (let i = 0; i < dimension; ++i) {\n        ap[i + 1] = ap[i] + lnz[i];\n    }\n    const colOffset = new Int32Array(dimension);\n    for (let idx = 0; idx < nnz; idx++) {\n        const e = nonZerosArray[idx];\n        const col = e[1];\n        const adr = ap[col] + colOffset[col];\n        ai[adr] = e[0];\n        ax[adr] = e[2];\n        colOffset[col]++;\n    }\n    const d = new Float64Array(dimension);\n    const y = new Float64Array(dimension);\n    const lp = new Int32Array(dimension + 1);\n    const parent = new Int32Array(dimension);\n    const lnzArray = new Int32Array(dimension);\n    const flag = new Int32Array(dimension);\n    const pattern = new Int32Array(dimension);\n    const bp1 = new Float64Array(dimension);\n    const x = new Float64Array(dimension);\n    ldlSymbolic(dimension, ap, ai, lp, parent, lnzArray, flag);\n    const nz = lp[dimension];\n    const lx = new Float64Array(nz);\n    const li = new Int32Array(nz);\n    const result = ldlNumeric(dimension, ap, ai, ax, lp, parent, lnzArray, li, lx, d, y, pattern, flag);\n    if (result === dimension) {\n        return (b) => {\n            ldlPerm(dimension, bp1, b, permutationEncoded);\n            ldlLsolve(dimension, bp1, lp, li, lx);\n            ldlDsolve(dimension, bp1, d);\n            ldlLTsolve(dimension, bp1, lp, li, lx);\n            ldlPermt(dimension, x, bp1, permutationEncoded);\n            return x;\n        };\n    }\n    else {\n        return null;\n    }\n}\nfunction ldlSymbolic(dimension, ap, ai, lp, parent, lnz, flag) {\n    const apLoc = ap;\n    const aiLoc = ai;\n    const parentLoc = parent;\n    const lnzLoc = lnz;\n    const flagLoc = flag;\n    for (let k = 0; k < dimension; k++) {\n        parentLoc[k] = -1;\n        flagLoc[k] = k;\n        lnzLoc[k] = 0;\n        const kk = k;\n        const p2 = apLoc[kk + 1];\n        for (let p = apLoc[kk]; p < p2; p++) {\n            let i = aiLoc[p];\n            if (i < k) {\n                for (; flagLoc[i] !== k; i = parentLoc[i]) {\n                    if (parentLoc[i] === -1)\n                        parentLoc[i] = k;\n                    lnzLoc[i]++;\n                    flagLoc[i] = k;\n                }\n            }\n        }\n    }\n    lp[0] = 0;\n    for (let k = 0; k < dimension; k++) {\n        lp[k + 1] = lp[k] + lnz[k];\n    }\n}\nfunction ldlNumeric(dimension, ap, ai, ax, lp, parent, lnz, li, lx, d, y, pattern, flag) {\n    const apLoc = ap;\n    const aiLoc = ai;\n    const axLoc = ax;\n    const lpLoc = lp;\n    const parentLoc = parent;\n    const lnzLoc = lnz;\n    const liLoc = li;\n    const lxLoc = lx;\n    const dLoc = d;\n    const yLoc = y;\n    const patternLoc = pattern;\n    const flagLoc = flag;\n    let yi, lKi;\n    for (let k = 0; k < dimension; k++) {\n        yLoc[k] = 0;\n        let top = dimension;\n        flagLoc[k] = k;\n        lnzLoc[k] = 0;\n        const kk = k;\n        const p2col = apLoc[kk + 1];\n        for (let p = apLoc[kk]; p < p2col; p++) {\n            let i = aiLoc[p];\n            if (i <= k) {\n                yLoc[i] += axLoc[p];\n                let len = 0;\n                for (; flagLoc[i] !== k; i = parentLoc[i]) {\n                    patternLoc[len++] = i;\n                    flagLoc[i] = k;\n                }\n                while (len > 0)\n                    patternLoc[--top] = patternLoc[--len];\n            }\n        }\n        dLoc[k] = yLoc[k];\n        yLoc[k] = 0;\n        for (; top < dimension; top++) {\n            const i = patternLoc[top];\n            yi = yLoc[i];\n            yLoc[i] = 0;\n            const p2 = lpLoc[i] + lnzLoc[i];\n            let p;\n            for (p = lpLoc[i]; p < p2; p++) {\n                yLoc[liLoc[p]] -= lxLoc[p] * yi;\n            }\n            lKi = yi / dLoc[i];\n            dLoc[k] -= lKi * yi;\n            liLoc[p] = k;\n            lxLoc[p] = lKi;\n            lnzLoc[i]++;\n        }\n        if (dLoc[k] === 0)\n            return k;\n    }\n    return dimension;\n}\nfunction ldlLsolve(dimension, x, lp, li, lx) {\n    const lpLoc = lp;\n    const liLoc = li;\n    const lxLoc = lx;\n    const xLoc = x;\n    for (let j = 0; j < dimension; j++) {\n        const p2 = lpLoc[j + 1];\n        for (let p = lpLoc[j]; p < p2; p++) {\n            xLoc[liLoc[p]] -= lxLoc[p] * xLoc[j];\n        }\n    }\n}\nfunction ldlDsolve(dimension, x, d) {\n    const xLoc = x;\n    const dLoc = d;\n    for (let j = 0; j < dimension; j++) {\n        xLoc[j] /= dLoc[j];\n    }\n}\nfunction ldlLTsolve(dimension, x, lp, li, lx) {\n    const lpLoc = lp;\n    const liLoc = li;\n    const lxLoc = lx;\n    const xLoc = x;\n    for (let j = dimension - 1; j >= 0; j--) {\n        const p2 = lpLoc[j + 1];\n        for (let p = lpLoc[j]; p < p2; p++) {\n            xLoc[j] -= lxLoc[p] * xLoc[liLoc[p]];\n        }\n    }\n}\nfunction ldlPerm(dimension, x, b, permutationEncoded) {\n    const perm = permutationEncoded;\n    const xLoc = x;\n    const bLoc = b;\n    for (let j = 0; j < dimension; j++) {\n        xLoc[j] = bLoc[perm[j]];\n    }\n}\nfunction ldlPermt(dimension, x, b, permutationEncoded) {\n    const perm = permutationEncoded;\n    const xLoc = x;\n    const bLoc = b;\n    for (let j = 0; j < dimension; j++) {\n        xLoc[perm[j]] = bLoc[j];\n    }\n}\n//# sourceMappingURL=matrixCholeskySolver.js.map","/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2013 Mikola Lysenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * The reverse Cuthill-Mckee method is a fast and effective preconditioner for reducing the bandwidth of sparse linear systems.\n * When solving a positive semidefinite linear system using Cholesky factorization, it greatly reduces fill-in.\n * It is a direct conversion to TS from {@link github.com/mikolalysenko/cuthill-mckee}\n * @param list - lower triangular non zeros from a symmetric sparse matrix.\n * @param dimension - matrix dimension\n * @returns A Float64Array where the value at each index represents the new position of the node\n *          in the bandwidth-reduced ordering.\n */\nexport function matrixCuthillMckee(list, dimension) {\n    const adj = new Array(dimension);\n    const visited = new Array(dimension).fill(false);\n    for (let i = 0; i < dimension; ++i) {\n        adj[i] = [];\n    }\n    for (const l of list) {\n        adj[l[0]].push(l[1]);\n    }\n    const toVisit = new Float64Array(dimension);\n    let eol = 0;\n    let ptr = 0;\n    for (let i = 0; i < dimension; ++i) {\n        if (visited[i]) {\n            continue;\n        }\n        toVisit[eol++] = i;\n        visited[i] = true;\n        while (ptr < eol) {\n            const v = toVisit[ptr++];\n            const nbhd = Float64Array.from(adj[v]);\n            nbhd.sort();\n            for (const u of nbhd) {\n                if (visited[u]) {\n                    continue;\n                }\n                visited[u] = true;\n                toVisit[eol++] = u;\n            }\n        }\n    }\n    const result = new Float64Array(dimension);\n    for (let i = 0; i < dimension; ++i) {\n        result[toVisit[i]] = i;\n    }\n    return result;\n}\n//# sourceMappingURL=matrixCuthillMckee.js.map","import { matrixCheck } from \"./matrixCheck.js\";\n/**\n * Get min and max Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Verify that `data` is an object of x,y arrays.\n * Throws an error if it's not.\n * @param data\n * @param options\n * @param options.minLength\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (data === null ||\n        typeof data !== 'object' ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.x) ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.y)) {\n        throw new Error('data must be an object of x and y arrays');\n    }\n    // @ts-expect-error Typechecking\n    if (data.x.length !== data.y.length) {\n        throw new Error('the x and y arrays must have the same length');\n    }\n    // @ts-expect-error Typechecking\n    if (minLength && data.x.length < minLength) {\n        throw new Error(`data.x must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xIsMonotonic } from \"../x/index.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Filters x,y values to allow strictly growing values in x-axis.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotonic(data.x) === 1)\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    const { exclusions = [] } = options;\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = zones.map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : { ...zone });\n    zones.sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    for (const zone of zones) {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    }\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    const beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        const zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from \"./zonesNormalize.js\";\n/**\n * Add the number of points per zone to reach a specified total\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return [];\n    const normalizedZones = zonesNormalize(zones, options);\n    const zonesWithNumberOfPoints = [];\n    const totalSize = normalizedZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    const unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < normalizedZones.length - 1; i++) {\n        const tempZone = normalizedZones[i];\n        const tempZoneNumberOfPoints = Math.min(Math.round((tempZone.to - tempZone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        zonesWithNumberOfPoints.push({\n            ...tempZone,\n            numberOfPoints: tempZoneNumberOfPoints,\n        });\n        currentTotal += tempZoneNumberOfPoints;\n    }\n    zonesWithNumberOfPoints.push({\n        ...normalizedZones.at(-1),\n        numberOfPoints: numberOfPoints - currentTotal,\n    });\n    return zonesWithNumberOfPoints;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * Function that retrieves the getEquallySpacedData with the variant \"slot\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    if (xLength < 2) {\n        return Float64Array.from(x);\n    }\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    const lastStep = x.at(-1) - x.at(-2);\n    const start = from - halfStep;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @returns integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import integral from \"./integral.js\";\n/**\n * Function that retrieves the getEquallySpacedData with the variant \"smooth\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    const initialOriginalStep = x[1] - x[0];\n    const lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\nfunction getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from \"../utils/index.js\";\nimport { zonesNormalize, zonesWithPoints } from \"../zones/index.js\";\nimport equallySpacedSlot from \"./utils/equallySpacedSlot.js\";\nimport equallySpacedSmooth from \"./utils/equallySpacedSmooth.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    const { x, y } = data;\n    const xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    }).filter((zone) => zone.numberOfPoints);\n    let xResult = [];\n    let yResult = [];\n    for (const zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        const zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    const output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","import { zonesNormalize } from \"../zones/index.js\";\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    if (x.length === 0) {\n        return {\n            x: Array.from(x),\n            y: Array.from(y),\n        };\n    }\n    const { from = x[0], to = x.at(-1), zones = [{ from, to }], exclusions = [], } = options;\n    // @ts-expect-error -- x.at(-1) returns number | undefined but array is guaranteed non-empty here\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    const newX = [];\n    const newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else if (x[position] > normalizedZones[currentZoneIndex].to) {\n            currentZoneIndex++;\n            if (!normalizedZones[currentZoneIndex])\n                break;\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xyCheck } from \"./xyCheck.js\";\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n * @param data - data\n * @returns - An object with the filtered data\n */\nexport function xyFilterXPositive(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    if (x === undefined || y === undefined) {\n        return { x: newX, y: newY };\n    }\n    for (let i = 0; i < x.length; i++) {\n        if (x[i] > 0) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyFilterXPositive.js.map","/**\n * Order object of array, x has to be monotone. Ensure x is growing\n * @param data - Object of kind {x:[], y:[]}.\n */\nexport function xyGrowingX(data) {\n    const { x, y } = data;\n    if (x.length !== y.length) {\n        throw new TypeError('length of x and y must be identical');\n    }\n    if (x.length < 2 || x[0] < x.at(-1))\n        return data;\n    return {\n        x: x.toReversed(),\n        y: y.toReversed(),\n    };\n}\n//# sourceMappingURL=xyGrowingX.js.map","import { xyCheck } from \"./xyCheck.js\";\n/**\n * Interpolate y values at target x positions using linear interpolation.\n * This is useful for upsampling or resampling data to specific x positions.\n * Both the input data and target x values must be sorted in ascending order.\n * Uses a two-pointer approach with O(n + m) complexity.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param xTarget - Target x positions where y values should be interpolated\n * @returns - Interpolated y values at target x positions\n */\nexport function xyInterpolateLinear(data, xTarget) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x.length === 0) {\n        return new Float64Array(0);\n    }\n    const result = new Float64Array(xTarget.length);\n    let sparseIndex = 0;\n    for (let i = 0; i < xTarget.length; i++) {\n        const targetX = xTarget[i];\n        // Move sparse index forward while we can\n        while (sparseIndex < x.length - 1 && x[sparseIndex + 1] < targetX) {\n            sparseIndex++;\n        }\n        // Handle edge cases\n        if (sparseIndex === 0 && targetX <= x[0]) {\n            // Before first point\n            if (x.length === 1) {\n                result[i] = y[0];\n            }\n            else {\n                // Extrapolate using first two points\n                const t = (targetX - x[0]) / (x[1] - x[0]);\n                result[i] = y[0] * (1 - t) + y[1] * t;\n            }\n        }\n        else if (sparseIndex >= x.length - 1) {\n            // After last point\n            result[i] = y[x.length - 1];\n        }\n        else {\n            // Normal interpolation between two points\n            const leftIdx = sparseIndex;\n            const rightIdx = sparseIndex + 1;\n            const t = (targetX - x[leftIdx]) / (x[rightIdx] - x[leftIdx]);\n            result[i] = y[leftIdx] * (1 - t) + y[rightIdx] * t;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyInterpolateLinear.js.map","export function addStyle(serie, spectrum, options = {}) {\n    let { color = '#A9A9A9' } = options;\n    const { opacity = 1, lineWidth = 1 } = options;\n    if (color.match(/#[\\da-f]{6}$/i)) {\n        color = (color + ((opacity * 255) >> 0).toString(16)).toUpperCase();\n    }\n    else {\n        color = color.replace(/rgb ?\\((.*)\\)/, `rgba($1,${opacity})`);\n    }\n    serie.style = [\n        {\n            name: 'unselected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth,\n                    dash: 1,\n                },\n            },\n        },\n        {\n            name: 'selected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth + 2,\n                    dash: 1,\n                },\n            },\n        },\n    ];\n    serie.name = spectrum.label || spectrum.id;\n}\n//# sourceMappingURL=addStyle.js.map","export const COLORS = [\n    '#FFB300',\n    '#803E75',\n    '#FF6800',\n    '#A6BDD7',\n    '#C10020',\n    '#CEA262',\n    '#817066',\n    '#007D34',\n    '#F6768E',\n    '#00538A',\n    '#FF7A5C',\n    '#53377A',\n    '#FF8E00',\n    '#B32851',\n    '#F4C800',\n    '#7F180D',\n    '#93AA00',\n    '#593315',\n    '#F13A13',\n    '#232C16',\n];\n//# sourceMappingURL=colors.js.map","import { xyFilterXPositive } from 'ml-spectra-processing';\nimport { addStyle } from './addStyle.js';\nimport { COLORS } from './colors.js';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n * @param analyses\n * @param options\n */\nexport function getJSGraph(analyses, options = {}) {\n    const { colors = COLORS, opacities = [1], linesWidth = [1], selector = {}, normalization, xAxis = {}, yAxis = {}, } = options;\n    const series = [];\n    let xLabel = xAxis.label;\n    let yLabel = yAxis.label;\n    let xUnits = xAxis.units;\n    let yUnits = yAxis.units;\n    for (let i = 0; i < analyses.length; i++) {\n        const analysis = analyses[i];\n        const spectra = analysis.getNormalizedSpectra({\n            selector,\n            normalization,\n        });\n        if (spectra.length === 0)\n            continue;\n        const firstSpectrum = spectra[0];\n        // todo: if many spectra are available and not xUnits / yUnits are specified we should ensure that all the spectra are compatible\n        if (!xLabel)\n            xLabel = firstSpectrum.variables.x.label;\n        if (!yLabel)\n            yLabel = firstSpectrum.variables.y.label;\n        if (!xUnits)\n            xUnits = firstSpectrum.variables.x.units;\n        if (!yUnits)\n            yUnits = firstSpectrum.variables.y.units;\n        for (const spectrum of spectra) {\n            const serie = {};\n            addStyle(serie, analysis, {\n                color: colors[i % colors.length],\n                opacity: opacities[i % opacities.length],\n                lineWidth: linesWidth[i % linesWidth.length],\n            });\n            serie.data = {\n                x: spectrum.variables.x.data,\n                y: spectrum.variables.y.data,\n            };\n            serie.id = spectrum.id;\n            if (xAxis.logScale) {\n                serie.data = xyFilterXPositive(serie.data);\n            }\n            series.push(serie);\n        }\n    }\n    return {\n        axes: {\n            x: {\n                label: xLabel,\n                unit: xUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...xAxis,\n            },\n            y: {\n                label: yLabel,\n                unit: yUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...yAxis,\n            },\n        },\n        series,\n    };\n}\n//# sourceMappingURL=getJSGraph.js.map","const defaultBoundary = { y: { min: '0px', max: '2000px' } };\nexport function getNormalizationAnnotations(filter = {}, boundary = defaultBoundary) {\n    let { exclusions = [] } = filter;\n    let annotations = [];\n    exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n    annotations = exclusions.map((exclusion) => {\n        const annotation = {\n            type: 'rect',\n            position: [\n                { x: exclusion.from, y: boundary.y.min },\n                { x: exclusion.to, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        };\n        return annotation;\n    });\n    if (filter.from !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: Number.MIN_SAFE_INTEGER, y: boundary.y.min },\n                { x: filter.from, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    if (filter.to !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: filter.to, y: boundary.y.min },\n                { x: Number.MAX_SAFE_INTEGER, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    return annotations;\n}\n//# sourceMappingURL=getNormalizationAnnotations.js.map","import { xMean } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function centerMean(data) {\n    const { y } = data;\n    const mean = xMean(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= mean;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMean.js.map","import { xMedian } from 'ml-spectra-processing';\n/**\n * Center the median\n * @param data\n */\nexport function centerMedian(data) {\n    const { y } = data;\n    const median = xMedian(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= median;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMedian.js.map","import { xGetFromToIndex } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function fromTo(data, options = {}) {\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, options);\n    return {\n        data: {\n            x: data.x.subarray(fromIndex, toIndex + 1),\n            y: data.y.subarray(fromIndex, toIndex + 1),\n        },\n    };\n}\n//# sourceMappingURL=fromTo.js.map","import { xNormed } from 'ml-spectra-processing';\n/**\n * Norm the Y values\n * @param data\n * @param options\n */\nexport function normed(data, options = {}) {\n    xNormed(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=normed.js.map","import { xStandardDeviation } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function divideBySD(data) {\n    const { y } = data;\n    const sd = xStandardDeviation(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] /= sd;\n    }\n    return { data };\n}\n//# sourceMappingURL=divideBySD.js.map","import { xRescale } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n * @param options\n */\nexport function rescale(data, options = {}) {\n    xRescale(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=rescale.js.map","import { xParetoNormalization } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n */\nexport function paretoNormalization(data) {\n    return {\n        data: {\n            x: data.x,\n            y: xParetoNormalization(data.y),\n        },\n    };\n}\n//# sourceMappingURL=paretoNormalization.js.map","import { matrixCuthillMckee } from 'ml-spectra-processing';\n/**\n * Updates the system matrix with new weights and computes the weighted right-hand side vector.\n * @param matrix - The lower triangular non-zeros matrix in triplet format.\n * @param y - The original data vector.\n * @param weights - The weights vector.\n * @returns A tuple of the updated matrix and the weighted right-hand side vector.\n */\nexport function updateSystem(matrix, y, weights) {\n    const nbPoints = y.length;\n    const l = nbPoints - 1;\n    const newMatrix = new Array(matrix.length);\n    const newVector = new Float64Array(nbPoints);\n    for (let i = 0; i < l; i++) {\n        const w = weights[i];\n        const diag = i * 2;\n        const next = diag + 1;\n        newMatrix[diag] = matrix[diag].slice();\n        newMatrix[next] = matrix[next].slice();\n        if (w === 0) {\n            newVector[i] = 0;\n        }\n        else {\n            newVector[i] = y[i] * w;\n            newMatrix[diag][2] += w;\n        }\n    }\n    newVector[l] = y[l] * weights[l];\n    newMatrix[l * 2] = matrix[l * 2].slice();\n    newMatrix[l * 2][2] += weights[l];\n    return [newMatrix, newVector];\n}\n/**\n * Constructs the delta matrix and applies Cuthill-McKee permutation.\n * @param nbPoints - Number of data points.\n * @param lambda - Smoothing parameter.\n * @returns An object containing the lower triangular non-zeros matrix and the permutation array.\n */\nexport function getDeltaMatrix(nbPoints, lambda) {\n    const matrix = [];\n    const last = nbPoints - 1;\n    for (let i = 0; i < last; i++) {\n        matrix.push([i, i, lambda * 2], [i + 1, i, -1 * lambda]);\n    }\n    matrix[0][2] = lambda;\n    matrix.push([last, last, lambda]);\n    return {\n        lowerTriangularNonZeros: matrix,\n        permutationEncodedArray: matrixCuthillMckee(matrix, nbPoints),\n    };\n}\n//# sourceMappingURL=utils.js.map","import { matrixCholeskySolver, xAbsoluteSum, xBinning, xFindClosestIndex, xNoiseSanPlot, xSubtract, xyInterpolateLinear, } from 'ml-spectra-processing';\nimport { getDeltaMatrix, updateSystem } from \"./utils.js\";\n/**\n * Fit the baseline drift by iteratively changing weights of sum square error between the fitted baseline and original signals,\n * for further information about the parameters you can get the {@link https://github.com/zmzhang/airPLS/blob/main/airPLS_manuscript.pdf paper of airPLS}.\n * @param x - X axis data useful when control points or zones are submitted.\n * @param y - Original data.\n * @param options - Options object.\n * @returns An object containing the corrected data, baseline, iteration count, and error.\n */\nexport default function airPLS(x, y, options = {}) {\n    const { xWork, yWork, optionsWork, shouldDownsample } = getDownSampleData(x, y, options);\n    const { weights, controlPoints } = getControlPoints(xWork, yWork, optionsWork);\n    const { maxIterations = 100, lambda = 10, tolerance = 0.001 } = optionsWork;\n    let baseline = [];\n    let iteration;\n    let sumNegDifferences = Number.MAX_SAFE_INTEGER;\n    const corrected = Float64Array.from(yWork);\n    const stopCriterion = getStopCriterion(yWork, tolerance);\n    const { length } = yWork;\n    const { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(length, lambda);\n    let threshold = 1;\n    const l = length - 1;\n    let prevNegSum = Number.MAX_SAFE_INTEGER;\n    for (iteration = 0; iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion; iteration++) {\n        const [leftHandSide, rightHandSide] = updateSystem(lowerTriangularNonZeros, yWork, weights);\n        const cho = matrixCholeskySolver(leftHandSide, length, permutationEncodedArray);\n        if (cho === null) {\n            throw new Error('Cholesky decomposition failed');\n        }\n        baseline = cho(rightHandSide);\n        sumNegDifferences = applyCorrection(yWork, baseline, corrected);\n        if (iteration === 1) {\n            const { positive } = xNoiseSanPlot(corrected);\n            threshold = positive;\n        }\n        else {\n            const absChange = Math.abs(prevNegSum / sumNegDifferences);\n            if (absChange < 1.01 && absChange > 0.99) {\n                break;\n            }\n        }\n        prevNegSum = sumNegDifferences + 0;\n        for (let i = 1; i < l; i++) {\n            const diff = Math.abs(corrected[i]);\n            if (controlPoints[i] < 1 && diff > threshold * 2) {\n                weights[i] = 0;\n            }\n            else {\n                weights[i] = Math.exp(-((diff / threshold) ** 2));\n            }\n        }\n        weights[0] = 1;\n        weights[l] = 1;\n    }\n    // Interpolate results back to original resolution if downsampling was applied\n    let finalBaseline = baseline;\n    let finalCorrected = corrected;\n    if (shouldDownsample) {\n        finalBaseline = xyInterpolateLinear({ x: xWork, y: baseline }, x);\n        finalCorrected = xSubtract(y, finalBaseline);\n    }\n    return {\n        corrected: finalCorrected,\n        baseline: finalBaseline,\n        iteration,\n        error: sumNegDifferences,\n    };\n}\nfunction applyCorrection(y, baseline, corrected) {\n    let sumNegDifferences = 0;\n    for (let i = 0; i < y.length; i++) {\n        const diff = y[i] - baseline[i];\n        if (diff < 0)\n            sumNegDifferences += diff;\n        corrected[i] = diff;\n    }\n    return sumNegDifferences;\n}\nfunction getDownSampleData(x, y, options = {}) {\n    const { autoDownsample = false, maxResolution = 5000, controlPoints, } = options;\n    const shouldDownsample = autoDownsample && y.length > maxResolution;\n    if (!shouldDownsample) {\n        return { xWork: x, yWork: y, optionsWork: options, shouldDownsample };\n    }\n    const binSize = getDownsampleFactor(y.length, maxResolution);\n    const xWork = xBinning(x, {\n        binSize,\n        keepFirstAndLast: true,\n    });\n    const yWork = xBinning(y, {\n        binSize,\n        keepFirstAndLast: true,\n    });\n    let optionsWork = options;\n    // Downsample controlPoints if provided, to match downsampled x and y\n    if (controlPoints) {\n        const downsampledControlPoints = new Int8Array(xWork.length);\n        for (let i = 0; i < x.length; i++) {\n            if (controlPoints[i] > 0) {\n                const closestIndex = xFindClosestIndex(xWork, x[i]);\n                downsampledControlPoints[closestIndex] = 1;\n            }\n        }\n        optionsWork = {\n            ...options,\n            controlPoints: downsampledControlPoints,\n        };\n    }\n    return { xWork, yWork, optionsWork, shouldDownsample };\n}\nfunction getStopCriterion(y, tolerance) {\n    const sum = xAbsoluteSum(y);\n    return tolerance * sum;\n}\nfunction getControlPoints(x, y, options = {}) {\n    const { length } = x;\n    const { controlPoints = Int8Array.from({ length }).fill(0) } = options;\n    const { zones = [], weights = Float64Array.from({ length }).fill(1) } = options;\n    if (x.length !== y.length) {\n        throw new RangeError('Y should match the length with X');\n    }\n    else if (controlPoints.length !== x.length) {\n        throw new RangeError('controlPoints should match the length with X');\n    }\n    else if (weights.length !== x.length) {\n        throw new RangeError('weights should match the length with X');\n    }\n    for (const range of zones) {\n        let indexFrom = xFindClosestIndex(x, range.from);\n        let indexTo = xFindClosestIndex(x, range.to);\n        if (indexFrom > indexTo)\n            [indexFrom, indexTo] = [indexTo, indexFrom];\n        for (let i = indexFrom; i < indexTo; i++) {\n            controlPoints[i] = 1;\n        }\n    }\n    return {\n        weights,\n        controlPoints,\n    };\n}\n/**\n * Calculate the downsampling factor to reduce data to target resolution.\n * @param originalLength - Original data length.\n * @param targetResolution - Target number of points.\n * @returns Downsampling factor.\n */\nfunction getDownsampleFactor(originalLength, targetResolution) {\n    return Math.max(1, Math.ceil(originalLength / targetResolution));\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\nfunction sequentialFill(input, options = {}) {\n    if (!isAnyArray(input)) {\n        if (typeof input === 'object') {\n            options = input ?? {};\n        }\n        input = [];\n    }\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    let { from = 0, size = input.length, step } = options;\n    const { to = 10 } = options;\n    if (size !== 0 && step) {\n        throw new Error('step is defined by the array size');\n    }\n    if (!size) {\n        if (step) {\n            size = Math.floor((to - from) / step) + 1;\n        }\n        else {\n            size = to - from + 1;\n        }\n    }\n    if (!step && size) {\n        step = (to - from) / (size - 1);\n    }\n    if (typeof step !== 'number') {\n        throw new TypeError('No checks initialized the step');\n    }\n    if (Array.isArray(input)) {\n        // only works with normal array\n        input.length = 0;\n        for (let i = 0; i < size; i++) {\n            input.push(from);\n            from += step;\n        }\n    }\n    else {\n        if (input.length !== size) {\n            throw new Error('sequentialFill typed array must have the correct length');\n        }\n        for (let i = 0; i < size; i++) {\n            input[i] = from;\n            from += step;\n        }\n    }\n    return input;\n}\nexport default sequentialFill;\n//# sourceMappingURL=index.js.map","import airpls from 'ml-airpls';\nimport sequentialFill from 'ml-array-sequential-fill';\n/**\n * Adaptive iteratively reweighted penalized least squares [1]\n *\n * This function calls ml-airpls\n *\n * References:\n * [1] Zhang, Z.-M.; Chen, S.; Liang, Y.-Z.\n * Baseline Correction Using Adaptive Iteratively Reweighted Penalized Least Squares.\n * Analyst 2010, 135 (5), 1138–1146. https://doi.org/10.1039/B922045C.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {object} [options.regression] - Options for the regression\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.regression.§Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function airPLSBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n  let output = airpls(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","import { isAnyArray } from 'is-any-array';\n/**\n * Check that x and y are arrays with the same length.\n * @param x - first array\n * @param y - second array\n * @throws if x or y are not the same length, or if they are not arrays\n */\nexport function checkArrayLength(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y)) {\n        throw new TypeError('x and y must be arrays');\n    }\n    if (x.length !== y.length) {\n        throw new RangeError('x and y arrays must have the same length');\n    }\n}\n//# sourceMappingURL=checkArrayLength.js.map","import { isAnyArray } from 'is-any-array';\nimport { checkArrayLength } from './checkArrayLength';\nexport class BaseRegression {\n    constructor() {\n        if (new.target === BaseRegression) {\n            throw new Error('BaseRegression must be subclassed');\n        }\n    }\n    predict(x) {\n        if (typeof x === 'number') {\n            return this._predict(x);\n        }\n        else if (isAnyArray(x)) {\n            const y = [];\n            for (const xVal of x) {\n                y.push(this._predict(xVal));\n            }\n            return y;\n        }\n        else {\n            throw new TypeError('x must be a number or array');\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _predict(x) {\n        throw new Error('_predict must be implemented');\n    }\n    train() {\n        // Do nothing for this package\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toString(precision) {\n        return '';\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toLaTeX(precision) {\n        return '';\n    }\n    /**\n     * Return the correlation coefficient of determination (r) and chi-square.\n     * @param x - explanatory variable\n     * @param y - response variable\n     * @return - Object with further statistics.\n     */\n    score(x, y) {\n        checkArrayLength(x, y);\n        const n = x.length;\n        const y2 = new Array(n);\n        for (let i = 0; i < n; i++) {\n            y2[i] = this._predict(x[i]);\n        }\n        let xSum = 0;\n        let ySum = 0;\n        let chi2 = 0;\n        let rmsd = 0;\n        let xSquared = 0;\n        let ySquared = 0;\n        let xY = 0;\n        for (let i = 0; i < n; i++) {\n            xSum += y2[i];\n            ySum += y[i];\n            xSquared += y2[i] * y2[i];\n            ySquared += y[i] * y[i];\n            xY += y2[i] * y[i];\n            if (y[i] !== 0) {\n                chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n            }\n            rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n        }\n        const r = (n * xY - xSum * ySum) /\n            Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n        return {\n            r,\n            r2: r * r,\n            chi2,\n            rmsd: Math.sqrt(rmsd / n),\n        };\n    }\n}\n//# sourceMappingURL=BaseRegression.js.map","/**\n * Cast `number` to string. Optionally `digits` specifies significant figures.\n * @param number\n * @param figures\n * @returns - A string representation of `number`.\n */\nexport function maybeToPrecision(number, figures) {\n    if (number < 0) {\n        number = 0 - number;\n        if (typeof figures === 'number') {\n            return `- ${number.toPrecision(figures)}`;\n        }\n        else {\n            return `- ${number.toString()}`;\n        }\n    }\n    else if (typeof figures === 'number') {\n        return number.toPrecision(figures);\n    }\n    else {\n        return number.toString();\n    }\n}\n//# sourceMappingURL=maybeToPrecision.js.map","import { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\nimport { BaseRegression, checkArrayLength, maybeToPrecision, } from 'ml-regression-base';\nexport class PolynomialRegression extends BaseRegression {\n    degree;\n    powers;\n    coefficients;\n    /**\n     * Build a polynomial regression model from the given data set.\n     * @param x - independent or explanatory variable\n     * @param y - dependent or response variable\n     * @param degree - degree of the polynomial regression, or array of powers to be used. When degree is an array, intercept at zero is forced to false/ignored.\n     * @param options - regression options\n     * @example `new PolynomialRegression(x, y, 2)`, in this case, you can pass the option `interceptAtZero`, if you need it.\n     * @example `new PolynomialRegression(x, y, [1, 3, 5])`\n     * Each of the degrees corresponds to a column, so if you have them switched, just do:\n     * @example `new PolynomialRegression(x, y, [3, 1, 5])`\n     */\n    constructor(x, y, degree, options = {}) {\n        super();\n        // @ts-expect-error internal use only\n        if (x === true) {\n            // @ts-expect-error internal use only\n            this.degree = y.degree;\n            // @ts-expect-error internal use only\n            this.powers = y.powers;\n            // @ts-expect-error internal use only\n            this.coefficients = y.coefficients;\n        }\n        else {\n            checkArrayLength(x, y);\n            const result = regress(x, y, degree, options);\n            this.degree = result.degree;\n            this.powers = result.powers;\n            this.coefficients = result.coefficients;\n        }\n    }\n    _predict(x) {\n        const { coefficients, powers } = this;\n        let y = 0;\n        for (let k = 0; k < powers.length; k++) {\n            const coefficient = coefficients[k] ?? 0;\n            const power = powers[k] ?? 0;\n            y += coefficient * x ** power;\n        }\n        return y;\n    }\n    toJSON() {\n        return {\n            name: 'polynomialRegression',\n            degree: this.degree,\n            powers: this.powers,\n            coefficients: this.coefficients,\n        };\n    }\n    toString(precision) {\n        return this._toFormula(precision, false);\n    }\n    toLaTeX(precision) {\n        return this._toFormula(precision, true);\n    }\n    _toFormula(precision, isLaTeX) {\n        let sup = '^';\n        let closeSup = '';\n        let times = ' * ';\n        if (isLaTeX) {\n            sup = '^{';\n            closeSup = '}';\n            times = '';\n        }\n        let fn = '';\n        let str = '';\n        for (let k = 0; k < this.coefficients.length; k++) {\n            str = '';\n            const coefficient = this.coefficients[k] ?? 0;\n            const power = this.powers[k] ?? 0;\n            if (coefficient !== 0) {\n                if (power === 0) {\n                    str = maybeToPrecision(coefficient, precision);\n                }\n                else if (power === 1) {\n                    str = `${maybeToPrecision(coefficient, precision) + times}x`;\n                }\n                else {\n                    str = `${maybeToPrecision(coefficient, precision) + times}x${sup}${power}${closeSup}`;\n                }\n                if (coefficient > 0 && k !== this.coefficients.length - 1) {\n                    str = ` + ${str}`;\n                }\n                else if (k !== this.coefficients.length - 1) {\n                    str = ` ${str}`;\n                }\n            }\n            fn = str + fn;\n        }\n        if (fn.startsWith('+')) {\n            fn = fn.slice(1);\n        }\n        return `f(x) = ${fn}`;\n    }\n    static load(json) {\n        if (json.name !== 'polynomialRegression') {\n            throw new TypeError('not a polynomial regression model');\n        }\n        // @ts-expect-error internal use only\n        return new PolynomialRegression(true, json);\n    }\n}\n/**\n * Perform a polynomial regression on the given data set.\n * This is an internal function.\n * @param x - independent or explanatory variable\n * @param y - dependent or response variable\n * @param degree - degree of the polynomial regression\n * @param options - regression options\n * @returns degree, powers and coefficients of the fitted polynomial\n */\nfunction regress(x, y, degree, options = {}) {\n    const n = x.length;\n    let { interceptAtZero = false } = options;\n    let powers = [];\n    if (Array.isArray(degree)) {\n        powers = degree;\n        interceptAtZero = false;\n    }\n    else if (typeof degree === 'number') {\n        if (interceptAtZero) {\n            powers = new Array(degree);\n            for (let k = 0; k < degree; k++) {\n                powers[k] = k + 1;\n            }\n        }\n        else {\n            powers = new Array(degree + 1);\n            for (let k = 0; k <= degree; k++) {\n                powers[k] = k;\n            }\n        }\n    }\n    const nCoefficients = powers.length;\n    const F = new Matrix(n, nCoefficients);\n    const Y = new Matrix([Array.from(y)]);\n    for (let k = 0; k < nCoefficients; k++) {\n        const power = powers[k] ?? 0;\n        for (let i = 0; i < n; i++) {\n            if (power === 0) {\n                F.set(i, k, 1);\n            }\n            else {\n                F.set(i, k, (x[i] ?? 0) ** power);\n            }\n        }\n    }\n    const FT = new MatrixTransposeView(F);\n    const A = FT.mmul(F);\n    const B = FT.mmul(new MatrixTransposeView(Y));\n    return {\n        coefficients: solve(A, B).to1DArray(),\n        degree: Math.max(...powers),\n        powers,\n    };\n}\n//# sourceMappingURL=index.js.map","import { PolynomialRegression } from 'ml-regression-polynomial';\n\n/**\n * Iterative regression-based baseline correction\n * @param {Array<number>} x - Independent axis variable\n * @param {Array<number>} y - Dependent axis variable\n * @param {object} [options] - Options object\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regressionOptions] - Options for regressionFunction\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\n */\nexport function baselineCorrectionRegression(x, y, options = {}) {\n  let {\n    maxIterations = 100,\n    Regression = PolynomialRegression,\n    regressionOptions,\n    tolerance = 0.001,\n  } = options;\n\n  if (!regressionOptions && Regression === PolynomialRegression) {\n    regressionOptions = 3;\n  }\n\n  let baseline = y.slice();\n  let fitting = y.slice();\n  let oldFitting = y;\n  let iteration = 0;\n  let delta;\n  let regression;\n  while (iteration < maxIterations) {\n    // Calculate the fitting result\n    regression = new Regression(x, baseline, regressionOptions);\n\n    delta = 0;\n    for (let i = 0; i < baseline.length; i++) {\n      fitting[i] = regression.predict(x[i]);\n      if (baseline[i] > fitting[i]) {\n        baseline[i] = fitting[i];\n      }\n\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\n    }\n\n    // Stop criterion\n    if (delta < tolerance) {\n      break;\n    } else {\n      oldFitting = fitting.slice();\n      iteration++;\n    }\n  }\n\n  // removes baseline\n  let corrected = new Array(baseline.length);\n  for (let j = 0; j < baseline.length; j++) {\n    corrected[j] = y[j] - baseline[j];\n  }\n\n  return {\n    corrected,\n    delta,\n    iteration,\n    baseline,\n    regression,\n  };\n}\n","import sequentialFill from 'ml-array-sequential-fill';\nimport { baselineCorrectionRegression } from 'ml-baseline-correction-regression';\n\n/**\n * Iterative polynomial fitting [1]\n *\n * Implementation based on ml-baseline-correction-regression\n *\n * References:\n * [1] Gan, F.; Ruan, G.; Mo, J.\n * Baseline Correction by Improved Iterative Polynomial Fitting with Automatic Threshold.\n *  Chemometrics and Intelligent Laboratory Systems 2006, 82 (1), 59–65.\n * https://doi.org/10.1016/j.chemolab.2005.08.009.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {Object} [options.regression]\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {Object} [options.regression]\n * @param {function} [options.regression.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {Object} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function iterativePolynomialBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n\n  let output = baselineCorrectionRegression(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","import { xRollingAverage } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingAverageBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = { ...defaults, ...options };\n  let baseline = xRollingAverage(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline, correctedSpectrum: corrected };\n}\n","import { isAnyArray } from 'is-any-array';\nimport { xMean, xMaxValue, xMinValue } from 'ml-spectra-processing';\nexport function rollingBall(spectrum, options = {}) {\n    if (!isAnyArray(spectrum)) {\n        throw new Error('Spectrum must be an array');\n    }\n    if (spectrum.length === 0) {\n        throw new TypeError('Spectrum must not be empty');\n    }\n    const numberPoints = spectrum.length;\n    const maxima = new Float64Array(numberPoints);\n    const minima = new Float64Array(numberPoints);\n    const baseline = new Float64Array(numberPoints);\n    // windowM 4 percent of spectrum length\n    // windowS 8 percent of spectrum length\n    const { windowM = Math.round(numberPoints * 0.04), windowS = Math.round(numberPoints * 0.08), } = options;\n    // fi(1) in original paper\n    for (let i = 0; i < spectrum.length; i++) {\n        const windowLeft = Math.max(0, i - windowM);\n        const windowRight = Math.min(i + windowM + 1, spectrum.length);\n        minima[i] = xMinValue(spectrum, {\n            fromIndex: windowLeft,\n            toIndex: windowRight,\n        });\n    }\n    // fi in original paper\n    for (let i = 0; i < minima.length; i++) {\n        const windowLeft = Math.max(0, i - windowM);\n        const windowRight = Math.min(i + windowM + 1, minima.length);\n        maxima[i] = xMaxValue(minima, {\n            fromIndex: windowLeft,\n            toIndex: windowRight,\n        });\n    }\n    for (let i = 0; i < minima.length; i++) {\n        const windowLeft = Math.max(0, i - windowS);\n        const windowRight = Math.min(i + windowS + 1, maxima.length);\n        baseline[i] = xMean(maxima.subarray(windowLeft, windowRight));\n    }\n    return baseline;\n}\n//# sourceMappingURL=rollingBall.js.map","import { rollingBall } from 'ml-rolling-ball-baseline';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Algorithm described in (1), but in the implementation here the window width does not change.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the specturm length\n * @returns {BaselineOutput}\n */\nexport function rollingBallBaseline(ys, options = {}) {\n  const baseline = rollingBall(ys, options);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline, correctedSpectrum: corrected };\n}\n","import { xRollingMedian } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingMedianBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = { ...defaults, ...options };\n  let baseline = xRollingMedian(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline, correctedSpectrum: corrected };\n}\n","//@ts-expect-error no type definition for baselines\nimport { airPLSBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function airPLSBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=airPLSBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { iterativePolynomialBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function iterativePolynomialBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=iterativePolynomialBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingAverageBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingAverageBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingAverageBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingBallBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingBallBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingBallBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingMedianBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingMedianBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingMedianBaseline.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Apply Savitzky Golay algorithm.\n * @param ys - Array of y values.\n * @param xs - Array of X or deltaX.\n * @param options - Options controlling window size, derivative and polynomial order.\n * @returns Array containing the new ys (same length).\n */\nexport function sgg(ys, xs, options = {}) {\n    const { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\n    }\n    if (!isAnyArray(ys)) {\n        throw new TypeError('Y values must be an array');\n    }\n    if (xs === undefined) {\n        throw new TypeError('X must be defined');\n    }\n    if (windowSize > ys.length) {\n        throw new RangeError(`Window size is higher than the data length ${windowSize}>${ys.length}`);\n    }\n    if (derivative < 0 || !Number.isInteger(derivative)) {\n        throw new RangeError('Derivative should be a positive integer');\n    }\n    if (polynomial < 1 || !Number.isInteger(polynomial)) {\n        throw new RangeError('Polynomial should be a positive integer');\n    }\n    if (polynomial >= 6) {\n        // eslint-disable-next-line no-console\n        console.warn('You should not use polynomial grade higher than 5 if you are' +\n            ' not sure that your data arises from such a model. Possible polynomial oscillation problems');\n    }\n    const half = Math.floor(windowSize / 2);\n    const np = ys.length;\n    const ans = new Float64Array(np);\n    const weights = fullWeights(windowSize, polynomial, derivative);\n    let hs = 0;\n    let constantH = true;\n    if (isAnyArray(xs)) {\n        constantH = false;\n    }\n    else {\n        hs = xs ** derivative;\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        const wg1 = weights[half - i - 1];\n        const wg2 = weights[half + i + 1];\n        let d1 = 0;\n        let d2 = 0;\n        for (let l = 0; l < windowSize; l++) {\n            d1 += wg1[l] * ys[l];\n            d2 += wg2[l] * ys[np - windowSize + l];\n        }\n        if (constantH) {\n            ans[half - i - 1] = d1 / hs;\n            ans[np - half + i] = d2 / hs;\n        }\n        else {\n            hs = getHs(xs, half - i - 1, half, derivative);\n            ans[half - i - 1] = d1 / hs;\n            hs = getHs(xs, np - half + i, half, derivative);\n            ans[np - half + i] = d2 / hs;\n        }\n    }\n    //For the internal points\n    const wg = weights[half];\n    for (let i = windowSize; i <= np; i++) {\n        let d = 0;\n        for (let l = 0; l < windowSize; l++)\n            d += wg[l] * ys[l + i - windowSize];\n        if (!constantH) {\n            hs = getHs(xs, i - half - 1, half, derivative);\n        }\n        ans[i - half - 1] = d / hs;\n    }\n    return ans;\n}\nfunction getHs(h, center, half, derivative) {\n    let hs = 0;\n    let count = 0;\n    for (let i = center - half; i < center + half; i++) {\n        if (i >= 0 && i < h.length - 1) {\n            hs += h[i + 1] - h[i];\n            count++;\n        }\n    }\n    return (hs / count) ** derivative;\n}\nfunction gramPoly(i, m, k, s) {\n    let Grampoly = 0;\n    if (k > 0) {\n        Grampoly =\n            ((4 * k - 2) / (k * (2 * m - k + 1))) *\n                (i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -\n                (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n                    gramPoly(i, m, k - 2, s);\n    }\n    else if (k === 0 && s === 0) {\n        Grampoly = 1;\n    }\n    else {\n        Grampoly = 0;\n    }\n    return Grampoly;\n}\nfunction genFact(a, b) {\n    let gf = 1;\n    if (a >= b) {\n        for (let j = a - b + 1; j <= a; j++) {\n            gf *= j;\n        }\n    }\n    return gf;\n}\nfunction weight(i, t, m, n, s) {\n    let sum = 0;\n    for (let k = 0; k <= n; k++) {\n        sum +=\n            (2 * k + 1) *\n                (genFact(2 * m, k) / genFact(2 * m + k + 1, k + 1)) *\n                gramPoly(i, m, k, 0) *\n                gramPoly(t, m, k, s);\n    }\n    return sum;\n}\n/**\n * Compute the full weights matrix for every position inside the window.\n * @param m - Number of points.\n * @param n - Polynomial grade.\n * @param s - Derivative.\n * @returns Array of Float64Array weight vectors, one per position in the window.\n */\nfunction fullWeights(m, n, s) {\n    const weights = new Array(m);\n    const np = Math.floor(m / 2);\n    for (let t = -np; t <= np; t++) {\n        weights[t + np] = new Float64Array(m);\n        for (let j = -np; j <= np; j++) {\n            weights[t + np][j + np] = weight(j, t, np, n, s);\n        }\n    }\n    return weights;\n}\n//# sourceMappingURL=index.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the first derivative using Savitzky–Golay filter.\n * @param data\n * @param options\n */\nexport function firstDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 1 }) } };\n}\n//# sourceMappingURL=firstDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the second derivative using Savitzky–Golay filter.\n * @param data\n * @param options\n */\nexport function secondDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 2 }) } };\n}\n//# sourceMappingURL=secondDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the third derivative using Savitzky–Golay filter.\n * @param data\n * @param options\n */\nexport function thirdDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 3 }) } };\n}\n//# sourceMappingURL=thirdDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Apply the Savitzky Golay Generalized Filter\n * @param data\n * @param options\n */\nexport function savitzkyGolay(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, options) } };\n}\n//# sourceMappingURL=savitzkyGolay.js.map","import { xyEnsureGrowingX } from 'ml-spectra-processing';\n/**\n * Ensure X values are strictly monotonic increasing\n * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html\n * @param data\n */\nexport function ensureGrowing(data) {\n    return { data: xyEnsureGrowingX(data) };\n}\n//# sourceMappingURL=ensureGrowing.js.map","import { xyGrowingX } from 'ml-spectra-processing';\n/**\n * Ensure X values are strictly monotonic increasing\n * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html\n * @param data\n */\nexport function reverseIfNeeded(data) {\n    return { data: xyGrowingX(data) };\n}\n//# sourceMappingURL=reverseIfNeeded.js.map","import { xyEquallySpaced } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function equallySpaced(data, options = {}) {\n    return { data: xyEquallySpaced(data, options) };\n}\n//# sourceMappingURL=equallySpaced.js.map","import { xyFilterX } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function filterX(data, options = {}) {\n    return {\n        data: xyFilterX(data, options),\n    };\n}\n//# sourceMappingURL=filterX.js.map","import { xAdd, xMaxValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMaxX(data, options = {}) {\n    const { max = 1 } = options;\n    const existingMax = xMaxValue(data.x);\n    if (existingMax === max) {\n        return { data };\n    }\n    return {\n        data: {\n            x: xAdd(data.x, max - existingMax),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=setMaxX.js.map","import { xAdd, xMinValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMinX(data, options = {}) {\n    const { min = 0 } = options;\n    const existingMin = xMinValue(data.x);\n    if (existingMin === min) {\n        return { data };\n    }\n    return {\n        data: {\n            x: xAdd(data.x, min - existingMin),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=setMinX.js.map","/**\n * Compute the `[left, right]` intervals around each peak by locating\n * consecutive extrema (minima / maxima) of the first derivative.\n * @param y - Spectrum y values.\n * @param x - Spectrum x values.\n * @param dY - First derivative of `y`.\n * @param dX - Sign of the x step (positive for increasing x, negative otherwise).\n * @returns `intervalL` / `intervalR` arrays defining each peak's inflection-point bounds.\n */\nexport function getMinMaxIntervalsDy(y, x, dY, dX) {\n    let lastMax = null;\n    let lastMin = null;\n    const intervalL = [];\n    const intervalR = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n    }\n    return { intervalL, intervalR };\n}\n//# sourceMappingURL=getMinMaxIntervals.js.map","/**\n * Find the `minData` index closest to the center of one interval,\n * above the intensity threshold and bounded by the half-width.\n * @param options - Interval, candidate indices and spectrum data.\n * @returns The picked candidate (`possible`) and the last visited index (`lastIndex`).\n */\nexport function tryMatchOneIntervalWithMinData(options) {\n    const { x, lastK, minData, yThreshold, intervalWidth, intervalCenter, yData, } = options;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let possible = -1;\n    let newLastIndex = lastK;\n    for (let k = newLastIndex + 1; k < minData.length; k++) {\n        const centerIndex = minData[k];\n        if (yData[centerIndex] <= yThreshold) {\n            continue;\n        }\n        const deltaX = x[centerIndex];\n        const currentDistance = Math.abs(deltaX - intervalCenter);\n        if (currentDistance < intervalWidth) {\n            if (currentDistance < minDistance) {\n                possible = k;\n            }\n            newLastIndex = k;\n        }\n        if (currentDistance >= minDistance)\n            break;\n        minDistance = currentDistance;\n    }\n    return { lastIndex: newLastIndex, possible };\n}\n//# sourceMappingURL=tryMatchOneIntervalWithMinData.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\n/**\n * Peak detection that combines first-derivative zero-crossings and\n * second-derivative local minima to find peaks inside each interval.\n * @param input - Spectrum values together with its first and second derivatives.\n * @returns The detected peaks.\n */\nexport function autoAlgorithm(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const crossDy = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < 0 && dY[i + 1] > 0) || (dY[i] > 0 && dY[i + 1] < 0)) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        // Handle exact zero\n        if (dY[i] === 0 &&\n            dY[i] < Math.abs(dY[i + 1]) &&\n            dY[i] < Math.abs(dY[i - 1])) {\n            crossDy.push(i);\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    const peaks = [];\n    let lastK = -1;\n    let lastJ = -1;\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        let yIndex = -1;\n        let match = tryMatchOneIntervalWithMinData({\n            x,\n            yData,\n            lastK,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            minData: crossDy,\n        });\n        lastK = match.lastIndex;\n        if (match.possible !== -1) {\n            yIndex = crossDy[match.possible];\n        }\n        else {\n            match = tryMatchOneIntervalWithMinData({\n                x,\n                yData,\n                yThreshold,\n                lastK: lastJ,\n                intervalWidth,\n                intervalCenter,\n                minData: minddY,\n            });\n            if (match.possible !== -1) {\n                yIndex = minddY[match.possible];\n            }\n            lastJ = match.lastIndex;\n        }\n        if (yIndex !== -1) {\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[yIndex],\n                y: y[yIndex],\n                width,\n                index: yIndex,\n                ddY: ddY[yIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n    }\n    return peaks;\n}\n//# sourceMappingURL=autoAlgorithm.js.map","import { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\n/**\n * Build the list of detected peaks by matching each `[left, right]` interval\n * with the best candidate index from `minData`.\n * @param options - Intervals, candidate indices and spectrum data.\n * @returns The detected peaks.\n */\nexport function getPeakFromIntervals(options) {\n    let lastK = -1;\n    const peaks = [];\n    const { x, ddY, yData, yThreshold, intervalR, intervalL, minData } = options;\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        const { possible, lastIndex } = tryMatchOneIntervalWithMinData({\n            x,\n            lastK,\n            minData,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            yData,\n        });\n        if (possible !== -1) {\n            const centerIndex = minData[possible];\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[centerIndex],\n                y: yData[centerIndex],\n                width,\n                index: centerIndex,\n                ddY: ddY[centerIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n        lastK = lastIndex;\n    }\n    return peaks;\n}\n//# sourceMappingURL=getPeaksFromIntervals.js.map","/**\n * Finds the indices where the first derivative crosses zero (sign change),\n * which are potential peak positions. This function does not detect zero-crossings\n * in regions with consecutive zero values in the derivative (flat regions).\n * @param input - Object containing the y values and their first derivative (dY).\n * @returns Array of indices where the first derivative crosses zero (excluding consecutive zeros).\n */\nexport function xGetCrossZeroPoints(input) {\n    const { y, dY } = input;\n    const crossDy = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if (isLessAndGreaterThanZero(dY[i], dY[i + 1])) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        else if (\n        // Handle exact zero\n        dY[i] === 0 &&\n            isLessAndGreaterThanZero(dY[i - 1], dY[i + 1])) {\n            crossDy.push(i);\n        }\n    }\n    return crossDy;\n}\nfunction isLessAndGreaterThanZero(back, next) {\n    return (back < 0 && next > 0) || (back > 0 && next < 0);\n}\n//# sourceMappingURL=xGetCrossZeroPoints.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\nimport { xGetCrossZeroPoints } from \"./xGetCrossZeroPoints.js\";\n/**\n * Detect peaks using zero-crossings of the first derivative.\n * @param input - Spectrum values and its first/second derivatives.\n * @returns The detected peaks.\n */\nexport function firstDerivative(input) {\n    const { y, x, dY, dX, yData, yThreshold, ddY } = input;\n    const crossDy = xGetCrossZeroPoints(input);\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    return getPeakFromIntervals({\n        minData: crossDy,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=firstDerivative.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\n/**\n * Detect peaks using local minima of the second derivative (inflection points).\n * @param input - Spectrum values and its first/second derivatives.\n * @returns The detected peaks.\n */\nexport function secondDerivative(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < y.length - 1; ++i) {\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    return getPeakFromIntervals({\n        minData: minddY,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=secondDerivative.js.map","/**\n * Refine the `x` and `y` coordinates of each peak by running a quadratic\n * interpolation over the peak and its 3 closest neighbors.\n * The correction is performed in place.\n * @param data - Object with `x` and `y` arrays.\n * @param peaks - Peaks to refine (mutated in place).\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else if (y[currentIndex + 1] >= y[currentIndex] &&\n            y[currentIndex + 1] >= y[currentIndex + 2]) {\n            currentIndex++;\n        }\n        else if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n            y[currentIndex - 2] >= y[currentIndex - 1]) {\n            currentIndex -= 2;\n        }\n        else if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n            y[currentIndex + 2] >= y[currentIndex + 3]) {\n            currentIndex += 2;\n        }\n        // Quadratic interpolation on log-intensities to refine the peak top.\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            const alpha = Math.log10(y[currentIndex - 1]);\n            const beta = Math.log10(y[currentIndex]);\n            const gamma = Math.log10(y[currentIndex + 1]);\n            const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            const xCurrent = x[currentIndex];\n            const xPrevious = x[currentIndex - 1];\n            peak.x = xCurrent + (xCurrent - xPrevious) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotonic, xMinMaxValues, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { autoAlgorithm } from \"./algorithms/autoAlgorithm.js\";\nimport { firstDerivative } from \"./algorithms/firstDerivative.js\";\nimport { secondDerivative } from \"./algorithms/secondDerivative.js\";\nimport { optimizeTop } from \"./utils/optimizeTop.js\";\n/**\n * Global spectra deconvolution.\n * @param data - Object with `x` and `y` arrays. `x` must be monotone increasing.\n * @param options - Peak detection options.\n * @returns The detected peaks, sorted by ascending `x`.\n */\nexport function gsd(data, options = {}) {\n    let { noiseLevel } = options;\n    const { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, peakDetectionAlgorithm = 'second', } = options;\n    const { x } = data;\n    let { y } = data;\n    if (xIsMonotonic(x) !== 1) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    // Copy so the `maxCriteria` / clipping loops below don't mutate the caller's array.\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    const isEquallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (isEquallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else if (!maxCriteria) {\n        noiseLevel *= -1;\n    }\n    if (!maxCriteria) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] *= -1;\n        }\n    }\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    const xValue = isEquallySpaced ? x[1] - x[0] : x;\n    const yData = smoothY\n        ? sgg(y, xValue, {\n            ...sgOptions,\n            derivative: 0,\n        })\n        : y;\n    const { min: minY, max: maxY } = xMinMaxValues(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const dY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 1,\n    });\n    const ddY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 2,\n    });\n    const yThreshold = Math.max(noiseLevel, minY + (maxY - minY) * minMaxRatio);\n    const dX = x[1] - x[0];\n    const peakData = { x, y, yData, dY, ddY, dX, yThreshold };\n    let peaks = [];\n    if (peakDetectionAlgorithm === 'first') {\n        peaks = firstDerivative(peakData);\n    }\n    else if (peakDetectionAlgorithm === 'second') {\n        peaks = secondDerivative(peakData);\n    }\n    else {\n        peaks = autoAlgorithm(peakData);\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    for (const peak of peaks) {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    }\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","import { gsd } from 'ml-gsd';\nimport { xAdd, xFindClosestIndex, xMean } from 'ml-spectra-processing';\n/**\n * Filter that allows to calibrateX the x axis based on the presence of peaks\n * @param data\n * @param options\n */\nexport function calibrateX(data, options = {}) {\n    const { targetX = 0, nbPeaks = 1, from = data.x[0], to = data.x.at(-1), gsd: gsdOptions = {\n        minMaxRatio: 0.1,\n        realTopDetection: true,\n        smoothY: true,\n        sgOptions: {\n            windowSize: 7,\n            polynomial: 3,\n        },\n    }, } = options;\n    const fromIndex = xFindClosestIndex(data.x, from);\n    const toIndex = xFindClosestIndex(data.x, to);\n    let peaks = gsd({\n        x: data.x.subarray(fromIndex, toIndex),\n        y: data.y.subarray(fromIndex, toIndex),\n    }, gsdOptions);\n    peaks.sort((a, b) => b.y - a.y);\n    peaks = peaks.slice(0, nbPeaks);\n    if (peaks.length < nbPeaks)\n        return { data };\n    const middle = xMean(peaks.map((peak) => peak.x));\n    return { data: { x: xAdd(data.x, targetX - middle), y: data.y } };\n}\n//# sourceMappingURL=calibrateX.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function xFunction(data, options = {}) {\n    return {\n        data: {\n            x: xApplyFunctionStr(data.x, {\n                variableLabel: 'x',\n                fctString: options.function,\n            }),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=xFunction.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function yFunction(data, options = {}) {\n    return {\n        data: {\n            x: data.x,\n            y: xApplyFunctionStr(data.y, {\n                variableLabel: 'y',\n                fctString: options.function,\n            }),\n        },\n    };\n}\n//# sourceMappingURL=yFunction.js.map","import { xAdd, xMaxValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMaxY(data, options = {}) {\n    const { max = 1 } = options;\n    const existingMax = xMaxValue(data.y);\n    if (existingMax === max) {\n        return { data };\n    }\n    return {\n        data: {\n            x: data.x,\n            y: xAdd(data.y, max - existingMax),\n        },\n    };\n}\n//# sourceMappingURL=setMaxY.js.map","import { xAdd, xMinValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMinY(data, options = {}) {\n    const { min = 0 } = options;\n    const existingMin = xMinValue(data.y);\n    if (existingMin === min) {\n        return { data };\n    }\n    return {\n        data: {\n            x: data.x,\n            y: xAdd(data.y, min - existingMin),\n        },\n    };\n}\n//# sourceMappingURL=setMinY.js.map","import { xEnsureFloat64, xyGrowingX } from 'ml-spectra-processing';\nimport * as Filters from \"./filters/filters.js\";\n/**\n * Apply filters on {x:[], y:[]}\n * @param data\n * @param filters\n * @returns\n */\nexport function filterXY(data, filters) {\n    let result = {\n        data: xyGrowingX({ x: xEnsureFloat64(data.x), y: xEnsureFloat64(data.y) }),\n    };\n    const logs = [];\n    for (const filter of filters) {\n        const start = Date.now();\n        if (!filter.name) {\n            // we ignore empty filter names\n            continue;\n        }\n        const filterFct = Filters[filter.name];\n        if (!filterFct) {\n            throw new Error(`Unknown filter: ${filter.name}`);\n        }\n        // @ts-expect-error some method have options and some other ones don't have any options\n        result = filterFct(result.data, filter.options);\n        result.data = xyGrowingX(result.data);\n        logs.push({\n            name: filter.name,\n            time: Date.now() - start,\n        });\n    }\n    return { logs, data: result.data };\n}\n//# sourceMappingURL=filterXY.js.map","import { filterXY } from 'ml-signal-processing';\nimport { xIsMonotonic, xMaxValue, xMinValue } from 'ml-spectra-processing';\nexport function getNormalizedSpectrum(spectrum, options = {}) {\n    const data = {\n        x: spectrum.variables.x.data,\n        y: spectrum.variables.y.data,\n    };\n    const newSpectrum = {\n        variables: {\n            x: {\n                data: spectrum.variables.x.data,\n                units: spectrum.variables.x.units,\n                label: spectrum.variables.x.label,\n            },\n            y: {\n                data: spectrum.variables.y.data,\n                units: spectrum.variables.y.units,\n                label: spectrum.variables.y.label,\n            },\n        },\n    };\n    if (spectrum.title)\n        newSpectrum.title = spectrum.title;\n    if (spectrum.dataType)\n        newSpectrum.dataType = spectrum.dataType;\n    if (spectrum.meta)\n        newSpectrum.meta = spectrum.meta;\n    if (spectrum.id)\n        newSpectrum.id = spectrum.id;\n    const { from = spectrum.variables.x.min, to = spectrum.variables.x.max, numberOfPoints, applyRangeSelectionFirst = false, exclusions = [], zones = [], } = options;\n    let { filters = [] } = options;\n    filters = structuredClone(filters);\n    if (numberOfPoints) {\n        if (applyRangeSelectionFirst) {\n            filters.unshift({\n                name: 'equallySpaced',\n                options: { from, to, exclusions, zones, numberOfPoints },\n            });\n        }\n        else {\n            filters.push({\n                name: 'equallySpaced',\n                options: { from, to, exclusions, zones, numberOfPoints },\n            });\n        }\n    }\n    else if (applyRangeSelectionFirst) {\n        filters.unshift({\n            name: 'filterX',\n            options: { from, to, exclusions, zones },\n        });\n    }\n    else {\n        filters.push({\n            name: 'filterX',\n            options: { from, to, exclusions, zones },\n        });\n    }\n    const { x, y } = filterXY(data, filters).data;\n    // filters change the y axis, we get rid of the units\n    // TODO we should deal correctly with this problem\n    if (filters.length > 1) {\n        newSpectrum.variables.y.units = '';\n        newSpectrum.variables.y.label = newSpectrum.variables.y.label?.replace(/\\s*\\[.*]/, '');\n    }\n    newSpectrum.variables.x.data = x;\n    newSpectrum.variables.x.min = xMinValue(x);\n    newSpectrum.variables.x.max = xMaxValue(x);\n    newSpectrum.variables.x.isMonotonic = xIsMonotonic(x);\n    newSpectrum.variables.y.data = y;\n    newSpectrum.variables.y.min = xMinValue(y);\n    newSpectrum.variables.y.max = xMaxValue(y);\n    newSpectrum.variables.y.isMonotonic = xIsMonotonic(y);\n    return newSpectrum;\n}\n//# sourceMappingURL=getNormalizedSpectrum.js.map","/*\nThe MIT License (MIT)\nCopyright © 2006-2007 Kevin C. Olbrich\nCopyright © 2010-2016 LIM SAS (http://lim.eu) - Julien Sanchez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Qty = factory());\n})(this, (function () { 'use strict';\n\n  /**\n   * Tests if a value is a string\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a string, false otherwise\n   */\n  function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n  }\n\n  /*\n   * Prefer stricter Number.isFinite if currently supported.\n   * To be dropped when ES6 is finalized. Obsolete browsers will\n   * have to use ES6 polyfills.\n   */\n  var isFiniteImpl = Number.isFinite || window.isFinite;\n  /**\n   * Tests if a value is a number\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a number, false otherwise\n   */\n  function isNumber(value) {\n    // Number.isFinite allows not to consider NaN or '1' as numbers\n    return isFiniteImpl(value);\n  }\n\n  /*\n   * Identity function\n   */\n  function identity(value) {\n    return value;\n  }\n\n  /**\n   * Returns unique strings from list\n   *\n   * @param {string[]} strings - array of strings\n   *\n   *\n   * @returns {string[]} a new array of strings without duplicates\n   */\n  function uniq(strings) {\n    var seen = {};\n    return strings.filter(function(item) {\n      return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n    });\n  }\n\n  function compareArray(array1, array2) {\n    if (array2.length !== array1.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array2[i].compareArray) {\n        if (!array2[i].compareArray(array1[i])) {\n          return false;\n        }\n      }\n      if (array2[i] !== array1[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function assign(target, properties) {\n    Object.keys(properties).forEach(function(key) {\n      target[key] = properties[key];\n    });\n  }\n\n  /**\n   * Safely multiplies numbers while avoiding floating errors\n   * like 0.1 * 0.1 => 0.010000000000000002\n   *\n   * @param {...number} numbers - numbers to multiply\n   *\n   * @returns {number} result\n   */\n  function mulSafe() {\n    var result = 1, decimals = 0;\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      decimals = decimals + getFractional(arg);\n      result *= arg;\n    }\n\n    return decimals !== 0 ? round(result, decimals) : result;\n  }\n\n  /**\n   * Safely divides two numbers while avoiding floating errors\n   * like 0.3 / 0.05 => 5.999999999999999\n   *\n   * @returns {number} result\n   * @param {number} num Numerator\n   * @param {number} den Denominator\n   */\n  function divSafe(num, den) {\n    if (den === 0) {\n      throw new Error(\"Divide by zero\");\n    }\n\n    var factor = Math.pow(10, getFractional(den));\n    var invDen = factor / (factor * den);\n\n    return mulSafe(num, invDen);\n  }\n\n  /**\n   * Rounds value at the specified number of decimals\n   *\n   * @param {number} val - value to round\n   * @param {number} decimals - number of decimals\n   *\n   * @returns {number} rounded number\n   */\n  function round(val, decimals) {\n    return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n  }\n\n  function getFractional(num) {\n    // Check for NaNs or Infinities\n    if (!isFinite(num)) {\n      return 0;\n    }\n\n    // Faster than parsing strings\n    // http://jsperf.com/count-decimals/2\n    var count = 0;\n    while (num % 1 !== 0) {\n      num *= 10;\n      count++;\n    }\n    return count;\n  }\n\n  /**\n   * Custom error type definition\n   * @constructor\n   */\n  function QtyError() {\n    var err;\n    if (!this) { // Allows to instantiate QtyError without new()\n      err = Object.create(QtyError.prototype);\n      QtyError.apply(err, arguments);\n      return err;\n    }\n    err = Error.apply(this, arguments);\n    this.name = \"QtyError\";\n    this.message = err.message;\n    this.stack = err.stack;\n  }\n  QtyError.prototype = Object.create(Error.prototype, {constructor: { value: QtyError }});\n\n  /*\n   * Throws incompatible units error\n   * @param {string} left - units\n   * @param {string} right - units incompatible with first argument\n   * @throws \"Incompatible units\" error\n   */\n  function throwIncompatibleUnits(left, right) {\n    throw new QtyError(\"Incompatible units: \" + left + \" and \" + right);\n  }\n\n  var UNITS = {\n    /* prefixes */\n    \"<googol>\" : [[\"googol\"], 1e100, \"prefix\"],\n    \"<kibi>\"  :  [[\"Ki\",\"Kibi\",\"kibi\"], Math.pow(2,10), \"prefix\"],\n    \"<mebi>\"  :  [[\"Mi\",\"Mebi\",\"mebi\"], Math.pow(2,20), \"prefix\"],\n    \"<gibi>\"  :  [[\"Gi\",\"Gibi\",\"gibi\"], Math.pow(2,30), \"prefix\"],\n    \"<tebi>\"  :  [[\"Ti\",\"Tebi\",\"tebi\"], Math.pow(2,40), \"prefix\"],\n    \"<pebi>\"  :  [[\"Pi\",\"Pebi\",\"pebi\"], Math.pow(2,50), \"prefix\"],\n    \"<exi>\"   :  [[\"Ei\",\"Exi\",\"exi\"], Math.pow(2,60), \"prefix\"],\n    \"<zebi>\"  :  [[\"Zi\",\"Zebi\",\"zebi\"], Math.pow(2,70), \"prefix\"],\n    \"<yebi>\"  :  [[\"Yi\",\"Yebi\",\"yebi\"], Math.pow(2,80), \"prefix\"],\n    \"<yotta>\" :  [[\"Y\",\"Yotta\",\"yotta\"], 1e24, \"prefix\"],\n    \"<zetta>\" :  [[\"Z\",\"Zetta\",\"zetta\"], 1e21, \"prefix\"],\n    \"<exa>\"   :  [[\"E\",\"Exa\",\"exa\"], 1e18, \"prefix\"],\n    \"<peta>\"  :  [[\"P\",\"Peta\",\"peta\"], 1e15, \"prefix\"],\n    \"<tera>\"  :  [[\"T\",\"Tera\",\"tera\"], 1e12, \"prefix\"],\n    \"<giga>\"  :  [[\"G\",\"Giga\",\"giga\"], 1e9, \"prefix\"],\n    \"<mega>\"  :  [[\"M\",\"Mega\",\"mega\"], 1e6, \"prefix\"],\n    \"<kilo>\"  :  [[\"k\",\"kilo\"], 1e3, \"prefix\"],\n    \"<hecto>\" :  [[\"h\",\"Hecto\",\"hecto\"], 1e2, \"prefix\"],\n    \"<deca>\"  :  [[\"da\",\"Deca\",\"deca\",\"deka\"], 1e1, \"prefix\"],\n    \"<deci>\"  :  [[\"d\",\"Deci\",\"deci\"], 1e-1, \"prefix\"],\n    \"<centi>\"  : [[\"c\",\"Centi\",\"centi\"], 1e-2, \"prefix\"],\n    \"<milli>\" :  [[\"m\",\"Milli\",\"milli\"], 1e-3, \"prefix\"],\n    \"<micro>\"  : [\n      [\"u\",\"\\u03BC\"/*µ as greek letter*/,\"\\u00B5\"/*µ as micro sign*/,\"Micro\",\"mc\",\"micro\"],\n      1e-6,\n      \"prefix\"\n    ],\n    \"<nano>\"  :  [[\"n\",\"Nano\",\"nano\"], 1e-9, \"prefix\"],\n    \"<pico>\"  :  [[\"p\",\"Pico\",\"pico\"], 1e-12, \"prefix\"],\n    \"<femto>\" :  [[\"f\",\"Femto\",\"femto\"], 1e-15, \"prefix\"],\n    \"<atto>\"  :  [[\"a\",\"Atto\",\"atto\"], 1e-18, \"prefix\"],\n    \"<zepto>\" :  [[\"z\",\"Zepto\",\"zepto\"], 1e-21, \"prefix\"],\n    \"<yocto>\" :  [[\"y\",\"Yocto\",\"yocto\"], 1e-24, \"prefix\"],\n\n    \"<1>\"     :  [[\"1\", \"<1>\"], 1, \"\"],\n    /* length units */\n    \"<meter>\" :  [[\"m\",\"meter\",\"meters\",\"metre\",\"metres\"], 1.0, \"length\", [\"<meter>\"] ],\n    \"<inch>\"  :  [[\"in\",\"inch\",\"inches\",\"\\\"\"], 0.0254, \"length\", [\"<meter>\"]],\n    \"<foot>\"  :  [[\"ft\",\"foot\",\"feet\",\"'\"], 0.3048, \"length\", [\"<meter>\"]],\n    \"<yard>\"  :  [[\"yd\",\"yard\",\"yards\"], 0.9144, \"length\", [\"<meter>\"]],\n    \"<mile>\"  :  [[\"mi\",\"mile\",\"miles\"], 1609.344, \"length\", [\"<meter>\"]],\n    \"<naut-mile>\" : [[\"nmi\",\"naut-mile\"], 1852, \"length\", [\"<meter>\"]],\n    \"<league>\":  [[\"league\",\"leagues\"], 4828, \"length\", [\"<meter>\"]],\n    \"<furlong>\": [[\"furlong\",\"furlongs\"], 201.2, \"length\", [\"<meter>\"]],\n    \"<rod>\"   :  [[\"rd\",\"rod\",\"rods\"], 5.029, \"length\", [\"<meter>\"]],\n    \"<mil>\"   :  [[\"mil\",\"mils\"], 0.0000254, \"length\", [\"<meter>\"]],\n    \"<angstrom>\"  :[[\"ang\",\"angstrom\",\"angstroms\"], 1e-10, \"length\", [\"<meter>\"]],\n    \"<fathom>\" : [[\"fathom\",\"fathoms\"], 1.829, \"length\", [\"<meter>\"]],\n    \"<pica>\"  : [[\"pica\",\"picas\"], 0.00423333333, \"length\", [\"<meter>\"]],\n    \"<point>\" : [[\"pt\",\"point\",\"points\"], 0.000352777778, \"length\", [\"<meter>\"]],\n    \"<redshift>\" : [[\"z\",\"red-shift\", \"redshift\"], 1.302773e26, \"length\", [\"<meter>\"]],\n    \"<AU>\"    : [[\"AU\",\"astronomical-unit\"], 149597900000, \"length\", [\"<meter>\"]],\n    \"<light-second>\":[[\"ls\",\"light-second\"], 299792500, \"length\", [\"<meter>\"]],\n    \"<light-minute>\":[[\"lmin\",\"light-minute\"], 17987550000, \"length\", [\"<meter>\"]],\n    \"<light-year>\" : [[\"ly\",\"light-year\"], 9460528000000000, \"length\", [\"<meter>\"]],\n    \"<parsec>\"  : [[\"pc\",\"parsec\",\"parsecs\"], 30856780000000000, \"length\", [\"<meter>\"]],\n    \"<datamile>\"  :  [[\"DM\",\"datamile\"], 1828.8, \"length\", [\"<meter>\"]],\n\n    /* mass */\n    \"<kilogram>\" : [[\"kg\",\"kilogram\",\"kilograms\"], 1.0, \"mass\", [\"<kilogram>\"]],\n    \"<AMU>\" : [[\"u\",\"AMU\",\"amu\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<dalton>\" : [[\"Da\",\"Dalton\",\"Daltons\",\"dalton\",\"daltons\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<slug>\" : [[\"slug\",\"slugs\"], 14.5939029, \"mass\", [\"<kilogram>\"]],\n    \"<short-ton>\" : [[\"tn\",\"ton\",\"short-ton\"], 907.18474, \"mass\", [\"<kilogram>\"]],\n    \"<metric-ton>\":[[\"t\",\"tonne\",\"metric-ton\"], 1000, \"mass\", [\"<kilogram>\"]],\n    \"<carat>\" : [[\"ct\",\"carat\",\"carats\"], 0.0002, \"mass\", [\"<kilogram>\"]],\n    \"<pound>\" : [[\"lbs\",\"lb\",\"pound\",\"pounds\",\"#\"], 0.45359237, \"mass\", [\"<kilogram>\"]],\n    \"<ounce>\" : [[\"oz\",\"ounce\",\"ounces\"], 0.0283495231, \"mass\", [\"<kilogram>\"]],\n    \"<gram>\"    :  [[\"g\",\"gram\",\"grams\",\"gramme\",\"grammes\"], 1e-3, \"mass\", [\"<kilogram>\"]],\n    \"<grain>\" : [[\"grain\",\"grains\",\"gr\"], 6.479891e-5, \"mass\", [\"<kilogram>\"]],\n    \"<dram>\"  : [[\"dram\",\"drams\",\"dr\"], 0.0017718452, \"mass\",[\"<kilogram>\"]],\n    \"<stone>\" : [[\"stone\",\"stones\",\"st\"],6.35029318, \"mass\",[\"<kilogram>\"]],\n\n    /* area */\n    \"<hectare>\":[[\"hectare\"], 10000, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<acre>\":[[\"acre\",\"acres\"], 4046.85642, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<sqft>\":[[\"sqft\"], 1, \"area\", [\"<foot>\",\"<foot>\"]],\n\n    /* volume */\n    \"<liter>\" : [[\"l\",\"L\",\"liter\",\"liters\",\"litre\",\"litres\"], 0.001, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon>\":  [[\"gal\",\"gallon\",\"gallons\"], 0.0037854118, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon-imp>\":  [[\"galimp\",\"gallon-imp\",\"gallons-imp\"], 0.0045460900, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<quart>\":  [[\"qt\",\"quart\",\"quarts\"], 0.00094635295, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint>\":  [[\"pt\",\"pint\",\"pints\"], 0.000473176475, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint-imp>\":  [[\"ptimp\",\"pint-imp\",\"pints-imp\"], 5.6826125e-4, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<cup>\":  [[\"cu\",\"cup\",\"cups\"], 0.000236588238, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce>\":  [[\"floz\",\"fluid-ounce\",\"fluid-ounces\"], 2.95735297e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce-imp>\":  [[\"flozimp\", \"floz-imp\",\"fluid-ounce-imp\",\"fluid-ounces-imp\"], 2.84130625e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<tablespoon>\":  [[\"tb\",\"tbsp\",\"tbs\",\"tablespoon\",\"tablespoons\"], 1.47867648e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<teaspoon>\":  [[\"tsp\",\"teaspoon\",\"teaspoons\"], 4.92892161e-6, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<bushel>\":  [[\"bu\",\"bsh\",\"bushel\",\"bushels\"], 0.035239072, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<oilbarrel>\":  [[\"bbl\",\"oilbarrel\", \"oilbarrels\", \"oil-barrel\",\"oil-barrels\"], 0.158987294928, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel>\":  [[\"bl\",\"bl-us\",\"beerbarrel\", \"beerbarrels\", \"beer-barrel\",\"beer-barrels\"], 0.1173477658, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel-imp>\":  [[\"blimp\",\"bl-imp\",\"beerbarrel-imp\", \"beerbarrels-imp\", \"beer-barrel-imp\",\"beer-barrels-imp\"], 0.16365924, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* speed */\n    \"<kph>\" : [[\"kph\"], 0.277777778, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<mph>\" : [[\"mph\"], 0.44704, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<knot>\" : [[\"kt\",\"kn\",\"kts\",\"knot\",\"knots\"], 0.514444444, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<fps>\"  : [[\"fps\"], 0.3048, \"speed\", [\"<meter>\"], [\"<second>\"]],\n\n    /* acceleration */\n    \"<gee>\" : [[\"gee\"], 9.80665, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<Gal>\" : [[\"Gal\"], 1e-2, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* temperature_difference */\n    \"<kelvin>\" : [[\"degK\",\"kelvin\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<celsius>\" : [[\"degC\",\"celsius\",\"celsius\",\"centigrade\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<fahrenheit>\" : [[\"degF\",\"fahrenheit\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<rankine>\" : [[\"degR\",\"rankine\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<temp-K>\"  : [[\"tempK\",\"temp-K\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-C>\"  : [[\"tempC\",\"temp-C\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-F>\"  : [[\"tempF\",\"temp-F\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-R>\"  : [[\"tempR\",\"temp-R\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n\n    /* time */\n    \"<second>\":  [[\"s\",\"sec\",\"secs\",\"second\",\"seconds\"], 1.0, \"time\", [\"<second>\"]],\n    \"<minute>\":  [[\"min\",\"mins\",\"minute\",\"minutes\"], 60.0, \"time\", [\"<second>\"]],\n    \"<hour>\":  [[\"h\",\"hr\",\"hrs\",\"hour\",\"hours\"], 3600.0, \"time\", [\"<second>\"]],\n    \"<day>\":  [[\"d\",\"day\",\"days\"], 3600 * 24, \"time\", [\"<second>\"]],\n    \"<week>\":  [[\"wk\",\"week\",\"weeks\"], 7 * 3600 * 24, \"time\", [\"<second>\"]],\n    \"<fortnight>\": [[\"fortnight\",\"fortnights\"], 1209600, \"time\", [\"<second>\"]],\n    \"<year>\":  [[\"y\",\"yr\",\"year\",\"years\",\"annum\"], 31556926, \"time\", [\"<second>\"]],\n    \"<decade>\":[[\"decade\",\"decades\"], 315569260, \"time\", [\"<second>\"]],\n    \"<century>\":[[\"century\",\"centuries\"], 3155692600, \"time\", [\"<second>\"]],\n\n    /* pressure */\n    \"<pascal>\" : [[\"Pa\",\"pascal\",\"Pascal\"], 1.0, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<bar>\" : [[\"bar\",\"bars\"], 100000, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<mmHg>\" : [[\"mmHg\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inHg>\" : [[\"inHg\"], 3386.3881472, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<torr>\" : [[\"torr\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<atm>\" : [[\"atm\",\"ATM\",\"atmosphere\",\"atmospheres\"], 101325, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<psi>\" : [[\"psi\"], 6894.76, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<cmh2o>\" : [[\"cmH2O\",\"cmh2o\"], 98.0638, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inh2o>\" : [[\"inH2O\",\"inh2o\"], 249.082052, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n\n    /* viscosity */\n    \"<poise>\"  : [[\"P\",\"poise\"], 0.1, \"viscosity\", [\"<kilogram>\"],[\"<meter>\",\"<second>\"] ],\n    \"<stokes>\" : [[\"St\",\"stokes\"], 1e-4, \"viscosity\", [\"<meter>\",\"<meter>\"], [\"<second>\"]],\n\n    /* substance */\n    \"<mole>\"  :  [[\"mol\",\"mole\"], 1.0, \"substance\", [\"<mole>\"]],\n\n    /* molar_concentration */\n    \"<molar>\" : [[\"M\",\"molar\"], 1000, \"molar_concentration\", [\"<mole>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<wtpercent>\"  : [[\"wt%\",\"wtpercent\"], 10, \"molar_concentration\", [\"<kilogram>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* activity */\n    \"<katal>\" :  [[\"kat\",\"katal\",\"Katal\"], 1.0, \"activity\", [\"<mole>\"], [\"<second>\"]],\n    \"<unit>\"  :  [[\"U\",\"enzUnit\",\"unit\"], 16.667e-16, \"activity\", [\"<mole>\"], [\"<second>\"]],\n\n    /* capacitance */\n    \"<farad>\" :  [[\"F\",\"farad\",\"Farad\"], 1.0, \"capacitance\", [\"<second>\",\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<meter>\", \"<meter>\", \"<kilogram>\"]],\n\n    /* charge */\n    \"<coulomb>\" :  [[\"C\",\"coulomb\",\"Coulomb\"], 1.0, \"charge\", [\"<ampere>\",\"<second>\"]],\n    \"<Ah>\" :  [[\"Ah\"], 3600, \"charge\", [\"<ampere>\",\"<second>\"]],\n\n    /* current */\n    \"<ampere>\"  :  [[\"A\",\"Ampere\",\"ampere\",\"amp\",\"amps\"], 1.0, \"current\", [\"<ampere>\"]],\n\n    /* conductance */\n    \"<siemens>\" : [[\"S\",\"Siemens\",\"siemens\"], 1.0, \"conductance\", [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<kilogram>\",\"<meter>\",\"<meter>\"]],\n\n    /* inductance */\n    \"<henry>\" :  [[\"H\",\"Henry\",\"henry\"], 1.0, \"inductance\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]],\n\n    /* potential */\n    \"<volt>\"  :  [[\"V\",\"Volt\",\"volt\",\"volts\"], 1.0, \"potential\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\"]],\n\n    /* resistance */\n    \"<ohm>\" :  [\n      [\"Ohm\",\"ohm\",\"\\u03A9\"/*Ω as greek letter*/,\"\\u2126\"/*Ω as ohm sign*/],\n      1.0,\n      \"resistance\",\n      [\"<meter>\",\"<meter>\",\"<kilogram>\"],[\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]\n    ],\n    /* magnetism */\n    \"<weber>\" : [[\"Wb\",\"weber\",\"webers\"], 1.0, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<tesla>\"  : [[\"T\",\"tesla\",\"teslas\"], 1.0, \"magnetism\", [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<gauss>\" : [[\"G\",\"gauss\"], 1e-4, \"magnetism\",  [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<maxwell>\" : [[\"Mx\",\"maxwell\",\"maxwells\"], 1e-8, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<oersted>\"  : [[\"Oe\",\"oersted\",\"oersteds\"], 250.0 / Math.PI, \"magnetism\", [\"<ampere>\"], [\"<meter>\"]],\n\n    /* energy */\n    \"<joule>\" :  [[\"J\",\"joule\",\"Joule\",\"joules\",\"Joules\"], 1.0, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<erg>\"   :  [[\"erg\",\"ergs\"], 1e-7, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<btu>\"   :  [[\"BTU\",\"btu\",\"BTUs\"], 1055.056, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<calorie>\" :  [[\"cal\",\"calorie\",\"calories\"], 4.18400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Calorie>\" :  [[\"Cal\",\"Calorie\",\"Calories\"], 4184.00, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<therm-US>\" : [[\"th\",\"therm\",\"therms\",\"Therm\",\"therm-US\"], 105480400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Wh>\" : [[\"Wh\"], 3600, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<electronvolt>\" : [[\"eV\", \"electronvolt\", \"electronvolts\"], 1.602176634E-19, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n\n    /* force */\n    \"<newton>\"  : [[\"N\",\"Newton\",\"newton\"], 1.0, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<dyne>\"  : [[\"dyn\",\"dyne\"], 1e-5, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<pound-force>\"  : [[\"lbf\",\"pound-force\"], 4.448222, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* frequency */\n    \"<hertz>\" : [[\"Hz\",\"hertz\",\"Hertz\"], 1.0, \"frequency\", [\"<1>\"], [\"<second>\"]],\n\n    /* angle */\n    \"<radian>\" :[[\"rad\",\"radian\",\"radians\"], 1.0, \"angle\", [\"<radian>\"]],\n    \"<degree>\" :[[\"deg\",\"degree\",\"degrees\"], Math.PI / 180.0, \"angle\", [\"<radian>\"]],\n    \"<arcminute>\" :[[\"arcmin\",\"arcminute\",\"arcminutes\"], Math.PI / 10800.0, \"angle\", [\"<radian>\"]],\n    \"<arcsecond>\" :[[\"arcsec\",\"arcsecond\",\"arcseconds\"], Math.PI / 648000.0, \"angle\", [\"<radian>\"]],\n    \"<gradian>\"   :[[\"gon\",\"grad\",\"gradian\",\"grads\"], Math.PI / 200.0, \"angle\", [\"<radian>\"]],\n    \"<steradian>\"  : [[\"sr\",\"steradian\",\"steradians\"], 1.0, \"solid_angle\", [\"<steradian>\"]],\n\n    /* rotation */\n    \"<rotation>\" : [[\"rotation\"], 2.0 * Math.PI, \"angle\", [\"<radian>\"]],\n    \"<rpm>\"   :[[\"rpm\"], 2.0 * Math.PI / 60.0, \"angular_velocity\", [\"<radian>\"], [\"<second>\"]],\n\n    /* information */\n    \"<byte>\"  :[[\"B\",\"byte\",\"bytes\"], 1.0, \"information\", [\"<byte>\"]],\n    \"<bit>\"  :[[\"b\",\"bit\",\"bits\"], 0.125, \"information\", [\"<byte>\"]],\n\n    /* information rate */\n    \"<Bps>\" : [[\"Bps\"], 1.0, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n    \"<bps>\" : [[\"bps\"], 0.125, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n\n    /* currency */\n    \"<dollar>\":[[\"USD\",\"dollar\"], 1.0, \"currency\", [\"<dollar>\"]],\n    \"<cents>\" :[[\"cents\"], 0.01, \"currency\", [\"<dollar>\"]],\n\n    /* luminosity */\n    \"<candela>\" : [[\"cd\",\"candela\"], 1.0, \"luminosity\", [\"<candela>\"]],\n    \"<lumen>\" : [[\"lm\",\"lumen\"], 1.0, \"luminous_power\", [\"<candela>\",\"<steradian>\"]],\n    \"<lux>\" :[[\"lux\"], 1.0, \"illuminance\", [\"<candela>\",\"<steradian>\"], [\"<meter>\",\"<meter>\"]],\n\n    /* power */\n    \"<watt>\"  : [[\"W\",\"watt\",\"watts\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere>\"  : [[\"VA\",\"volt-ampere\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere-reactive>\"  : [[\"var\",\"Var\",\"VAr\",\"VAR\",\"volt-ampere-reactive\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<horsepower>\"  :  [[\"hp\",\"horsepower\"], 745.699872, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n\n    /* radiation */\n    \"<gray>\" : [[\"Gy\",\"gray\",\"grays\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<roentgen>\" : [[\"R\",\"roentgen\"], 0.009330, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<sievert>\" : [[\"Sv\",\"sievert\",\"sieverts\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<becquerel>\" : [[\"Bq\",\"becquerel\",\"becquerels\"], 1.0, \"radiation\", [\"<1>\"],[\"<second>\"]],\n    \"<curie>\" : [[\"Ci\",\"curie\",\"curies\"], 3.7e10, \"radiation\", [\"<1>\"],[\"<second>\"]],\n\n    /* rate */\n    \"<cpm>\" : [[\"cpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<dpm>\" : [[\"dpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<bpm>\" : [[\"bpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n\n    /* resolution / typography */\n    \"<dot>\" : [[\"dot\",\"dots\"], 1, \"resolution\", [\"<each>\"]],\n    \"<pixel>\" : [[\"pixel\",\"px\"], 1, \"resolution\", [\"<each>\"]],\n    \"<ppi>\" : [[\"ppi\"], 1, \"resolution\", [\"<pixel>\"], [\"<inch>\"]],\n    \"<dpi>\" : [[\"dpi\"], 1, \"typography\", [\"<dot>\"], [\"<inch>\"]],\n\n    /* other */\n    \"<cell>\" : [[\"cells\",\"cell\"], 1, \"counting\", [\"<each>\"]],\n    \"<each>\" : [[\"each\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<count>\" : [[\"count\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<base-pair>\"  : [[\"bp\",\"base-pair\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<nucleotide>\" : [[\"nt\",\"nucleotide\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<molecule>\" : [[\"molecule\",\"molecules\"], 1.0, \"counting\", [\"<1>\"]],\n    \"<dozen>\" :  [[\"doz\",\"dz\",\"dozen\"],12.0,\"prefix_only\", [\"<each>\"]],\n    \"<percent>\": [[\"%\",\"percent\"], 0.01, \"prefix_only\", [\"<1>\"]],\n    \"<ppm>\" :  [[\"ppm\"],1e-6, \"prefix_only\", [\"<1>\"]],\n    \"<ppb>\" :  [[\"ppb\"],1e-9, \"prefix_only\", [\"<1>\"]],\n    \"<ppt>\" :  [[\"ppt\"],1e-12, \"prefix_only\", [\"<1>\"]],\n    \"<ppq>\" :  [[\"ppq\"],1e-15, \"prefix_only\", [\"<1>\"]],\n    \"<gross>\" :  [[\"gr\",\"gross\"],144.0, \"prefix_only\", [\"<dozen>\",\"<dozen>\"]],\n    \"<decibel>\"  : [[\"dB\",\"decibel\",\"decibels\"], 1.0, \"logarithmic\", [\"<decibel>\"]]\n  };\n\n  var BASE_UNITS = [\"<meter>\",\"<kilogram>\",\"<second>\",\"<mole>\", \"<ampere>\",\"<radian>\",\"<kelvin>\",\"<temp-K>\",\"<byte>\",\"<dollar>\",\"<candela>\",\"<each>\",\"<steradian>\",\"<decibel>\"];\n\n  var UNITY = \"<1>\";\n  var UNITY_ARRAY = [UNITY];\n\n  // Setup\n\n  /**\n   * Asserts unit definition is valid\n   *\n   * @param {string} unitDef - Name of unit to test\n   * @param {Object} definition - Definition of unit to test\n   *\n   * @returns {void}\n   * @throws {QtyError} if unit definition is not valid\n   */\n  function validateUnitDefinition(unitDef, definition) {\n    var scalar = definition[1];\n    var numerator = definition[3] || [];\n    var denominator = definition[4] || [];\n    if (!isNumber(scalar)) {\n      throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                         \"'scalar' must be a number\");\n    }\n\n    numerator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'numerator' is not recognized\");\n      }\n    });\n\n    denominator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'denominator' is not recognized\");\n      }\n    });\n  }\n\n  var PREFIX_VALUES = {};\n  var PREFIX_MAP = {};\n  var UNIT_VALUES = {};\n  var UNIT_MAP = {};\n  var OUTPUT_MAP = {};\n  for (var unitDef in UNITS) {\n    if (UNITS.hasOwnProperty(unitDef)) {\n      var definition = UNITS[unitDef];\n      if (definition[2] === \"prefix\") {\n        PREFIX_VALUES[unitDef] = definition[1];\n        for (var i = 0; i < definition[0].length; i++) {\n          PREFIX_MAP[definition[0][i]] = unitDef;\n        }\n      }\n      else {\n        validateUnitDefinition(unitDef, definition);\n        UNIT_VALUES[unitDef] = {\n          scalar: definition[1],\n          numerator: definition[3],\n          denominator: definition[4]\n        };\n        for (var j = 0; j < definition[0].length; j++) {\n          UNIT_MAP[definition[0][j]] = unitDef;\n        }\n      }\n      OUTPUT_MAP[unitDef] = definition[0][0];\n    }\n  }\n\n  /**\n   * Returns a list of available units of kind\n   *\n   * @param {string} [kind] - kind of units\n   * @returns {array} names of units\n   * @throws {QtyError} if kind is unknown\n   */\n  function getUnits(kind) {\n    var i;\n    var units = [];\n    var unitKeys = Object.keys(UNITS);\n    if (typeof kind === \"undefined\") {\n      for (i = 0; i < unitKeys.length; i++) {\n        if ([\"\", \"prefix\"].indexOf(UNITS[unitKeys[i]][2]) === -1) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n    else if (this.getKinds().indexOf(kind) === -1) {\n      throw new QtyError(\"Kind not recognized\");\n    }\n    else {\n      for (i = 0; i < unitKeys.length; i++) {\n        if (UNITS[unitKeys[i]][2] === kind) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n\n    return units.sort(function(a, b) {\n      if (a.toLowerCase() < b.toLowerCase()) {\n        return -1;\n      }\n      if (a.toLowerCase() > b.toLowerCase()) {\n        return 1;\n      }\n      return 0;\n    });\n  }\n\n  /**\n   * Returns a list of alternative names for a unit\n   *\n   * @param {string} unitName - name of unit\n   * @returns {string[]} aliases for unit\n   * @throws {QtyError} if unit is unknown\n   */\n  function getAliases(unitName) {\n    if (!UNIT_MAP[unitName]) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n    return UNITS[UNIT_MAP[unitName]][0];\n  }\n\n  var SIGNATURE_VECTOR = [\"length\", \"time\", \"temperature\", \"mass\", \"current\", \"substance\", \"luminosity\", \"currency\", \"information\", \"angle\"];\n\n  /*\n  calculates the unit signature id for use in comparing compatible units and simplification\n  the signature is based on a simple classification of units and is based on the following publication\n\n  Novak, G.S., Jr. \"Conversion of units of measurement\", IEEE Transactions on Software Engineering,\n  21(8), Aug 1995, pp.651-661\n  doi://10.1109/32.403789\n  http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel1/32/9079/00403789.pdf?isnumber=9079&prod=JNL&arnumber=403789&arSt=651&ared=661&arAuthor=Novak%2C+G.S.%2C+Jr.\n  */\n  function unitSignature() {\n    if (this.signature) {\n      return this.signature;\n    }\n    var vector = unitSignatureVector.call(this);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] *= Math.pow(20, i);\n    }\n\n    return vector.reduce(\n      function(previous, current) {\n        return previous + current;\n      },\n      0\n    );\n  }\n\n  // calculates the unit signature vector used by unit_signature\n  function unitSignatureVector() {\n    if (!this.isBase()) {\n      return unitSignatureVector.call(this.toBase());\n    }\n\n    var vector = new Array(SIGNATURE_VECTOR.length);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] = 0;\n    }\n    var r, n;\n    for (var j = 0; j < this.numerator.length; j++) {\n      if ((r = UNITS[this.numerator[j]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] + 1;\n        }\n      }\n    }\n\n    for (var k = 0; k < this.denominator.length; k++) {\n      if ((r = UNITS[this.denominator[k]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] - 1;\n        }\n      }\n    }\n    return vector;\n  }\n\n  var SIGN = \"[+-]\";\n  var INTEGER = \"\\\\d+\";\n  var SIGNED_INTEGER = SIGN + \"?\" + INTEGER;\n  var FRACTION = \"\\\\.\" + INTEGER;\n  var FLOAT = \"(?:\" + INTEGER + \"(?:\" + FRACTION + \")?\" + \")\" +\n              \"|\" +\n              \"(?:\" + FRACTION + \")\";\n  var EXPONENT = \"[Ee]\" + SIGNED_INTEGER;\n  var SCI_NUMBER = \"(?:\" + FLOAT + \")(?:\" + EXPONENT + \")?\";\n  var SIGNED_NUMBER = SIGN + \"?\\\\s*\" + SCI_NUMBER;\n  var QTY_STRING = \"(\" + SIGNED_NUMBER + \")?\" + \"\\\\s*([^/]*)(?:\\/(.+))?\";\n  var QTY_STRING_REGEX = new RegExp(\"^\" + QTY_STRING + \"$\");\n\n  var POWER_OP = \"\\\\^|\\\\*{2}\";\n  // Allow unit powers representing scalar, length, area, volume; 4 is for some\n  // special case representations in SI base units.\n  var SAFE_POWER = \"[01234]\";\n  var TOP_REGEX = new RegExp (\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(-?\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n  var BOTTOM_REGEX = new RegExp(\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n\n  /* parse a string into a unit object.\n   * Typical formats like :\n   * \"5.6 kg*m/s^2\"\n   * \"5.6 kg*m*s^-2\"\n   * \"5.6 kilogram*meter*second^-2\"\n   * \"2.2 kPa\"\n   * \"37 degC\"\n   * \"1\"  -- creates a unitless constant with value 1\n   * \"GPa\"  -- creates a unit with scalar 1 with units 'GPa'\n   * 6'4\"  -- recognized as 6 feet + 4 inches\n   * 8 lbs 8 oz -- recognized as 8 lbs + 8 ounces\n   */\n  function parse(val) {\n    if (!isString(val)) {\n      val = val.toString();\n    }\n    val = val.trim();\n\n    var result = QTY_STRING_REGEX.exec(val);\n    if (!result) {\n      throw new QtyError(val + \": Quantity not recognized\");\n    }\n\n    var scalarMatch = result[1];\n    if (scalarMatch) {\n      // Allow whitespaces between sign and scalar for loose parsing\n      scalarMatch = scalarMatch.replace(/\\s/g, \"\");\n      this.scalar = parseFloat(scalarMatch);\n    }\n    else {\n      this.scalar = 1;\n    }\n    var top = result[2];\n    var bottom = result[3];\n\n    var n, x, nx;\n    // TODO DRY me\n    while ((result = TOP_REGEX.exec(top))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var i = 0; i < Math.abs(n) ; i++) {\n        nx += x;\n      }\n      if (n >= 0) {\n        top = top.replace(result[0], nx);\n      }\n      else {\n        bottom = bottom ? bottom + nx : nx;\n        top = top.replace(result[0], \"\");\n      }\n    }\n\n    while ((result = BOTTOM_REGEX.exec(bottom))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var j = 0; j < n ; j++) {\n        nx += x;\n      }\n\n      bottom = bottom.replace(result[0], nx);\n    }\n\n    if (top) {\n      this.numerator = parseUnits(top.trim());\n    }\n    if (bottom) {\n      this.denominator = parseUnits(bottom.trim());\n    }\n  }\n\n  var PREFIX_REGEX = Object.keys(PREFIX_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  var UNIT_REGEX = Object.keys(UNIT_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  /*\n   * Minimal boundary regex to support units with Unicode characters\n   * \\b only works for ASCII\n   */\n  var BOUNDARY_REGEX = \"\\\\b|$\";\n  var UNIT_MATCH = \"(\" + PREFIX_REGEX + \")??(\" +\n                   UNIT_REGEX +\n                   \")(?:\" + BOUNDARY_REGEX + \")\";\n  var UNIT_TEST_REGEX = new RegExp(\"^\\\\s*(\" + UNIT_MATCH + \"[\\\\s\\\\*]*)+$\");\n  var UNIT_MATCH_REGEX = new RegExp(UNIT_MATCH, \"g\"); // g flag for multiple occurences\n  var parsedUnitsCache = {};\n  /**\n   * Parses and converts units string to normalized unit array.\n   * Result is cached to speed up next calls.\n   *\n   * @param {string} units Units string\n   * @returns {string[]} Array of normalized units\n   *\n   * @example\n   * // Returns [\"<second>\", \"<meter>\", \"<second>\"]\n   * parseUnits(\"s m s\");\n   *\n   */\n  function parseUnits(units) {\n    var cached = parsedUnitsCache[units];\n    if (cached) {\n      return cached;\n    }\n\n    var unitMatch, normalizedUnits = [];\n\n    // Scan\n    if (!UNIT_TEST_REGEX.test(units)) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n\n    while ((unitMatch = UNIT_MATCH_REGEX.exec(units))) {\n      normalizedUnits.push(unitMatch.slice(1));\n    }\n\n    normalizedUnits = normalizedUnits.map(function(item) {\n      return PREFIX_MAP[item[0]] ? [PREFIX_MAP[item[0]], UNIT_MAP[item[1]]] : [UNIT_MAP[item[1]]];\n    });\n\n    // Flatten and remove null elements\n    normalizedUnits = normalizedUnits.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    normalizedUnits = normalizedUnits.filter(function(item) {\n      return item;\n    });\n\n    parsedUnitsCache[units] = normalizedUnits;\n\n    return normalizedUnits;\n  }\n\n  /**\n   * Parses a string as a quantity\n   * @param {string} value - quantity as text\n   * @throws if value is not a string\n   * @returns {Qty|null} Parsed quantity or null if unrecognized\n   */\n  function globalParse(value) {\n    if (!isString(value)) {\n      throw new QtyError(\"Argument should be a string\");\n    }\n\n    try {\n      return this(value);\n    }\n    catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty instance\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a Qty instance, false otherwise\n   */\n  function isQty(value) {\n    return value instanceof Qty;\n  }\n\n  function Qty(initValue, initUnits) {\n    assertValidConstructorArgs.apply(null, arguments);\n\n    if (!(isQty(this))) {\n      return new Qty(initValue, initUnits);\n    }\n\n    this.scalar = null;\n    this.baseScalar = null;\n    this.signature = null;\n    this._conversionCache = {};\n    this.numerator = UNITY_ARRAY;\n    this.denominator = UNITY_ARRAY;\n\n    if (isDefinitionObject(initValue)) {\n      this.scalar = initValue.scalar;\n      this.numerator = (initValue.numerator && initValue.numerator.length !== 0) ? initValue.numerator : UNITY_ARRAY;\n      this.denominator = (initValue.denominator && initValue.denominator.length !== 0) ? initValue.denominator : UNITY_ARRAY;\n    }\n    else if (initUnits) {\n      parse.call(this, initUnits);\n      this.scalar = initValue;\n    }\n    else {\n      parse.call(this, initValue);\n    }\n\n    // math with temperatures is very limited\n    if (this.denominator.join(\"*\").indexOf(\"temp\") >= 0) {\n      throw new QtyError(\"Cannot divide with temperatures\");\n    }\n    if (this.numerator.join(\"*\").indexOf(\"temp\") >= 0) {\n      if (this.numerator.length > 1) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n      if (!compareArray(this.denominator, UNITY_ARRAY)) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n    }\n\n    this.initValue = initValue;\n    updateBaseScalar.call(this);\n\n    if (this.isTemperature() && this.baseScalar < 0) {\n      throw new QtyError(\"Temperatures must not be less than absolute zero\");\n    }\n  }\n\n  Qty.prototype = {\n    // Properly set up constructor\n    constructor: Qty,\n  };\n\n  /**\n   * Asserts constructor arguments are valid\n   *\n   * @param {*} value - Value to test\n   * @param {string} [units] - Optional units when value is passed as a number\n   *\n   * @returns {void}\n   * @throws {QtyError} if constructor arguments are invalid\n   */\n  function assertValidConstructorArgs(value, units) {\n    if (units) {\n      if (!(isNumber(value) && isString(units))) {\n        throw new QtyError(\"Only number accepted as initialization value \" +\n                           \"when units are explicitly provided\");\n      }\n    }\n    else {\n      if (!(isString(value) ||\n            isNumber(value) ||\n            isQty(value)    ||\n            isDefinitionObject(value))) {\n        throw new QtyError(\"Only string, number or quantity accepted as \" +\n                           \"single initialization value\");\n      }\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty definition object\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a definition object, false otherwise\n   */\n  function isDefinitionObject(value) {\n    return value && typeof value === \"object\" && value.hasOwnProperty(\"scalar\");\n  }\n\n  function updateBaseScalar() {\n    if (this.baseScalar) {\n      return this.baseScalar;\n    }\n    if (this.isBase()) {\n      this.baseScalar = this.scalar;\n      this.signature = unitSignature.call(this);\n    }\n    else {\n      var base = this.toBase();\n      this.baseScalar = base.scalar;\n      this.signature = base.signature;\n    }\n  }\n\n  var KINDS = {\n    \"-312078\": \"elastance\",\n    \"-312058\": \"resistance\",\n    \"-312038\": \"inductance\",\n    \"-152058\": \"potential\",\n    \"-152040\": \"magnetism\",\n    \"-152038\": \"magnetism\",\n    \"-7997\": \"specific_volume\",\n    \"-79\": \"snap\",\n    \"-59\": \"jolt\",\n    \"-39\": \"acceleration\",\n    \"-38\": \"radiation\",\n    \"-20\": \"frequency\",\n    \"-19\": \"speed\",\n    \"-18\": \"viscosity\",\n    \"-17\": \"volumetric_flow\",\n    \"-1\": \"wavenumber\",\n    \"0\": \"unitless\",\n    \"1\": \"length\",\n    \"2\": \"area\",\n    \"3\": \"volume\",\n    \"20\": \"time\",\n    \"400\": \"temperature\",\n    \"7941\": \"yank\",\n    \"7942\": \"power\",\n    \"7959\": \"pressure\",\n    \"7961\": \"force\",\n    \"7962\": \"energy\",\n    \"7979\": \"viscosity\",\n    \"7981\": \"momentum\",\n    \"7982\": \"angular_momentum\",\n    \"7997\": \"density\",\n    \"7998\": \"area_density\",\n    \"8000\": \"mass\",\n    \"152020\": \"radiation_exposure\",\n    \"159999\": \"magnetism\",\n    \"160000\": \"current\",\n    \"160020\": \"charge\",\n    \"312058\": \"conductance\",\n    \"312078\": \"capacitance\",\n    \"3199980\": \"activity\",\n    \"3199997\": \"molar_concentration\",\n    \"3200000\": \"substance\",\n    \"63999998\": \"illuminance\",\n    \"64000000\": \"luminous_power\",\n    \"1280000000\": \"currency\",\n    \"25599999980\": \"information_rate\",\n    \"25600000000\": \"information\",\n    \"511999999980\": \"angular_velocity\",\n    \"512000000000\": \"angle\"\n  };\n\n  /**\n   * Returns the list of available well-known kinds of units, e.g.\n   * \"radiation\" or \"length\".\n   *\n   * @returns {string[]} names of kinds of units\n   */\n  function getKinds() {\n    return uniq(Object.keys(KINDS).map(function(knownSignature) {\n      return KINDS[knownSignature];\n    }));\n  }\n\n  Qty.prototype.kind = function() {\n    return KINDS[this.signature.toString()];\n  };\n\n  assign(Qty.prototype, {\n    isDegrees: function() {\n      // signature may not have been calculated yet\n      return (this.signature === null || this.signature === 400) &&\n        this.numerator.length === 1 &&\n        compareArray(this.denominator, UNITY_ARRAY) &&\n        (this.numerator[0].match(/<temp-[CFRK]>/) || this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/));\n    },\n\n    isTemperature: function() {\n      return this.isDegrees() && this.numerator[0].match(/<temp-[CFRK]>/);\n    }\n  });\n\n  function subtractTemperatures(lhs,rhs) {\n    var lhsUnits = lhs.units();\n    var rhsConverted = rhs.to(lhsUnits);\n    var dstDegrees = Qty(getDegreeUnits(lhsUnits));\n    return Qty({\"scalar\": lhs.scalar - rhsConverted.scalar, \"numerator\": dstDegrees.numerator, \"denominator\": dstDegrees.denominator});\n  }\n\n  function subtractTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar - tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function addTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar + tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function getDegreeUnits(units) {\n    if (units === \"tempK\") {\n      return \"degK\";\n    }\n    else if (units === \"tempC\") {\n      return \"degC\";\n    }\n    else if (units === \"tempF\") {\n      return \"degF\";\n    }\n    else if (units === \"tempR\") {\n      return \"degR\";\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n  }\n\n  function toDegrees(src,dst) {\n    var srcDegK = toDegK(src);\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"degK\") {\n      dstScalar = srcDegK.scalar;\n    }\n    else if (dstUnits === \"degC\") {\n      dstScalar = srcDegK.scalar ;\n    }\n    else if (dstUnits === \"degF\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else if (dstUnits === \"degR\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for degree conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toDegK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempF\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<kelvin>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  function toTemp(src,dst) {\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"tempK\") {\n      dstScalar = src.baseScalar;\n    }\n    else if (dstUnits === \"tempC\") {\n      dstScalar = src.baseScalar - 273.15;\n    }\n    else if (dstUnits === \"tempF\") {\n      dstScalar = (src.baseScalar * 9 / 5) - 459.67;\n    }\n    else if (dstUnits === \"tempR\") {\n      dstScalar = src.baseScalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toTempK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar + 273.15;\n    }\n    else if (units === \"tempF\") {\n      q = (qty.scalar + 459.67) * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<temp-K>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  assign(Qty.prototype, {\n    /**\n     * Converts to other compatible units.\n     * Instance's converted quantities are cached for faster subsequent calls.\n     *\n     * @param {(string|Qty)} other - Target units as string or retrieved from\n     *                               other Qty instance (scalar is ignored)\n     *\n     * @returns {Qty} New converted Qty instance with target units\n     *\n     * @throws {QtyError} if target units are incompatible\n     *\n     * @example\n     * var weight = Qty(\"25 kg\");\n     * weight.to(\"lb\"); // => Qty(\"55.11556554621939 lbs\");\n     * weight.to(Qty(\"3 g\")); // => Qty(\"25000 g\"); // scalar of passed Qty is ignored\n     */\n    to: function(other) {\n      var cached, target;\n\n      if (other === undefined || other === null) {\n        return this;\n      }\n\n      if (!isString(other)) {\n        return this.to(other.units());\n      }\n\n      cached = this._conversionCache[other];\n      if (cached) {\n        return cached;\n      }\n\n      // Instantiating target to normalize units\n      target = Qty(other);\n      if (target.units() === this.units()) {\n        return this;\n      }\n\n      if (!this.isCompatible(target)) {\n        if (this.isInverse(target)) {\n          target = this.inverse().to(other);\n        }\n        else {\n          throwIncompatibleUnits(this.units(), target.units());\n        }\n      }\n      else {\n        if (target.isTemperature()) {\n          target = toTemp(this,target);\n        }\n        else if (target.isDegrees()) {\n          target = toDegrees(this,target);\n        }\n        else {\n          var q = divSafe(this.baseScalar, target.baseScalar);\n          target = Qty({\"scalar\": q, \"numerator\": target.numerator, \"denominator\": target.denominator});\n        }\n      }\n\n      this._conversionCache[other] = target;\n      return target;\n    },\n\n    // convert to base SI units\n    // results of the conversion are cached so subsequent calls to this will be fast\n    toBase: function() {\n      if (this.isBase()) {\n        return this;\n      }\n\n      if (this.isTemperature()) {\n        return toTempK(this);\n      }\n\n      var cached = baseUnitCache[this.units()];\n      if (!cached) {\n        cached = toBaseUnits(this.numerator,this.denominator);\n        baseUnitCache[this.units()] = cached;\n      }\n      return cached.mul(this.scalar);\n    },\n\n    // Converts the unit back to a float if it is unitless.  Otherwise raises an exception\n    toFloat: function() {\n      if (this.isUnitless()) {\n        return this.scalar;\n      }\n      throw new QtyError(\"Can't convert to Float unless unitless.  Use Unit#scalar\");\n    },\n\n    /**\n     * Returns the nearest multiple of quantity passed as\n     * precision\n     *\n     * @param {(Qty|string|number)} precQuantity - Quantity, string formated\n     *   quantity or number as expected precision\n     *\n     * @returns {Qty} Nearest multiple of precQuantity\n     *\n     * @example\n     * Qty('5.5 ft').toPrec('2 ft'); // returns 6 ft\n     * Qty('0.8 cu').toPrec('0.25 cu'); // returns 0.75 cu\n     * Qty('6.3782 m').toPrec('cm'); // returns 6.38 m\n     * Qty('1.146 MPa').toPrec('0.1 bar'); // returns 1.15 MPa\n     *\n     */\n    toPrec: function(precQuantity) {\n      if (isString(precQuantity)) {\n        precQuantity = Qty(precQuantity);\n      }\n      if (isNumber(precQuantity)) {\n        precQuantity = Qty(precQuantity + \" \" + this.units());\n      }\n\n      if (!this.isUnitless()) {\n        precQuantity = precQuantity.to(this.units());\n      }\n      else if (!precQuantity.isUnitless()) {\n        throwIncompatibleUnits(this.units(), precQuantity.units());\n      }\n\n      if (precQuantity.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      var precRoundedResult = mulSafe(\n        Math.round(this.scalar / precQuantity.scalar),\n        precQuantity.scalar\n      );\n\n      return Qty(precRoundedResult + this.units());\n    }\n  });\n\n  /**\n   * Configures and returns a fast function to convert\n   * Number values from units to others.\n   * Useful to efficiently convert large array of values\n   * with same units into others with iterative methods.\n   * Does not take care of rounding issues.\n   *\n   * @param {string} srcUnits Units of values to convert\n   * @param {string} dstUnits Units to convert to\n   *\n   * @returns {Function} Converting function accepting Number value\n   *   and returning converted value\n   *\n   * @throws \"Incompatible units\" if units are incompatible\n   *\n   * @example\n   * // Converting large array of numbers with the same units\n   * // into other units\n   * var converter = Qty.swiftConverter(\"m/h\", \"ft/s\");\n   * var convertedSerie = largeSerie.map(converter);\n   *\n   */\n  function swiftConverter(srcUnits, dstUnits) {\n    var srcQty = Qty(srcUnits);\n    var dstQty = Qty(dstUnits);\n\n    if (srcQty.eq(dstQty)) {\n      return identity;\n    }\n\n    var convert;\n    if (!srcQty.isTemperature()) {\n      convert = function(value) {\n        return value * srcQty.baseScalar / dstQty.baseScalar;\n      };\n    }\n    else {\n      convert = function(value) {\n        // TODO Not optimized\n        return srcQty.mul(value).to(dstQty).scalar;\n      };\n    }\n\n    return function converter(value) {\n      var i, length, result;\n      if (!Array.isArray(value)) {\n        return convert(value);\n      }\n      else {\n        length = value.length;\n        result = [];\n        for (i = 0; i < length; i++) {\n          result.push(convert(value[i]));\n        }\n        return result;\n      }\n    };\n  }\n\n  var baseUnitCache = {};\n\n  function toBaseUnits(numerator,denominator) {\n    var num = [];\n    var den = [];\n    var q = 1;\n    var unit;\n    for (var i = 0; i < numerator.length; i++) {\n      unit = numerator[i];\n      if (PREFIX_VALUES[unit]) {\n        // workaround to fix\n        // 0.1 * 0.1 => 0.010000000000000002\n        q = mulSafe(q, PREFIX_VALUES[unit]);\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q *= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            num.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            den.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n    for (var j = 0; j < denominator.length; j++) {\n      unit = denominator[j];\n      if (PREFIX_VALUES[unit]) {\n        q /= PREFIX_VALUES[unit];\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q /= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            den.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            num.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return Qty({\"scalar\": q, \"numerator\": num, \"denominator\": den});\n  }\n\n  Qty.parse = globalParse;\n\n  Qty.getUnits = getUnits;\n  Qty.getAliases = getAliases;\n\n  Qty.mulSafe = mulSafe;\n  Qty.divSafe = divSafe;\n\n  Qty.getKinds = getKinds;\n\n  Qty.swiftConverter = swiftConverter;\n\n  Qty.Error = QtyError;\n\n  assign(Qty.prototype, {\n    // Returns new instance with units of this\n    add: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        throw new QtyError(\"Cannot add two temperatures\");\n      }\n      else if (this.isTemperature()) {\n        return addTempDegrees(this, other);\n      }\n      else if (other.isTemperature()) {\n        return addTempDegrees(other, this);\n      }\n\n      return Qty({\"scalar\": this.scalar + other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    sub: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        return subtractTemperatures(this,other);\n      }\n      else if (this.isTemperature()) {\n        return subtractTempDegrees(this,other);\n      }\n      else if (other.isTemperature()) {\n        throw new QtyError(\"Cannot subtract a temperature from a differential degree unit\");\n      }\n\n      return Qty({\"scalar\": this.scalar - other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    mul: function(other) {\n      if (isNumber(other)) {\n        return Qty({\"scalar\": mulSafe(this.scalar, other), \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if ((this.isTemperature() || other.isTemperature()) && !(this.isUnitless() || other.isUnitless())) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.numerator, op2.denominator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, op2.scalar, numdenscale[2]), \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    div: function(other) {\n      if (isNumber(other)) {\n        if (other === 0) {\n          throw new QtyError(\"Divide by zero\");\n        }\n        return Qty({\"scalar\": this.scalar / other, \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (other.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      if (other.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      else if (this.isTemperature() && !other.isUnitless()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.denominator, op2.numerator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, numdenscale[2]) / op2.scalar, \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    // Returns a Qty that is the inverse of this Qty,\n    inverse: function() {\n      if (this.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      if (this.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n      return Qty({\"scalar\": 1 / this.scalar, \"numerator\": this.denominator, \"denominator\": this.numerator});\n    }\n  });\n\n  function cleanTerms(num1, den1, num2, den2) {\n    function notUnity(val) {\n      return val !== UNITY;\n    }\n\n    num1 = num1.filter(notUnity);\n    num2 = num2.filter(notUnity);\n    den1 = den1.filter(notUnity);\n    den2 = den2.filter(notUnity);\n\n    var combined = {};\n\n    function combineTerms(terms, direction) {\n      var k;\n      var prefix;\n      var prefixValue;\n      for (var i = 0; i < terms.length; i++) {\n        if (PREFIX_VALUES[terms[i]]) {\n          k = terms[i + 1];\n          prefix = terms[i];\n          prefixValue = PREFIX_VALUES[prefix];\n          i++;\n        }\n        else {\n          k = terms[i];\n          prefix = null;\n          prefixValue = 1;\n        }\n        if (k && k !== UNITY) {\n          if (combined[k]) {\n            combined[k][0] += direction;\n            var combinedPrefixValue = combined[k][2] ? PREFIX_VALUES[combined[k][2]] : 1;\n            combined[k][direction === 1 ? 3 : 4] *= divSafe(prefixValue, combinedPrefixValue);\n          }\n          else {\n            combined[k] = [direction, k, prefix, 1, 1];\n          }\n        }\n      }\n    }\n\n    combineTerms(num1, 1);\n    combineTerms(den1, -1);\n    combineTerms(num2, 1);\n    combineTerms(den2, -1);\n\n    var num = [];\n    var den = [];\n    var scale = 1;\n\n    for (var prop in combined) {\n      if (combined.hasOwnProperty(prop)) {\n        var item = combined[prop];\n        var n;\n        if (item[0] > 0) {\n          for (n = 0; n < item[0]; n++) {\n            num.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        else if (item[0] < 0) {\n          for (n = 0; n < -item[0]; n++) {\n            den.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        scale *= divSafe(item[3], item[4]);\n      }\n    }\n\n    if (num.length === 0) {\n      num = UNITY_ARRAY;\n    }\n    if (den.length === 0) {\n      den = UNITY_ARRAY;\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return [num, den, scale];\n  }\n\n  assign(Qty.prototype, {\n    eq: function(other) {\n      return this.compareTo(other) === 0;\n    },\n\n    lt: function(other) {\n      return this.compareTo(other) === -1;\n    },\n\n    lte: function(other) {\n      return this.eq(other) || this.lt(other);\n    },\n\n    gt: function(other) {\n      return this.compareTo(other) === 1;\n    },\n\n    gte: function(other) {\n      return this.eq(other) || this.gt(other);\n    },\n\n    // Compare two Qty objects. Throws an exception if they are not of compatible types.\n    // Comparisons are done based on the value of the quantity in base SI units.\n    //\n    // NOTE: We cannot compare inverses as that breaks the general compareTo contract:\n    //   if a.compareTo(b) < 0 then b.compareTo(a) > 0\n    //   if a.compareTo(b) == 0 then b.compareTo(a) == 0\n    //\n    //   Since \"10S\" == \".1ohm\" (10 > .1) and \"10ohm\" == \".1S\" (10 > .1)\n    //     Qty(\"10S\").inverse().compareTo(\"10ohm\") == -1\n    //     Qty(\"10ohm\").inverse().compareTo(\"10S\") == -1\n    //\n    //   If including inverses in the sort is needed, I suggest writing: Qty.sort(qtyArray,units)\n    compareTo: function(other) {\n      if (isString(other)) {\n        return this.compareTo(Qty(other));\n      }\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n      if (this.baseScalar < other.baseScalar) {\n        return -1;\n      }\n      else if (this.baseScalar === other.baseScalar) {\n        return 0;\n      }\n      else if (this.baseScalar > other.baseScalar) {\n        return 1;\n      }\n    },\n\n    // Return true if quantities and units match\n    // Unit(\"100 cm\").same(Unit(\"100 cm\"))  # => true\n    // Unit(\"100 cm\").same(Unit(\"1 m\"))     # => false\n    same: function(other) {\n      return (this.scalar === other.scalar) && (this.units() === other.units());\n    }\n  });\n\n  assign(Qty.prototype, {\n    // returns true if no associated units\n    // false, even if the units are \"unitless\" like 'radians, each, etc'\n    isUnitless: function() {\n      return [this.numerator, this.denominator].every(function(item) {\n        return compareArray(item, UNITY_ARRAY);\n      });\n    },\n\n    /*\n    check to see if units are compatible, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isCompatible: function(other) {\n      if (isString(other)) {\n        return this.isCompatible(Qty(other));\n      }\n\n      if (!(isQty(other))) {\n        return false;\n      }\n\n      if (other.signature !== undefined) {\n        return this.signature === other.signature;\n      }\n      else {\n        return false;\n      }\n    },\n\n    /*\n    check to see if units are inverse of each other, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isInverse: function(other) {\n      return this.inverse().isCompatible(other);\n    },\n\n    // Returns 'true' if the Unit is represented in base units\n    isBase: function() {\n      if (this._isBase !== undefined) {\n        return this._isBase;\n      }\n      if (this.isDegrees() && this.numerator[0].match(/<(kelvin|temp-K)>/)) {\n        this._isBase = true;\n        return this._isBase;\n      }\n\n      this.numerator.concat(this.denominator).forEach(function(item) {\n        if (item !== UNITY && BASE_UNITS.indexOf(item) === -1 ) {\n          this._isBase = false;\n        }\n      }, this);\n      if (this._isBase === false) {\n        return this._isBase;\n      }\n      this._isBase = true;\n      return this._isBase;\n    }\n  });\n\n  function NestedMap() {}\n\n  NestedMap.prototype.get = function(keys) {\n\n    // Allows to pass key1, key2, ... instead of [key1, key2, ...]\n    if (arguments.length > 1) {\n      // Slower with Firefox but faster with Chrome than\n      // Array.prototype.slice.call(arguments)\n      // See http://jsperf.com/array-apply-versus-array-prototype-slice-call\n      keys = Array.apply(null, arguments);\n    }\n\n    return keys.reduce(function(map, key, index) {\n      if (map) {\n\n        var childMap = map[key];\n\n        if (index === keys.length - 1) {\n          return childMap ? childMap.data : undefined;\n        }\n        else {\n          return childMap;\n        }\n      }\n    },\n    this);\n  };\n\n  NestedMap.prototype.set = function(keys, value) {\n\n    if (arguments.length > 2) {\n      keys = Array.prototype.slice.call(arguments, 0, -1);\n      value = arguments[arguments.length - 1];\n    }\n\n    return keys.reduce(function(map, key, index) {\n\n      var childMap = map[key];\n      if (childMap === undefined) {\n        childMap = map[key] = {};\n      }\n\n      if (index === keys.length - 1) {\n        childMap.data = value;\n        return value;\n      }\n      else {\n        return childMap;\n      }\n    }, this);\n  };\n\n  /**\n   * Default formatter\n   *\n   * @param {number} scalar - scalar value\n   * @param {string} units - units as string\n   *\n   * @returns {string} formatted result\n   */\n  function defaultFormatter(scalar, units) {\n    return (scalar + \" \" + units).trim();\n  }\n\n  /**\n   *\n   * Configurable Qty default formatter\n   *\n   * @type {function}\n   *\n   * @param {number} scalar\n   * @param {string} units\n   *\n   * @returns {string} formatted result\n   */\n  Qty.formatter = defaultFormatter;\n\n  assign(Qty.prototype, {\n\n    // returns the 'unit' part of the Unit object without the scalar\n    units: function() {\n      if (this._units !== undefined) {\n        return this._units;\n      }\n\n      var numIsUnity = compareArray(this.numerator, UNITY_ARRAY);\n      var denIsUnity = compareArray(this.denominator, UNITY_ARRAY);\n      if (numIsUnity && denIsUnity) {\n        this._units = \"\";\n        return this._units;\n      }\n\n      var numUnits = stringifyUnits(this.numerator);\n      var denUnits = stringifyUnits(this.denominator);\n      this._units = numUnits + (denIsUnity ? \"\" : (\"/\" + denUnits));\n      return this._units;\n    },\n\n    /**\n     * Stringifies the quantity\n     * Deprecation notice: only units parameter is supported.\n     *\n     * @param {(number|string|Qty)} targetUnitsOrMaxDecimalsOrPrec -\n     *                              target units if string,\n     *                              max number of decimals if number,\n     *                              passed to #toPrec before converting if Qty\n     *\n     * @param {number=} maxDecimals - Maximum number of decimals of\n     *                                formatted output\n     *\n     * @returns {string} reparseable quantity as string\n     */\n    toString: function(targetUnitsOrMaxDecimalsOrPrec, maxDecimals) {\n      var targetUnits;\n      if (isNumber(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = this.units();\n        maxDecimals = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isString(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isQty(targetUnitsOrMaxDecimalsOrPrec)) {\n        return this.toPrec(targetUnitsOrMaxDecimalsOrPrec).toString(maxDecimals);\n      }\n\n      var out = this.to(targetUnits);\n\n      var outScalar = maxDecimals !== undefined ? round(out.scalar, maxDecimals) : out.scalar;\n      out = (outScalar + \" \" + out.units()).trim();\n      return out;\n    },\n\n    /**\n     * Format the quantity according to optional passed target units\n     * and formatter\n     *\n     * @param {string} [targetUnits=current units] -\n     *                 optional units to convert to before formatting\n     *\n     * @param {function} [formatter=Qty.formatter] -\n     *                   delegates formatting to formatter callback.\n     *                   formatter is called back with two parameters (scalar, units)\n     *                   and should return formatted result.\n     *                   If unspecified, formatting is delegated to default formatter\n     *                   set to Qty.formatter\n     *\n     * @example\n     * var roundingAndLocalizingFormatter = function(scalar, units) {\n     *   // localize or limit scalar to n max decimals for instance\n     *   // return formatted result\n     * };\n     * var qty = Qty('1.1234 m');\n     * qty.format(); // same units, default formatter => \"1.234 m\"\n     * qty.format(\"cm\"); // converted to \"cm\", default formatter => \"123.45 cm\"\n     * qty.format(roundingAndLocalizingFormatter); // same units, custom formatter => \"1,2 m\"\n     * qty.format(\"cm\", roundingAndLocalizingFormatter); // convert to \"cm\", custom formatter => \"123,4 cm\"\n     *\n     * @returns {string} quantity as string\n     */\n    format: function(targetUnits, formatter) {\n      if (arguments.length === 1) {\n        if (typeof targetUnits === \"function\") {\n          formatter = targetUnits;\n          targetUnits = undefined;\n        }\n      }\n\n      formatter = formatter || Qty.formatter;\n      var targetQty = this.to(targetUnits);\n      return formatter.call(this, targetQty.scalar, targetQty.units());\n    }\n  });\n\n  var stringifiedUnitsCache = new NestedMap();\n  /**\n   * Returns a string representing a normalized unit array\n   *\n   * @param {string[]} units Normalized unit array\n   * @returns {string} String representing passed normalized unit array and\n   *   suitable for output\n   *\n   */\n  function stringifyUnits(units) {\n\n    var stringified = stringifiedUnitsCache.get(units);\n    if (stringified) {\n      return stringified;\n    }\n\n    var isUnity = compareArray(units, UNITY_ARRAY);\n    if (isUnity) {\n      stringified = \"1\";\n    }\n    else {\n      stringified = simplify(getOutputNames(units)).join(\"*\");\n    }\n\n    // Cache result\n    stringifiedUnitsCache.set(units, stringified);\n\n    return stringified;\n  }\n\n  function getOutputNames(units) {\n    var unitNames = [], token, tokenNext;\n    for (var i = 0; i < units.length; i++) {\n      token = units[i];\n      tokenNext = units[i + 1];\n      if (PREFIX_VALUES[token]) {\n        unitNames.push(OUTPUT_MAP[token] + OUTPUT_MAP[tokenNext]);\n        i++;\n      }\n      else {\n        unitNames.push(OUTPUT_MAP[token]);\n      }\n    }\n    return unitNames;\n  }\n\n  function simplify(units) {\n    // this turns ['s','m','s'] into ['s2','m']\n\n    var unitCounts = units.reduce(function(acc, unit) {\n      var unitCounter = acc[unit];\n      if (!unitCounter) {\n        acc.push(unitCounter = acc[unit] = [unit, 0]);\n      }\n\n      unitCounter[1]++;\n\n      return acc;\n    }, []);\n\n    return unitCounts.map(function(unitCount) {\n      return unitCount[0] + (unitCount[1] > 1 ? unitCount[1] : \"\");\n    });\n  }\n\n  Qty.version = \"1.8.0\";\n\n  return Qty;\n\n}));\n","import Qty from 'js-quantities';\nexport function convertUnit(array, fromUnit, toUnit) {\n    fromUnit = normalize(fromUnit);\n    toUnit = normalize(toUnit);\n    if (fromUnit === toUnit)\n        return array;\n    const convert = Qty.swiftConverter(fromUnit, toUnit); // Configures converter\n    //@ts-expect-error convert does not allowed typed array but it works\n    return convert(array);\n}\nfunction normalize(unit) {\n    unit = unit.replaceAll('°C', 'tempC');\n    unit = unit.replaceAll('°F', 'tempF');\n    unit = unit.replaceAll(/(^|\\W)K(\\W|$)/g, '$1tempK$2');\n    return unit;\n}\n//# sourceMappingURL=convertUnit.js.map","const testRegExp = /^\\/((?:\\\\\\/|[^/])+)\\/([gimuy]{0,5})?$/;\nexport function ensureRegexp(string) {\n    if (typeof string !== 'string')\n        return string;\n    const parts = testRegExp.exec(string);\n    if (parts) {\n        try {\n            return new RegExp(parts[1], parts[2]);\n        }\n        catch {\n            return stringToRegexp(string);\n        }\n    }\n    else {\n        return stringToRegexp(string);\n    }\n}\nfunction stringToRegexp(string, flags = 'i') {\n    return new RegExp(string.replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, (match) => `\\\\${match}`), flags);\n}\n//# sourceMappingURL=ensureRegexp.js.map","import { xIsMonotonic, xMaxValue, xMinValue } from 'ml-spectra-processing';\nimport { convertUnit } from './convertUnit.js';\nexport function getConvertedVariable(variable, newUnits) {\n    const data = variable.units !== undefined && variable.units !== newUnits // would be nice if convertUnit would allow typedArray\n        ? convertUnit(Array.from(variable.data), variable.units, newUnits)\n        : variable.data;\n    return {\n        units: newUnits,\n        label: variable.label.replace(`[${variable.units || ''}]`, `[${newUnits}]`),\n        data: data || [],\n        min: data ? xMinValue(data) : undefined,\n        max: data ? xMaxValue(data) : undefined,\n        isMonotonic: xIsMonotonic(data),\n    };\n}\n//# sourceMappingURL=getConvertedVariable.js.map","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { convertUnit } from './convertUnit.js';\nimport { ensureRegexp } from './ensureRegexp.js';\nimport { getConvertedVariable } from './getConvertedVariable.js';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n * @param spectra\n * @param selector\n */\nexport function getXYSpectra(spectra = [], selector = {}) {\n    const selectedSpectra = [];\n    if (spectra.length === 0)\n        return selectedSpectra;\n    const { variables, units, labels, meta, index } = selector;\n    let { dataType, title, xUnits, yUnits, xVariable = 'x', yVariable = 'y', xLabel, yLabel, } = selector;\n    if (index !== undefined) {\n        return [spectra[index]];\n    }\n    if (dataType) {\n        dataType = ensureRegexp(dataType);\n    }\n    if (title) {\n        title = ensureRegexp(title);\n    }\n    if (units && !xUnits && !yUnits)\n        [yUnits, xUnits] = units.split(/\\s*vs\\s*/);\n    if (labels && !xLabel && !yLabel) {\n        [yLabel, xLabel] = labels.split(/\\s*vs\\s*/);\n    }\n    if (variables) {\n        const parts = variables.split(/\\s*vs\\s*/);\n        if (parts.length === 2) {\n            xVariable = parts[1];\n            yVariable = parts[0];\n        }\n    }\n    if (xLabel)\n        xLabel = ensureRegexp(xLabel);\n    if (yLabel)\n        yLabel = ensureRegexp(yLabel);\n    for (const spectrum of spectra) {\n        const variableNames = Object.keys(spectrum.variables);\n        if (!(variableNames.length > 1))\n            continue;\n        // we filter on general spectrum information\n        if (dataType &&\n            (!spectrum.dataType || !dataType.exec(spectrum.dataType))) {\n            continue;\n        }\n        if (title && (!spectrum.title || !title.exec(spectrum.title))) {\n            continue;\n        }\n        if (meta && typeof meta === 'object') {\n            if (!spectrum.meta)\n                continue;\n            for (const key in spectrum.meta) {\n                if (!spectrum.meta[key])\n                    continue;\n                const value = ensureRegexp(spectrum.meta[key]);\n                if (!value.exec(spectrum.meta[key]))\n                    continue;\n            }\n        }\n        const x = getPossibleVariable(spectrum.variables, {\n            units: xUnits,\n            label: xLabel,\n            variableName: xVariable,\n        });\n        const y = getPossibleVariable(spectrum.variables, {\n            units: yUnits,\n            label: yLabel,\n            variableName: yVariable,\n        });\n        if (x && y) {\n            // should we reverse the x-axis?\n            if (x.data[0] > x.data.at(-1)) {\n                x.data = x.data.toReversed();\n                y.data = y.data.toReversed();\n            }\n            selectedSpectra.push({\n                title: spectrum.title,\n                dataType: spectrum.dataType,\n                meta: spectrum.meta,\n                variables: { x, y },\n                id: spectrum.id,\n            });\n        }\n    }\n    return selectedSpectra;\n}\nfunction getPossibleVariable(variables, selector = {}) {\n    const { units, label, variableName } = selector;\n    const possible = { ...variables };\n    let key;\n    if (units !== undefined) {\n        for (key in possible) {\n            const variable = variables[key];\n            let convertibleUnits = true;\n            try {\n                convertUnit(1, variable?.units || '', units);\n            }\n            catch {\n                convertibleUnits = false;\n            }\n            if (convertibleUnits && variable) {\n                possible[key] = getConvertedVariable(variable, units);\n            }\n            else {\n                delete possible[key];\n            }\n        }\n    }\n    if (label !== undefined) {\n        const regexpLabel = ensureRegexp(label);\n        for (key in possible) {\n            if (!regexpLabel.exec(variables[key]?.label ?? '')) {\n                delete possible[key];\n            }\n        }\n    }\n    if (variableName !== undefined) {\n        if (possible[variableName])\n            return possible[variableName];\n        const upper = variableName.toUpperCase();\n        if (Object.hasOwn(possible, upper)) {\n            return possible[upper];\n        }\n        const lower = variableName.toLowerCase();\n        if (Object.hasOwn(possible, lower)) {\n            return possible[lower];\n        }\n    }\n    const possibleFiltered = Object.values(possible).filter((val) => val !== undefined);\n    if (possibleFiltered.length > 0) {\n        return possibleFiltered[0];\n    }\n}\n//# sourceMappingURL=getXYSpectra.js.map","import { getXYSpectra } from './getXYSpectra.js';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n * @param spectra\n * @param selector\n */\nexport function getXYSpectrum(spectra = [], selector = {}) {\n    const selectedSpectra = getXYSpectra(spectra, selector);\n    if (selectedSpectra.length === 0)\n        return undefined;\n    return selectedSpectra[0];\n}\n//# sourceMappingURL=getXYSpectrum.js.map","import { isAnyArray } from 'is-any-array';\nimport { stringify, xIsMonotonic, xMaxValue, xMinValue, } from 'ml-spectra-processing';\nimport { getNormalizedSpectrum } from './util/getNormalizedSpectrum.js';\nimport { getXYSpectra } from './util/getXYSpectra.js';\nimport { getXYSpectrum } from './util/getXYSpectrum.js';\n/**\n * Class allowing to store and manipulate an analysis.\n * An analysis may contain one or more spectra that can be selected\n * based on their units\n */\nexport class Analysis {\n    id;\n    label;\n    spectrumCallback;\n    spectra;\n    cache;\n    constructor(options = {}) {\n        this.id = options.id || Math.random().toString(36).slice(2, 10);\n        this.label = options.label || this.id;\n        this.spectrumCallback = options.spectrumCallback;\n        this.spectra = [];\n        this.cache = { spectrum: {}, spectra: {} };\n    }\n    clone({ filter }) {\n        const { ids } = filter;\n        const analysis = new Analysis();\n        analysis.id = this.id;\n        analysis.label = this.label;\n        analysis.spectrumCallback = this.spectrumCallback;\n        analysis.spectra = this.spectra.filter((spectrum) => {\n            //@ts-expect-error spectrum.id is not expected to be undefined at this level\n            return !ids || ids.includes(spectrum.id);\n        });\n        return analysis;\n    }\n    toJSON() {\n        // TODO this is likely not the most optimized way to remove typedArray\n        // if data are small seems still reasonable\n        return {\n            id: this.id,\n            label: this.label,\n            spectra: JSON.parse(stringify(this.spectra)),\n        };\n    }\n    static fromJSON(json) {\n        const analysis = new Analysis();\n        analysis.id = json.id;\n        analysis.label = json.label;\n        analysis.spectra = json.spectra;\n        return analysis;\n    }\n    /**\n     * Add a spectrum in the internal spectra variable\n     * @param variables\n     * @param options\n     */\n    pushSpectrum(variables, options = {}) {\n        this.spectra.push(standardizeData(variables, options, {\n            spectrumCallback: this.spectrumCallback,\n        }));\n        this.cache = { spectrum: {}, spectra: {} };\n    }\n    /**\n     * Retrieve a MeasurementXY based on x/y units\n     * @param selector\n     */\n    getXYSpectrum(selector = {}) {\n        const id = JSON.stringify(selector);\n        if (!this.cache.spectrum[id]) {\n            this.cache.spectrum[id] = getXYSpectrum(this.spectra, selector);\n        }\n        return this.cache.spectrum[id];\n    }\n    /**\n     * Retrieve spectra matching selector\n     * @param selector\n     */\n    getXYSpectra(selector = {}) {\n        const id = JSON.stringify(selector);\n        if (!this.cache.spectra[id]) {\n            this.cache.spectra[id] = getXYSpectra(this.spectra, selector);\n        }\n        return this.cache.spectra[id];\n    }\n    /**\n     * Retrieve a xy object\n     * @param selector.units - Units separated by vs like for example \"g vs °C\"\n     * @param selector.xUnits - if undefined takes the first variable\n     * @param selector.yUnits - if undefined takes the second variable\n     * @param selector\n     */\n    getXY(selector = {}) {\n        const spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return {\n            x: spectrum.variables.x.data,\n            y: spectrum.variables.y.data,\n        };\n    }\n    /**\n     * Return the data object for specific x/y units with possibly some\n     * normalization options\n     * @param options.selector.xUnits - // if undefined takes the first variable\n     * @param options.selector.yUnits - // if undefined takes the second variable\n     * @param options\n     */\n    getNormalizedSpectrum(options = {}) {\n        const { normalization, selector } = options;\n        const spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return getNormalizedSpectrum(spectrum, normalization);\n    }\n    /**\n     * @param options\n     */\n    getNormalizedSpectra(options = {}) {\n        const { normalization, selector } = options;\n        const spectra = this.getXYSpectra(selector);\n        if (spectra.length === 0)\n            return [];\n        const normalizedSpectra = [];\n        for (const spectrum of spectra) {\n            normalizedSpectra.push(getNormalizedSpectrum(spectrum, normalization));\n        }\n        return normalizedSpectra;\n    }\n    /**\n     * Returns the first spectrum. This method could be improved in the future\n     * @returns\n     */\n    getSpectrum() {\n        return this.spectra[0];\n    }\n    /**\n     * Returns the xLabel\n     * @param selector.xUnits - // if undefined takes the first variable\n     * @param selector.yUnits - // if undefined takes the second variable\n     * @param selector\n     */\n    getXLabel(selector) {\n        return this.getXYSpectrum(selector)?.variables.x.label;\n    }\n    /**\n     * Returns the yLabel\n     * @param selector.xUnits - // if undefined takes the first variable\n     * @param selector.yUnits - // if undefined takes the second variable\n     * @param selector\n     */\n    getYLabel(selector) {\n        return this.getXYSpectrum(selector)?.variables.y.label;\n    }\n}\n/**\n * Internal function that ensure the order of x / y array\n * @param variables\n * @param options\n * @param analysisOptions\n */\nfunction standardizeData(variables, options, analysisOptions) {\n    const { meta = {}, dataType = '', title = '', id = Math.random().toString(36).replace('0.', ''), } = options;\n    const { spectrumCallback } = analysisOptions;\n    if (spectrumCallback) {\n        spectrumCallback(variables);\n    }\n    const xVariable = variables.x;\n    const yVariable = variables.y;\n    if (!xVariable || !yVariable) {\n        throw new Error('A spectrum must contain at least x and y variables');\n    }\n    if (!isAnyArray(xVariable.data) || !isAnyArray(yVariable.data)) {\n        throw new Error('x and y variables must contain an array data');\n    }\n    const x = xVariable.data;\n    const reverse = x && x.length > 1 && x[0] > x.at(-1);\n    for (const [key, variable] of Object.entries(variables)) {\n        if (reverse)\n            variable.data = variable.data.toReversed();\n        variable.label = variable.label || key;\n        if (variable.label.match(/^.*[([](?<units>.*)[)\\]].*$/)) {\n            const units = variable.label.replace(/^.*[([](?<units>.*)[)\\]].*$/, '$<units>');\n            if (!variable.units || variable.units === units) {\n                variable.units = units;\n                variable.label = variable.label.replace(/[([].*[)\\]]/, '').trim();\n            }\n        }\n        variable.min = xMinValue(variable.data);\n        variable.max = xMaxValue(variable.data);\n        variable.isMonotonic = xIsMonotonic(variable.data);\n    }\n    return {\n        variables,\n        title,\n        dataType,\n        meta,\n        id,\n    };\n}\n//# sourceMappingURL=Analysis.js.map","export function appendDistinctParameter(values, key, value) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            values: [],\n            count: 0,\n        };\n    }\n    if (!values[key].values.includes(value)) {\n        values[key].values.push(value);\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=appendDistinctParameter.js.map","export function appendDistinctValue(values, key) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            count: 0,\n        };\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=appendDistinctValue.js.map","import { Analysis } from './Analysis.js';\nimport { appendDistinctParameter } from './util/appendDistinctParameter.js';\nimport { appendDistinctValue } from './util/appendDistinctValue.js';\nexport class AnalysesManager {\n    analyses;\n    constructor() {\n        this.analyses = [];\n    }\n    static fromJSON(json) {\n        const analysesManager = new AnalysesManager();\n        for (const analysis of json.analyses) {\n            analysesManager.analyses.push(Analysis.fromJSON(analysis));\n        }\n        return analysesManager;\n    }\n    addAnalysis(analysis) {\n        const index = this.getAnalysisIndex(analysis.id);\n        if (index === undefined) {\n            this.analyses.push(analysis);\n        }\n        else {\n            this.analyses[index] = analysis;\n        }\n    }\n    /**\n     *\n     * @param options\n     * @returns\n     */\n    getAnalyses(options = {}) {\n        const { ids } = options;\n        const analyses = [];\n        const processedAnalysisIds = new Set();\n        for (const analysis of this.analyses) {\n            if (!ids || ids.includes(analysis.id)) {\n                analyses.push(analysis);\n                processedAnalysisIds.add(analysis.id);\n                continue;\n            }\n            for (const spectrum of analysis.spectra) {\n                if (spectrum.id &&\n                    ids.includes(spectrum.id) &&\n                    !processedAnalysisIds.has(analysis.id)) {\n                    analyses.push(analysis.clone({ filter: { ids } }));\n                    processedAnalysisIds.add(analysis.id);\n                }\n            }\n        }\n        return analyses;\n    }\n    getSpectra() {\n        const spectra = [];\n        for (const analysis of this.analyses) {\n            spectra.push(...analysis.spectra);\n        }\n        return spectra;\n    }\n    getAnalysisBySpectrumId(id) {\n        for (const analysis of this.analyses) {\n            for (const spectrum of analysis.spectra) {\n                if (spectrum.id === id)\n                    return analysis;\n            }\n        }\n        return undefined;\n    }\n    getSpectrumById(id) {\n        for (const analysis of this.analyses) {\n            for (const spectrum of analysis.spectra) {\n                if (spectrum.id === id)\n                    return spectrum;\n            }\n        }\n        return undefined;\n    }\n    /**\n     * Get an array of objects (key + count) of all the titles\n     */\n    getDistinctTitles() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.title) {\n                appendDistinctValue(values, spectrum.title);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the units\n     */\n    getDistinctUnits() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (const [, variable] of Object.entries(spectrum.variables)) {\n                    if (variable.units) {\n                        appendDistinctValue(values, variable.units);\n                    }\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + unit + label + count) of all the units\n     */\n    getDistinctLabelUnits() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (const [, variable] of Object.entries(spectrum.variables)) {\n                    const { label, units } = normalizeLabelUnits(variable.label, variable.units);\n                    const key = label + (units ? ` (${units})` : '');\n                    if (key) {\n                        if (!values[key]) {\n                            values[key] = { key, units, label, count: 0 };\n                        }\n                        values[key].count++;\n                    }\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the labels\n     */\n    getDistinctLabels() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (const [, variable] of Object.entries(spectrum.variables)) {\n                    appendDistinctValue(values, variable.label.replace(/\\s+[([].*$/, ''));\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the dataTypes\n     */\n    getDistinctDataTypes() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.dataType) {\n                appendDistinctValue(values, spectrum.dataType);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the meta\n     */\n    getDistinctMeta() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.meta) {\n                for (const key in spectrum.meta) {\n                    appendDistinctParameter(values, key, spectrum.meta[key]);\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    removeAllAnalyses() {\n        this.analyses.splice(0);\n    }\n    /**\n     * Remove the analysis from the AnalysesManager for the specified id\n     * @param id\n     */\n    removeAnalysis(id) {\n        const index = this.getAnalysisIndex(id);\n        if (index === undefined)\n            return undefined;\n        return this.analyses.splice(index, 1);\n    }\n    /**\n     * Returns the index of the analysis in the analyses array\n     * @param id\n     */\n    getAnalysisIndex(id) {\n        if (!id)\n            return undefined;\n        for (let i = 0; i < this.analyses.length; i++) {\n            const analysis = this.analyses[i];\n            if (analysis.id === id)\n                return i;\n        }\n        return undefined;\n    }\n    /**\n     * Checks if the ID of an analysis exists in the AnalysesManager\n     * @param id\n     */\n    includes(id) {\n        const index = this.getAnalysisIndex(id);\n        return index === undefined ? false : !Number.isNaN(index);\n    }\n}\nfunction normalizeLabelUnits(originalLabel, originalUnits) {\n    if (!originalLabel) {\n        return { units: '', label: '' };\n    }\n    if (originalLabel.search(/[([]]/) >= 0) {\n        const [units, label] = originalLabel.split(/\\s*[([]/);\n        return { units: originalUnits || units, label };\n    }\n    return { label: originalLabel, units: originalUnits };\n}\n//# sourceMappingURL=AnalysesManager.js.map","/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        if (options.encoding) {\n            return new TextDecoder(options.encoding).decode(blob);\n        }\n        else {\n            return decodeText(blob);\n        }\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction decodeText(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return new TextDecoder('utf-16be').decode(uint8);\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return new TextDecoder('utf-16le').decode(uint8);\n        }\n    }\n    try {\n        return new TextDecoder('utf-8', { fatal: true }).decode(uint8);\n    }\n    catch {\n        return new TextDecoder('latin1').decode(uint8);\n    }\n}\n//# sourceMappingURL=index.js.map","export function parseString(value) {\n    if (value.length === 4 || value.length === 5) {\n        const lowercase = value.toLowerCase();\n        if (lowercase === 'true')\n            return true;\n        if (lowercase === 'false')\n            return false;\n    }\n    const number = Number(value);\n    if (number === 0 && !value.includes('0')) {\n        return value;\n    }\n    if (!Number.isNaN(number))\n        return number;\n    return value;\n}\n//# sourceMappingURL=parseString.js.map","export const gyromagneticRatioMHzT = {\n    '1H': 42.577478615342585,\n    '2H': 6.5359028540009305,\n    '3H': 45.41483815473964,\n    '3He': -32.43604456417949,\n    '6Li': 6.266099405837534,\n    '7Li': 16.548177299618295,\n    '9Be': -5.983379963834242,\n    '10B': 4.57473388220653,\n    '11B': 13.66160796005943,\n    '13C': 10.707746367473973,\n    '14N': 3.076272817251739,\n    '15N': -4.3152552187859134,\n    '17O': -5.7734832203316975,\n    '19F': 40.06924371705693,\n    '21Ne': -3.362579959801532,\n    '22Na': 4.436349259342206,\n    '23Na': 11.268733657034753,\n    '25Mg': -2.607933066661972,\n    '26Al': 4.273225764239245,\n    '27Al': 11.100630067688776,\n    '29Si': -8.461871234008282,\n    '31P': 17.241162495263175,\n    '33S': 3.2688220630834754,\n    '35Cl': 4.175656570906633,\n    '36Cl': 4.897135020041924,\n    '37Cl': 3.4759025124743057,\n    '39Ar': -3.462835209795831,\n    '39K': 1.9893443809332112,\n    '40K': -2.4734743333970806,\n    '41K': 1.091921234883595,\n    '41Ca': -3.4724832349401047,\n    '43Ca': -2.8689916395725414,\n    '45Sc': 10.353659488911559,\n    '47Hi': -2.403068251036403,\n    '49Hi': -2.403730327705445,\n    '50V': 4.248579379465121,\n    '51V': 11.208261084083814,\n    '53Cr': -2.4103147963328766,\n    '53Mn': 10.961289063460638,\n    '55Mn': 10.570707386401027,\n    '57Fe': 1.3818237005731187,\n    '59Co': 10.050933643526891,\n    '60Co': 5.7916463354780205,\n    '61Ni': -3.809518009468367,\n    '63Ni': 7.561612483277437,\n    '63Cu': 11.311420179117773,\n    '65Cu': 12.116874196993763,\n    '67Zn': 2.6674502745948656,\n    '69Ga': 10.23978520568125,\n    '71Ga': 13.010902748192017,\n    '73Ge': -1.4876591727852992,\n    '75As': 7.3090505609529135,\n    '77Se': 8.134221686648205,\n    '79Se': -2.21708568778123,\n    '79Br': 10.695006473323717,\n    '81Br': 11.528409999706447,\n    '81Kr': -1.9753405882294455,\n    '83Kr': -1.6443288722876133,\n    '85Kr': -1.703226109304539,\n    '85Rb': 4.125530397832004,\n    '87Rb': 13.981309683545954,\n    '87Sr': -1.851714225407608,\n    '89Y': -2.0931336103407774,\n    '91Zr': -3.970456361178983,\n    '91Nb': 11.032433266932335,\n    '92Nb': 5.58627189504799,\n    '93Nb': 10.439564904668199,\n    '95Mo': -2.784380854729418,\n    '97Mo': -2.842922370728985,\n    '97Hc': 9.858553909649345,\n    '99Hc': 9.618018745530753,\n    '99Ru': -1.9544329039438861,\n    '101Ru': -2.1892087754004836,\n    '103Rh': -1.3459975123963002,\n    '105Pd': -1.9574819412355304,\n    '107Ag': -1.730633566737207,\n    '109Ag': 1.9896492846623755,\n    '111Cd': -9.05564075618306,\n    '113Cd': -9.471834346492482,\n    '113In': 9.351736155393834,\n    '115In': 9.371724288750167,\n    '115Sn': -13.985934056771613,\n    '117Sn': -15.237563864991529,\n    '119Sn': -15.944940516652968,\n    '121Sn': 3.541456814244654,\n    '121Sb': 10.238667225340981,\n    '123Sb': 5.544238738098897,\n    '125Sb': 5.727834340731468,\n    '123He': -11.217408195958745,\n    '125He': -13.522480388441707,\n    '127I': 8.563831041040862,\n    '129I': 5.6984329097048985,\n    '129Xe': -11.860160502223787,\n    '131Xe': 3.5157686750625525,\n    '133Cs': 5.614148807428737,\n    '134Cs': 5.69655448494487,\n    '135Cs': 5.941920316280481,\n    '137Cs': 6.179527436650749,\n    '133Ba': 11.767759427100511,\n    '135Ba': 4.258996923544905,\n    '137Ba': 4.7641207681939495,\n    '137La': 5.871574670194692,\n    '138La': 5.653524946166542,\n    '139La': 6.052556812291568,\n    '141Pr': 13.00719308615385,\n    '143Nd': -2.319446225429283,\n    '145Nd': -1.4286917595132482,\n    '145Pm': 11.586341708247685,\n    '147Pm': 5.618940151744178,\n    '147Sm': -1.7619079778143567,\n    '149Sm': -1.454172999736274,\n    '151Sm': -1.099177943637708,\n    '150Eu': 4.119249381011216,\n    '151Eu': 10.560340659609437,\n    '152Eu': -4.917588978540037,\n    '153Eu': 4.66319763384053,\n    '154Eu': -5.081728819406879,\n    '155Eu': 4.622340534132499,\n    '155Gd': -1.3166759371083225,\n    '157Gd': -1.7267714528344573,\n    '157Hb': 10.315909503395963,\n    '158Hb': 4.4541353102101295,\n    '159Hb': 10.209193198188421,\n    '161Hy': -1.4604888626975372,\n    '163Hy': 2.04590402269321,\n    '163Ho': 9.190669550527298,\n    '165Ho': 9.059996523742551,\n    '166Ho': 3.941969641339908,\n    '167Er': -1.2246240493510665,\n    '169Hm': -3.5216380718489675,\n    '171Hm': -3.506392885390747,\n    '171Yb': 7.505205293382021,\n    '173Yb': -2.067247283734719,\n    '173Lu': 4.950329831362216,\n    '174Lu': 15.107979780096652,\n    '175Lu': 4.847315928580239,\n    '176Lu': 3.4410563719983727,\n    '177Hf': 1.7227060697789323,\n    '179Hf': -1.0822388475730185,\n    '179Ha': 4.978642320498912,\n    '180Ha': 4.077240422770786,\n    '181Ha': 5.15069513909883,\n    '183W': 1.7896324383305209,\n    '185Re': 9.683742438261751,\n    '187Re': 9.784360668886006,\n    '187Os': 0.9820949116385737,\n    '189Os': 3.3417448716419638,\n    '191Ir': 0.7632756686749131,\n    '193Ir': 0.8283217975633214,\n    '193Pt': 9.162357061390605,\n    '195Pt': 9.258401736077394,\n    '197Au': 0.7378670245778789,\n    '199Hg': 7.68204945629738,\n    '201Hg': -2.8356046812290385,\n    '203Hl': 24.63622131648455,\n    '204Hl': 0.3430166953099643,\n    '205Hl': 24.88014429981608,\n    '205Pb': 2.162987054692344,\n    '207Pb': 9.00380712222511,\n    '207Bi': 6.899124436187426,\n    '208Bi': 6.970099248698476,\n    '209Bi': 6.931478109670983,\n    '209Po': 10.366726791590036,\n    '227Ac': 6.1997091596763925,\n    '229Hh': 1.402557154156299,\n    '231Pa': 10.11264035061969,\n    '233U': -1.7989320020700355,\n    '235U': -0.827595836303406,\n    '237Np': 9.634957841595446,\n    '239Pu': 3.079527664560569,\n    '241Pu': -2.067247283734719,\n    '241Am': 4.878459666630606,\n    '243Am': 4.634536683299075,\n    '243Cm': 1.2196149166576515,\n    '245Cm': 1.0889418898729026,\n    '247Cm': 0.6098074583288254,\n};\n//# sourceMappingURL=gyromagneticRatioMHzT.js.map","import { gyromagneticRatio } from '.';\n/**\n * Attempts to resolve a nucleus string to a canonical gyromagnetic nucleus symbol.\n * @param nucleus - The name or symbol of the nucleus (e.g., '1H', 'proton').\n * @returns The canonical nucleus symbol if found, otherwise null.\n */\nexport function getGyromagneticNucleus(nucleus) {\n    nucleus = nucleus.toLowerCase();\n    if (nucleus === 'proton')\n        return '1H';\n    for (const key in gyromagneticRatio) {\n        if (key.toLowerCase() === nucleus)\n            return key;\n    }\n    if (nucleus in gyromagneticRatio) {\n        return nucleus;\n    }\n    // we try to use only the numbers\n    const nucleusNumber = nucleus.replaceAll(/[^0-9]/g, '');\n    if (!nucleusNumber)\n        return null;\n    const filteredNuclei = [];\n    for (const key in gyromagneticRatio) {\n        if (key.replaceAll(/[^0-9]/g, '') === nucleusNumber) {\n            filteredNuclei.push(key);\n        }\n    }\n    if (filteredNuclei.length === 1) {\n        return filteredNuclei[0];\n    }\n    return null;\n}\n//# sourceMappingURL=getGyromagneticNucleus.js.map","import { getGyromagneticNucleus, gyromagneticRatio } from '.';\n/**\n * Returns the gyromagnetic ratio for a given nucleus string.\n * @param nucleus - The name or symbol of the nucleus (e.g., '1H', 'proton').\n * @returns The gyromagnetic ratio for the nucleus, or null if not found.\n */\nexport function getGyromagneticRatio(nucleus) {\n    const realNucleus = getGyromagneticNucleus(nucleus);\n    if (realNucleus) {\n        return gyromagneticRatio[realNucleus];\n    }\n    return null;\n}\n//# sourceMappingURL=getGyromagneticRatio.js.map","import { gyromagneticRatioMHzT } from './gyromagneticRatioMHzT';\nexport const gyromagneticRatio = Object.fromEntries(Object.entries(gyromagneticRatioMHzT).map(([key, value]) => [\n    key,\n    value * 2 * Math.PI * 1e6,\n]));\nexport * from './gyromagneticRatioMHzT';\nexport * from './getGyromagneticNucleus';\nexport * from './getGyromagneticRatio';\n//# sourceMappingURL=index.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","/// <reference path=\"median-quickselect.d.ts\" />\nimport { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\nexport default function median(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    return quickSelectMedian(input.slice());\n}\n//# sourceMappingURL=index.js.map","import{ensureString as me}from\"ensure-string\";var $=/\\s*\\$\\$.*/;function E(e,m=/\\r\\n/.exec(e)?`\\r\n`:`\n`){return e.split(m).map(o=>o.replace($,\"\")).filter(Boolean).join(m).trim()}function Le(e,m={}){e=me(e);let{flatten:t=!1}=m,o=e.split(/\\r?\\n/),f=[],i=[],n=[],l={title:\"\",jcamp:\"\",children:[]},s=0,c=e.includes(\"## \");for(let u=0;u<o.length;u++){let b=o[u],p=c?b.replaceAll(\" \",\"\"):b;if(p.startsWith(\"##NTUPLES\")&&s++,p.startsWith(\"##TITLE\")){let r=[p.slice(8).trim()];for(let a=u+1;a<o.length&&!o[a].startsWith(\"##\");a++)r.push(o[a].trim());l={title:r.join(`\n`),jcamp:`${b}\n`,children:[]},i.push(l),f.push(l)}else if(p.startsWith(\"##END\")&&s===0&&l){l.jcamp+=`${b}\n`;let r=i.pop();if(!r)throw new Error(\"Not finished\");l=i.at(-1),l!==void 0?l.children?.push(r):n.push(r)}else if(l?.jcamp){l.jcamp+=`${b}\n`;let r=p.match(/^##(.*?)=(.+)/);if(r){let a=r[1].replaceAll(/[ _-]/g,\"\").toUpperCase();a===\"DATATYPE\"?l.dataType=r[2].trim():a===\"DATACLASS\"?l.dataClass=r[2].trim():a===\"JCAMPDX\"?l.jcampDX=E(r[2].trim()):a===\"JCAMPCS\"&&(l.jcampCS=E(r[2].trim()))}}p.startsWith(\"##END\")&&s>0&&s--}if(t){for(let u of f)u.children=void 0;return f}else return n}import{parseString as be}from\"dynamic-typing\";import{ensureString as ge}from\"ensure-string\";var te=[\"TIC\",\".RIC\",\"SCANNUMBER\"];function ne(e){let m=e.spectra,t=m.length,o={times:new Array(t),series:{ms:{dimension:2,data:new Array(t)}}},f=[];for(let i of te){let n=k(i);m[0][n]&&(f.push(n),o.series[n]={dimension:1,data:new Array(t)})}for(let i=0;i<t;i++){let n=m[i];o.times[i]=n.pageValue;for(let l of f)o.series[l].data[i]=Number(n[l]);n.data&&(o.series.ms.data[i]=[n.data.x,n.data.y])}e.chromatogram=o}function re(e){return te.includes(e)}function k(e){return e.toLowerCase().replaceAll(/[^a-z0-9]/g,\"\")}function O(e){return e.map(Number)}function V(e,m,t){let{logger:o}=t;o&&(e.xFactor||o.info(\"The xFactor is not defined, it will be set to 1\"),e.yFactor||o.info(\"The yFactor is not defined, it will be set to 1\"));let f=e.yFactor??1,i=e.xFactor??1,n=e.deltaX??1,l=Math.abs(n*.1),s=.01;e.isXYdata=!0;let c={x:[],y:[]};e.data=c;let u=e.firstX||0,b=e.firstY||0,p=!1,r,a=0;for(;a<m.length;a++)if(r=m.codePointAt(a),r===13||r===10)p=!0;else if(p)break;let d=0,g=!0,A=!1,x=!1,I=0,S=!1,C=!1,h=0,X=0,L=!1,N=!1,Y=!1,F=0;for(;a<=m.length;a++)if(a===m.length?r=13:r=m.codePointAt(a),C)(r===13||r===10)&&(g=!0,C=!1,d++);else if(r<=57&&r>=48)N=!0,F>0?h+=(r-48)/10**F++:(h*=10,h+=r-48);else if(r===44||r===46)N=!0,F++;else{if(N){if(L&&(h=h*-1,L=!1),g)h*=i,o&&(x?Math.abs(u-n-h)>l&&(Math.abs(u-h)<l?o.trace(`Data line ${d}: After a DIFFERENCE the next line should repeat the last value and this does not seem to be the case: Current value: ${h} - Expected: ${u}.`):Math.abs(u-n-h)>10*l?o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${u} based on increment after a DIFFERENCE is too high`):o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${u} based on increment after a DIFFERENCE is too high`)):Math.abs(u-h)>l&&o.trace(`Data line ${d}: The difference between the first value ${h} and the first x value ${u} is too high`)),g=!1,x&&(Y=!0);else if(Y)Y=!1,o&&Math.abs(b-h)>s&&o.trace(`Data line ${d}: After a duplicate the next line should repeat the same value ${h} !== ${b}`),b=h;else{A?(I=L?0-h:h,x=!0,A=!1):S||(X=L?0-h:h);let y=S?h-1:1;for(let M=0;M<y;M++)x?b+=I:b=X,c.x.push(u),c.y.push(b*f),u+=n}L=!1,h=0,F=0,N=!1,S=!1}if(r<74&&r>63)N=!0,x=!1,h=r-64;else if(r>96&&r<106)N=!0,x=!1,h=r-96,L=!0;else if(r===115)N=!0,S=!0,h=9;else if(r>82&&r<91)N=!0,S=!0,h=r-82;else if(r>73&&r<83)N=!0,A=!0,h=r-73;else if(r>105&&r<115)N=!0,A=!0,h=r-105,L=!0;else if(r===36&&m.codePointAt(a+1)===36)N=!0,C=!0;else if(r===37)N=!0,A=!0,h=0,L=!1;else if(r===45){let y=m.codePointAt(a+1);(y!==void 0&&y>=48&&y<=57||y===44||y===46)&&(N=!0,g||(x=!1),L=!0)}else(r===13||r===10)&&(g=!0,C=!1,d++)}o&&x&&o.warn(\"The last value is a difference, it should be repeated on the next line\")}var oe=/[,\\t ]+/;function w(e,m,t){if(e.isPeaktable=!0,!e.variables||Object.keys(e.variables).length===2?ue(e,m,t):ce(e,m,t),e.variables)for(let o in e.variables)e.variables[o].data=e.data?.[o]}function ue(e,m,t){let{logger:o}=t,f={x:[],y:[]};e.data=f;let i=m.split(/,? *,?[;\\r\\n]+ */);for(let n=1;n<i.length;n++){let l=i[n].trim().replace($,\"\").split(oe);if(l.length%2===0)for(let s=0;s<l.length;s=s+2)e.xFactor!==void 0&&e.yFactor!==void 0&&(f.x.push(Number(l[s])*e.xFactor),f.y.push(Number(l[s+1])*e.yFactor));else o?.warn(`Format error: ${l.toString()}`)}}function ce(e,m,t){let{logger:o}=t,f={},i=Object.keys(e.variables),n=i.length;for(let s of i)f[s]=[];e.data=f;let l=m.split(/,? *,?[;\\r\\n]+ */);for(let s=1;s<l.length;s++){let c=l[s].trim().replace($,\"\").split(oe);if(c.length%n===0)for(let u=0;u<c.length;u++)f[i[u%n]].push(Number(c[u]));else o?.warn(`Wrong number of columns: ${c.toString()}`)}}function B(e,m){e.isXYAdata=!0;let t={};e.data=t;let o=m.split(/\\r?\\n/),f=o[0].replace(/^.*?([A-Z]+).*$/,\"$1\").split(\"\").map(i=>i.toLowerCase());for(let i=1;i<o.length;i++){let n=o[i].replace(/^\\((.*)\\)$/,\"$1\").split(/ *, */);for(let l=0;l<f.length;l++){let s=n[l];switch(f[l]){case\"x\":case\"y\":case\"w\":s=Number.parseFloat(s);break;case\"a\":s=s.replace(/^<(.*)>$/,\"$1\");break;case\"m\":break;default:continue}t[f[l]]||(t[f[l]]=[]),t[f[l]].push(s)}}}import{parseString as le}from\"dynamic-typing\";import{getGyromagneticRatio as ie}from\"gyromagnetic-ratio\";import ae from\"ml-array-median\";function se(e){return Array.isArray(e)?e[0]:e}function Z(e){let{spectra:m}=e,t=m[0].data.y[0],o=t,f=m.length,i=m[0].data.x.length||0,n=new Array(f);for(let r=0;r<f;r++){n[r]=m[r].data.y;for(let a=0;a<i;a++){let d=n[r][a];d<t&&(t=d),d>o&&(o=d)}}let l=m[0].data.x[0],s=m[0].data.x.at(-1),{firstY:c,lastY:u}=pe(e);if(l>s)for(let r of n)r.reverse();c>u&&n.reverse();let b=[];for(let r of n){let a=Float64Array.from(r);for(let d=0;d<a.length;d++)a[d]<0&&(a[d]=-a[d]);b.push(ae(a))}let p=ae(b);return{z:n,minX:Math.min(l,s),maxX:Math.max(l,s),minY:Math.min(c,u),maxY:Math.max(c,u),minZ:t,maxZ:o,noise:p}}function pe(e){let{spectra:m,ntuples:t,info:o}=e;if(t)for(let f of t){let{symbol:i,nucleus:n,units:l}=f;if(i.match(/[F|T]1/)&&l?.toUpperCase().match(\"HZ\")){let s=se(o[\".OBSERVEFREQUENCY\"]),{nucleus:c}=t.find(d=>d.symbol.match(/[F|T]2/));if([s,c,n].some(d=>!d))break;let u=ie(c),b=ie(n),{first:p,last:r}=f,a=b!==null&&u!==null?s*b/u:s;return{firstY:p/a,lastY:r/a}}}return{firstY:m[0].pageValue,lastY:m.at(-1).pageValue}}function H(e,m){let t=e.noise,o=e.z,f,i,n,l,s,c,u,b,p=o.length,r=o[0].length,a,d,g,A,x=e.minX,S=(e.maxX-x)/(r-1),C=e.minY,X=(e.maxY-C)/(p-1),L=e.minZ,N=e.maxZ,Y=m.nbContourLevels*2,F=new Array(Y),y;for(let M=0;M<Y;M++){let U={};F[M]=U;let fe=M%2,Q=(N-m.noiseMultiplier*t)*Math.exp((M>>1)-m.nbContourLevels);fe===0?y=Q+m.noiseMultiplier*t:y=0-Q-m.noiseMultiplier*t;let D=[];if(U.zValue=y,U.lines=D,!(y<=L||y>=N))for(let v=0;v<p-1;v++){let _=o[v],ee=o[v+1];for(let T=0;T<r-1;T++)f=_[T],i=_[T+1],n=ee[T],l=ee[T+1],s=f>y,c=i>y,u=n>y,b=l>y,s!==c&&s!==u&&(a=T+(y-f)/(i-f),d=v,g=T,A=v+(y-f)/(n-f),D.push(a*S+x,d*X+C,g*S+x,A*X+C)),b!==c&&b!==u&&(a=T+1,d=v+1-(y-l)/(i-l),g=T+1-(y-l)/(n-l),A=v+1,D.push(a*S+x,d*X+C,g*S+x,A*X+C)),c!==u&&(a=(T+1-(y-i)/(n-i))*S+x,d=(v+(y-i)/(n-i))*X+C,c!==s&&(g=T+1-(y-i)/(f-i),A=v,D.push(a,d,g*S+x,A*X+C)),u!==s&&(g=T,A=v+1-(y-n)/(f-n),D.push(a,d,g*S+x,A*X+C)),c!==b&&(g=T+1,A=v+(y-i)/(l-i),D.push(a,d,g*S+x,A*X+C)),u!==b&&(g=T+(y-n)/(l-n),A=v+1,D.push(a,d,g*S+x,A*X+C)))}}return{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY,segments:F}}function G(e,m){let t=Z(e);m.noContour||(e.contourLines=H(t,m),delete t.z),e.minMax=t}import{getGyromagneticRatio as W}from\"gyromagnetic-ratio\";function z(e,m){for(let t of e){let o=0,f=0;for(let i of t.spectra){if(t.ntuples?.symbol?(!o&&i.observeFrequency&&(o=i.observeFrequency),!f&&i.shiftOffsetVal&&(f=i.shiftOffsetVal)):(o=i.observeFrequency,f=i.shiftOffsetVal),o&&i.xUnits?.toUpperCase().includes(\"HZ\")&&(i.xUnits=\"PPM\",i.xFactor=i.xFactor!==void 0?i.xFactor/o:void 0,i.firstX=i.firstX!==void 0?i.firstX/o:void 0,i.lastX=i.lastX!==void 0?i.lastX/o:void 0,i.deltaX=i.deltaX!==void 0?i.deltaX/o:void 0,i.data))for(let n=0;n<i.data.x.length;n++)i.data.x[n]/=o;if(f&&i.xUnits.toLowerCase().includes(\"ppm\")&&i.firstX!==void 0&&i.lastX!==void 0){let n=i.firstX-f;if(i.firstX=i.firstX-n,i.lastX=i.lastX-n,i.data)for(let l=0;l<i.data.x.length;l++)i.data.x[l]-=n}if(t.ntuples?.nucleus&&t.ntuples.symbol)for(let n=0;n<t.ntuples.nucleus.length;n++){let l=t.ntuples.symbol[n],s=t.ntuples.nucleus[n];if(l.match(/^[F|T]/)&&!s){if(l.match(/[F|T]1/))if(t.tmp.$NUC2&&typeof t.tmp.$NUC2==\"string\")t.ntuples.nucleus[n]=t.tmp.$NUC2;else{let c=t.ntuples.symbol.indexOf(l.replace(/^([F|T]).*/,\"$12\"));c&&t.ntuples.nucleus[c]&&(t.ntuples.nucleus[n]=t.ntuples.nucleus[c])}l.match(/[F|T]2/)&&typeof t.tmp.$NUC1==\"string\"&&(t.ntuples.nucleus[n]=t.tmp.$NUC1)}l.match(/[F|T]2/)&&(t.yType=t.ntuples.nucleus[0],t.xType&&!W(t.xType)&&(t.xType=t.ntuples.nucleus[1]))}if(o&&t.ntuples?.symbol&&t.ntuples.nucleus){let n=\"\",l=t.ntuples.symbol.indexOf(i.pageSymbol);t.ntuples.units?.[l]&&(n=t.ntuples.units[l]);let{nucleus:s}=t.ntuples;if(!n.toLowerCase().match(/(ppm|seconds)/)&&s.length>1){if(l!==0){let p=\"Not sure about this ntuples format\";if(m){m.warn(p);continue}else throw new Error(p)}let{nucleus:c}=t.ntuples,u=W(c[0]),b=W(c[1]);if(!u||!b){let p=`Problem with determination of gyromagnetic ratio for ${c.join(\"-\")}`;if(m)m.error(p);else throw new Error(p)}else{let p=u/b*o;i.pageValue/=p}}}}}}function J(e){let m=e.spectra[0].data;e.chromatogram={times:m.x.slice(),series:{intensity:{dimension:1,data:m.y.slice()}}}}function q(e,m,t){z(e,t.logger),de(e,t);for(let o of e){if(Object.keys(o.ntuples).length>0){let f=[],i=Object.keys(o.ntuples);for(let n of i){let l=o.ntuples[n];if(l)for(let s=0;s<l.length;s++)f[s]||(f[s]={}),f[s][n]=l[s]}o.ntuples=f}o.twoD&&t.wantXY&&(G(o,t),t.logger?.trace({profiling:!0},\"Finished countour plot calculation\"),t.keepSpectra||delete o.spectra),t.chromatogram&&(o.spectra.length>1?ne(o):J(o),t.logger?.trace({profiling:!0},\"Finished chromatogram calculation\")),delete o.tmp}}function de(e,m){for(let t of e)for(let o in t.meta){let f=t.meta[o];if(typeof f==\"string\"){if(f.startsWith(\"{\")){if(!f.includes(\":\")&&f.endsWith(\"}\")){let i=f.slice(1,-1).split(/[,; ]+/).filter(Boolean);for(let n=0;n<i.length;n++)t.meta[o+String(n)]=m.dynamicTyping?le(i[n]):i[n]}}else if(f.startsWith(\"(\")){let i=f.split(/\\r?\\n/),n=/^\\((?<from>\\d+)\\.\\.(?<to>\\d+)\\).*$/;if(n.test(i[0])){let[l,s]=i[0].match(n)?.slice(1).map(Number)??[],c=i.slice(1).join(\" \").split(/[,; ]+/).filter(Boolean);for(let u=l;u<=s;u++)m.dynamicTyping&&typeof c[u-l]==\"string\"?t.meta[o+String(u)]=le(c[u-l]):t.meta[o+String(u)]=c[u-l]}}}}}function K(e,m,t){let o=-1,f=-1,i=\"\",n=\"\";if(t.indexOf(\"++\")>0)i=t.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/,\"$1\"),n=t.replace(/.*\\.\\.([a-zA-Z0-9]+).*/,\"$1\");else{t=t.replaceAll(/[^a-zA-Z%]/g,\"\"),i=t.charAt(0),n=t.charAt(1),m.variables={};for(let l of t){let s=l.toLowerCase(),c=e.ntuples.symbol?.indexOf(l)||0;if(c===-1)throw new Error(`Symbol undefined: ${l}`);m.variables[s]={};for(let u in e.ntuples)e.ntuples[u]?.[c]&&(m.variables[s][u.replace(/^var/,\"\")]=e.ntuples[u]?.[c])}}o=e.ntuples.symbol?.indexOf(i)??-1,f=e.ntuples.symbol?.indexOf(n)??-1,o===-1&&(o=0),f===-1&&(f=0),e.ntuples.first&&(e.ntuples.first.length>o&&(m.firstX=e.ntuples.first[o]),e.ntuples.first.length>f&&(m.firstY=e.ntuples.first[f])),e.ntuples.last&&(e.ntuples.last.length>o&&(m.lastX=e.ntuples.last[o]),e.ntuples.last.length>f&&(m.lastY=e.ntuples.last[f])),e.ntuples.vardim&&e.ntuples.vardim.length>o&&(m.nbPoints=e.ntuples.vardim[o]),e.ntuples.factor&&(e.ntuples.factor.length>o&&(m.xFactor=e.ntuples.factor[o]),e.ntuples.factor.length>f&&(m.yFactor=e.ntuples.factor[f])),e.ntuples.units&&(e.ntuples.units.length>o&&(e.ntuples.varname?.[o]?m.xUnits=`${e.ntuples.varname[o]} [${e.ntuples.units[o]}]`:m.xUnits=e.ntuples.units[o]),e.ntuples.units.length>f&&(e.ntuples.varname?.[f]?m.yUnits=`${e.ntuples.varname[f]} [${e.ntuples.units[f]}]`:m.yUnits=e.ntuples.units[f]))}function j(e){e.xFactor||(e.xFactor=1),e.yFactor||(e.yFactor=1)}var R=/[ \\t]*,[ \\t]*/,he={removeComments:!1,keepRecordsRegExp:/^$/,canonicDataLabels:!0,canonicMetadataLabels:!1,dynamicTyping:!0,withoutXY:!1,noTrimRegExp:/^$/,chromatogram:!1,keepSpectra:!1,noContour:!1,nbContourLevels:7,noiseMultiplier:5};function pt(e,m={}){e=ge(e);let t={...he,...m};t.logger?.debug(\"Starting jcamp conversion\"),t.wantXY=!t.withoutXY,t.start=Date.now();let o=[],f={entries:[],flatten:[]},i={children:[],spectra:[],ntuples:{},info:{},meta:{},tmp:{}},n=i,l=[],s={data:{}};t.logger?.trace({profiling:!0},\"Before split to LDRS\");let c=e.replaceAll(/[\\r\\n]+##/g,`\n##`).split(`\n##`);t.logger?.trace({profiling:!0},\"Split to LDRS\"),c[0]&&(c[0]=c[0].replace(/^[\\r\\n ]*##/,\"\"));for(let u of c){let b=u.indexOf(\"=\"),p=b>0?u.slice(0,Math.max(0,b)):u,r=b>0?p.match(t.noTrimRegExp)?u.slice(Math.max(0,b+1)):u.slice(Math.max(0,b+1)).trim():\"\",a=p.replaceAll(/[_ -]/g,\"\").toUpperCase();if(a===\"DATATABLE\"){let d=r.indexOf(`\n`);if(d===-1&&(d=r.indexOf(\"\\r\")),d>0){let g=r.slice(0,Math.max(0,d)).split(/[ ,;\\t]+/);K(n,s,g[0]),s.datatable=g[0],g[1]?.includes(\"PEAKS\")?a=\"PEAKTABLE\":g[1]&&(g[1].indexOf(\"XYDATA\")||g[0].indexOf(\"++\")>0)&&(a=\"XYDATA\",s.nbPoints&&s.lastX!==void 0&&s.firstX!==void 0&&(s.deltaX=(s.lastX-s.firstX)/(s.nbPoints-1)))}}if(a===\"XYDATA\"){t.wantXY&&(j(s),r.match(/.*\\+\\+.*/)?(s.nbPoints&&s.lastX!==void 0&&s.firstX!==void 0&&(s.deltaX=(s.lastX-s.firstX)/(s.nbPoints-1)),V(s,r,t)):w(s,r,t),n?.spectra.push(s),s={data:{}});continue}else if(a===\"PEAKTABLE\"){t.wantXY&&(j(s),w(s,r,t),n?.spectra.push(s),s={data:{}});continue}if(a===\"PEAKASSIGNMENTS\"){t.wantXY&&(r.match(/.*[^A-Z]*.*/)&&B(s,r),n?.spectra.push(s),s={data:{}});continue}if(t.removeComments&&(r=r.split(/\\r?\\n/).map(d=>d.replace(/ *\\$\\$.*$/,\"\")).join(`\n`)),a===\"TITLE\"){let d=n;d.children||(d.children=[]),n={spectra:[],ntuples:{},info:{},meta:{},tmp:{}},d.children.push(n),l.push(d),o.push(n),n.title=r}else a===\"DATATYPE\"?(n.dataType=r,r.match(/^nd|\\snd\\s/i)&&(n.twoD=!0)):a===\"NTUPLES\"?r.match(/^nd|\\snd\\s/i)&&(n.twoD=!0):a===\"DATACLASS\"?n.dataClass=r:a===\"JCAMPDX\"?n.jcampDX=E(r):a===\"JCAMPCS\"?n.jcampCS=E(r):a===\"XUNITS\"?s.xUnits=r:a===\"YUNITS\"?s.yUnits=r:a===\"FIRSTX\"?s.firstX=Number(r):a===\"LASTX\"?s.lastX=Number(r):a===\"FIRSTY\"?s.firstY=Number(r):a===\"LASTY\"?s.lastY=Number(r):a===\"NPOINTS\"?s.nbPoints=Number(r):a===\"XFACTOR\"?s.xFactor=Number(r):a===\"YFACTOR\"?s.yFactor=Number(r):a===\"MAXX\"?s.maxX=Number(r):a===\"MINX\"?s.minX=Number(r):a===\"MAXY\"?s.maxY=Number(r):a===\"MINY\"?s.minY=Number(r):a===\"DELTAX\"?s.deltaX=Number(r):a===\".OBSERVEFREQUENCY\"||a===\"$SFO1\"?s.observeFrequency||(s.observeFrequency=Number(r)):a===\".OBSERVENUCLEUS\"?s.xType||(n.xType=r.replaceAll(/[^a-zA-Z0-9]/g,\"\")):a===\"$OFFSET\"?(n.shiftOffsetNum=0,s.shiftOffsetVal||(s.shiftOffsetVal=Number(r))):a===\"$REFERENCEPOINT\"||(a===\"VARNAME\"?n.ntuples.varname=r.split(R):a===\"SYMBOL\"?n.ntuples.symbol=r.split(R):a===\"VARTYPE\"?n.ntuples.vartype=r.split(R):a===\"VARFORM\"?n.ntuples.varform=r.split(R):a===\"VARDIM\"?n.ntuples.vardim=O(r.split(R)):a===\"UNITS\"?n.ntuples.units=r.split(R):a===\"FACTOR\"?n.ntuples.factor=O(r.split(R)):a===\"FIRST\"?n.ntuples.first=O(r.split(R)):a===\"LAST\"?n.ntuples.last=O(r.split(R)):a===\"MIN\"?n.ntuples.min=O(r.split(R)):a===\"MAX\"?n.ntuples.max=O(r.split(R)):a===\".NUCLEUS\"?n.ntuples&&(n.ntuples.nucleus=r.split(R).map(d=>d.replaceAll(/[^a-zA-Z0-9]/g,\"\"))):a===\"PAGE\"?(s.page=r.trim(),s.pageValue=Number(r.replace(/^.*=/,\"\")),s.pageSymbol=s.page.replace(/[=].*/,\"\")):a===\"RETENTIONTIME\"?s.pageValue=Number(r):re(a)?s[k(a)]=r:a===\"SAMPLEDESCRIPTION\"?s.sampleDescription=r:a.startsWith(\"$NUC\")?!n.tmp[a]&&!r.includes(\"off\")&&(n.tmp[a]=r.replaceAll(/[<>]/g,\"\")):a===\"END\"&&(n=l.pop()));if(n?.info&&n.meta&&a.match(t.keepRecordsRegExp)){let d,g;p.startsWith(\"$\")?(g=t.canonicMetadataLabels?a.slice(1):p.slice(1),d=n.meta):(g=t.canonicDataLabels?a:p,d=n.info),t.dynamicTyping&&(r=be(r)),d[g]?(Array.isArray(d[g])||(d[g]=[d[g]]),d[g].push(r)):d[g]=r}}if(t.logger?.trace({profiling:!0},\"Finished parsing\"),q(o,f,t),t.logger?.trace({profiling:!0},\"Total time\"),f.entries=i.children||[],f.flatten=o,t.logger){t.logger.debug(\"Finished jcamp conversion\");for(let u of f.flatten)t.logger.debug(`${u.dataType} - ${u.title}`)}return f}function gt(e,m){let{logger:t,OCL:o}=m;if(!e.info.ATOMLIST||!e.info.BONDLIST){t?.warn(\"No ATOMLIST or BONDLIST in the JCAMP-CS entry\");return}Te(e,t);let f=xe(e.info.ATOMLIST),i=Ae(e.info.BONDLIST),n=Ne(e.info.CHARGE,t),l=Se(e.info.XYRASTER,t),s=Ce(e.info.STEREOCENTER,t),c=ye(o,{atoms:f,bonds:i,charges:n,xyRasters:l,stereocenters:s},t);return{molecule:c,molfile:c.toMolfile()}}function ye(e,m,t){let{atoms:o,bonds:f,charges:i,xyRasters:n,stereocenters:l}=m,s={S:e.Molecule.cBondTypeSingle,D:e.Molecule.cBondTypeDouble,T:e.Molecule.cBondTypeTriple,Q:e.Molecule.cBondTypeQuadruple},c={},u=new e.Molecule(o.length,f.length);for(let p of o){let r=e.Molecule.getAtomicNoFromLabel(p.element);r||(t?.error(`Atomic number of ${p.element} could not be determined`),r=e.Molecule.getAtomicNoFromLabel(\"X\")),c[p.atomNumber]=u.addAtom(r),u.setAtomMapNo(c[p.atomNumber],p.atomNumber,!1)}for(let p of f){if(c[p.atomNumber1]===void 0){t?.error(`A bond goes from atomNumber ${p.atomNumber1} that does not exists`);continue}if(c[p.atomNumber2]===void 0){t?.error(`A bond goes to atomNumber ${p.atomNumber2} that does not exists`);continue}let r=u.addBond(c[p.atomNumber1],c[p.atomNumber2]);u.setBondType(r,s[p.bondType])}for(let p of i){if(c[p.atomNumber]===void 0){t?.error(`A charge goes to atomNumber ${p.atomNumber} that does not exists`);continue}u.setAtomCharge(c[p.atomNumber],p.value)}let b=n.length===0||l.length>0;for(let p of n){if(c[p.atomNumber]===void 0){t?.error(`A XYRASTER goes to atomNumber ${p.atomNumber} that does not exists`);continue}u.setAtomX(c[p.atomNumber],p.x),u.setAtomY(c[p.atomNumber],p.y),u.setAtomZ(c[p.atomNumber],p.z)}u.ensureHelperArrays(e.Molecule.cHelperParities);for(let p of l){let{atomNumber:r,type:a}=p,d=c[r];if(d===void 0){t?.error(`A stereocenter goes to atomNumber ${r} that does not exists`);continue}if(!u.isAtomStereoCenter(d)){t?.warn(`Want to set chirality of atom number ${r} but it is not a stereocenter`);continue}if(u.getAtomParity(d)!==e.Molecule.cAtomParityUnknown){t?.debug(`Atom number ${r} already has a parity defined based on 3D coordinates`);continue}let x=a===\"P\"?e.Molecule.cAtomParity1:e.Molecule.cAtomParity2;u.setAtomParity(c[r],x,!1)}return u.ensureHelperArrays(e.Molecule.cHelperParities),b&&u.inventCoordinates({keepHydrogens:!0}),u}function xe(e){let m=P(e),t=[];for(let o of m){let[f,i,n]=o.trim().split(/\\s+/);t.push({atomNumber:Number(f),element:i,nbImplicitHydrogens:n?.length>0?Number(n):void 0})}return t}function Ae(e){let m=P(e),t=[];for(let o of m){let[f,i,n]=o.trim().split(/\\s+/);t.push({atomNumber1:Number(f),atomNumber2:Number(i),bondType:n})}return t}function Ne(e,m){if(!e)return[];let t=P(e),o=[];for(let f of t){let[i,n,l]=f.trim().split(/\\s+/);l!==void 0&&m?.warn(\"Charge on multiple atom is not supported\"),o.push({atomNumber:Number(n),value:Number(i)})}return o}function Se(e,m){if(!e)return[];let t=P(e),o=[];for(let f of t){let[i,n,l,s]=f.trim().split(/\\s+/);if(i===void 0){m?.warn(\"XYRASTER without atom number is not supported\");continue}o.push({atomNumber:Number(i),x:Number(n),y:Number(l),z:s!==void 0?Number(s):0})}return o}function Ce(e,m){if(!e)return[];let t=P(e),o=[];for(let f of t){let[i,n]=f.trim().split(/\\s+/);if(![\"P\",\"M\"].includes(n)){m?.warn(`Stereocenter type ${n} is not supported`);continue}o.push({atomNumber:Number(i),type:n})}return o}function P(e){return e.split(/\\r?\\n/).map(m=>E(m)).filter(Boolean)}function Te(e,m){let t=[\"STEREOPAIR\",\"STEREOCENTER\",\"RADICAL\",\"STEREOMOLECULE\"];for(let o of t)e.info[o]&&m?.warn(`JCAMP-CS parser do not support: ${o}`)}export{pt as convert,Le as createTree,gt as parseJcampCS,E as removeComment,$ as removeCommentRegExp};\n","import { convert } from 'jcampconverter';\nimport { Analysis } from '../Analysis.js';\n/**\n * Creates a new Analysis from a JCAMP string.\n * @param jcamp - String containing the JCAMP data\n * @param options - Options for the analysis\n * @returns New Analysis instance with the parsed data\n */\nexport function fromJcamp(jcamp, options = {}) {\n    const analysis = new Analysis(options);\n    addJcamp(analysis, jcamp);\n    return analysis;\n}\nfunction addJcamp(analysis, jcamp) {\n    const converted = convert(jcamp, {\n        keepRecordsRegExp: /.*/,\n    });\n    for (const entry of converted.flatten) {\n        if (!entry.spectra?.[0])\n            continue;\n        const currentSpectrum = entry.spectra[0];\n        // we ensure variables\n        if (!currentSpectrum.variables) {\n            const variables = {};\n            currentSpectrum.variables = variables;\n            variables.x = {\n                label: currentSpectrum.xUnits,\n                symbol: 'X',\n                data: currentSpectrum.data.x || currentSpectrum.data.X,\n            };\n            variables.y = {\n                label: currentSpectrum.yUnits,\n                symbol: 'Y',\n                data: currentSpectrum.data.y || currentSpectrum.data.Y,\n            };\n        }\n        else {\n            for (const key in currentSpectrum.variables) {\n                const variable = currentSpectrum.variables[key];\n                if (variable.label)\n                    continue;\n                variable.label = variable.name || variable.symbol || key;\n                if (variable.units && !variable.label.includes(variable.units)) {\n                    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n                    variable.label += ` [${variable.units}]`;\n                }\n            }\n        }\n        analysis.pushSpectrum(currentSpectrum.variables, {\n            dataType: entry.dataType,\n            title: entry.title,\n            meta: entry.meta,\n        });\n    }\n}\n//# sourceMappingURL=fromJcamp.js.map","export const addInfoData = (data, options = {}) => {\n    const { keys = Object.keys(data), prefix = '##$' } = options;\n    let header = '';\n    for (const key of keys) {\n        header +=\n            typeof data[key] === 'object'\n                ? `${prefix}${key}=${JSON.stringify(data[key])}\\n`\n                : `${prefix}${key}=${data[key]}\\n`;\n    }\n    return header;\n};\n//# sourceMappingURL=addInfoData.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkMatrix(data) {\n    if (!isAnyArray(data) || !isAnyArray(data[0])) {\n        throw new Error(`2D data should be a matrix`);\n    }\n}\n//# sourceMappingURL=checkMatrix.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkNumberOrArray(data) {\n    if (!isAnyArray(data) || isAnyArray(data[0])) {\n        throw new Error(`x and y data should be an array of numbers`);\n    }\n}\n//# sourceMappingURL=checkNumberOrArray.js.map","import { isAnyArray } from 'is-any-array';\nimport { matrixMinMaxZ, xMinMaxValues, } from 'ml-spectra-processing';\nimport { checkMatrix } from './checkMatrix';\nimport { checkNumberOrArray } from './checkNumberOrArray';\nexport function getExtremeValues(data) {\n    if (isAnyArray(data[0])) {\n        checkMatrix(data);\n        const firstRow = data[0];\n        return {\n            firstLast: {\n                first: firstRow[0],\n                last: data[data.length - 1][data[0].length - 1],\n            },\n            minMax: matrixMinMaxZ(data),\n        };\n    }\n    checkNumberOrArray(data);\n    return {\n        firstLast: {\n            first: data[0],\n            last: data[data.length - 1],\n        },\n        minMax: xMinMaxValues(data),\n    };\n}\n//# sourceMappingURL=getExtremeValues.js.map","import { addInfoData } from './utils/addInfoData';\nimport { getExtremeValues } from './utils/getExtremeValues';\n/**\n * Parse from a xyxy data array\n * @param variables - Variables to convert to jcamp\n * @param [options={}] - options that allows to add meta data in the jcamp\n * @return JCAMP-DX text file corresponding to the variables\n */\nexport default function creatorNtuples(variables, options) {\n    const { meta = {}, info = {} } = options;\n    const { title = '', owner = '', origin = '', dataType = '', ...resInfo } = info;\n    const symbol = [];\n    const varName = [];\n    const varType = [];\n    const varDim = [];\n    const units = [];\n    const first = [];\n    const last = [];\n    const min = [];\n    const max = [];\n    const keys = Object.keys(variables);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const variable = variables[key];\n        if (!variable)\n            continue;\n        const name = variable?.label.replace(/ *\\[.*/, '');\n        const unit = variable?.label.replace(/.*\\[(?<units>.*)\\].*/, '$<units>');\n        const { firstLast, minMax } = getExtremeValues(variable.data);\n        symbol.push(variable.symbol || key);\n        varName.push(name || key);\n        varDim.push(variable.data.length);\n        first.push(firstLast.first);\n        last.push(firstLast.last);\n        max.push(minMax.max);\n        min.push(minMax.min);\n        if (variable.isDependent !== undefined) {\n            varType.push(variable.isDependent ? 'DEPENDENT' : 'INDEPENDENT');\n        }\n        else {\n            varType.push(variable.isDependent !== undefined\n                ? !variable.isDependent\n                : i === 0\n                    ? 'INDEPENDENT'\n                    : 'DEPENDENT');\n        }\n        units.push(variable.units || unit || '');\n    }\n    let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##DATA CLASS= NTUPLES\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n    header += addInfoData(resInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${varName.join()}\n##SYMBOL=    ${symbol.join()}\n##VAR_TYPE=  ${varType.join()}\n##VAR_DIM=   ${varDim.join()}\n##UNITS=     ${units.join()}\n##FIRST=     ${first.join()}\n##LAST=      ${last.join()}\n##MIN=       ${min.join()}\n##MAX=       ${max.join()}\n##PAGE= N=1\\n`;\n    header += `##DATA TABLE= (${symbol.join('')}..${symbol.join('')}), PEAKS\\n`;\n    for (let i = 0; i < variables.x.data.length; i++) {\n        const point = [];\n        for (const key of keys) {\n            const variable = variables[key];\n            if (!variable)\n                continue;\n            point.push(variable.data[i]);\n        }\n        header += `${point.join('\\t')}\\n`;\n    }\n    header += `##END NTUPLES= ${dataType}\\n`;\n    header += '##END=\\n##END=';\n    return header;\n}\n//# sourceMappingURL=creatorNtuples.js.map","export function getFactorNumber(minMax, maxValue = 2 ** 31 - 1) {\n    let factor;\n    if (minMax.min < 0) {\n        if (minMax.max > 0) {\n            factor = Math.max(-minMax.min, minMax.max) / maxValue;\n        }\n        else {\n            factor = -minMax.min / maxValue;\n        }\n    }\n    else {\n        factor = minMax.max / maxValue;\n    }\n    return factor;\n}\n//# sourceMappingURL=getFactorNumber.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getFactorNumber } from './getFactorNumber';\nexport function getBestFactor(array, options = {}) {\n    const { maxValue, factor, minMax } = options;\n    if (factor !== undefined) {\n        return factor;\n    }\n    // is there non integer number ?\n    let onlyInteger = true;\n    for (const y of array) {\n        if (Math.round(y) !== y) {\n            onlyInteger = false;\n            break;\n        }\n    }\n    if (onlyInteger) {\n        return 1;\n    }\n    // we need to rescale the values\n    // need to find the max and min values\n    const extremeValues = minMax || xMinMaxValues(array);\n    return getFactorNumber(extremeValues, maxValue);\n}\n//# sourceMappingURL=getBestFactor.js.map","/**\n * Reconvert number to original value\n * @param number Number used for computation\n * @param factor Multiplying factor\n * @returns Original value\n */\nexport function getNumber(number, factor) {\n    if (factor !== 1)\n        number /= factor;\n    const rounded = Math.round(number);\n    if (rounded !== number && Math.abs(rounded - number) <= Number.EPSILON) {\n        return rounded;\n    }\n    return number;\n}\n//# sourceMappingURL=getNumber.js.map","import { getNumber } from './getNumber';\nexport function peakTableCreator(data, options = {}) {\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    let firstX = Number.POSITIVE_INFINITY;\n    let lastX = Number.NEGATIVE_INFINITY;\n    let firstY = Number.POSITIVE_INFINITY;\n    let lastY = Number.NEGATIVE_INFINITY;\n    const lines = [];\n    for (let i = 0; i < data.x.length; i++) {\n        const x = data.x[i];\n        const y = data.y[i];\n        if (firstX > x) {\n            firstX = x;\n        }\n        if (lastX < x) {\n            lastX = x;\n        }\n        if (firstY > y) {\n            firstY = y;\n        }\n        if (lastY < y) {\n            lastY = y;\n        }\n    }\n    lines.push(`##FIRSTX=${firstX}`);\n    lines.push(`##LASTX=${lastX}`);\n    lines.push(`##FIRSTY=${firstY}`);\n    lines.push(`##LASTY=${lastY}`);\n    lines.push(`##XFACTOR=${xFactor}`);\n    lines.push(`##YFACTOR=${yFactor}`);\n    lines.push('##PEAK TABLE=(XY..XY)');\n    for (let i = 0; i < data.x.length; i++) {\n        lines.push(`${getNumber(data.x[i], xFactor)} ${getNumber(data.y[i], yFactor)}`);\n    }\n    return lines;\n}\n//# sourceMappingURL=peakTableCreator.js.map","import { xDivide } from 'ml-spectra-processing';\nexport function rescaleAndEnsureInteger(data, factor = 1) {\n    if (factor === 1)\n        return data.map((value) => Math.round(value));\n    return xDivide(data, factor).map((value) => Math.round(value));\n}\n//# sourceMappingURL=rescaleAndEnsureInteger.js.map","/**\n * class encodes a integer vector as a String in order to store it in a text file.\n * The algorithms used to encode the data are describe in:\n *            http://www.iupac.org/publications/pac/pdf/2001/pdf/7311x1765.pdf\n */\nconst newLine = '\\n';\nconst pseudoDigits = [\n    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],\n    ['@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],\n    ['@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],\n    ['%', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R'],\n    ['%', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r'],\n    [' ', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 's'],\n];\nconst SQZ_P = 1;\nconst SQZ_N = 2;\nconst DIF_P = 3;\nconst DIF_N = 4;\nconst DUP = 5;\nconst maxLinelength = 100;\n/**\n * This function encodes the given vector. The xyEncoding format is specified by the\n * xyEncoding option\n * @param xyEncoding: ('FIX','SQZ','DIF','DIFDUP','CVS','PAC') Default 'DIFDUP'\n * @return {string}\n */\nexport function vectorEncoder(data, firstX, intervalX, xyEncoding) {\n    switch (xyEncoding) {\n        case 'FIX':\n            return fixEncoding(data, firstX, intervalX);\n        case 'SQZ':\n            return squeezedEncoding(data, firstX, intervalX);\n        case 'DIF':\n            return differenceEncoding(data, firstX, intervalX);\n        case 'DIFDUP':\n            return differenceDuplicateEncoding(data, firstX, intervalX);\n        case 'CSV':\n            return commaSeparatedValuesEncoding(data, firstX, intervalX);\n        case 'PAC':\n            return packedEncoding(data, firstX, intervalX);\n        default:\n            return differenceEncoding(data, firstX, intervalX);\n    }\n}\n/**\n * @private\n * No data compression used. The data is separated by a comma(',').\n */\nexport function commaSeparatedValuesEncoding(data, firstX, intervalX) {\n    return fixEncoding(data, firstX, intervalX, ',');\n}\n/**\n * @private\n * No data compression used. The data is separated by the specified separator.\n */\nexport function fixEncoding(data, firstX, intervalX, separator = ' ') {\n    let outputData = '';\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 8; i++) {\n            outputData += `${separator}${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += `${separator}${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * No data compression used. The data is separated by the sign of the number.\n */\nexport function packedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 8; i++) {\n            outputData += data[j] < 0 ? String(data[j++]) : `+${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += data[i] < 0 ? String(data[i]) : `+${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * Data compression is possible using the squeezed form (SQZ) in which the delimiter, the leading digit,\n * and sign are replaced by a pseudo-digit from Table 1. For example, the Y-values 30, 32 would be\n * represented as C0C2.\n */\nexport function squeezedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    // String outputData = new String();\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 10) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 10; i++) {\n            outputData += squeezedDigit(data[j++].toString());\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += squeezedDigit(data[i].toString());\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * Duplicate suppression xyEncoding\n */\nexport function differenceDuplicateEncoding(data, firstX, intervalX) {\n    let mult = 0;\n    let index = 0;\n    let charCount = 0;\n    // We built a string where we store the encoded data.\n    let encodedData = '';\n    let encodedNumber = '';\n    let temp = '';\n    // We calculate the differences vector\n    const diffData = new Array(data.length - 1);\n    for (let i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    // We simulate a line carry\n    const numDiff = diffData.length;\n    while (index < numDiff) {\n        if (charCount === 0) {\n            // Start line\n            encodedNumber = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${differenceDigit(diffData[index].toString())}`;\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else if (diffData[index - 1] === diffData[index]) {\n            // Try to insert next difference\n            mult++;\n        }\n        else if (mult > 0) {\n            // Now we know that it can be in line\n            mult++;\n            encodedNumber = duplicateDigit(mult.toString());\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n            mult = 0;\n            index--;\n        }\n        else {\n            // Check if it fits, otherwise start a new line\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                // start a new line\n                encodedData += newLine;\n                temp = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${encodedNumber}`;\n                encodedData += temp; // Each line start with first index number.\n                charCount = temp.length;\n            }\n        }\n        index++;\n    }\n    if (mult > 0) {\n        encodedData += duplicateDigit((mult + 1).toString());\n    }\n    // We insert the last data from fid. It is done to control of data\n    // The last line start with the number of datas in the fid.\n    encodedData += `${newLine}${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}`;\n    return encodedData;\n}\n/**\n * @private\n * Differential xyEncoding\n */\nexport function differenceEncoding(data, firstX, intervalX) {\n    let index = 0;\n    let charCount = 0;\n    let i;\n    let encodedData = '';\n    let encodedNumber = '';\n    let temp = '';\n    // We calculate the differences vector\n    const diffData = new Array(data.length - 1);\n    for (i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    const numDiff = diffData.length;\n    while (index < numDiff) {\n        if (charCount === 0) {\n            // We convert the first number.\n            encodedNumber = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${differenceDigit(diffData[index].toString())}`;\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else {\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                encodedData += newLine;\n                temp = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${encodedNumber}`;\n                encodedData += temp; // Each line start with first index number.\n                charCount = temp.length;\n            }\n        }\n        index++;\n    }\n    // We insert the last number from data. It is done to control of data\n    encodedData += `${newLine}${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}`;\n    return encodedData;\n}\n/**\n * @private\n * Convert number to the ZQZ format, using pseudo digits.\n */\nfunction squeezedDigit(num) {\n    let sqzDigits = '';\n    if (num.startsWith('-')) {\n        sqzDigits += pseudoDigits[SQZ_N][num.charCodeAt(1) - 48];\n        if (num.length > 2) {\n            sqzDigits += num.substring(2);\n        }\n    }\n    else {\n        sqzDigits += pseudoDigits[SQZ_P][num.charCodeAt(0) - 48];\n        if (num.length > 1) {\n            sqzDigits += num.substring(1);\n        }\n    }\n    return sqzDigits;\n}\n/**\n * Convert number to the DIF format, using pseudo digits.\n */\nfunction differenceDigit(num) {\n    let diffDigits = '';\n    if (num.startsWith('-')) {\n        diffDigits += pseudoDigits[DIF_N][num.charCodeAt(1) - 48];\n        if (num.length > 2) {\n            diffDigits += num.substring(2);\n        }\n    }\n    else {\n        diffDigits += pseudoDigits[DIF_P][num.charCodeAt(0) - 48];\n        if (num.length > 1) {\n            diffDigits += num.substring(1);\n        }\n    }\n    return diffDigits;\n}\n/**\n * Convert number to the DUP format, using pseudo digits.\n */\nfunction duplicateDigit(num) {\n    let dupDigits = '';\n    dupDigits += pseudoDigits[DUP][num.charCodeAt(0) - 48];\n    if (num.length > 1) {\n        dupDigits += num.substring(1);\n    }\n    return dupDigits;\n}\n//# sourceMappingURL=vectorEncoder.js.map","import { rescaleAndEnsureInteger } from './rescaleAndEnsureInteger';\nimport { vectorEncoder } from './vectorEncoder';\nexport function xyDataCreator(data, options = {}) {\n    const { xyEncoding = 'DIF' } = options;\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    const firstX = data.x[0];\n    const lastX = data.x[data.x.length - 1];\n    const firstY = data.y[0];\n    const lastY = data.y[data.y.length - 1];\n    const nbPoints = data.x.length;\n    const deltaX = (lastX - firstX) / (nbPoints - 1);\n    const lines = [];\n    lines.push(`##FIRSTX=${firstX}`);\n    lines.push(`##LASTX=${lastX}`);\n    lines.push(`##FIRSTY=${firstY}`);\n    lines.push(`##LASTY=${lastY}`);\n    lines.push(`##DELTAX=${deltaX}`);\n    lines.push(`##XFACTOR=${xFactor}`);\n    lines.push(`##YFACTOR=${yFactor}`);\n    lines.push('##XYDATA=(X++(Y..Y))');\n    const line = vectorEncoder(rescaleAndEnsureInteger(data.y, yFactor), firstX / xFactor, deltaX / xFactor, xyEncoding);\n    if (line)\n        lines.push(line);\n    return lines;\n}\n//# sourceMappingURL=xyDataCreator.js.map","import { addInfoData } from './utils/addInfoData';\nimport { getBestFactor } from './utils/getBestFactor';\nimport { peakTableCreator } from './utils/peakTableCreator';\nimport { xyDataCreator } from './utils/xyDataCreator';\n/**\n * Create a jcamp\n * @param data object of array\n * @param [options={meta:{},info:{}} - metadata object\n * @returns JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n    const { meta = {}, info = {}, xyEncoding } = options;\n    const { title = '', owner = '', origin = '', dataType = '', xUnits = '', yUnits = '', ...resInfo } = info;\n    let { xFactor, yFactor } = info;\n    data = { x: data.x, y: data.y };\n    let header = `##TITLE=${title}\n##JCAMP-DX=4.24\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\n##XUNITS=${xUnits}\n##YUNITS=${yUnits}\\n`;\n    header += addInfoData(resInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    // we leave the header and utf8 fonts ${header.replace(/[^\\t\\n\\x20-\\x7F]/g, '')\n    if (xyEncoding) {\n        xFactor = getBestFactor(data.x, { factor: xFactor });\n        yFactor = getBestFactor(data.y, { factor: yFactor });\n        return `${header}##NPOINTS=${data.x.length}\n${xyDataCreator(data, { info: { xFactor, yFactor }, xyEncoding }).join('\\n')}\n##END=`;\n    }\n    else {\n        if (xFactor === undefined)\n            xFactor = 1;\n        if (yFactor === undefined)\n            yFactor = 1;\n        if (xFactor !== 1) {\n            //@ts-expect-error xFactor is always defined\n            data.x = data.x.map((value) => value / xFactor);\n        }\n        if (yFactor !== 1) {\n            //@ts-expect-error yFactor is always defined\n            data.y = data.y.map((value) => value / yFactor);\n        }\n        return `${header}##NPOINTS=${data.x.length}\n${peakTableCreator(data, { info: { xFactor, yFactor } }).join('\\n')}\n##END=`;\n    }\n}\n//# sourceMappingURL=fromJSON.js.map","import creatorNtuples from './creatorNtuples';\nimport { fromJSON } from './fromJSON';\nimport { checkNumberOrArray } from './utils/checkNumberOrArray';\n/**\n * Create a jcamp from variables\n */\nexport function fromVariables(\n/** object of variables */\nvariables, options = {}) {\n    const { info = {}, meta = {}, forceNtuples = false } = options;\n    const jcampOptions = {\n        info,\n        meta,\n    };\n    const keys = Object.keys(variables).map((key) => key.toLowerCase());\n    if (!forceNtuples && keys.length === 2) {\n        const x = variables.x;\n        const xLabel = x.label || 'x';\n        if (variables.x.units) {\n            if (xLabel.includes(variables.x.units)) {\n                jcampOptions.info.xUnits = xLabel;\n            }\n            else {\n                jcampOptions.info.xUnits = `${xLabel} (${variables.x.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.xUnits = xLabel;\n        }\n        const y = variables.y;\n        const yLabel = y.label || 'y';\n        if (variables.y.units) {\n            if (yLabel.includes(variables.y.units)) {\n                jcampOptions.info.xUnits = yLabel;\n            }\n            else {\n                jcampOptions.info.yUnits = `${yLabel} (${variables.y.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.yUnits = yLabel;\n        }\n        const xData = variables.x.data;\n        const yData = variables.y.data;\n        checkNumberOrArray(xData);\n        checkNumberOrArray(yData);\n        return fromJSON({ x: xData, y: yData }, jcampOptions);\n    }\n    else {\n        return creatorNtuples(variables, options);\n    }\n}\n//# sourceMappingURL=fromVariables.js.map","import { fromVariables } from 'convert-to-jcamp';\nexport function toJcamps(analysis, options = {}) {\n    const jcamps = [];\n    for (const spectrum of analysis.spectra) {\n        jcamps.push(getJcamp(spectrum, options));\n    }\n    return jcamps;\n}\nfunction getJcamp(spectrum, options) {\n    const { info = {}, meta = {} } = options;\n    const jcampOptions = {\n        options: {},\n        info: {\n            title: spectrum.title,\n            dataType: spectrum.dataType,\n            ...info,\n        },\n        meta: { ...spectrum.meta, ...meta },\n    };\n    return fromVariables(spectrum.variables, jcampOptions);\n}\n//# sourceMappingURL=toJcamps.js.map","import { toJcamps } from './toJcamps.js';\n/**\n * Convert an Analysis to a single JCAMP string (all spectra joined).\n * @param analysis - The analysis to convert\n * @param options - Options for the JCAMP output\n * @returns JCAMP string\n */\nexport function toJcamp(analysis, options = {}) {\n    return toJcamps(analysis, options).join('\\n');\n}\n//# sourceMappingURL=toJcamp.js.map","import { getJSGraph } from './jsgraph/getJSGraph.js';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations.js';\nexport * from './AnalysesManager.js';\nexport * from './Analysis.js';\nexport * from './from/fromJcamp.js';\nexport * from './from/fromText.js';\nexport * from './to/toJcamp.js';\nexport * from './to/toJcamps.js';\nexport * from './to/toText.js';\nexport * from './to/toMatrix.js';\nexport * from './util/getNormalizedSpectrum.js';\nexport * from './util/peakPicking.js';\nexport * from './util/autoPeakPicking.js';\nexport * from './types/types.js';\nexport * from './types/NormalizedSpectrumOptions.js';\nexport * from './types/SpectrumSelector.js';\nexport { getReactPlotJSON } from './reactPlot/getReactPlotJSON.js';\nexport const JSGraph = {\n    getJSGraph,\n    getNormalizationAnnotations,\n};\n//# sourceMappingURL=index.js.map","/**\n * @typedef {object} Component\n * @property {number} kineticEnergy\n * @property {number} bindingEnergy\n * @property {number} intensity\n * @property {number} kind\n * @property {number} assignment\n */\n\n/**\n * Creates annotations for jsgraph that allows to display the result of component picking\n * @param {Array<Component>} components\n * @param {object} [options={}]\n * @param {string} [options.fillColor='green']\n * @param {string} [options.strokeColor='red']\n * @param {string} [options.showAssignment=true] - Display the assignment\n * @param {Function} [options.creationFct] - (annotation, component) => {}: callback allowing to add properties\n * @param {string} [options.mode='binding'] - 'binding' or 'kinetic'\n * @returns array\n */\n\nexport function getComponentsAnnotations(components, options = {}) {\n  const { fillColor = 'green', strokeColor = 'red', creationFct } = options;\n  let annotations = components.map((component) => {\n    let annotation = {\n      line: 1,\n      type: 'rect',\n      strokeColor,\n      strokeWidth: 0,\n      fillColor,\n    };\n    if (creationFct) {\n      creationFct(annotation, component);\n    }\n    return getAnnotation(annotation, component, options);\n  });\n  return annotations;\n}\n\nfunction getAnnotation(annotation, component, options = {}) {\n  const { showAssignment = true, mode = 'binding' } = options;\n  let labels = [];\n  let line = 0;\n\n  let energy =\n    mode === 'kinetic'\n      ? component.kineticEnergy.value\n      : component.bindingEnergy.value;\n  let intensity = component.intensity || '20px';\n  if (showAssignment) {\n    labels.push({\n      text: component.assignment,\n      size: '18px',\n      anchor: 'middle',\n      color: 'darkred',\n      position: {\n        x: energy,\n        y: intensity,\n        dy: `${23 + line * 14}px`,\n      },\n    });\n    line++;\n  }\n\n  annotation.labels = labels;\n  annotation.position = [\n    {\n      x: energy,\n      y: intensity,\n      dy: '10px',\n      dx: '-1px',\n    },\n    {\n      x: energy,\n      y: intensity,\n      dy: '5px',\n      dx: '1px',\n    },\n  ];\n  return annotation;\n}\n","/**\n * Creates annotations for jsgraph that allows to display the result of component picking\n * @param {Array<any>} regions\n * @param {object} [options={}]\n * @param {string} [options.fillColor='rgba(0,255,255,0.1)']\n * @param {string} [options.strokeColor='red']\n * @param {string} [options.mode='binding'] - 'binding' or 'kinetic'\n * @returns array\n */\n\nexport function getRegionsAnnotations(regions, options = {}) {\n  const { fillColor = 'rgba(0,255,255,0.1)', strokeColor = 'red' } = options;\n  regions = regions.filter((region) => region?.background);\n  const annotations = regions.map((region) => {\n    let annotation = {\n      line: 1,\n      type: 'rect',\n      strokeColor,\n      strokeWidth: 0,\n      fillColor,\n    };\n    return getAnnotation(annotation, region, options);\n  });\n  return annotations;\n}\n\nfunction getAnnotation(annotation, region, options = {}) {\n  const { mode = 'binding', showRegionID = true } = options;\n  let labels = [];\n  let line = 0;\n\n  const energyStart =\n    mode === 'kinetic'\n      ? region.background.parameters.kineticEnergyStart.value\n      : region.background.parameters.bindingEnergyStart.value;\n  const energyEnd =\n    mode === 'kinetic'\n      ? region.background.parameters.kineticEnergyEnd.value\n      : region.background.parameters.bindingEnergyEnd.value;\n\n  if (showRegionID) {\n    labels.push({\n      text: region.regionID,\n      size: '18px',\n      anchor: 'middle',\n      color: 'darkcyan',\n      position: {\n        x: (energyStart + energyEnd) / 2,\n        y: '0px',\n        dy: `${13 + line * 14}px`,\n      },\n    });\n    line++;\n  }\n\n  annotation.labels = labels;\n  annotation.position = [\n    {\n      x: energyStart,\n      y: '0px',\n    },\n    {\n      x: energyEnd,\n      y: '1000px',\n    },\n  ];\n  return annotation;\n}\n","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","import { ensureString } from 'ensure-string';\n\n/* eslint-disable no-unused-vars */\nconst experiments = [\n  'MAP',\n  'MAPDP',\n  'MAPSV',\n  'MAPSVDP',\n  'NORM',\n  'SDP',\n  'SDPSV',\n  'SEM',\n  'NOEXP',\n];\n\nconst technics = [\n  'AES diff',\n  'AES dir',\n  'EDX',\n  'ELS',\n  'FABMS',\n  'FABMS energy spec',\n  'ISS',\n  'SIMS',\n  'SIMS energy spec',\n  'SNMS',\n  'SNMS energy spec',\n  'UPS',\n  'XPS',\n  'XRF',\n];\n\nconst scans = ['REGULAR', 'IRREGULAR', 'MAPPING'];\n\nexport function parse(blob) {\n  const text = ensureString(blob);\n  const lines = text.split(/\\r?\\n/);\n  let pointer = 0;\n  let parsed = { header: {}, blocks: [], info: {} };\n  pointer = parseHeader(lines, parsed, pointer);\n  for (let i = 0; i < parsed.info.nbBlocks; i++) {\n    pointer = parseBlock(lines, parsed, pointer);\n  }\n  return parsed;\n}\n\nfunction parseHeader(lines, parsed, pointer) {\n  const { header, info } = parsed;\n  header['format identifier'] = lines[pointer++];\n  header['institution identifier'] = lines[pointer++];\n  header['instrument model identifier'] = lines[pointer++];\n  header['operator identifier'] = lines[pointer++];\n  header['experiment identifier'] = lines[pointer++];\n  info.nbComments = Number(lines[pointer++]);\n  header['number of lines in comment'] = info.nbComments;\n  const comments = [];\n  for (let i = 0; i < info.nbComments; i++) {\n    comments.push(lines[pointer++]);\n  }\n  header['comment line'] = comments.join('\\n');\n  header['experiment mode'] = lines[pointer++];\n  header['scan mode'] = lines[pointer++];\n  if (['MAP', 'MAPD', 'NORM', 'SDP'].includes(header['experiment mode'])) {\n    header['number of spectral regions'] = Number(lines[pointer++]);\n  }\n  if (['MAP', 'MAPD'].includes(header['experiment mode'])) {\n    header['number of analysis positions'] = Number(lines[pointer++]);\n    header['number of discrete x coordinates available in full map'] = Number(\n      lines[pointer++],\n    );\n    header['number of discrete y coordinates available in full map'] = Number(\n      lines[pointer++],\n    );\n  }\n  info.nbExperimentVariables = Number(lines[pointer++]);\n  const experimentVariables = [];\n  header['number of experimental variables'] = info.nbExperimentVariables;\n  for (let i = 0; i < info.nbExperimentVariables; i++) {\n    experimentVariables.push({\n      label: lines[pointer++],\n      unit: lines[pointer++],\n    });\n  }\n  header.experimentVariables = experimentVariables;\n\n  /*\n    If the values of any of the block parameters are the same in all of the\n    blocks their values may be sent in the first block and then omitted\n    from all subsequent blocks.\n    - n > 0 : the parameters listed are to be included\n    - n < 0 : the parameters listed are to be excluded\n    - n = 0 : all parameters are to be given in all blocks\n    A complete block contains 40 parts.\n    */\n  info.nbEntriesInclusionExclusion = Number(lines[pointer++]);\n  header['number of entries in parameter inclusion or exclusion list'] =\n    info.nbEntriesInclusionExclusion;\n  info.blockParametersincludes = new Array(40).fill(\n    info.nbEntriesInclusionExclusion <= 0,\n  );\n  for (let i = 0; i < Math.abs(info.nbEntriesInclusionExclusion); i++) {\n    info.blockParametersincludes[Number(lines[pointer++]) + 1] =\n      info.nbEntriesInclusionExclusion > 0;\n  }\n\n  header['number of manually entered items in block'] = Number(\n    lines[pointer++],\n  );\n  info.nbFutureUpgradeExperimentEntries = Number(lines[pointer++]);\n  header['number of future upgrade experiment entries'] =\n    info.nbFutureUpgradeExperimentEntries;\n  const futureUpgradeExperimentEntries = [];\n  for (let i = 0; i < info.nbFutureUpgradeExperimentEntries; i++) {\n    futureUpgradeExperimentEntries.push({\n      label: lines[pointer++],\n      unit: lines[pointer++],\n    });\n  }\n  header.futureUpgradeExperimentEntries = futureUpgradeExperimentEntries;\n  if (info.nbFutureUpgradeExperimentEntries !== 0) {\n    throw Error('unsupported future upgrade experiment entries');\n  }\n\n  header['number of future upgrade block entries'] = Number(lines[pointer++]);\n  if (header['number of future upgrade block entries'] !== 0) {\n    throw Error('unsupported future upgrade block entries');\n  }\n  info.nbBlocks = Number(lines[pointer++]);\n  header['number of blocks'] = info.nbBlocks;\n  return pointer;\n}\n\nfunction parseBlock(lines, parsed, pointer) {\n  const { blocks, header, info } = parsed;\n\n  const firstBlock = blocks[0];\n  const includes =\n    blocks.length === 0\n      ? new Array(40).fill(true)\n      : info.blockParametersincludes;\n\n  const block = {};\n  block['block identifier'] = lines[pointer++];\n  block['sample identifier'] = lines[pointer++];\n  block['year in full'] = includes[0]\n    ? Number(lines[pointer++])\n    : firstBlock['year in full'];\n  block.month = includes[1] ? Number(lines[pointer++]) : firstBlock.month;\n  block['day of month'] = includes[2]\n    ? Number(lines[pointer++])\n    : firstBlock['day of month'];\n  block.hours = includes[3] ? Number(lines[pointer++]) : firstBlock.hours;\n  block.minutes = includes[4] ? Number(lines[pointer++]) : firstBlock.minutes;\n  block.seconds = includes[5] ? Number(lines[pointer++]) : firstBlock.seconds;\n  block['number of hours in advance of Greenwich Mean Time'] = includes[6]\n    ? Number(lines[pointer++])\n    : firstBlock['number of hours in advance of Greenwich Mean Time'];\n\n  if (includes[7]) {\n    const nbComments = Number(lines[pointer++]);\n    block['number of lines in block comment'] = nbComments;\n    const comments = [];\n    for (let i = 0; i < nbComments; i++) {\n      comments.push(lines[pointer++]);\n    }\n    block.blockComment = comments.join('\\n');\n  } else {\n    block['number of lines in block comment'] =\n      firstBlock['number of lines in block comment'];\n    block.blockComment = firstBlock.blockComment;\n  }\n\n  block.technique = includes[8] ? lines[pointer++] : firstBlock.technique;\n  if (['MAP', 'MAPDP'].includes(header['experiment mode'])) {\n    block['x coordinate'] = includes[9]\n      ? Number(lines[pointer++])\n      : firstBlock['x coordinate'];\n    block['y coordinate'] = includes[9]\n      ? Number(lines[pointer++])\n      : firstBlock['y coordinate'];\n  }\n\n  if (includes[10]) {\n    let values = [];\n    for (let i = 0; i < header.experimentVariables.length; i++) {\n      values.push(lines[pointer++]);\n    }\n    block['value of experimental variable'] = values;\n  } else {\n    block['value of experimental variable'] =\n      firstBlock['value of experimental variable'];\n  }\n\n  block['analysis source label'] = includes[11]\n    ? lines[pointer++]\n    : firstBlock['analysis source label'];\n\n  if (\n    ['MAPDP', 'MAPSVDP', 'SDP', 'SDPSV'].includes(header['experiment mode']) ||\n    [\n      'SNMS energy spec',\n      'FABMS',\n      'FABMS energy spec',\n      'ISS',\n      'SIMS',\n      'SIMS energy spec',\n      'SNMS',\n    ].includes(block.technique)\n  ) {\n    block['sputtering ion or atom atomic number'] = includes[12]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering ion or atom atomic number'];\n    block['number of atoms in sputtering ion or atom particle'] = includes[12]\n      ? Number(lines[pointer++])\n      : firstBlock['number of atoms in sputtering ion or atom particle'];\n    block['sputtering ion or atom charge sign and number'] = includes[12]\n      ? lines[pointer++]\n      : firstBlock['sputtering ion or atom charge sign and number'];\n  }\n\n  block['analysis source characteristic energy'] = includes[13]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source characteristic energy'];\n\n  block['analysis source strength'] = includes[14]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source strength'];\n\n  block['analysis source beam width x'] = includes[15]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source beam width x'];\n  block['analysis source beam width y'] = includes[15]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source beam width y'];\n\n  if (\n    ['MAP', 'MAPDP', 'MAPSV', 'MAPSVDP', 'SEM'].includes(\n      header['experiment mode'],\n    )\n  ) {\n    block['field of view x'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['field of view x'];\n    block['field of view y'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['field of view y'];\n  }\n\n  if (['SEM', 'MAPSV', 'MAPSVDP'].includes(header['experiment mode'])) {\n    block['first linescan start x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan start x coordinate'];\n    block['first linescan start y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan start y coordinate'];\n    block['first linescan finish x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan finish x coordinate'];\n    block['first linescan finish y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan finish y coordinate'];\n    block['last linescan start x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan last x coordinate'];\n    block['last linescan start y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan last y coordinate'];\n  }\n\n  block['analysis source polar angle of incidence'] = includes[18]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source polar angle of incidence'];\n\n  block['analysis source azimuth'] = includes[19]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source azimuth'];\n\n  block['analyser mode'] = includes[20]\n    ? lines[pointer++]\n    : firstBlock['analyser mode'];\n\n  block['analyser pass energy or retard ratio or mass resolution'] =\n    includes[21]\n      ? Number(lines[pointer++])\n      : firstBlock['analyser pass energy or retard ratio or mass resolution'];\n\n  if (block.technique === 'AES diff') {\n    block['differential width'] = includes[22]\n      ? lines[pointer++]\n      : firstBlock['differential width'];\n  }\n\n  block['magnification of analyser transfer lens'] = includes[23]\n    ? Number(lines[pointer++])\n    : firstBlock['magnification of analyser transfer lens'];\n\n  block['analyser work function or acceptance energy of atom or ion'] =\n    includes[24]\n      ? Number(lines[pointer++])\n      : firstBlock[\n          'analyser work function or acceptance energy of atom or ion'\n        ];\n\n  block['target bias'] = includes[25]\n    ? Number(lines[pointer++])\n    : firstBlock['target bias'];\n\n  block['analysis width x'] = includes[26]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis width x'];\n  block['analysis width y'] = includes[26]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis width y'];\n\n  block['analyser axis take off polar angle'] = includes[27]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser axis take off polar angle'];\n  block['analyser axis take off azimuth'] = includes[27]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser axis take off azimuth'];\n\n  block['species label'] = includes[28]\n    ? lines[pointer++]\n    : firstBlock['species label'];\n\n  block['transition or charge state label'] = includes[29]\n    ? lines[pointer++]\n    : firstBlock['transition or charge state label'];\n  block['charge of detected particle'] = includes[29]\n    ? Number(lines[pointer++])\n    : firstBlock['charge of detected particle'];\n\n  if (header['scan mode'] !== 'REGULAR') {\n    throw Error('Only REGULAR scans are supported');\n  }\n\n  block['abscissa label'] = includes[30]\n    ? lines[pointer++]\n    : firstBlock['abscissa label'];\n  block['abscissa units'] = includes[30]\n    ? lines[pointer++]\n    : firstBlock['abscissa units'];\n\n  block['abscissa start'] = includes[30]\n    ? Number(lines[pointer++])\n    : firstBlock['abscissa start'];\n  block['abscissa increment'] = includes[30]\n    ? Number(lines[pointer++])\n    : firstBlock['abscissa increment'];\n\n  if (includes[31]) {\n    const nbCorrespondingVariables = Number(lines[pointer++]);\n    block['number of corresponding variables'] = nbCorrespondingVariables;\n    const correspondingVariables = [];\n    for (let i = 0; i < nbCorrespondingVariables; i++) {\n      correspondingVariables.push({\n        label: lines[pointer++],\n        unit: lines[pointer++],\n        array: [],\n      });\n    }\n    block.correspondingVariables = correspondingVariables;\n  } else {\n    block['number of corresponding variables'] =\n      firstBlock['number of corresponding variables'];\n    block.correspondingVariables = JSON.parse(\n      JSON.stringify(firstBlock.correspondingVariables),\n    );\n    block.correspondingVariables.array = [];\n  }\n\n  block['signal mode'] = includes[32]\n    ? lines[pointer++]\n    : firstBlock['signal mode'];\n\n  block['signal collection time'] = includes[33]\n    ? Number(lines[pointer++])\n    : firstBlock['signal collection time'];\n\n  block['number of scans to compile this block'] = includes[34]\n    ? Number(lines[pointer++])\n    : firstBlock['number of scans to compile this block'];\n\n  block['signal time correction'] = includes[35]\n    ? Number(lines[pointer++])\n    : firstBlock['signal time correction'];\n\n  if (\n    ['MAPDP', 'MAPSVDP', 'SDP', 'SDPSV'].includes(header['experiment mode']) &&\n    ['AES diff', 'AES dir', 'EDX', 'ELS', 'UPS', 'XPS', 'XRF'].includes(\n      block.technique,\n    )\n  ) {\n    block['sputtering source energy'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source energy'];\n    block['sputtering source beam current'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source beam current'];\n    block['sputtering source width x'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source width x'];\n    block['sputtering source width y'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source width y'];\n    block['sputtering source polar angle of incidence'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source polar angle of incidence'];\n    block['sputtering source azimuth'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source azimuth'];\n    block['sputtering mode'] = includes[36]\n      ? lines[pointer++]\n      : firstBlock['sputtering mode'];\n  }\n\n  block['sample normal polar angle of tilt'] = includes[37]\n    ? Number(lines[pointer++])\n    : firstBlock['sample normal polar angle of tilt'];\n  block['sample normal tilt azimuth'] = includes[37]\n    ? Number(lines[pointer++])\n    : firstBlock['sample normal tilt azimuth'];\n\n  block['sample rotation angle'] = includes[38]\n    ? Number(lines[pointer++])\n    : firstBlock['sample rotation angle'];\n\n  if (includes[39]) {\n    const nbAdditionalNumericalParameters = Number(lines[pointer++]);\n    block['number of additional numerical parameters'] =\n      nbAdditionalNumericalParameters;\n    const additionalNumericalParameters = [];\n    for (let i = 0; i < nbAdditionalNumericalParameters; i++) {\n      additionalNumericalParameters.push({\n        label: lines[pointer++],\n        unit: lines[pointer++],\n        value: lines[pointer++],\n      });\n    }\n    block.additionalNumericalParameters = additionalNumericalParameters;\n  } else {\n    block['number of additional numerical parameters'] =\n      firstBlock['number of additional numerical parameters'];\n    block.additionalNumericalParameters =\n      firstBlock.additionalNumericalParameters;\n  }\n\n  block.nbOrdinateValues = Number(lines[pointer++]);\n  for (let correspondingVariable of block.correspondingVariables) {\n    correspondingVariable.minimumOrdinateValue = Number(lines[pointer++]);\n    correspondingVariable.maximumOrdinateValue = Number(lines[pointer++]);\n  }\n  for (\n    let i = 0;\n    i < block.nbOrdinateValues / block.correspondingVariables.length;\n    i++\n  ) {\n    for (let correspondingVariable of block.correspondingVariables) {\n      correspondingVariable.array.push(Number(lines[pointer++]));\n    }\n  }\n\n  parsed.blocks.push(block);\n  return pointer;\n}\n","/**\n * Referencing: (energy calibration, typically performed on the binding energy scale)\n\" Calib M = 0 A = 3.111 ADD\"\n * means that the block should be shifted in binding energy by adding the difference A - M = 3.111 eV. M is not necessarily 0.\n * If the line contains BE, it means that the operation should be done on the BE scale,\n * alternatively, simply change the sign of the difference, here it would be -3,111, to be added to the data in the binding energy scale.\n * @param {object} calibrations \n * @param {string} line \n */\n\nexport function appendCalibration(calibrations, line) {\n  let calibration = {};\n  // Calib M = 281.1700 A = 284.8 BE ADD\n  // calibration may be present on many lines\n\n  let fields = line.match(\n    /Calib M = (?<measured>.*) A = (?<referenced>[^ ]*) (?<rest>.*)/,\n  );\n  if (!fields) {\n    throw new Error(`appendCalibration fails on: ${line}`);\n  }\n  if (!fields.groups.rest.includes('ADD')) {\n    throw new Error(\n      `appendCalibration fails because line does not contain ADD: ${line}`,\n    );\n  }\n  calibration.measured = Number(fields.groups.measured);\n  calibration.referenced = Number(fields.groups.referenced);\n  if (fields.groups.rest.includes('BE')) {\n    calibration.bindingEnergyShift =\n      calibration.referenced - calibration.measured;\n    calibration.kind = 'bindingEnergy';\n  } else {\n    calibration.bindingEnergyShift =\n      calibration.measured - calibration.referenced;\n    calibration.kind = 'kineticEnergy';\n  }\n  calibration.kineticEnergyShift = -calibration.bindingEnergyShift;\n  calibrations.push(calibration);\n}\n","/**\nFitting / each 'component' is a fitted lineshape, and can be from a different element while on a given orbital, for instance Ruthenium has peaks in the C1s region. The component will often have overlapping lineshapes\n\n\"CASA comp (*C 1s compA*) (*GL(30)*) Area 2447.211 1e-020 223027.03 -1 1 MFWHM 0.72109706 0.21 5.25 -1 1 Position 1203.2974 1198.6232 1207.3108 -1 1 RSF 0.278 MASS 12.011 INDEX -1 (*C 1s*) CONST (**) UNCORRECTEDRSF 0.278\"\nThis relates to the fittings (comments on the constraints later on):\n\ncomponentID: C 1s compA\nlineshape: GL(30)\narea: 2447.211\nareaConstraint lb: 1e-020\nareaConstraint ub: 223027.03\nfwhm: 0.72109706\nfwhmConstraint lb: 0.21\nfwhmConstraint ub: 5.25\nposition: 1203.2974 // in kinetic energy eV\npositionConstraint lb: 1198.6232 // in kinetic energy eV\npositionConstraint ub: 1207.3108 // in kinetic energy eV\nrelativeSensitivityFactor: 0.278\nmass: 12.011\nindex: -1\t// index allows to group different components to plot their manifold\nuncorrectedRSF: 0.278\n\nConstraints: the constraints can either be absolute, in which case the value to constraint is directly followed by the constaints, e.g.:\nPosition 1203.4193 1202.686 1207.3108\n\nor relative to another component, with this weird notation:\n\"Position 1202.261 0 0 2 -1.05017\"\nhere the position is separated from the constaints by \"0 0\", then \"2\" indicates the component to which is is constrained, here the 2nd component (third line of the comp, i.e, starting from 0). And the last number \"-1.05017\" is the shift (in the kinetic energy scale)\n*/\n\nexport function appendComponent(components, line) {\n  // CASA comp (*Mo 3d MoS2 2H*) (*LA(1.53,243)*) Area 230.36971 1e-020 2327991 -1 1 MFWHM 0.88528218 0.2 2 -1 1 Position 1257.22 1257.02 1257.22 -1 1 RSF 10.804667 MASS 95.9219 INDEX -1 (*Mo 3d*) CONST (**) UNCORRECTEDRSF 9.5\n  let component = {};\n  const componentRegex = new RegExp(\n    [\n      /CASA comp /,\n      /\\(\\*(?<componentID>.*)\\*\\) /,\n      /\\((?<shape>[^ ]*)\\) /,\n      /(?<area>Area .*)/,\n      /(?<fwhm>MFWHM .*)/,\n      /(?<position>Position .*) /,\n      /(?<rsf>RSF .*) /,\n      /(?<mass>MASS .*) /,\n      /(?<index>INDEX .*) /,\n      /(?<const>CONST .*) /,\n      /(?<uncorrectedRSF>UNCORRECTEDRSF.*)/,\n    ]\n      .map((r) => r.source)\n      .join(''),\n  );\n\n  let fields = line.match(componentRegex);\n  if (!fields) {\n    throw new Error(`appendComponent fails on: ${line}`);\n  }\n  component = {\n    componentID: fields.groups.componentID,\n    shape: parseShape(fields.groups.shape),\n    area: parseMultiplicationConstrain(fields.groups.area),\n    fwhm: parseMultiplicationConstrain(fields.groups.fwhm),\n    position: parseKEShiftConstrain(fields.groups.position),\n    relativeSensitivityFactor: parseRSF(fields.groups.rsf),\n    atomicMass: parseMass(fields.groups.mass),\n    groupIndex: parseIndex(fields.groups.index),\n    uncorrectedRSF: parseUncorrectedRSF(fields.groups.uncorrectedRSF),\n  };\n  components.push(component);\n}\n\nfunction parseShape(value) {\n  let parts = value\n    .replace(/[*(),]/g, ' ')\n    .trim()\n    .split(/ +/);\n  let options = {};\n  let kind;\n  switch (parts[0]) {\n    case 'LA': // http://www.casaxps.com/help_manual/manual_updates/LA_Lineshape.pdf\n      kind = 'lorentzianAsymmetric';\n      options.alpha = Number(parts[1]);\n      options.beta = Number(parts[2]);\n      if (parts[3] !== undefined) {\n        options.m = Number(parts[3]);\n      }\n      break;\n    case 'GL': // http://www.casaxps.com/help_manual/line_shapes.htm\n      kind = 'gaussianLorentzianProduct';\n      options.mixingRatio = Number(parts[1]);\n      break;\n    case 'SGL': // https://docs.mantidproject.org/nightly/fitting/fitfunctions/PseudoVoigt.html\n      kind = 'pseudoVoigt';\n      options.mu = Number(parts[1]);\n      break;\n    case 'LF':\n      kind = 'gaussianLorentzianSum';\n      break;\n    case 'LS':\n      kind = 'gaussianLorentzianSum';\n      break;\n    default:\n      throw Error(`appendComponent: unknown shape: ${parts[0]}`);\n  }\n  return {\n    kind,\n    options,\n  };\n}\nfunction parseMultiplicationConstrain(value) {\n  const parts = value.split(' ');\n  const result = {\n    value: Number(parts[1]),\n    lowerBound: Number(parts[2]),\n    upperBound: Number(parts[3]),\n  };\n  const constrain = {\n    linkedComponent: Number(parts[4]), // line number, no constrain if -1\n    factor: Number(parts[5]), // multiplication factor of the value in the linked line\n  };\n  if (constrain.linkedComponent >= 0) {\n    result.constrain = constrain;\n  }\n  return result;\n}\n\nfunction parseKEShiftConstrain(value) {\n  const parts = value.split(' ');\n  const result = {\n    value: Number(parts[1]),\n    lowerBound: Number(parts[2]),\n    upperBound: Number(parts[3]),\n  };\n  const constrain = {\n    linkedComponent: Number(parts[4]), // line number, no constrain if -1\n    shift: Number(parts[5]), // shift of the value in the linked line\n  };\n  if (constrain.linkedComponent >= 0) {\n    result.constrain = constrain;\n  }\n  return result;\n}\n\nfunction parseRSF(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\n\nfunction parseMass(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\n\nfunction parseIndex(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\n\nfunction parseUncorrectedRSF(value) {\n  let parts = value.split(' ');\n  return Number(parts[1]);\n}\n","/**\n * Regions are used to calculate the baseline.\n * There may be several overlapping regions.\n * We could just throw an error if it happens has this is likely just a bug from casaXPS to allow for this.\n * \"CASA region (*C 1s*) (*Shirley*) 1202.686 1208.454 0.278 2 0 0 115.3918 -450 0 0 (*C 1s*) 12.011 0 0.278\"\n *\n * THe last 3 numbers:  12.011 0 0.278, are the mass of the element (Carbon here), a separator\n * and the relative sensitivity factor of the element.\n *  Note that the relative sensitivity factor given within the background part ((*C 1s*) (*Shirley*) 1202.686 1208.454 0.278 2 0 0 115.3918 -450 0 0 (*C 1s*)), can be different than the last one.\n */\n\nexport function appendRegion(regions, line) {\n  // CASA region (*Mo 3d*) (*Shirley*) 1249.3343 1262.7065 10.804667 2 0 0 392.54541 -450 0 0 (*Mo 3d*) 95.9219 0 9.5\n  let fields = line.match(\n    /CASA region \\(\\*(?<regionID>.*)\\*\\) \\(\\*(?<backgroundType>.*)\\*\\) (?<backgroundOptions>.*) \\(\\*(?<regionBlockID>.*)\\*\\) (?<atomicMass>.*) (?<separator>.) (?<relativeSensitivityFactor>.*)/,\n  );\n\n  if (!fields) {\n    throw new Error(`appendRegion fails on: ${line}`);\n  }\n\n  let region = {\n    regionID: fields.groups.regionID,\n    block: {\n      regionBlockID: fields.groups.regionBlockID,\n      atomicMass: parseFloat(fields.groups.atomicMass),\n      relativeSensitivityFactor: parseFloat(\n        fields.groups.relativeSensitivityFactor,\n      ),\n    },\n    background: {\n      type: fields.groups.backgroundType,\n      parameters: parseBackgroundParameters(\n        fields.groups.backgroundType,\n        fields.groups.backgroundOptions,\n      ),\n      rawParameters: fields.groups.backgroundOptions,\n    },\n  };\n\n  regions.push(region);\n}\n\nfunction parseBackgroundParameters(type, string) {\n  const [\n    kineticEnergyStart,\n    kineticEnergyEnd,\n    relativeSensitivityFactor,\n    averageWidth,\n    startOffset,\n    endOffset,\n    ...otherParameters\n  ] = string\n    .split(/ +/)\n    .filter((field) => field.trim() !== '')\n    .map((field) => parseFloat(field));\n\n  // todo: strange we need to remove 1 from averageWidth\n  return {\n    kineticEnergyStart,\n    kineticEnergyEnd,\n    relativeSensitivityFactor,\n    averageWidth: averageWidth - 1,\n    startOffset,\n    endOffset,\n    crossSection: otherParameters,\n  };\n}\n","import { appendCalibration } from './casa/appendCalibration';\nimport { appendComponent } from './casa/appendComponent';\nimport { appendRegion } from './casa/appendRegion';\n\nexport function parseCASA(text) {\n  const casa = { regions: [], components: [], calibrations: [] };\n  const lines = text.split(/\\r?\\n/);\n  for (const line of lines) {\n    if (line.startsWith('CASA comp ')) {\n      appendComponent(casa.components, line);\n    }\n    if (line.startsWith('CASA region')) {\n      appendRegion(casa.regions, line);\n    }\n    if (line.startsWith('Calib')) {\n      appendCalibration(casa.calibrations, line);\n    }\n  }\n  return casa;\n}\n","export function mapComponents(\n  parsedBlockComment,\n  sourceEnergy = undefined,\n  energyUnits = 'eV',\n) {\n  const components = [];\n  if (parsedBlockComment.components) {\n    for (let component of parsedBlockComment.components) {\n      components.push({\n        ...component,\n        kineticEnergy: {\n          value: component.position.value,\n          units: energyUnits,\n        },\n        bindingEnergy: {\n          value: sourceEnergy - component.position.value,\n          units: energyUnits,\n        },\n        assignment: component.componentID,\n      });\n    }\n  }\n  return components;\n}\n","export function mapRegions(\n  parsedBlockComment,\n  sourceEnergy,\n  energyUnits = 'eV',\n) {\n  const regions = [];\n\n  if (parsedBlockComment.regions) {\n    for (let region of parsedBlockComment.regions) {\n      const newRegion = { ...region };\n      if (newRegion?.background?.parameters?.kineticEnergyStart) {\n        newRegion.background.parameters.kineticEnergyStart = {\n          value: newRegion.background.parameters.kineticEnergyStart,\n          units: energyUnits,\n        };\n        newRegion.background.parameters.bindingEnergyStart = {\n          value:\n            sourceEnergy -\n            newRegion.background.parameters.kineticEnergyStart.value,\n          units: energyUnits,\n        };\n      }\n      if (newRegion?.background?.parameters?.kineticEnergyEnd) {\n        newRegion.background.parameters.kineticEnergyEnd = {\n          value: newRegion.background.parameters.kineticEnergyEnd,\n          units: energyUnits,\n        };\n        newRegion.background.parameters.bindingEnergyEnd = {\n          value:\n            sourceEnergy -\n            newRegion.background.parameters.kineticEnergyEnd.value,\n          units: energyUnits,\n        };\n      }\n\n      regions.push(newRegion);\n    }\n  }\n\n  if (parsedBlockComment.regions) {\n    return parsedBlockComment.regions;\n  }\n  return regions;\n}\n","const XPS_REGEX =\n  /(?<element>[a-zA-Z]{0,3})\\s(?<shell>[1-6])(?<angularMomentum>[a-z])/;\nconst AUGER_REGEX = /(?<element>[a-zA-Z]{0,3})\\s(?<transition>[a-zA-Z]{0,3})/;\n\nexport function parseRegion(string) {\n  const result = {\n    name: string.trim(),\n    orbital: { element: null, shell: null, angularMomentum: null },\n    auger: { element: null, transition: null },\n  };\n  let xpsMatches = string.match(XPS_REGEX);\n  let augerMatches = string.match(AUGER_REGEX);\n  if (xpsMatches && xpsMatches.groups.shell) {\n    result.orbital.element = xpsMatches.groups.element;\n    result.orbital.shell = Number.parseInt(xpsMatches.groups.shell, 10);\n    result.orbital.angularMomentum = xpsMatches.groups.angularMomentum;\n  }\n  if (augerMatches && augerMatches.groups.transition) {\n    result.auger.element = augerMatches.groups.element;\n    result.auger.transition = augerMatches.groups.transition;\n  }\n\n  return result;\n}\n","import { parseCASA } from 'vamas';\n\nimport { mapComponents } from './mapComponents.js';\nimport { mapRegions } from './mapRegions.js';\nimport { parseRegion } from './parseRegion.js';\n\nexport function getNormalizedMeta(meta = {}) {\n  const normalized = {\n    region: parseRegion(meta['block identifier']),\n  };\n  const energyType = {\n    kind: meta['abscissa label']\n      .replace('energy', '')\n      .replaceAll(/\\s/g, '')\n      .toLowerCase(),\n    units: meta['abscissa units'],\n  };\n  normalized.energyType = energyType;\n\n  const source = {\n    label: meta['analysis source label'],\n    characteristicEnergy: {\n      value: meta['analysis source characteristic energy'],\n      units: 'eV',\n    },\n    beamWidthX: {\n      value: meta['analysis source beam width x'],\n      units: 'um',\n    },\n    beamWidthY: {\n      value: meta['analysis source beam width y'],\n      units: 'um',\n    },\n  };\n  normalized.analysisSource = source;\n  normalized.speciesLabel = meta['species label'];\n  const parsedCASAs = parseCASA(meta.blockComment);\n  normalized.components = mapComponents(\n    parsedCASAs,\n    source.characteristicEnergy.value,\n  );\n  normalized.regions = mapRegions(\n    parsedCASAs,\n    source.characteristicEnergy.value,\n  );\n\n  const increment = meta['abscissa increment'];\n  normalized.from = meta['abscissa start'];\n  normalized.to =\n    meta['abscissa start'] + increment * (meta.nbOrdinateValues - 1);\n\n  normalized.analyserMode = meta['analyser mode'];\n\n  return normalized;\n}\n","import { Analysis } from 'common-spectrum';\nimport { ensureString } from 'ensure-string';\nimport { parse } from 'vamas';\n\nimport { getNormalizedMeta } from './getNormalizedMeta.js';\n\n/**\n * Returns an Analysis from a VAMAS text file\n * @param {ArrayBuffer|string} [text] - the vamas text file\n */\nexport function fromVamas(text) {\n  text = ensureString(text);\n  let parsed = parse(text);\n  let header = parsed.header;\n  let blocks = parsed.blocks;\n  let title = header['experiment identifier'];\n  let analysis = new Analysis();\n  for (let block of blocks) {\n    let sourceEnergy = block['analysis source characteristic energy'];\n\n    let yVariable = block.correspondingVariables[0];\n    let yLabel = yVariable.label;\n    let yValues = yVariable.array;\n\n    let xLabel = block['abscissa label'];\n    let xUnits = block['abscissa units'];\n    let xStart = block['abscissa start'];\n    let xIncrement = block['abscissa increment'];\n    let xValues = new Float64Array(yValues.length);\n    for (let i = 0; i < yValues.length; i++) {\n      xValues[i] = xStart + xIncrement * i;\n    }\n    // currently we take the first corresponding variables\n\n    let meta = {};\n    for (let key in block) {\n      if (typeof block[key] === 'string' || typeof block[key] === 'number') {\n        meta[key] = block[key];\n      }\n    }\n\n    for (let key in header) {\n      if (typeof header[key] === 'string' || typeof header[key] === 'number') {\n        meta[key] = header[key];\n      }\n    }\n\n    meta.cheminfo = { meta: getNormalizedMeta(meta) };\n\n    const variables = {};\n    if (xLabel === 'Kinetic energy' && sourceEnergy) {\n      // we will calculate binding energy\n      variables.x = {\n        data: xValues.map((value) => sourceEnergy - value).toReversed(),\n        label: 'Binding energy',\n        units: xUnits,\n        type: 'DEPENDENT',\n      };\n      variables.y = {\n        data: yValues.toReversed(),\n        label: yLabel,\n        type: 'DEPENDENT',\n      };\n      variables.k = {\n        data: xValues.toReversed(),\n        label: xLabel,\n        units: xUnits,\n        type: 'INDEPENDENT',\n      };\n    } else {\n      variables.x = {\n        data: xValues,\n        label: xLabel,\n        units: xUnits,\n        type: 'INDEPENDENT',\n      };\n      variables.y = {\n        data: yValues,\n        label: yLabel,\n        type: 'DEPENDENT',\n      };\n    }\n\n    analysis.pushSpectrum(variables, {\n      dataType: 'XPS',\n      title,\n      meta,\n    });\n  }\n\n  return analysis;\n}\n","/**\n * Compute the `[left, right]` intervals around each peak by locating\n * consecutive extrema (minima / maxima) of the first derivative.\n * @param y - Spectrum y values.\n * @param x - Spectrum x values.\n * @param dY - First derivative of `y`.\n * @param dX - Sign of the x step (positive for increasing x, negative otherwise).\n * @returns `intervalL` / `intervalR` arrays defining each peak's inflection-point bounds.\n */\nexport function getMinMaxIntervalsDy(y, x, dY, dX) {\n    let lastMax = null;\n    let lastMin = null;\n    const intervalL = [];\n    const intervalR = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n    }\n    return { intervalL, intervalR };\n}\n//# sourceMappingURL=getMinMaxIntervals.js.map","/**\n * Find the `minData` index closest to the center of one interval,\n * above the intensity threshold and bounded by the half-width.\n * @param options - Interval, candidate indices and spectrum data.\n * @returns The picked candidate (`possible`) and the last visited index (`lastIndex`).\n */\nexport function tryMatchOneIntervalWithMinData(options) {\n    const { x, lastK, minData, yThreshold, intervalWidth, intervalCenter, yData, } = options;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let possible = -1;\n    let newLastIndex = lastK;\n    for (let k = newLastIndex + 1; k < minData.length; k++) {\n        const centerIndex = minData[k];\n        if (yData[centerIndex] <= yThreshold) {\n            continue;\n        }\n        const deltaX = x[centerIndex];\n        const currentDistance = Math.abs(deltaX - intervalCenter);\n        if (currentDistance < intervalWidth) {\n            if (currentDistance < minDistance) {\n                possible = k;\n            }\n            newLastIndex = k;\n        }\n        if (currentDistance >= minDistance)\n            break;\n        minDistance = currentDistance;\n    }\n    return { lastIndex: newLastIndex, possible };\n}\n//# sourceMappingURL=tryMatchOneIntervalWithMinData.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\n/**\n * Peak detection that combines first-derivative zero-crossings and\n * second-derivative local minima to find peaks inside each interval.\n * @param input - Spectrum values together with its first and second derivatives.\n * @returns The detected peaks.\n */\nexport function autoAlgorithm(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const crossDy = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < 0 && dY[i + 1] > 0) || (dY[i] > 0 && dY[i + 1] < 0)) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        // Handle exact zero\n        if (dY[i] === 0 &&\n            dY[i] < Math.abs(dY[i + 1]) &&\n            dY[i] < Math.abs(dY[i - 1])) {\n            crossDy.push(i);\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    const peaks = [];\n    let lastK = -1;\n    let lastJ = -1;\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        let yIndex = -1;\n        let match = tryMatchOneIntervalWithMinData({\n            x,\n            yData,\n            lastK,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            minData: crossDy,\n        });\n        lastK = match.lastIndex;\n        if (match.possible !== -1) {\n            yIndex = crossDy[match.possible];\n        }\n        else {\n            match = tryMatchOneIntervalWithMinData({\n                x,\n                yData,\n                yThreshold,\n                lastK: lastJ,\n                intervalWidth,\n                intervalCenter,\n                minData: minddY,\n            });\n            if (match.possible !== -1) {\n                yIndex = minddY[match.possible];\n            }\n            lastJ = match.lastIndex;\n        }\n        if (yIndex !== -1) {\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[yIndex],\n                y: y[yIndex],\n                width,\n                index: yIndex,\n                ddY: ddY[yIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n    }\n    return peaks;\n}\n//# sourceMappingURL=autoAlgorithm.js.map","import { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\n/**\n * Build the list of detected peaks by matching each `[left, right]` interval\n * with the best candidate index from `minData`.\n * @param options - Intervals, candidate indices and spectrum data.\n * @returns The detected peaks.\n */\nexport function getPeakFromIntervals(options) {\n    let lastK = -1;\n    const peaks = [];\n    const { x, ddY, yData, yThreshold, intervalR, intervalL, minData } = options;\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        const { possible, lastIndex } = tryMatchOneIntervalWithMinData({\n            x,\n            lastK,\n            minData,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            yData,\n        });\n        if (possible !== -1) {\n            const centerIndex = minData[possible];\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[centerIndex],\n                y: yData[centerIndex],\n                width,\n                index: centerIndex,\n                ddY: ddY[centerIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n        lastK = lastIndex;\n    }\n    return peaks;\n}\n//# sourceMappingURL=getPeaksFromIntervals.js.map","/**\n * Finds the indices where the first derivative crosses zero (sign change),\n * which are potential peak positions. This function does not detect zero-crossings\n * in regions with consecutive zero values in the derivative (flat regions).\n * @param input - Object containing the y values and their first derivative (dY).\n * @returns Array of indices where the first derivative crosses zero (excluding consecutive zeros).\n */\nexport function xGetCrossZeroPoints(input) {\n    const { y, dY } = input;\n    const crossDy = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if (isLessAndGreaterThanZero(dY[i], dY[i + 1])) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        else if (\n        // Handle exact zero\n        dY[i] === 0 &&\n            isLessAndGreaterThanZero(dY[i - 1], dY[i + 1])) {\n            crossDy.push(i);\n        }\n    }\n    return crossDy;\n}\nfunction isLessAndGreaterThanZero(back, next) {\n    return (back < 0 && next > 0) || (back > 0 && next < 0);\n}\n//# sourceMappingURL=xGetCrossZeroPoints.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\nimport { xGetCrossZeroPoints } from \"./xGetCrossZeroPoints.js\";\n/**\n * Detect peaks using zero-crossings of the first derivative.\n * @param input - Spectrum values and its first/second derivatives.\n * @returns The detected peaks.\n */\nexport function firstDerivative(input) {\n    const { y, x, dY, dX, yData, yThreshold, ddY } = input;\n    const crossDy = xGetCrossZeroPoints(input);\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    return getPeakFromIntervals({\n        minData: crossDy,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=firstDerivative.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\n/**\n * Detect peaks using local minima of the second derivative (inflection points).\n * @param input - Spectrum values and its first/second derivatives.\n * @returns The detected peaks.\n */\nexport function secondDerivative(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < y.length - 1; ++i) {\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    return getPeakFromIntervals({\n        minData: minddY,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=secondDerivative.js.map","/**\n * Refine the `x` and `y` coordinates of each peak by running a quadratic\n * interpolation over the peak and its 3 closest neighbors.\n * The correction is performed in place.\n * @param data - Object with `x` and `y` arrays.\n * @param peaks - Peaks to refine (mutated in place).\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else if (y[currentIndex + 1] >= y[currentIndex] &&\n            y[currentIndex + 1] >= y[currentIndex + 2]) {\n            currentIndex++;\n        }\n        else if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n            y[currentIndex - 2] >= y[currentIndex - 1]) {\n            currentIndex -= 2;\n        }\n        else if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n            y[currentIndex + 2] >= y[currentIndex + 3]) {\n            currentIndex += 2;\n        }\n        // Quadratic interpolation on log-intensities to refine the peak top.\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            const alpha = Math.log10(y[currentIndex - 1]);\n            const beta = Math.log10(y[currentIndex]);\n            const gamma = Math.log10(y[currentIndex + 1]);\n            const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            const xCurrent = x[currentIndex];\n            const xPrevious = x[currentIndex - 1];\n            peak.x = xCurrent + (xCurrent - xPrevious) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotonic, xMaxAbsoluteValue, xMaxValue, xMinMaxValues, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { autoAlgorithm } from \"./algorithms/autoAlgorithm.js\";\nimport { firstDerivative } from \"./algorithms/firstDerivative.js\";\nimport { secondDerivative } from \"./algorithms/secondDerivative.js\";\nimport { optimizeTop } from \"./utils/optimizeTop.js\";\n/**\n * Global spectra deconvolution.\n * @param data - Object with `x` and `y` arrays. `x` must be monotone increasing.\n * @param options - Peak detection options.\n * @returns The detected peaks, sorted by ascending `x`.\n */\nexport function gsd(data, options = {}) {\n    let { noiseLevel } = options;\n    const { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, smoothY = false, maxCriteria = true, maxAbsoluteRatio = 0, minMaxRatio = 0.00025, realTopDetection = false, peakDetectionAlgorithm = 'second', } = options;\n    if (maxAbsoluteRatio < 0 || maxAbsoluteRatio > 1) {\n        throw new Error('maxAbsoluteRatio must be between 0 and 1');\n    }\n    const { x } = data;\n    let { y } = data;\n    if (xIsMonotonic(x) !== 1) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    // Copy so the `maxCriteria` / clipping loops below don't mutate the caller's array.\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    const isEquallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (isEquallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else if (!maxCriteria) {\n        noiseLevel *= -1;\n    }\n    if (!maxCriteria) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] = -y[i];\n        }\n    }\n    const maxAbsoluteValue = maxAbsoluteRatio > 0 ? maxAbsoluteRatio * xMaxAbsoluteValue(y) : noiseLevel;\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    const xValue = isEquallySpaced ? x[1] - x[0] : x;\n    const yData = smoothY\n        ? sgg(y, xValue, {\n            ...sgOptions,\n            derivative: 0,\n        })\n        : y;\n    const { min: minY, max: maxY } = xMinMaxValues(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const dY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 1,\n    });\n    const ddY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 2,\n    });\n    const yThreshold = xMaxValue([\n        noiseLevel,\n        minY + (maxY - minY) * minMaxRatio,\n        maxAbsoluteValue,\n    ]);\n    const dX = x[1] - x[0];\n    const peakData = { x, y, yData, dY, ddY, dX, yThreshold };\n    let peaks = [];\n    if (peakDetectionAlgorithm === 'first') {\n        peaks = firstDerivative(peakData);\n    }\n    else if (peakDetectionAlgorithm === 'second') {\n        peaks = secondDerivative(peakData);\n    }\n    else {\n        peaks = autoAlgorithm(peakData);\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    for (const peak of peaks) {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    }\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","import { gsd } from 'ml-gsd';\n\n/**\n * Allow\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {object} [options.gsd={}] - global spectra deconvolution options. Available options: http://mljs.github.io/global-spectral-deconvolution/#gsd\n * @returns {Array} Array of peaks\n */\n\nexport function peakPicking(spectrum, options = {}) {\n  const { gsd: gsdOptions = { realTopDetection: true } } = options;\n  let data = {\n    x: spectrum.variables.x.data,\n    y: spectrum.variables.y.data,\n  };\n  let peaks = gsd(data, gsdOptions);\n\n  return peaks;\n}\n","/**\n * Array of object containing element, orbital and be\n */\nexport const references = [\n  { element: 'H', orbital: '1s', be: 14 },\n  { element: 'He', orbital: '1s', be: 25 },\n  { element: 'Li', orbital: '1s', be: 55 },\n  { element: 'Be', orbital: '1s', be: 111 },\n  { element: 'B', orbital: '1s', be: 188 },\n  { element: 'C', orbital: '1s', be: 284 },\n  { element: 'N', orbital: '1s', be: 399 },\n  { element: 'O', orbital: '1s', be: 532 },\n  { element: 'F', orbital: '1s', be: 686 },\n  { element: 'Ne', orbital: '1s', be: 867 },\n  { element: 'Na', orbital: '1s', be: 1072 },\n  { element: 'O', orbital: '2s', be: 24 },\n  { element: 'F', orbital: '2s', be: 31 },\n  { element: 'Ne', orbital: '2s', be: 45 },\n  { element: 'Na', orbital: '2s', be: 63 },\n  { element: 'Mg', orbital: '2s', be: 89 },\n  { element: 'Al', orbital: '2s', be: 118 },\n  { element: 'Si', orbital: '2s', be: 149 },\n  { element: 'P', orbital: '2s', be: 189 },\n  { element: 'S', orbital: '2s', be: 229 },\n  { element: 'Cl', orbital: '2s', be: 270 },\n  { element: 'Ar', orbital: '2s', be: 320 },\n  { element: 'K', orbital: '2s', be: 377 },\n  { element: 'Ca', orbital: '2s', be: 438 },\n  { element: 'Sc', orbital: '2s', be: 500 },\n  { element: 'Ti', orbital: '2s', be: 564 },\n  { element: 'V', orbital: '2s', be: 628 },\n  { element: 'Cr', orbital: '2s', be: 695 },\n  { element: 'Mn', orbital: '2s', be: 769 },\n  { element: 'Fe', orbital: '2s', be: 846 },\n  { element: 'Co', orbital: '2s', be: 926 },\n  { element: 'Ni', orbital: '2s', be: 1008 },\n  { element: 'Cu', orbital: '2s', be: 1096 },\n  { element: 'Zn', orbital: '2s', be: 1194 },\n  { element: 'B', orbital: '2p1/2', be: 5 },\n  { element: 'C', orbital: '2p1/2', be: 7 },\n  { element: 'N', orbital: '2p1/2', be: 9 },\n  { element: 'O', orbital: '2p1/2', be: 7 },\n  { element: 'F', orbital: '2p1/2', be: 9 },\n  { element: 'Ne', orbital: '2p1/2', be: 18 },\n  { element: 'Na', orbital: '2p1/2', be: 31 },\n  { element: 'Mg', orbital: '2p1/2', be: 52 },\n  { element: 'Al', orbital: '2p1/2', be: 74 },\n  { element: 'Si', orbital: '2p1/2', be: 100 },\n  { element: 'P', orbital: '2p1/2', be: 136 },\n  { element: 'S', orbital: '2p1/2', be: 165 },\n  { element: 'Cl', orbital: '2p1/2', be: 202 },\n  { element: 'Ar', orbital: '2p1/2', be: 247 },\n  { element: 'K', orbital: '2p1/2', be: 297 },\n  { element: 'Ca', orbital: '2p1/2', be: 350 },\n  { element: 'Sc', orbital: '2p1/2', be: 407 },\n  { element: 'Ti', orbital: '2p1/2', be: 461 },\n  { element: 'V', orbital: '2p1/2', be: 520 },\n  { element: 'Cr', orbital: '2p1/2', be: 584 },\n  { element: 'Mn', orbital: '2p1/2', be: 652 },\n  { element: 'Fe', orbital: '2p1/2', be: 723 },\n  { element: 'Co', orbital: '2p1/2', be: 794 },\n  { element: 'Ni', orbital: '2p1/2', be: 872 },\n  { element: 'Cu', orbital: '2p1/2', be: 951 },\n  { element: 'Zn', orbital: '2p1/2', be: 1044 },\n  { element: 'Ga', orbital: '2p1/2', be: 1143 },\n  { element: 'Ge', orbital: '2p1/2', be: 1249 },\n  { element: 'B', orbital: '2p3/2', be: 5 },\n  { element: 'C', orbital: '2p3/2', be: 7 },\n  { element: 'N', orbital: '2p3/2', be: 9 },\n  { element: 'O', orbital: '2p3/2', be: 7 },\n  { element: 'F', orbital: '2p3/2', be: 9 },\n  { element: 'Ne', orbital: '2p3/2', be: 18 },\n  { element: 'Na', orbital: '2p3/2', be: 31 },\n  { element: 'Mg', orbital: '2p3/2', be: 52 },\n  { element: 'Al', orbital: '2p3/2', be: 73 },\n  { element: 'Si', orbital: '2p3/2', be: 99 },\n  { element: 'P', orbital: '2p3/2', be: 135 },\n  { element: 'S', orbital: '2p3/2', be: 164 },\n  { element: 'Cl', orbital: '2p3/2', be: 200 },\n  { element: 'Ar', orbital: '2p3/2', be: 245 },\n  { element: 'K', orbital: '2p3/2', be: 294 },\n  { element: 'Ca', orbital: '2p3/2', be: 347 },\n  { element: 'Sc', orbital: '2p3/2', be: 402 },\n  { element: 'Ti', orbital: '2p3/2', be: 455 },\n  { element: 'V', orbital: '2p3/2', be: 513 },\n  { element: 'Cr', orbital: '2p3/2', be: 575 },\n  { element: 'Mn', orbital: '2p3/2', be: 641 },\n  { element: 'Fe', orbital: '2p3/2', be: 710 },\n  { element: 'Co', orbital: '2p3/2', be: 779 },\n  { element: 'Ni', orbital: '2p3/2', be: 855 },\n  { element: 'Cu', orbital: '2p3/2', be: 931 },\n  { element: 'Zn', orbital: '2p3/2', be: 1021 },\n  { element: 'Ga', orbital: '2p3/2', be: 1116 },\n  { element: 'Ge', orbital: '2p3/2', be: 1217 },\n  { element: 'B', orbital: '2p', be: 5 },\n  { element: 'C', orbital: '2p', be: 7 },\n  { element: 'N', orbital: '2p', be: 9 },\n  { element: 'O', orbital: '2p', be: 7 },\n  { element: 'F', orbital: '2p', be: 9 },\n  { element: 'Ne', orbital: '2p', be: 18 },\n  { element: 'Na', orbital: '2p', be: 31 },\n  { element: 'Mg', orbital: '2p', be: 52 },\n  { element: 'Al', orbital: '2p', be: 73 },\n  { element: 'Si', orbital: '2p', be: 99 },\n  { element: 'P', orbital: '2p', be: 135 },\n  { element: 'S', orbital: '2p', be: 164 },\n  { element: 'Cl', orbital: '2p', be: 200 },\n  { element: 'Ar', orbital: '2p', be: 245 },\n  { element: 'K', orbital: '2p', be: 294 },\n  { element: 'Ca', orbital: '2p', be: 347 },\n  { element: 'Sc', orbital: '2p', be: 402 },\n  { element: 'Ti', orbital: '2p', be: 455 },\n  { element: 'V', orbital: '2p', be: 513 },\n  { element: 'Cr', orbital: '2p', be: 575 },\n  { element: 'Mn', orbital: '2p', be: 641 },\n  { element: 'Fe', orbital: '2p', be: 710 },\n  { element: 'Co', orbital: '2p', be: 779 },\n  { element: 'Ni', orbital: '2p', be: 855 },\n  { element: 'Cu', orbital: '2p', be: 931 },\n  { element: 'Zn', orbital: '2p', be: 1021 },\n  { element: 'Ga', orbital: '2p', be: 1116 },\n  { element: 'Ge', orbital: '2p', be: 1217 },\n  { element: 'Na', orbital: '3s', be: 1 },\n  { element: 'Mg', orbital: '3s', be: 2 },\n  { element: 'Al', orbital: '3s', be: 1 },\n  { element: 'Si', orbital: '3s', be: 8 },\n  { element: 'P', orbital: '3s', be: 16 },\n  { element: 'S', orbital: '3s', be: 16 },\n  { element: 'Cl', orbital: '3s', be: 18 },\n  { element: 'Ar', orbital: '3s', be: 25 },\n  { element: 'K', orbital: '3s', be: 34 },\n  { element: 'Ca', orbital: '3s', be: 44 },\n  { element: 'Sc', orbital: '3s', be: 54 },\n  { element: 'Ti', orbital: '3s', be: 59 },\n  { element: 'V', orbital: '3s', be: 66 },\n  { element: 'Cr', orbital: '3s', be: 74 },\n  { element: 'Mn', orbital: '3s', be: 84 },\n  { element: 'Fe', orbital: '3s', be: 95 },\n  { element: 'Co', orbital: '3s', be: 101 },\n  { element: 'Ni', orbital: '3s', be: 112 },\n  { element: 'Cu', orbital: '3s', be: 120 },\n  { element: 'Zn', orbital: '3s', be: 137 },\n  { element: 'Ga', orbital: '3s', be: 158 },\n  { element: 'Ge', orbital: '3s', be: 181 },\n  { element: 'As', orbital: '3s', be: 204 },\n  { element: 'Se', orbital: '3s', be: 232 },\n  { element: 'Br', orbital: '3s', be: 257 },\n  { element: 'Kr', orbital: '3s', be: 289 },\n  { element: 'Rb', orbital: '3s', be: 322 },\n  { element: 'Sr', orbital: '3s', be: 358 },\n  { element: 'Y', orbital: '3s', be: 395 },\n  { element: 'Zr', orbital: '3s', be: 431 },\n  { element: 'Nb', orbital: '3s', be: 469 },\n  { element: 'Mo', orbital: '3s', be: 505 },\n  { element: 'Tc', orbital: '3s', be: 544 },\n  { element: 'Ru', orbital: '3s', be: 585 },\n  { element: 'Rh', orbital: '3s', be: 627 },\n  { element: 'Pd', orbital: '3s', be: 670 },\n  { element: 'Ag', orbital: '3s', be: 717 },\n  { element: 'Cd', orbital: '3s', be: 770 },\n  { element: 'In', orbital: '3s', be: 826 },\n  { element: 'Sn', orbital: '3s', be: 884 },\n  { element: 'Sb', orbital: '3s', be: 944 },\n  { element: 'Te', orbital: '3s', be: 1006 },\n  { element: 'I', orbital: '3s', be: 1072 },\n  { element: 'Xe', orbital: '3s', be: 1145 },\n  { element: 'Cs', orbital: '3s', be: 1217 },\n  { element: 'Si', orbital: '3p1/2', be: 3 },\n  { element: 'P', orbital: '3p1/2', be: 10 },\n  { element: 'S', orbital: '3p1/2', be: 8 },\n  { element: 'Cl', orbital: '3p1/2', be: 7 },\n  { element: 'Ar', orbital: '3p1/2', be: 12 },\n  { element: 'K', orbital: '3p1/2', be: 18 },\n  { element: 'Ca', orbital: '3p1/2', be: 26 },\n  { element: 'Sc', orbital: '3p1/2', be: 32 },\n  { element: 'Ti', orbital: '3p1/2', be: 34 },\n  { element: 'V', orbital: '3p1/2', be: 38 },\n  { element: 'Cr', orbital: '3p1/2', be: 43 },\n  { element: 'Mn', orbital: '3p1/2', be: 49 },\n  { element: 'Fe', orbital: '3p1/2', be: 56 },\n  { element: 'Co', orbital: '3p1/2', be: 60 },\n  { element: 'Ni', orbital: '3p1/2', be: 68 },\n  { element: 'Cu', orbital: '3p1/2', be: 74 },\n  { element: 'Zn', orbital: '3p1/2', be: 87 },\n  { element: 'Ga', orbital: '3p1/2', be: 107 },\n  { element: 'Ge', orbital: '3p1/2', be: 129 },\n  { element: 'As', orbital: '3p1/2', be: 147 },\n  { element: 'Se', orbital: '3p1/2', be: 168 },\n  { element: 'Br', orbital: '3p1/2', be: 189 },\n  { element: 'Kr', orbital: '3p1/2', be: 223 },\n  { element: 'Rb', orbital: '3p1/2', be: 248 },\n  { element: 'Sr', orbital: '3p1/2', be: 280 },\n  { element: 'Y', orbital: '3p1/2', be: 313 },\n  { element: 'Zr', orbital: '3p1/2', be: 345 },\n  { element: 'Nb', orbital: '3p1/2', be: 379 },\n  { element: 'Mo', orbital: '3p1/2', be: 410 },\n  { element: 'Tc', orbital: '3p1/2', be: 445 },\n  { element: 'Ru', orbital: '3p1/2', be: 483 },\n  { element: 'Rh', orbital: '3p1/2', be: 521 },\n  { element: 'Pd', orbital: '3p1/2', be: 559 },\n  { element: 'Ag', orbital: '3p1/2', be: 602 },\n  { element: 'Cd', orbital: '3p1/2', be: 651 },\n  { element: 'In', orbital: '3p1/2', be: 702 },\n  { element: 'Sn', orbital: '3p1/2', be: 757 },\n  { element: 'Sb', orbital: '3p1/2', be: 812 },\n  { element: 'Te', orbital: '3p1/2', be: 870 },\n  { element: 'I', orbital: '3p1/2', be: 931 },\n  { element: 'Xe', orbital: '3p1/2', be: 999 },\n  { element: 'Cs', orbital: '3p1/2', be: 1065 },\n  { element: 'Ba', orbital: '3p1/2', be: 1137 },\n  { element: 'La', orbital: '3p1/2', be: 1205 },\n  { element: 'Si', orbital: '3p3/2', be: 3 },\n  { element: 'P', orbital: '3p3/2', be: 10 },\n  { element: 'S', orbital: '3p3/2', be: 8 },\n  { element: 'Cl', orbital: '3p3/2', be: 7 },\n  { element: 'Ar', orbital: '3p3/2', be: 12 },\n  { element: 'K', orbital: '3p3/2', be: 18 },\n  { element: 'Ca', orbital: '3p3/2', be: 26 },\n  { element: 'Sc', orbital: '3p3/2', be: 32 },\n  { element: 'Ti', orbital: '3p3/2', be: 34 },\n  { element: 'V', orbital: '3p3/2', be: 38 },\n  { element: 'Cr', orbital: '3p3/2', be: 43 },\n  { element: 'Mn', orbital: '3p3/2', be: 49 },\n  { element: 'Fe', orbital: '3p3/2', be: 56 },\n  { element: 'Co', orbital: '3p3/2', be: 60 },\n  { element: 'Ni', orbital: '3p3/2', be: 68 },\n  { element: 'Cu', orbital: '3p3/2', be: 74 },\n  { element: 'Zn', orbital: '3p3/2', be: 87 },\n  { element: 'Ga', orbital: '3p3/2', be: 103 },\n  { element: 'Ge', orbital: '3p3/2', be: 122 },\n  { element: 'As', orbital: '3p3/2', be: 141 },\n  { element: 'Se', orbital: '3p3/2', be: 162 },\n  { element: 'Br', orbital: '3p3/2', be: 182 },\n  { element: 'Kr', orbital: '3p3/2', be: 214 },\n  { element: 'Rb', orbital: '3p3/2', be: 239 },\n  { element: 'Sr', orbital: '3p3/2', be: 269 },\n  { element: 'Y', orbital: '3p3/2', be: 301 },\n  { element: 'Zr', orbital: '3p3/2', be: 331 },\n  { element: 'Nb', orbital: '3p3/2', be: 363 },\n  { element: 'Mo', orbital: '3p3/2', be: 393 },\n  { element: 'Tc', orbital: '3p3/2', be: 425 },\n  { element: 'Ru', orbital: '3p3/2', be: 461 },\n  { element: 'Rh', orbital: '3p3/2', be: 496 },\n  { element: 'Pd', orbital: '3p3/2', be: 531 },\n  { element: 'Ag', orbital: '3p3/2', be: 571 },\n  { element: 'Cd', orbital: '3p3/2', be: 617 },\n  { element: 'In', orbital: '3p3/2', be: 664 },\n  { element: 'Sn', orbital: '3p3/2', be: 715 },\n  { element: 'Sb', orbital: '3p3/2', be: 766 },\n  { element: 'Te', orbital: '3p3/2', be: 819 },\n  { element: 'I', orbital: '3p3/2', be: 875 },\n  { element: 'Xe', orbital: '3p3/2', be: 937 },\n  { element: 'Cs', orbital: '3p3/2', be: 998 },\n  { element: 'Ba', orbital: '3p3/2', be: 1063 },\n  { element: 'La', orbital: '3p3/2', be: 1124 },\n  { element: 'Ce', orbital: '3p3/2', be: 1186 },\n  { element: 'Pr', orbital: '3p3/2', be: 1243 },\n  { element: 'Si', orbital: '3p', be: 3 },\n  { element: 'P', orbital: '3p', be: 10 },\n  { element: 'S', orbital: '3p', be: 8 },\n  { element: 'Cl', orbital: '3p', be: 7 },\n  { element: 'Ar', orbital: '3p', be: 12 },\n  { element: 'K', orbital: '3p', be: 18 },\n  { element: 'Ca', orbital: '3p', be: 26 },\n  { element: 'Sc', orbital: '3p', be: 32 },\n  { element: 'Ti', orbital: '3p', be: 34 },\n  { element: 'V', orbital: '3p', be: 38 },\n  { element: 'Cr', orbital: '3p', be: 43 },\n  { element: 'Mn', orbital: '3p', be: 49 },\n  { element: 'Fe', orbital: '3p', be: 56 },\n  { element: 'Co', orbital: '3p', be: 60 },\n  { element: 'Ni', orbital: '3p', be: 68 },\n  { element: 'Cu', orbital: '3p', be: 74 },\n  { element: 'Zn', orbital: '3p', be: 87 },\n  { element: 'Ga', orbital: '3p', be: 103 },\n  { element: 'Ge', orbital: '3p', be: 122 },\n  { element: 'As', orbital: '3p', be: 141 },\n  { element: 'Se', orbital: '3p', be: 162 },\n  { element: 'Br', orbital: '3p', be: 182 },\n  { element: 'Kr', orbital: '3p', be: 214 },\n  { element: 'Rb', orbital: '3p', be: 239 },\n  { element: 'Sr', orbital: '3p', be: 269 },\n  { element: 'Y', orbital: '3p', be: 301 },\n  { element: 'Zr', orbital: '3p', be: 331 },\n  { element: 'Nb', orbital: '3p', be: 363 },\n  { element: 'Mo', orbital: '3p', be: 393 },\n  { element: 'Tc', orbital: '3p', be: 425 },\n  { element: 'Ru', orbital: '3p', be: 461 },\n  { element: 'Rh', orbital: '3p', be: 496 },\n  { element: 'Pd', orbital: '3p', be: 531 },\n  { element: 'Ag', orbital: '3p', be: 571 },\n  { element: 'Cd', orbital: '3p', be: 617 },\n  { element: 'In', orbital: '3p', be: 664 },\n  { element: 'Sn', orbital: '3p', be: 715 },\n  { element: 'Sb', orbital: '3p', be: 766 },\n  { element: 'Te', orbital: '3p', be: 819 },\n  { element: 'I', orbital: '3p', be: 875 },\n  { element: 'Xe', orbital: '3p', be: 937 },\n  { element: 'Cs', orbital: '3p', be: 998 },\n  { element: 'Ba', orbital: '3p', be: 1063 },\n  { element: 'La', orbital: '3p', be: 1124 },\n  { element: 'Ce', orbital: '3p', be: 1186 },\n  { element: 'Pr', orbital: '3p', be: 1243 },\n  { element: 'Sc', orbital: '3d3/2', be: 7 },\n  { element: 'Ti', orbital: '3d3/2', be: 3 },\n  { element: 'V', orbital: '3d3/2', be: 2 },\n  { element: 'Cr', orbital: '3d3/2', be: 2 },\n  { element: 'Mn', orbital: '3d3/2', be: 4 },\n  { element: 'Fe', orbital: '3d3/2', be: 6 },\n  { element: 'Co', orbital: '3d3/2', be: 3 },\n  { element: 'Ni', orbital: '3d3/2', be: 4 },\n  { element: 'Cu', orbital: '3d3/2', be: 2 },\n  { element: 'Zn', orbital: '3d3/2', be: 9 },\n  { element: 'Ga', orbital: '3d3/2', be: 18 },\n  { element: 'Ge', orbital: '3d3/2', be: 29 },\n  { element: 'As', orbital: '3d3/2', be: 41 },\n  { element: 'Se', orbital: '3d3/2', be: 57 },\n  { element: 'Br', orbital: '3d3/2', be: 70 },\n  { element: 'Kr', orbital: '3d3/2', be: 89 },\n  { element: 'Rb', orbital: '3d3/2', be: 112 },\n  { element: 'Sr', orbital: '3d3/2', be: 135 },\n  { element: 'Y', orbital: '3d3/2', be: 160 },\n  { element: 'Zr', orbital: '3d3/2', be: 183 },\n  { element: 'Nb', orbital: '3d3/2', be: 208 },\n  { element: 'Mo', orbital: '3d3/2', be: 230 },\n  { element: 'Tc', orbital: '3d3/2', be: 257 },\n  { element: 'Ru', orbital: '3d3/2', be: 284 },\n  { element: 'Rh', orbital: '3d3/2', be: 312 },\n  { element: 'Pd', orbital: '3d3/2', be: 340 },\n  { element: 'Ag', orbital: '3d3/2', be: 373 },\n  { element: 'Cd', orbital: '3d3/2', be: 411 },\n  { element: 'In', orbital: '3d3/2', be: 451 },\n  { element: 'Sn', orbital: '3d3/2', be: 494 },\n  { element: 'Sb', orbital: '3d3/2', be: 537 },\n  { element: 'Te', orbital: '3d3/2', be: 582 },\n  { element: 'I', orbital: '3d3/2', be: 631 },\n  { element: 'Xe', orbital: '3d3/2', be: 685 },\n  { element: 'Cs', orbital: '3d3/2', be: 740 },\n  { element: 'Ba', orbital: '3d3/2', be: 796 },\n  { element: 'La', orbital: '3d3/2', be: 849 },\n  { element: 'Ce', orbital: '3d3/2', be: 902 },\n  { element: 'Pr', orbital: '3d3/2', be: 951 },\n  { element: 'Nd', orbital: '3d3/2', be: 1000 },\n  { element: 'Pm', orbital: '3d3/2', be: 1052 },\n  { element: 'Sm', orbital: '3d3/2', be: 1107 },\n  { element: 'Eu', orbital: '3d3/2', be: 1161 },\n  { element: 'Gd', orbital: '3d3/2', be: 1218 },\n  { element: 'Sc', orbital: '3d5/2', be: 7 },\n  { element: 'Ti', orbital: '3d5/2', be: 3 },\n  { element: 'V', orbital: '3d5/2', be: 2 },\n  { element: 'Cr', orbital: '3d5/2', be: 2 },\n  { element: 'Mn', orbital: '3d5/2', be: 4 },\n  { element: 'Fe', orbital: '3d5/2', be: 6 },\n  { element: 'Co', orbital: '3d5/2', be: 3 },\n  { element: 'Ni', orbital: '3d5/2', be: 4 },\n  { element: 'Cu', orbital: '3d5/2', be: 2 },\n  { element: 'Zn', orbital: '3d5/2', be: 9 },\n  { element: 'Ga', orbital: '3d5/2', be: 18 },\n  { element: 'Ge', orbital: '3d5/2', be: 29 },\n  { element: 'As', orbital: '3d5/2', be: 41 },\n  { element: 'Se', orbital: '3d5/2', be: 57 },\n  { element: 'Br', orbital: '3d5/2', be: 69 },\n  { element: 'Kr', orbital: '3d5/2', be: 89 },\n  { element: 'Rb', orbital: '3d5/2', be: 111 },\n  { element: 'Sr', orbital: '3d5/2', be: 133 },\n  { element: 'Y', orbital: '3d5/2', be: 158 },\n  { element: 'Zr', orbital: '3d5/2', be: 180 },\n  { element: 'Nb', orbital: '3d5/2', be: 205 },\n  { element: 'Mo', orbital: '3d5/2', be: 227 },\n  { element: 'Tc', orbital: '3d5/2', be: 253 },\n  { element: 'Ru', orbital: '3d5/2', be: 279 },\n  { element: 'Rh', orbital: '3d5/2', be: 307 },\n  { element: 'Pd', orbital: '3d5/2', be: 335 },\n  { element: 'Ag', orbital: '3d5/2', be: 367 },\n  { element: 'Cd', orbital: '3d5/2', be: 404 },\n  { element: 'In', orbital: '3d5/2', be: 443 },\n  { element: 'Sn', orbital: '3d5/2', be: 485 },\n  { element: 'Sb', orbital: '3d5/2', be: 528 },\n  { element: 'Te', orbital: '3d5/2', be: 572 },\n  { element: 'I', orbital: '3d5/2', be: 620 },\n  { element: 'Xe', orbital: '3d5/2', be: 672 },\n  { element: 'Cs', orbital: '3d5/2', be: 726 },\n  { element: 'Ba', orbital: '3d5/2', be: 781 },\n  { element: 'La', orbital: '3d5/2', be: 832 },\n  { element: 'Ce', orbital: '3d5/2', be: 884 },\n  { element: 'Pr', orbital: '3d5/2', be: 931 },\n  { element: 'Nd', orbital: '3d5/2', be: 978 },\n  { element: 'Pm', orbital: '3d5/2', be: 1027 },\n  { element: 'Sm', orbital: '3d5/2', be: 1081 },\n  { element: 'Eu', orbital: '3d5/2', be: 1131 },\n  { element: 'Gd', orbital: '3d5/2', be: 1186 },\n  { element: 'Tb', orbital: '3d5/2', be: 1242 },\n  { element: 'Sc', orbital: '3d', be: 7 },\n  { element: 'Ti', orbital: '3d', be: 3 },\n  { element: 'V', orbital: '3d', be: 2 },\n  { element: 'Cr', orbital: '3d', be: 2 },\n  { element: 'Mn', orbital: '3d', be: 4 },\n  { element: 'Fe', orbital: '3d', be: 6 },\n  { element: 'Co', orbital: '3d', be: 3 },\n  { element: 'Ni', orbital: '3d', be: 4 },\n  { element: 'Cu', orbital: '3d', be: 2 },\n  { element: 'Zn', orbital: '3d', be: 9 },\n  { element: 'Ga', orbital: '3d', be: 18 },\n  { element: 'Ge', orbital: '3d', be: 29 },\n  { element: 'As', orbital: '3d', be: 41 },\n  { element: 'Se', orbital: '3d', be: 57 },\n  { element: 'Br', orbital: '3d', be: 69 },\n  { element: 'Kr', orbital: '3d', be: 89 },\n  { element: 'Rb', orbital: '3d', be: 111 },\n  { element: 'Sr', orbital: '3d', be: 133 },\n  { element: 'Y', orbital: '3d', be: 158 },\n  { element: 'Zr', orbital: '3d', be: 180 },\n  { element: 'Nb', orbital: '3d', be: 205 },\n  { element: 'Mo', orbital: '3d', be: 227 },\n  { element: 'Tc', orbital: '3d', be: 253 },\n  { element: 'Ru', orbital: '3d', be: 279 },\n  { element: 'Rh', orbital: '3d', be: 307 },\n  { element: 'Pd', orbital: '3d', be: 335 },\n  { element: 'Ag', orbital: '3d', be: 367 },\n  { element: 'Cd', orbital: '3d', be: 404 },\n  { element: 'In', orbital: '3d', be: 443 },\n  { element: 'Sn', orbital: '3d', be: 485 },\n  { element: 'Sb', orbital: '3d', be: 528 },\n  { element: 'Te', orbital: '3d', be: 572 },\n  { element: 'I', orbital: '3d', be: 620 },\n  { element: 'Xe', orbital: '3d', be: 672 },\n  { element: 'Cs', orbital: '3d', be: 726 },\n  { element: 'Ba', orbital: '3d', be: 781 },\n  { element: 'La', orbital: '3d', be: 832 },\n  { element: 'Ce', orbital: '3d', be: 884 },\n  { element: 'Pr', orbital: '3d', be: 931 },\n  { element: 'Nd', orbital: '3d', be: 978 },\n  { element: 'Pm', orbital: '3d', be: 1027 },\n  { element: 'Sm', orbital: '3d', be: 1081 },\n  { element: 'Eu', orbital: '3d', be: 1131 },\n  { element: 'Gd', orbital: '3d', be: 1186 },\n  { element: 'Tb', orbital: '3d', be: 1242 },\n  { element: 'Br', orbital: '4s', be: 27 },\n  { element: 'Kr', orbital: '4s', be: 24 },\n  { element: 'Rb', orbital: '4s', be: 30 },\n  { element: 'Sr', orbital: '4s', be: 38 },\n  { element: 'Y', orbital: '4s', be: 46 },\n  { element: 'Zr', orbital: '4s', be: 52 },\n  { element: 'Nb', orbital: '4s', be: 58 },\n  { element: 'Mo', orbital: '4s', be: 62 },\n  { element: 'Tc', orbital: '4s', be: 68 },\n  { element: 'Ru', orbital: '4s', be: 75 },\n  { element: 'Rh', orbital: '4s', be: 81 },\n  { element: 'Pd', orbital: '4s', be: 86 },\n  { element: 'Ag', orbital: '4s', be: 95 },\n  { element: 'Cd', orbital: '4s', be: 108 },\n  { element: 'In', orbital: '4s', be: 122 },\n  { element: 'Sn', orbital: '4s', be: 137 },\n  { element: 'Sb', orbital: '4s', be: 152 },\n  { element: 'Te', orbital: '4s', be: 168 },\n  { element: 'I', orbital: '4s', be: 186 },\n  { element: 'Xe', orbital: '4s', be: 208 },\n  { element: 'Cs', orbital: '4s', be: 231 },\n  { element: 'Ba', orbital: '4s', be: 253 },\n  { element: 'La', orbital: '4s', be: 271 },\n  { element: 'Ce', orbital: '4s', be: 290 },\n  { element: 'Pr', orbital: '4s', be: 305 },\n  { element: 'Nd', orbital: '4s', be: 316 },\n  { element: 'Pm', orbital: '4s', be: 331 },\n  { element: 'Sm', orbital: '4s', be: 347 },\n  { element: 'Eu', orbital: '4s', be: 360 },\n  { element: 'Gd', orbital: '4s', be: 376 },\n  { element: 'Tb', orbital: '4s', be: 398 },\n  { element: 'Dy', orbital: '4s', be: 416 },\n  { element: 'Ho', orbital: '4s', be: 436 },\n  { element: 'Er', orbital: '4s', be: 449 },\n  { element: 'Tm', orbital: '4s', be: 472 },\n  { element: 'Yb', orbital: '4s', be: 487 },\n  { element: 'Lu', orbital: '4s', be: 506 },\n  { element: 'Hf', orbital: '4s', be: 538 },\n  { element: 'Ta', orbital: '4s', be: 566 },\n  { element: 'W', orbital: '4s', be: 595 },\n  { element: 'Re', orbital: '4s', be: 625 },\n  { element: 'Os', orbital: '4s', be: 655 },\n  { element: 'Ir', orbital: '4s', be: 690 },\n  { element: 'Pt', orbital: '4s', be: 724 },\n  { element: 'Au', orbital: '4s', be: 759 },\n  { element: 'Hg', orbital: '4s', be: 800 },\n  { element: 'Tl', orbital: '4s', be: 846 },\n  { element: 'Pb', orbital: '4s', be: 894 },\n  { element: 'Bi', orbital: '4s', be: 939 },\n  { element: 'Po', orbital: '4s', be: 995 },\n  { element: 'At', orbital: '4s', be: 1042 },\n  { element: 'Rn', orbital: '4s', be: 1097 },\n  { element: 'Fr', orbital: '4s', be: 1153 },\n  { element: 'Ra', orbital: '4s', be: 1208 },\n  { element: 'U', orbital: '4s', be: 1043 },\n  { element: 'Ga', orbital: '4p1/2', be: 1 },\n  { element: 'Ge', orbital: '4p1/2', be: 3 },\n  { element: 'As', orbital: '4p1/2', be: 3 },\n  { element: 'Se', orbital: '4p1/2', be: 6 },\n  { element: 'Br', orbital: '4p1/2', be: 5 },\n  { element: 'Kr', orbital: '4p1/2', be: 11 },\n  { element: 'Rb', orbital: '4p1/2', be: 15 },\n  { element: 'Sr', orbital: '4p1/2', be: 20 },\n  { element: 'Y', orbital: '4p1/2', be: 26 },\n  { element: 'Zr', orbital: '4p1/2', be: 29 },\n  { element: 'Nb', orbital: '4p1/2', be: 34 },\n  { element: 'Mo', orbital: '4p1/2', be: 35 },\n  { element: 'Tc', orbital: '4p1/2', be: 39 },\n  { element: 'Ru', orbital: '4p1/2', be: 43 },\n  { element: 'Rh', orbital: '4p1/2', be: 48 },\n  { element: 'Pd', orbital: '4p1/2', be: 51 },\n  { element: 'Ag', orbital: '4p1/2', be: 62 },\n  { element: 'Cd', orbital: '4p1/2', be: 67 },\n  { element: 'In', orbital: '4p1/2', be: 77 },\n  { element: 'Sn', orbital: '4p1/2', be: 89 },\n  { element: 'Sb', orbital: '4p1/2', be: 99 },\n  { element: 'Te', orbital: '4p1/2', be: 110 },\n  { element: 'I', orbital: '4p1/2', be: 123 },\n  { element: 'Xe', orbital: '4p1/2', be: 147 },\n  { element: 'Cs', orbital: '4p1/2', be: 172 },\n  { element: 'Ba', orbital: '4p1/2', be: 192 },\n  { element: 'La', orbital: '4p1/2', be: 206 },\n  { element: 'Ce', orbital: '4p1/2', be: 224 },\n  { element: 'Pr', orbital: '4p1/2', be: 237 },\n  { element: 'Nd', orbital: '4p1/2', be: 244 },\n  { element: 'Pm', orbital: '4p1/2', be: 255 },\n  { element: 'Sm', orbital: '4p1/2', be: 267 },\n  { element: 'Eu', orbital: '4p1/2', be: 284 },\n  { element: 'Gd', orbital: '4p1/2', be: 289 },\n  { element: 'Tb', orbital: '4p1/2', be: 311 },\n  { element: 'Dy', orbital: '4p1/2', be: 332 },\n  { element: 'Ho', orbital: '4p1/2', be: 343 },\n  { element: 'Er', orbital: '4p1/2', be: 366 },\n  { element: 'Tm', orbital: '4p1/2', be: 386 },\n  { element: 'Yb', orbital: '4p1/2', be: 396 },\n  { element: 'Lu', orbital: '4p1/2', be: 410 },\n  { element: 'Hf', orbital: '4p1/2', be: 437 },\n  { element: 'Ta', orbital: '4p1/2', be: 465 },\n  { element: 'W', orbital: '4p1/2', be: 492 },\n  { element: 'Re', orbital: '4p1/2', be: 518 },\n  { element: 'Os', orbital: '4p1/2', be: 547 },\n  { element: 'Ir', orbital: '4p1/2', be: 577 },\n  { element: 'Pt', orbital: '4p1/2', be: 608 },\n  { element: 'Au', orbital: '4p1/2', be: 644 },\n  { element: 'Hg', orbital: '4p1/2', be: 677 },\n  { element: 'Tl', orbital: '4p1/2', be: 722 },\n  { element: 'Pb', orbital: '4p1/2', be: 764 },\n  { element: 'Bi', orbital: '4p1/2', be: 806 },\n  { element: 'Po', orbital: '4p1/2', be: 851 },\n  { element: 'At', orbital: '4p1/2', be: 886 },\n  { element: 'Rn', orbital: '4p1/2', be: 929 },\n  { element: 'Fr', orbital: '4p1/2', be: 980 },\n  { element: 'Ra', orbital: '4p1/2', be: 1058 },\n  { element: 'Ac', orbital: '4p1/2', be: 1080 },\n  { element: 'Th', orbital: '4p1/2', be: 1168 },\n  { element: 'Ga', orbital: '4p3/2', be: 1 },\n  { element: 'Ge', orbital: '4p3/2', be: 3 },\n  { element: 'As', orbital: '4p3/2', be: 3 },\n  { element: 'Se', orbital: '4p3/2', be: 6 },\n  { element: 'Br', orbital: '4p3/2', be: 5 },\n  { element: 'Kr', orbital: '4p3/2', be: 11 },\n  { element: 'Rb', orbital: '4p3/2', be: 14 },\n  { element: 'Sr', orbital: '4p3/2', be: 20 },\n  { element: 'Y', orbital: '4p3/2', be: 26 },\n  { element: 'Zr', orbital: '4p3/2', be: 29 },\n  { element: 'Nb', orbital: '4p3/2', be: 34 },\n  { element: 'Mo', orbital: '4p3/2', be: 35 },\n  { element: 'Tc', orbital: '4p3/2', be: 39 },\n  { element: 'Ru', orbital: '4p3/2', be: 43 },\n  { element: 'Rh', orbital: '4p3/2', be: 48 },\n  { element: 'Pd', orbital: '4p3/2', be: 56 },\n  { element: 'Ag', orbital: '4p3/2', be: 56 },\n  { element: 'Cd', orbital: '4p3/2', be: 67 },\n  { element: 'In', orbital: '4p3/2', be: 77 },\n  { element: 'Sn', orbital: '4p3/2', be: 89 },\n  { element: 'Sb', orbital: '4p3/2', be: 99 },\n  { element: 'Te', orbital: '4p3/2', be: 110 },\n  { element: 'I', orbital: '4p3/2', be: 123 },\n  { element: 'Xe', orbital: '4p3/2', be: 147 },\n  { element: 'Cs', orbital: '4p3/2', be: 162 },\n  { element: 'Ba', orbital: '4p3/2', be: 180 },\n  { element: 'La', orbital: '4p3/2', be: 192 },\n  { element: 'Ce', orbital: '4p3/2', be: 208 },\n  { element: 'Pr', orbital: '4p3/2', be: 218 },\n  { element: 'Nd', orbital: '4p3/2', be: 225 },\n  { element: 'Pm', orbital: '4p3/2', be: 237 },\n  { element: 'Sm', orbital: '4p3/2', be: 249 },\n  { element: 'Eu', orbital: '4p3/2', be: 257 },\n  { element: 'Gd', orbital: '4p3/2', be: 271 },\n  { element: 'Tb', orbital: '4p3/2', be: 286 },\n  { element: 'Dy', orbital: '4p3/2', be: 293 },\n  { element: 'Ho', orbital: '4p3/2', be: 306 },\n  { element: 'Er', orbital: '4p3/2', be: 320 },\n  { element: 'Tm', orbital: '4p3/2', be: 337 },\n  { element: 'Yb', orbital: '4p3/2', be: 343 },\n  { element: 'Lu', orbital: '4p3/2', be: 359 },\n  { element: 'Hf', orbital: '4p3/2', be: 380 },\n  { element: 'Ta', orbital: '4p3/2', be: 405 },\n  { element: 'W', orbital: '4p3/2', be: 426 },\n  { element: 'Re', orbital: '4p3/2', be: 445 },\n  { element: 'Os', orbital: '4p3/2', be: 469 },\n  { element: 'Ir', orbital: '4p3/2', be: 495 },\n  { element: 'Pt', orbital: '4p3/2', be: 519 },\n  { element: 'Au', orbital: '4p3/2', be: 546 },\n  { element: 'Hg', orbital: '4p3/2', be: 571 },\n  { element: 'Tl', orbital: '4p3/2', be: 609 },\n  { element: 'Pb', orbital: '4p3/2', be: 645 },\n  { element: 'Bi', orbital: '4p3/2', be: 679 },\n  { element: 'Po', orbital: '4p3/2', be: 705 },\n  { element: 'At', orbital: '4p3/2', be: 740 },\n  { element: 'Rn', orbital: '4p3/2', be: 768 },\n  { element: 'Fr', orbital: '4p3/2', be: 810 },\n  { element: 'Ra', orbital: '4p3/2', be: 879 },\n  { element: 'Ac', orbital: '4p3/2', be: 890 },\n  { element: 'Th', orbital: '4p3/2', be: 968 },\n  { element: 'Ga', orbital: '4p', be: 1 },\n  { element: 'Ge', orbital: '4p', be: 3 },\n  { element: 'As', orbital: '4p', be: 3 },\n  { element: 'Se', orbital: '4p', be: 6 },\n  { element: 'Br', orbital: '4p', be: 5 },\n  { element: 'Kr', orbital: '4p', be: 11 },\n  { element: 'Rb', orbital: '4p', be: 14 },\n  { element: 'Sr', orbital: '4p', be: 20 },\n  { element: 'Y', orbital: '4p', be: 26 },\n  { element: 'Zr', orbital: '4p', be: 29 },\n  { element: 'Nb', orbital: '4p', be: 34 },\n  { element: 'Mo', orbital: '4p', be: 35 },\n  { element: 'Tc', orbital: '4p', be: 39 },\n  { element: 'Ru', orbital: '4p', be: 43 },\n  { element: 'Rh', orbital: '4p', be: 48 },\n  { element: 'Pd', orbital: '4p', be: 56 },\n  { element: 'Ag', orbital: '4p', be: 56 },\n  { element: 'Cd', orbital: '4p', be: 67 },\n  { element: 'In', orbital: '4p', be: 77 },\n  { element: 'Sn', orbital: '4p', be: 89 },\n  { element: 'Sb', orbital: '4p', be: 99 },\n  { element: 'Te', orbital: '4p', be: 110 },\n  { element: 'I', orbital: '4p', be: 123 },\n  { element: 'Xe', orbital: '4p', be: 147 },\n  { element: 'Cs', orbital: '4p', be: 162 },\n  { element: 'Ba', orbital: '4p', be: 180 },\n  { element: 'La', orbital: '4p', be: 192 },\n  { element: 'Ce', orbital: '4p', be: 208 },\n  { element: 'Pr', orbital: '4p', be: 218 },\n  { element: 'Nd', orbital: '4p', be: 225 },\n  { element: 'Pm', orbital: '4p', be: 237 },\n  { element: 'Sm', orbital: '4p', be: 249 },\n  { element: 'Eu', orbital: '4p', be: 257 },\n  { element: 'Gd', orbital: '4p', be: 271 },\n  { element: 'Tb', orbital: '4p', be: 286 },\n  { element: 'Dy', orbital: '4p', be: 293 },\n  { element: 'Ho', orbital: '4p', be: 306 },\n  { element: 'Er', orbital: '4p', be: 320 },\n  { element: 'Tm', orbital: '4p', be: 337 },\n  { element: 'Yb', orbital: '4p', be: 343 },\n  { element: 'Lu', orbital: '4p', be: 359 },\n  { element: 'Hf', orbital: '4p', be: 380 },\n  { element: 'Ta', orbital: '4p', be: 405 },\n  { element: 'W', orbital: '4p', be: 426 },\n  { element: 'Re', orbital: '4p', be: 445 },\n  { element: 'Os', orbital: '4p', be: 469 },\n  { element: 'Ir', orbital: '4p', be: 495 },\n  { element: 'Pt', orbital: '4p', be: 519 },\n  { element: 'Au', orbital: '4p', be: 546 },\n  { element: 'Hg', orbital: '4p', be: 571 },\n  { element: 'Tl', orbital: '4p', be: 609 },\n  { element: 'Pb', orbital: '4p', be: 645 },\n  { element: 'Bi', orbital: '4p', be: 679 },\n  { element: 'Po', orbital: '4p', be: 705 },\n  { element: 'At', orbital: '4p', be: 740 },\n  { element: 'Rn', orbital: '4p', be: 768 },\n  { element: 'Fr', orbital: '4p', be: 810 },\n  { element: 'Ra', orbital: '4p', be: 879 },\n  { element: 'Ac', orbital: '4p', be: 890 },\n  { element: 'Th', orbital: '4p', be: 968 },\n  { element: 'Y', orbital: '4d3/2', be: 3 },\n  { element: 'Zr', orbital: '4d3/2', be: 3 },\n  { element: 'Nb', orbital: '4d3/2', be: 4 },\n  { element: 'Mo', orbital: '4d3/2', be: 2 },\n  { element: 'Tc', orbital: '4d3/2', be: 2 },\n  { element: 'Ru', orbital: '4d3/2', be: 2 },\n  { element: 'Rh', orbital: '4d3/2', be: 3 },\n  { element: 'Pd', orbital: '4d3/2', be: 1 },\n  { element: 'Ag', orbital: '4d3/2', be: 3 },\n  { element: 'Cd', orbital: '4d3/2', be: 9 },\n  { element: 'In', orbital: '4d3/2', be: 16 },\n  { element: 'Sn', orbital: '4d3/2', be: 24 },\n  { element: 'Sb', orbital: '4d3/2', be: 32 },\n  { element: 'Te', orbital: '4d3/2', be: 40 },\n  { element: 'I', orbital: '4d3/2', be: 50 },\n  { element: 'Xe', orbital: '4d3/2', be: 63 },\n  { element: 'Cs', orbital: '4d3/2', be: 79 },\n  { element: 'Ba', orbital: '4d3/2', be: 93 },\n  { element: 'La', orbital: '4d3/2', be: 99 },\n  { element: 'Ce', orbital: '4d3/2', be: 111 },\n  { element: 'Pr', orbital: '4d3/2', be: 114 },\n  { element: 'Nd', orbital: '4d3/2', be: 118 },\n  { element: 'Pm', orbital: '4d3/2', be: 121 },\n  { element: 'Sm', orbital: '4d3/2', be: 130 },\n  { element: 'Eu', orbital: '4d3/2', be: 134 },\n  { element: 'Gd', orbital: '4d3/2', be: 141 },\n  { element: 'Tb', orbital: '4d3/2', be: 148 },\n  { element: 'Dy', orbital: '4d3/2', be: 154 },\n  { element: 'Ho', orbital: '4d3/2', be: 161 },\n  { element: 'Er', orbital: '4d3/2', be: 177 },\n  { element: 'Tm', orbital: '4d3/2', be: 180 },\n  { element: 'Yb', orbital: '4d3/2', be: 197 },\n  { element: 'Lu', orbital: '4d3/2', be: 205 },\n  { element: 'Hf', orbital: '4d3/2', be: 224 },\n  { element: 'Ta', orbital: '4d3/2', be: 242 },\n  { element: 'W', orbital: '4d3/2', be: 259 },\n  { element: 'Re', orbital: '4d3/2', be: 274 },\n  { element: 'Os', orbital: '4d3/2', be: 290 },\n  { element: 'Ir', orbital: '4d3/2', be: 312 },\n  { element: 'Pt', orbital: '4d3/2', be: 331 },\n  { element: 'Au', orbital: '4d3/2', be: 352 },\n  { element: 'Hg', orbital: '4d3/2', be: 379 },\n  { element: 'Tl', orbital: '4d3/2', be: 407 },\n  { element: 'Pb', orbital: '4d3/2', be: 435 },\n  { element: 'Bi', orbital: '4d3/2', be: 464 },\n  { element: 'Po', orbital: '4d3/2', be: 500 },\n  { element: 'At', orbital: '4d3/2', be: 533 },\n  { element: 'Rn', orbital: '4d3/2', be: 567 },\n  { element: 'Fr', orbital: '4d3/2', be: 603 },\n  { element: 'Ra', orbital: '4d3/2', be: 636 },\n  { element: 'Ac', orbital: '4d3/2', be: 675 },\n  { element: 'Th', orbital: '4d3/2', be: 714 },\n  { element: 'U', orbital: '4d3/2', be: 781 },\n  { element: 'Y', orbital: '4d5/2', be: 3 },\n  { element: 'Zr', orbital: '4d5/2', be: 3 },\n  { element: 'Nb', orbital: '4d5/2', be: 4 },\n  { element: 'Mo', orbital: '4d5/2', be: 2 },\n  { element: 'Tc', orbital: '4d5/2', be: 2 },\n  { element: 'Ru', orbital: '4d5/2', be: 2 },\n  { element: 'Rh', orbital: '4d5/2', be: 3 },\n  { element: 'Pd', orbital: '4d5/2', be: 1 },\n  { element: 'Ag', orbital: '4d5/2', be: 3 },\n  { element: 'Cd', orbital: '4d5/2', be: 9 },\n  { element: 'In', orbital: '4d5/2', be: 16 },\n  { element: 'Sn', orbital: '4d5/2', be: 24 },\n  { element: 'Sb', orbital: '4d5/2', be: 32 },\n  { element: 'Te', orbital: '4d5/2', be: 40 },\n  { element: 'I', orbital: '4d5/2', be: 50 },\n  { element: 'Xe', orbital: '4d5/2', be: 63 },\n  { element: 'Cs', orbital: '4d5/2', be: 77 },\n  { element: 'Ba', orbital: '4d5/2', be: 90 },\n  { element: 'La', orbital: '4d5/2', be: 99 },\n  { element: 'Ce', orbital: '4d5/2', be: 111 },\n  { element: 'Pr', orbital: '4d5/2', be: 114 },\n  { element: 'Nd', orbital: '4d5/2', be: 118 },\n  { element: 'Pm', orbital: '4d5/2', be: 121 },\n  { element: 'Sm', orbital: '4d5/2', be: 130 },\n  { element: 'Eu', orbital: '4d5/2', be: 134 },\n  { element: 'Gd', orbital: '4d5/2', be: 141 },\n  { element: 'Tb', orbital: '4d5/2', be: 148 },\n  { element: 'Dy', orbital: '4d5/2', be: 154 },\n  { element: 'Ho', orbital: '4d5/2', be: 161 },\n  { element: 'Er', orbital: '4d5/2', be: 168 },\n  { element: 'Tm', orbital: '4d5/2', be: 180 },\n  { element: 'Yb', orbital: '4d5/2', be: 184 },\n  { element: 'Lu', orbital: '4d5/2', be: 195 },\n  { element: 'Hf', orbital: '4d5/2', be: 214 },\n  { element: 'Ta', orbital: '4d5/2', be: 230 },\n  { element: 'W', orbital: '4d5/2', be: 246 },\n  { element: 'Re', orbital: '4d5/2', be: 260 },\n  { element: 'Os', orbital: '4d5/2', be: 273 },\n  { element: 'Ir', orbital: '4d5/2', be: 295 },\n  { element: 'Pt', orbital: '4d5/2', be: 314 },\n  { element: 'Au', orbital: '4d5/2', be: 334 },\n  { element: 'Hg', orbital: '4d5/2', be: 360 },\n  { element: 'Tl', orbital: '4d5/2', be: 386 },\n  { element: 'Pb', orbital: '4d5/2', be: 413 },\n  { element: 'Bi', orbital: '4d5/2', be: 440 },\n  { element: 'Po', orbital: '4d5/2', be: 473 },\n  { element: 'At', orbital: '4d5/2', be: 507 },\n  { element: 'Rn', orbital: '4d5/2', be: 541 },\n  { element: 'Fr', orbital: '4d5/2', be: 577 },\n  { element: 'Ra', orbital: '4d5/2', be: 603 },\n  { element: 'Ac', orbital: '4d5/2', be: 639 },\n  { element: 'Th', orbital: '4d5/2', be: 677 },\n  { element: 'U', orbital: '4d5/2', be: 739 },\n  { element: 'Y', orbital: '4d', be: 3 },\n  { element: 'Zr', orbital: '4d', be: 3 },\n  { element: 'Nb', orbital: '4d', be: 4 },\n  { element: 'Mo', orbital: '4d', be: 2 },\n  { element: 'Tc', orbital: '4d', be: 2 },\n  { element: 'Ru', orbital: '4d', be: 2 },\n  { element: 'Rh', orbital: '4d', be: 3 },\n  { element: 'Pd', orbital: '4d', be: 1 },\n  { element: 'Ag', orbital: '4d', be: 3 },\n  { element: 'Cd', orbital: '4d', be: 9 },\n  { element: 'In', orbital: '4d', be: 16 },\n  { element: 'Sn', orbital: '4d', be: 24 },\n  { element: 'Sb', orbital: '4d', be: 32 },\n  { element: 'Te', orbital: '4d', be: 40 },\n  { element: 'I', orbital: '4d', be: 50 },\n  { element: 'Xe', orbital: '4d', be: 63 },\n  { element: 'Cs', orbital: '4d', be: 77 },\n  { element: 'Ba', orbital: '4d', be: 90 },\n  { element: 'La', orbital: '4d', be: 99 },\n  { element: 'Ce', orbital: '4d', be: 111 },\n  { element: 'Pr', orbital: '4d', be: 114 },\n  { element: 'Nd', orbital: '4d', be: 118 },\n  { element: 'Pm', orbital: '4d', be: 121 },\n  { element: 'Sm', orbital: '4d', be: 130 },\n  { element: 'Eu', orbital: '4d', be: 134 },\n  { element: 'Gd', orbital: '4d', be: 141 },\n  { element: 'Tb', orbital: '4d', be: 148 },\n  { element: 'Dy', orbital: '4d', be: 154 },\n  { element: 'Ho', orbital: '4d', be: 161 },\n  { element: 'Er', orbital: '4d', be: 168 },\n  { element: 'Tm', orbital: '4d', be: 180 },\n  { element: 'Yb', orbital: '4d', be: 184 },\n  { element: 'Lu', orbital: '4d', be: 195 },\n  { element: 'Hf', orbital: '4d', be: 214 },\n  { element: 'Ta', orbital: '4d', be: 230 },\n  { element: 'W', orbital: '4d', be: 246 },\n  { element: 'Re', orbital: '4d', be: 260 },\n  { element: 'Os', orbital: '4d', be: 273 },\n  { element: 'Ir', orbital: '4d', be: 295 },\n  { element: 'Pt', orbital: '4d', be: 314 },\n  { element: 'Au', orbital: '4d', be: 334 },\n  { element: 'Hg', orbital: '4d', be: 360 },\n  { element: 'Tl', orbital: '4d', be: 386 },\n  { element: 'Pb', orbital: '4d', be: 413 },\n  { element: 'Bi', orbital: '4d', be: 440 },\n  { element: 'Po', orbital: '4d', be: 473 },\n  { element: 'At', orbital: '4d', be: 507 },\n  { element: 'Rn', orbital: '4d', be: 541 },\n  { element: 'Fr', orbital: '4d', be: 577 },\n  { element: 'Ra', orbital: '4d', be: 603 },\n  { element: 'Ac', orbital: '4d', be: 639 },\n  { element: 'Th', orbital: '4d', be: 677 },\n  { element: 'U', orbital: '4d', be: 739 },\n  { element: 'Ce', orbital: '4f5/2', be: 1 },\n  { element: 'Pr', orbital: '4f5/2', be: 2 },\n  { element: 'Nd', orbital: '4f5/2', be: 2 },\n  { element: 'Pm', orbital: '4f5/2', be: 4 },\n  { element: 'Sm', orbital: '4f5/2', be: 7 },\n  { element: 'Tb', orbital: '4f5/2', be: 3 },\n  { element: 'Dy', orbital: '4f5/2', be: 4 },\n  { element: 'Ho', orbital: '4f5/2', be: 4 },\n  { element: 'Er', orbital: '4f5/2', be: 4 },\n  { element: 'Tm', orbital: '4f5/2', be: 5 },\n  { element: 'Yb', orbital: '4f5/2', be: 6 },\n  { element: 'Lu', orbital: '4f5/2', be: 7 },\n  { element: 'Hf', orbital: '4f5/2', be: 19 },\n  { element: 'Ta', orbital: '4f5/2', be: 27 },\n  { element: 'W', orbital: '4f5/2', be: 37 },\n  { element: 'Re', orbital: '4f5/2', be: 47 },\n  { element: 'Os', orbital: '4f5/2', be: 52 },\n  { element: 'Ir', orbital: '4f5/2', be: 63 },\n  { element: 'Pt', orbital: '4f5/2', be: 74 },\n  { element: 'Au', orbital: '4f5/2', be: 87 },\n  { element: 'Hg', orbital: '4f5/2', be: 103 },\n  { element: 'Tl', orbital: '4f5/2', be: 122 },\n  { element: 'Pb', orbital: '4f5/2', be: 143 },\n  { element: 'Bi', orbital: '4f5/2', be: 163 },\n  { element: 'Po', orbital: '4f5/2', be: 184 },\n  { element: 'At', orbital: '4f5/2', be: 210 },\n  { element: 'Rn', orbital: '4f5/2', be: 238 },\n  { element: 'Fr', orbital: '4f5/2', be: 268 },\n  { element: 'Ra', orbital: '4f5/2', be: 299 },\n  { element: 'Ac', orbital: '4f5/2', be: 319 },\n  { element: 'Th', orbital: '4f5/2', be: 344 },\n  { element: 'U', orbital: '4f5/2', be: 391 },\n  { element: 'Ce', orbital: '4f7/2', be: 1 },\n  { element: 'Pr', orbital: '4f7/2', be: 2 },\n  { element: 'Nd', orbital: '4f7/2', be: 2 },\n  { element: 'Pm', orbital: '4f7/2', be: 4 },\n  { element: 'Sm', orbital: '4f7/2', be: 7 },\n  { element: 'Tb', orbital: '4f7/2', be: 3 },\n  { element: 'Dy', orbital: '4f7/2', be: 4 },\n  { element: 'Ho', orbital: '4f7/2', be: 4 },\n  { element: 'Er', orbital: '4f7/2', be: 4 },\n  { element: 'Tm', orbital: '4f7/2', be: 5 },\n  { element: 'Yb', orbital: '4f7/2', be: 6 },\n  { element: 'Lu', orbital: '4f7/2', be: 7 },\n  { element: 'Hf', orbital: '4f7/2', be: 18 },\n  { element: 'Ta', orbital: '4f7/2', be: 25 },\n  { element: 'W', orbital: '4f7/2', be: 34 },\n  { element: 'Re', orbital: '4f7/2', be: 45 },\n  { element: 'Os', orbital: '4f7/2', be: 50 },\n  { element: 'Ir', orbital: '4f7/2', be: 60 },\n  { element: 'Pt', orbital: '4f7/2', be: 70 },\n  { element: 'Au', orbital: '4f7/2', be: 83 },\n  { element: 'Hg', orbital: '4f7/2', be: 99 },\n  { element: 'Tl', orbital: '4f7/2', be: 118 },\n  { element: 'Pb', orbital: '4f7/2', be: 138 },\n  { element: 'Bi', orbital: '4f7/2', be: 158 },\n  { element: 'Po', orbital: '4f7/2', be: 184 },\n  { element: 'At', orbital: '4f7/2', be: 210 },\n  { element: 'Rn', orbital: '4f7/2', be: 238 },\n  { element: 'Fr', orbital: '4f7/2', be: 268 },\n  { element: 'Ra', orbital: '4f7/2', be: 299 },\n  { element: 'Ac', orbital: '4f7/2', be: 319 },\n  { element: 'Th', orbital: '4f7/2', be: 335 },\n  { element: 'U', orbital: '4f7/2', be: 380 },\n  { element: 'Ce', orbital: '4f', be: 1 },\n  { element: 'Pr', orbital: '4f', be: 2 },\n  { element: 'Nd', orbital: '4f', be: 2 },\n  { element: 'Pm', orbital: '4f', be: 4 },\n  { element: 'Sm', orbital: '4f', be: 7 },\n  { element: 'Tb', orbital: '4f', be: 3 },\n  { element: 'Dy', orbital: '4f', be: 4 },\n  { element: 'Ho', orbital: '4f', be: 4 },\n  { element: 'Er', orbital: '4f', be: 4 },\n  { element: 'Tm', orbital: '4f', be: 5 },\n  { element: 'Yb', orbital: '4f', be: 6 },\n  { element: 'Lu', orbital: '4f', be: 7 },\n  { element: 'Hf', orbital: '4f', be: 18 },\n  { element: 'Ta', orbital: '4f', be: 25 },\n  { element: 'W', orbital: '4f', be: 34 },\n  { element: 'Re', orbital: '4f', be: 45 },\n  { element: 'Os', orbital: '4f', be: 50 },\n  { element: 'Ir', orbital: '4f', be: 60 },\n  { element: 'Pt', orbital: '4f', be: 70 },\n  { element: 'Au', orbital: '4f', be: 83 },\n  { element: 'Hg', orbital: '4f', be: 99 },\n  { element: 'Tl', orbital: '4f', be: 118 },\n  { element: 'Pb', orbital: '4f', be: 138 },\n  { element: 'Bi', orbital: '4f', be: 158 },\n  { element: 'Po', orbital: '4f', be: 184 },\n  { element: 'At', orbital: '4f', be: 210 },\n  { element: 'Rn', orbital: '4f', be: 238 },\n  { element: 'Fr', orbital: '4f', be: 268 },\n  { element: 'Ra', orbital: '4f', be: 299 },\n  { element: 'Ac', orbital: '4f', be: 319 },\n  { element: 'Th', orbital: '4f', be: 335 },\n  { element: 'U', orbital: '4f', be: 380 },\n  { element: 'Sn', orbital: '5s', be: 1 },\n  { element: 'Sb', orbital: '5s', be: 7 },\n  { element: 'Te', orbital: '5s', be: 12 },\n  { element: 'I', orbital: '5s', be: 14 },\n  { element: 'Xe', orbital: '5s', be: 18 },\n  { element: 'Cs', orbital: '5s', be: 23 },\n  { element: 'Ba', orbital: '5s', be: 40 },\n  { element: 'La', orbital: '5s', be: 33 },\n  { element: 'Ce', orbital: '5s', be: 38 },\n  { element: 'Pr', orbital: '5s', be: 38 },\n  { element: 'Nd', orbital: '5s', be: 38 },\n  { element: 'Pm', orbital: '5s', be: 38 },\n  { element: 'Sm', orbital: '5s', be: 39 },\n  { element: 'Eu', orbital: '5s', be: 32 },\n  { element: 'Gd', orbital: '5s', be: 36 },\n  { element: 'Tb', orbital: '5s', be: 40 },\n  { element: 'Dy', orbital: '5s', be: 63 },\n  { element: 'Ho', orbital: '5s', be: 51 },\n  { element: 'Er', orbital: '5s', be: 60 },\n  { element: 'Tm', orbital: '5s', be: 53 },\n  { element: 'Yb', orbital: '5s', be: 53 },\n  { element: 'Lu', orbital: '5s', be: 57 },\n  { element: 'Hf', orbital: '5s', be: 65 },\n  { element: 'Ta', orbital: '5s', be: 71 },\n  { element: 'W', orbital: '5s', be: 77 },\n  { element: 'Re', orbital: '5s', be: 83 },\n  { element: 'Os', orbital: '5s', be: 84 },\n  { element: 'Ir', orbital: '5s', be: 96 },\n  { element: 'Pt', orbital: '5s', be: 102 },\n  { element: 'Au', orbital: '5s', be: 108 },\n  { element: 'Hg', orbital: '5s', be: 120 },\n  { element: 'Tl', orbital: '5s', be: 137 },\n  { element: 'Pb', orbital: '5s', be: 148 },\n  { element: 'Bi', orbital: '5s', be: 160 },\n  { element: 'Po', orbital: '5s', be: 177 },\n  { element: 'At', orbital: '5s', be: 195 },\n  { element: 'Rn', orbital: '5s', be: 214 },\n  { element: 'Fr', orbital: '5s', be: 234 },\n  { element: 'Ra', orbital: '5s', be: 254 },\n  { element: 'Ac', orbital: '5s', be: 272 },\n  { element: 'Th', orbital: '5s', be: 290 },\n  { element: 'In', orbital: '5p1/2', be: 1 },\n  { element: 'Sn', orbital: '5p1/2', be: 1 },\n  { element: 'Sb', orbital: '5p1/2', be: 2 },\n  { element: 'Te', orbital: '5p1/2', be: 2 },\n  { element: 'I', orbital: '5p1/2', be: 3 },\n  { element: 'Xe', orbital: '5p1/2', be: 7 },\n  { element: 'Cs', orbital: '5p1/2', be: 13 },\n  { element: 'Ba', orbital: '5p1/2', be: 17 },\n  { element: 'La', orbital: '5p1/2', be: 15 },\n  { element: 'Ce', orbital: '5p1/2', be: 20 },\n  { element: 'Pr', orbital: '5p1/2', be: 23 },\n  { element: 'Nd', orbital: '5p1/2', be: 22 },\n  { element: 'Pm', orbital: '5p1/2', be: 22 },\n  { element: 'Sm', orbital: '5p1/2', be: 22 },\n  { element: 'Eu', orbital: '5p1/2', be: 22 },\n  { element: 'Gd', orbital: '5p1/2', be: 21 },\n  { element: 'Tb', orbital: '5p1/2', be: 26 },\n  { element: 'Dy', orbital: '5p1/2', be: 26 },\n  { element: 'Ho', orbital: '5p1/2', be: 20 },\n  { element: 'Er', orbital: '5p1/2', be: 29 },\n  { element: 'Tm', orbital: '5p1/2', be: 32 },\n  { element: 'Yb', orbital: '5p1/2', be: 23 },\n  { element: 'Lu', orbital: '5p1/2', be: 28 },\n  { element: 'Hf', orbital: '5p1/2', be: 38 },\n  { element: 'Ta', orbital: '5p1/2', be: 45 },\n  { element: 'W', orbital: '5p1/2', be: 47 },\n  { element: 'Re', orbital: '5p1/2', be: 46 },\n  { element: 'Os', orbital: '5p1/2', be: 58 },\n  { element: 'Ir', orbital: '5p1/2', be: 63 },\n  { element: 'Pt', orbital: '5p1/2', be: 66 },\n  { element: 'Au', orbital: '5p1/2', be: 72 },\n  { element: 'Hg', orbital: '5p1/2', be: 81 },\n  { element: 'Tl', orbital: '5p1/2', be: 100 },\n  { element: 'Pb', orbital: '5p1/2', be: 105 },\n  { element: 'Bi', orbital: '5p1/2', be: 117 },\n  { element: 'Po', orbital: '5p1/2', be: 132 },\n  { element: 'At', orbital: '5p1/2', be: 148 },\n  { element: 'Rn', orbital: '5p1/2', be: 164 },\n  { element: 'Fr', orbital: '5p1/2', be: 182 },\n  { element: 'Ra', orbital: '5p1/2', be: 200 },\n  { element: 'Ac', orbital: '5p1/2', be: 215 },\n  { element: 'Th', orbital: '5p1/2', be: 229 },\n  { element: 'In', orbital: '5p3/2', be: 1 },\n  { element: 'Sn', orbital: '5p3/2', be: 1 },\n  { element: 'Sb', orbital: '5p3/2', be: 2 },\n  { element: 'Te', orbital: '5p3/2', be: 2 },\n  { element: 'I', orbital: '5p3/2', be: 3 },\n  { element: 'Xe', orbital: '5p3/2', be: 7 },\n  { element: 'Cs', orbital: '5p3/2', be: 12 },\n  { element: 'Ba', orbital: '5p3/2', be: 15 },\n  { element: 'La', orbital: '5p3/2', be: 15 },\n  { element: 'Ce', orbital: '5p3/2', be: 20 },\n  { element: 'Pr', orbital: '5p3/2', be: 23 },\n  { element: 'Nd', orbital: '5p3/2', be: 22 },\n  { element: 'Pm', orbital: '5p3/2', be: 22 },\n  { element: 'Sm', orbital: '5p3/2', be: 22 },\n  { element: 'Eu', orbital: '5p3/2', be: 22 },\n  { element: 'Gd', orbital: '5p3/2', be: 21 },\n  { element: 'Tb', orbital: '5p3/2', be: 26 },\n  { element: 'Dy', orbital: '5p3/2', be: 26 },\n  { element: 'Ho', orbital: '5p3/2', be: 20 },\n  { element: 'Er', orbital: '5p3/2', be: 29 },\n  { element: 'Tm', orbital: '5p3/2', be: 32 },\n  { element: 'Yb', orbital: '5p3/2', be: 23 },\n  { element: 'Lu', orbital: '5p3/2', be: 28 },\n  { element: 'Hf', orbital: '5p3/2', be: 31 },\n  { element: 'Ta', orbital: '5p3/2', be: 37 },\n  { element: 'W', orbital: '5p3/2', be: 37 },\n  { element: 'Re', orbital: '5p3/2', be: 35 },\n  { element: 'Os', orbital: '5p3/2', be: 46 },\n  { element: 'Ir', orbital: '5p3/2', be: 51 },\n  { element: 'Pt', orbital: '5p3/2', be: 51 },\n  { element: 'Au', orbital: '5p3/2', be: 54 },\n  { element: 'Hg', orbital: '5p3/2', be: 58 },\n  { element: 'Tl', orbital: '5p3/2', be: 76 },\n  { element: 'Pb', orbital: '5p3/2', be: 86 },\n  { element: 'Bi', orbital: '5p3/2', be: 93 },\n  { element: 'Po', orbital: '5p3/2', be: 104 },\n  { element: 'At', orbital: '5p3/2', be: 115 },\n  { element: 'Rn', orbital: '5p3/2', be: 127 },\n  { element: 'Fr', orbital: '5p3/2', be: 140 },\n  { element: 'Ra', orbital: '5p3/2', be: 153 },\n  { element: 'Ac', orbital: '5p3/2', be: 167 },\n  { element: 'Th', orbital: '5p3/2', be: 182 },\n  { element: 'In', orbital: '5p', be: 1 },\n  { element: 'Sn', orbital: '5p', be: 1 },\n  { element: 'Sb', orbital: '5p', be: 2 },\n  { element: 'Te', orbital: '5p', be: 2 },\n  { element: 'I', orbital: '5p', be: 3 },\n  { element: 'Xe', orbital: '5p', be: 7 },\n  { element: 'Cs', orbital: '5p', be: 12 },\n  { element: 'Ba', orbital: '5p', be: 15 },\n  { element: 'La', orbital: '5p', be: 15 },\n  { element: 'Ce', orbital: '5p', be: 20 },\n  { element: 'Pr', orbital: '5p', be: 23 },\n  { element: 'Nd', orbital: '5p', be: 22 },\n  { element: 'Pm', orbital: '5p', be: 22 },\n  { element: 'Sm', orbital: '5p', be: 22 },\n  { element: 'Eu', orbital: '5p', be: 22 },\n  { element: 'Gd', orbital: '5p', be: 21 },\n  { element: 'Tb', orbital: '5p', be: 26 },\n  { element: 'Dy', orbital: '5p', be: 26 },\n  { element: 'Ho', orbital: '5p', be: 20 },\n  { element: 'Er', orbital: '5p', be: 29 },\n  { element: 'Tm', orbital: '5p', be: 32 },\n  { element: 'Yb', orbital: '5p', be: 23 },\n  { element: 'Lu', orbital: '5p', be: 28 },\n  { element: 'Hf', orbital: '5p', be: 31 },\n  { element: 'Ta', orbital: '5p', be: 37 },\n  { element: 'W', orbital: '5p', be: 37 },\n  { element: 'Re', orbital: '5p', be: 35 },\n  { element: 'Os', orbital: '5p', be: 46 },\n  { element: 'Ir', orbital: '5p', be: 51 },\n  { element: 'Pt', orbital: '5p', be: 51 },\n  { element: 'Au', orbital: '5p', be: 54 },\n  { element: 'Hg', orbital: '5p', be: 58 },\n  { element: 'Tl', orbital: '5p', be: 76 },\n  { element: 'Pb', orbital: '5p', be: 86 },\n  { element: 'Bi', orbital: '5p', be: 93 },\n  { element: 'Po', orbital: '5p', be: 104 },\n  { element: 'At', orbital: '5p', be: 115 },\n  { element: 'Rn', orbital: '5p', be: 127 },\n  { element: 'Fr', orbital: '5p', be: 140 },\n  { element: 'Ra', orbital: '5p', be: 153 },\n  { element: 'Ac', orbital: '5p', be: 167 },\n  { element: 'Th', orbital: '5p', be: 182 },\n  { element: 'Lu', orbital: '5d3/2', be: 5 },\n  { element: 'Hf', orbital: '5d3/2', be: 7 },\n  { element: 'Ta', orbital: '5d3/2', be: 6 },\n  { element: 'W', orbital: '5d3/2', be: 6 },\n  { element: 'Re', orbital: '5d3/2', be: 4 },\n  { element: 'Ir', orbital: '5d3/2', be: 4 },\n  { element: 'Pt', orbital: '5d3/2', be: 2 },\n  { element: 'Au', orbital: '5d3/2', be: 3 },\n  { element: 'Hg', orbital: '5d3/2', be: 7 },\n  { element: 'Tl', orbital: '5d3/2', be: 16 },\n  { element: 'Pb', orbital: '5d3/2', be: 22 },\n  { element: 'Bi', orbital: '5d3/2', be: 27 },\n  { element: 'Po', orbital: '5d3/2', be: 31 },\n  { element: 'At', orbital: '5d3/2', be: 40 },\n  { element: 'Rn', orbital: '5d3/2', be: 48 },\n  { element: 'Fr', orbital: '5d3/2', be: 58 },\n  { element: 'Ra', orbital: '5d3/2', be: 68 },\n  { element: 'Ac', orbital: '5d3/2', be: 80 },\n  { element: 'Th', orbital: '5d3/2', be: 95 },\n  { element: 'U', orbital: '5d3/2', be: 104 },\n  { element: 'Lu', orbital: '5d5/2', be: 5 },\n  { element: 'Hf', orbital: '5d5/2', be: 7 },\n  { element: 'Ta', orbital: '5d5/2', be: 6 },\n  { element: 'W', orbital: '5d5/2', be: 6 },\n  { element: 'Re', orbital: '5d5/2', be: 4 },\n  { element: 'Ir', orbital: '5d5/2', be: 4 },\n  { element: 'Pt', orbital: '5d5/2', be: 2 },\n  { element: 'Au', orbital: '5d5/2', be: 3 },\n  { element: 'Hg', orbital: '5d5/2', be: 7 },\n  { element: 'Tl', orbital: '5d5/2', be: 13 },\n  { element: 'Pb', orbital: '5d5/2', be: 20 },\n  { element: 'Bi', orbital: '5d5/2', be: 25 },\n  { element: 'Po', orbital: '5d5/2', be: 31 },\n  { element: 'At', orbital: '5d5/2', be: 40 },\n  { element: 'Rn', orbital: '5d5/2', be: 48 },\n  { element: 'Fr', orbital: '5d5/2', be: 58 },\n  { element: 'Ra', orbital: '5d5/2', be: 68 },\n  { element: 'Ac', orbital: '5d5/2', be: 80 },\n  { element: 'Th', orbital: '5d5/2', be: 88 },\n  { element: 'U', orbital: '5d5/2', be: 96 },\n  { element: 'Lu', orbital: '5d', be: 5 },\n  { element: 'Hf', orbital: '5d', be: 7 },\n  { element: 'Ta', orbital: '5d', be: 6 },\n  { element: 'W', orbital: '5d', be: 6 },\n  { element: 'Re', orbital: '5d', be: 4 },\n  { element: 'Ir', orbital: '5d', be: 4 },\n  { element: 'Pt', orbital: '5d', be: 2 },\n  { element: 'Au', orbital: '5d', be: 3 },\n  { element: 'Hg', orbital: '5d', be: 7 },\n  { element: 'Tl', orbital: '5d', be: 13 },\n  { element: 'Pb', orbital: '5d', be: 20 },\n  { element: 'Bi', orbital: '5d', be: 25 },\n  { element: 'Po', orbital: '5d', be: 31 },\n  { element: 'At', orbital: '5d', be: 40 },\n  { element: 'Rn', orbital: '5d', be: 48 },\n  { element: 'Fr', orbital: '5d', be: 58 },\n  { element: 'Ra', orbital: '5d', be: 68 },\n  { element: 'Ac', orbital: '5d', be: 80 },\n  { element: 'Th', orbital: '5d', be: 88 },\n  { element: 'U', orbital: '5d', be: 96 },\n  { element: 'Pb', orbital: '6s', be: 3 },\n  { element: 'Bi', orbital: '6s', be: 8 },\n  { element: 'Po', orbital: '6s', be: 12 },\n  { element: 'At', orbital: '6s', be: 18 },\n  { element: 'Rn', orbital: '6s', be: 26 },\n  { element: 'Fr', orbital: '6s', be: 34 },\n  { element: 'Ra', orbital: '6s', be: 44 },\n  { element: 'Th', orbital: '6s', be: 60 },\n  { element: 'Pb', orbital: '6p1/2', be: 1 },\n  { element: 'Bi', orbital: '6p1/2', be: 3 },\n  { element: 'Po', orbital: '6p1/2', be: 5 },\n  { element: 'At', orbital: '6p1/2', be: 8 },\n  { element: 'Rn', orbital: '6p1/2', be: 11 },\n  { element: 'Fr', orbital: '6p1/2', be: 15 },\n  { element: 'Ra', orbital: '6p1/2', be: 19 },\n  { element: 'Th', orbital: '6p1/2', be: 49 },\n  { element: 'U', orbital: '6p1/2', be: 28.9 },\n  { element: 'Pb', orbital: '6p3/2', be: 1 },\n  { element: 'Bi', orbital: '6p3/2', be: 3 },\n  { element: 'Po', orbital: '6p3/2', be: 5 },\n  { element: 'At', orbital: '6p3/2', be: 8 },\n  { element: 'Rn', orbital: '6p3/2', be: 11 },\n  { element: 'Fr', orbital: '6p3/2', be: 15 },\n  { element: 'Ra', orbital: '6p3/2', be: 19 },\n  { element: 'Th', orbital: '6p3/2', be: 43 },\n  { element: 'U', orbital: '6p3/2', be: 19 },\n  { element: 'Pb', orbital: '6p', be: 1 },\n  { element: 'Bi', orbital: '6p', be: 3 },\n  { element: 'Po', orbital: '6p', be: 5 },\n  { element: 'At', orbital: '6p', be: 8 },\n  { element: 'Rn', orbital: '6p', be: 11 },\n  { element: 'Fr', orbital: '6p', be: 15 },\n  { element: 'Ra', orbital: '6p', be: 19 },\n  { element: 'Th', orbital: '6p', be: 43 },\n  { element: 'U', orbital: '6p', be: 19 },\n  { element: 'H', orbital: '1s', be: 14 },\n  { element: 'He', orbital: '1s', be: 25 },\n  { element: 'Li', orbital: '1s', be: 55 },\n  { element: 'Be', orbital: '1s', be: 111 },\n  { element: 'B', orbital: '1s', be: 188 },\n  { element: 'C', orbital: '1s', be: 284 },\n  { element: 'N', orbital: '1s', be: 399 },\n  { element: 'O', orbital: '1s', be: 532 },\n  { element: 'F', orbital: '1s', be: 686 },\n  { element: 'Ne', orbital: '1s', be: 867 },\n  { element: 'Na', orbital: '1s', be: 1072 },\n  { element: 'O', orbital: '2s', be: 24 },\n  { element: 'F', orbital: '2s', be: 31 },\n  { element: 'Ne', orbital: '2s', be: 45 },\n  { element: 'Na', orbital: '2s', be: 63 },\n  { element: 'Mg', orbital: '2s', be: 89 },\n  { element: 'Al', orbital: '2s', be: 118 },\n  { element: 'Si', orbital: '2s', be: 149 },\n  { element: 'P', orbital: '2s', be: 189 },\n  { element: 'S', orbital: '2s', be: 229 },\n  { element: 'Cl', orbital: '2s', be: 270 },\n  { element: 'Ar', orbital: '2s', be: 320 },\n  { element: 'K', orbital: '2s', be: 377 },\n  { element: 'Ca', orbital: '2s', be: 438 },\n  { element: 'Sc', orbital: '2s', be: 500 },\n  { element: 'Ti', orbital: '2s', be: 564 },\n  { element: 'V', orbital: '2s', be: 628 },\n  { element: 'Cr', orbital: '2s', be: 695 },\n  { element: 'Mn', orbital: '2s', be: 769 },\n  { element: 'Fe', orbital: '2s', be: 846 },\n  { element: 'Co', orbital: '2s', be: 926 },\n  { element: 'Ni', orbital: '2s', be: 1008 },\n  { element: 'Cu', orbital: '2s', be: 1096 },\n  { element: 'Zn', orbital: '2s', be: 1194 },\n  { element: 'B', orbital: '2p1/2', be: 5 },\n  { element: 'C', orbital: '2p1/2', be: 7 },\n  { element: 'N', orbital: '2p1/2', be: 9 },\n  { element: 'O', orbital: '2p1/2', be: 7 },\n  { element: 'F', orbital: '2p1/2', be: 9 },\n  { element: 'Ne', orbital: '2p1/2', be: 18 },\n  { element: 'Na', orbital: '2p1/2', be: 31 },\n  { element: 'Mg', orbital: '2p1/2', be: 52 },\n  { element: 'Al', orbital: '2p1/2', be: 74 },\n  { element: 'Si', orbital: '2p1/2', be: 100 },\n  { element: 'P', orbital: '2p1/2', be: 136 },\n  { element: 'S', orbital: '2p1/2', be: 165 },\n  { element: 'Cl', orbital: '2p1/2', be: 202 },\n  { element: 'Ar', orbital: '2p1/2', be: 247 },\n  { element: 'K', orbital: '2p1/2', be: 297 },\n  { element: 'Ca', orbital: '2p1/2', be: 350 },\n  { element: 'Sc', orbital: '2p1/2', be: 407 },\n  { element: 'Ti', orbital: '2p1/2', be: 461 },\n  { element: 'V', orbital: '2p1/2', be: 520 },\n  { element: 'Cr', orbital: '2p1/2', be: 584 },\n  { element: 'Mn', orbital: '2p1/2', be: 652 },\n  { element: 'Fe', orbital: '2p1/2', be: 723 },\n  { element: 'Co', orbital: '2p1/2', be: 794 },\n  { element: 'Ni', orbital: '2p1/2', be: 872 },\n  { element: 'Cu', orbital: '2p1/2', be: 951 },\n  { element: 'Zn', orbital: '2p1/2', be: 1044 },\n  { element: 'Ga', orbital: '2p1/2', be: 1143 },\n  { element: 'B', orbital: '2p3/2', be: 5 },\n  { element: 'C', orbital: '2p3/2', be: 7 },\n  { element: 'N', orbital: '2p3/2', be: 9 },\n  { element: 'O', orbital: '2p3/2', be: 7 },\n  { element: 'F', orbital: '2p3/2', be: 9 },\n  { element: 'Ne', orbital: '2p3/2', be: 18 },\n  { element: 'Na', orbital: '2p3/2', be: 31 },\n  { element: 'Mg', orbital: '2p3/2', be: 52 },\n  { element: 'Al', orbital: '2p3/2', be: 73 },\n  { element: 'Si', orbital: '2p3/2', be: 99 },\n  { element: 'P', orbital: '2p3/2', be: 135 },\n  { element: 'S', orbital: '2p3/2', be: 164 },\n  { element: 'Cl', orbital: '2p3/2', be: 200 },\n  { element: 'Ar', orbital: '2p3/2', be: 245 },\n  { element: 'K', orbital: '2p3/2', be: 294 },\n  { element: 'Ca', orbital: '2p3/2', be: 347 },\n  { element: 'Sc', orbital: '2p3/2', be: 402 },\n  { element: 'Ti', orbital: '2p3/2', be: 455 },\n  { element: 'V', orbital: '2p3/2', be: 513 },\n  { element: 'Cr', orbital: '2p3/2', be: 575 },\n  { element: 'Mn', orbital: '2p3/2', be: 641 },\n  { element: 'Fe', orbital: '2p3/2', be: 710 },\n  { element: 'Co', orbital: '2p3/2', be: 779 },\n  { element: 'Ni', orbital: '2p3/2', be: 855 },\n  { element: 'Cu', orbital: '2p3/2', be: 931 },\n  { element: 'Zn', orbital: '2p3/2', be: 1021 },\n  { element: 'Ga', orbital: '2p3/2', be: 1116 },\n  { element: 'Ge', orbital: '2p3/2', be: 1217 },\n  { element: 'B', orbital: '2p', be: 5 },\n  { element: 'C', orbital: '2p', be: 7 },\n  { element: 'N', orbital: '2p', be: 9 },\n  { element: 'O', orbital: '2p', be: 7 },\n  { element: 'F', orbital: '2p', be: 9 },\n  { element: 'Ne', orbital: '2p', be: 18 },\n  { element: 'Na', orbital: '2p', be: 31 },\n  { element: 'Mg', orbital: '2p', be: 52 },\n  { element: 'Al', orbital: '2p', be: 73 },\n  { element: 'Si', orbital: '2p', be: 99 },\n  { element: 'P', orbital: '2p', be: 135 },\n  { element: 'S', orbital: '2p', be: 164 },\n  { element: 'Cl', orbital: '2p', be: 200 },\n  { element: 'Ar', orbital: '2p', be: 245 },\n  { element: 'K', orbital: '2p', be: 294 },\n  { element: 'Ca', orbital: '2p', be: 347 },\n  { element: 'Sc', orbital: '2p', be: 402 },\n  { element: 'Ti', orbital: '2p', be: 455 },\n  { element: 'V', orbital: '2p', be: 513 },\n  { element: 'Cr', orbital: '2p', be: 575 },\n  { element: 'Mn', orbital: '2p', be: 641 },\n  { element: 'Fe', orbital: '2p', be: 710 },\n  { element: 'Co', orbital: '2p', be: 779 },\n  { element: 'Ni', orbital: '2p', be: 855 },\n  { element: 'Cu', orbital: '2p', be: 931 },\n  { element: 'Zn', orbital: '2p', be: 1021 },\n  { element: 'Ga', orbital: '2p', be: 1116 },\n  { element: 'Ge', orbital: '2p', be: 1217 },\n  { element: 'Na', orbital: '3s', be: 1 },\n  { element: 'Mg', orbital: '3s', be: 2 },\n  { element: 'Al', orbital: '3s', be: 1 },\n  { element: 'Si', orbital: '3s', be: 8 },\n  { element: 'P', orbital: '3s', be: 16 },\n  { element: 'S', orbital: '3s', be: 16 },\n  { element: 'Cl', orbital: '3s', be: 18 },\n  { element: 'Ar', orbital: '3s', be: 25 },\n  { element: 'K', orbital: '3s', be: 34 },\n  { element: 'Ca', orbital: '3s', be: 44 },\n  { element: 'Sc', orbital: '3s', be: 54 },\n  { element: 'Ti', orbital: '3s', be: 59 },\n  { element: 'V', orbital: '3s', be: 66 },\n  { element: 'Cr', orbital: '3s', be: 74 },\n  { element: 'Mn', orbital: '3s', be: 84 },\n  { element: 'Fe', orbital: '3s', be: 95 },\n  { element: 'Co', orbital: '3s', be: 101 },\n  { element: 'Ni', orbital: '3s', be: 112 },\n  { element: 'Cu', orbital: '3s', be: 120 },\n  { element: 'Zn', orbital: '3s', be: 137 },\n  { element: 'Ga', orbital: '3s', be: 158 },\n  { element: 'Ge', orbital: '3s', be: 181 },\n  { element: 'As', orbital: '3s', be: 204 },\n  { element: 'Se', orbital: '3s', be: 232 },\n  { element: 'Br', orbital: '3s', be: 257 },\n  { element: 'Kr', orbital: '3s', be: 289 },\n  { element: 'Rb', orbital: '3s', be: 322 },\n  { element: 'Sr', orbital: '3s', be: 358 },\n  { element: 'Y', orbital: '3s', be: 395 },\n  { element: 'Zr', orbital: '3s', be: 431 },\n  { element: 'Nb', orbital: '3s', be: 469 },\n  { element: 'Mo', orbital: '3s', be: 505 },\n  { element: 'Tc', orbital: '3s', be: 544 },\n  { element: 'Ru', orbital: '3s', be: 585 },\n  { element: 'Rh', orbital: '3s', be: 627 },\n  { element: 'Pd', orbital: '3s', be: 670 },\n  { element: 'Ag', orbital: '3s', be: 717 },\n  { element: 'Cd', orbital: '3s', be: 770 },\n  { element: 'In', orbital: '3s', be: 826 },\n  { element: 'Sn', orbital: '3s', be: 884 },\n  { element: 'Sb', orbital: '3s', be: 944 },\n  { element: 'Te', orbital: '3s', be: 1006 },\n  { element: 'I', orbital: '3s', be: 1072 },\n  { element: 'Xe', orbital: '3s', be: 1145 },\n  { element: 'Cs', orbital: '3s', be: 1217 },\n  { element: 'Si', orbital: '3p1/2', be: 3 },\n  { element: 'P', orbital: '3p1/2', be: 10 },\n  { element: 'S', orbital: '3p1/2', be: 8 },\n  { element: 'Cl', orbital: '3p1/2', be: 7 },\n  { element: 'Ar', orbital: '3p1/2', be: 12 },\n  { element: 'K', orbital: '3p1/2', be: 18 },\n  { element: 'Ca', orbital: '3p1/2', be: 26 },\n  { element: 'Sc', orbital: '3p1/2', be: 32 },\n  { element: 'Ti', orbital: '3p1/2', be: 34 },\n  { element: 'V', orbital: '3p1/2', be: 38 },\n  { element: 'Cr', orbital: '3p1/2', be: 43 },\n  { element: 'Mn', orbital: '3p1/2', be: 49 },\n  { element: 'Fe', orbital: '3p1/2', be: 56 },\n  { element: 'Co', orbital: '3p1/2', be: 60 },\n  { element: 'Ni', orbital: '3p1/2', be: 68 },\n  { element: 'Cu', orbital: '3p1/2', be: 74 },\n  { element: 'Zn', orbital: '3p1/2', be: 87 },\n  { element: 'Ga', orbital: '3p1/2', be: 107 },\n  { element: 'Ge', orbital: '3p1/2', be: 129 },\n  { element: 'As', orbital: '3p1/2', be: 147 },\n  { element: 'Se', orbital: '3p1/2', be: 168 },\n  { element: 'Br', orbital: '3p1/2', be: 189 },\n  { element: 'Kr', orbital: '3p1/2', be: 223 },\n  { element: 'Rb', orbital: '3p1/2', be: 248 },\n  { element: 'Sr', orbital: '3p1/2', be: 280 },\n  { element: 'Y', orbital: '3p1/2', be: 313 },\n  { element: 'Zr', orbital: '3p1/2', be: 345 },\n  { element: 'Nb', orbital: '3p1/2', be: 379 },\n  { element: 'Mo', orbital: '3p1/2', be: 410 },\n  { element: 'Tc', orbital: '3p1/2', be: 445 },\n  { element: 'Ru', orbital: '3p1/2', be: 483 },\n  { element: 'Rh', orbital: '3p1/2', be: 521 },\n  { element: 'Pd', orbital: '3p1/2', be: 559 },\n  { element: 'Ag', orbital: '3p1/2', be: 602 },\n  { element: 'Cd', orbital: '3p1/2', be: 651 },\n  { element: 'In', orbital: '3p1/2', be: 702 },\n  { element: 'Sn', orbital: '3p1/2', be: 757 },\n  { element: 'Sb', orbital: '3p1/2', be: 812 },\n  { element: 'Te', orbital: '3p1/2', be: 870 },\n  { element: 'I', orbital: '3p1/2', be: 931 },\n  { element: 'Xe', orbital: '3p1/2', be: 999 },\n  { element: 'Cs', orbital: '3p1/2', be: 1065 },\n  { element: 'Ba', orbital: '3p1/2', be: 1137 },\n  { element: 'La', orbital: '3p1/2', be: 1205 },\n  { element: 'Si', orbital: '3p3/2', be: 3 },\n  { element: 'P', orbital: '3p3/2', be: 10 },\n  { element: 'S', orbital: '3p3/2', be: 8 },\n  { element: 'Cl', orbital: '3p3/2', be: 7 },\n  { element: 'Ar', orbital: '3p3/2', be: 12 },\n  { element: 'K', orbital: '3p3/2', be: 18 },\n  { element: 'Ca', orbital: '3p3/2', be: 26 },\n  { element: 'Sc', orbital: '3p3/2', be: 32 },\n  { element: 'Ti', orbital: '3p3/2', be: 34 },\n  { element: 'V', orbital: '3p3/2', be: 38 },\n  { element: 'Cr', orbital: '3p3/2', be: 43 },\n  { element: 'Mn', orbital: '3p3/2', be: 49 },\n  { element: 'Fe', orbital: '3p3/2', be: 56 },\n  { element: 'Co', orbital: '3p3/2', be: 60 },\n  { element: 'Ni', orbital: '3p3/2', be: 68 },\n  { element: 'Cu', orbital: '3p3/2', be: 74 },\n  { element: 'Zn', orbital: '3p3/2', be: 87 },\n  { element: 'Ga', orbital: '3p3/2', be: 103 },\n  { element: 'Ge', orbital: '3p3/2', be: 122 },\n  { element: 'As', orbital: '3p3/2', be: 141 },\n  { element: 'Se', orbital: '3p3/2', be: 162 },\n  { element: 'Br', orbital: '3p3/2', be: 182 },\n  { element: 'Kr', orbital: '3p3/2', be: 214 },\n  { element: 'Rb', orbital: '3p3/2', be: 239 },\n  { element: 'Sr', orbital: '3p3/2', be: 269 },\n  { element: 'Y', orbital: '3p3/2', be: 301 },\n  { element: 'Zr', orbital: '3p3/2', be: 331 },\n  { element: 'Nb', orbital: '3p3/2', be: 363 },\n  { element: 'Mo', orbital: '3p3/2', be: 393 },\n  { element: 'Tc', orbital: '3p3/2', be: 425 },\n  { element: 'Ru', orbital: '3p3/2', be: 461 },\n  { element: 'Rh', orbital: '3p3/2', be: 496 },\n  { element: 'Pd', orbital: '3p3/2', be: 531 },\n  { element: 'Ag', orbital: '3p3/2', be: 571 },\n  { element: 'Cd', orbital: '3p3/2', be: 617 },\n  { element: 'In', orbital: '3p3/2', be: 664 },\n  { element: 'Sn', orbital: '3p3/2', be: 715 },\n  { element: 'Sb', orbital: '3p3/2', be: 766 },\n  { element: 'Te', orbital: '3p3/2', be: 819 },\n  { element: 'I', orbital: '3p3/2', be: 875 },\n  { element: 'Xe', orbital: '3p3/2', be: 937 },\n  { element: 'Cs', orbital: '3p3/2', be: 998 },\n  { element: 'Ba', orbital: '3p3/2', be: 1063 },\n  { element: 'La', orbital: '3p3/2', be: 1124 },\n  { element: 'Ce', orbital: '3p3/2', be: 1186 },\n  { element: 'Pr', orbital: '3p3/2', be: 1243 },\n  { element: 'Si', orbital: '3p', be: 3 },\n  { element: 'P', orbital: '3p', be: 10 },\n  { element: 'S', orbital: '3p', be: 8 },\n  { element: 'Cl', orbital: '3p', be: 7 },\n  { element: 'Ar', orbital: '3p', be: 12 },\n  { element: 'K', orbital: '3p', be: 18 },\n  { element: 'Ca', orbital: '3p', be: 26 },\n  { element: 'Sc', orbital: '3p', be: 32 },\n  { element: 'Ti', orbital: '3p', be: 34 },\n  { element: 'V', orbital: '3p', be: 38 },\n  { element: 'Cr', orbital: '3p', be: 43 },\n  { element: 'Mn', orbital: '3p', be: 49 },\n  { element: 'Fe', orbital: '3p', be: 56 },\n  { element: 'Co', orbital: '3p', be: 60 },\n  { element: 'Ni', orbital: '3p', be: 68 },\n  { element: 'Cu', orbital: '3p', be: 74 },\n  { element: 'Zn', orbital: '3p', be: 87 },\n  { element: 'Ga', orbital: '3p', be: 103 },\n  { element: 'Ge', orbital: '3p', be: 122 },\n  { element: 'As', orbital: '3p', be: 141 },\n  { element: 'Se', orbital: '3p', be: 162 },\n  { element: 'Br', orbital: '3p', be: 182 },\n  { element: 'Kr', orbital: '3p', be: 214 },\n  { element: 'Rb', orbital: '3p', be: 239 },\n  { element: 'Sr', orbital: '3p', be: 269 },\n  { element: 'Y', orbital: '3p', be: 301 },\n  { element: 'Zr', orbital: '3p', be: 331 },\n  { element: 'Nb', orbital: '3p', be: 363 },\n  { element: 'Mo', orbital: '3p', be: 393 },\n  { element: 'Tc', orbital: '3p', be: 425 },\n  { element: 'Ru', orbital: '3p', be: 461 },\n  { element: 'Rh', orbital: '3p', be: 496 },\n  { element: 'Pd', orbital: '3p', be: 531 },\n  { element: 'Ag', orbital: '3p', be: 571 },\n  { element: 'Cd', orbital: '3p', be: 617 },\n  { element: 'In', orbital: '3p', be: 664 },\n  { element: 'Sn', orbital: '3p', be: 715 },\n  { element: 'Sb', orbital: '3p', be: 766 },\n  { element: 'Te', orbital: '3p', be: 819 },\n  { element: 'I', orbital: '3p', be: 875 },\n  { element: 'Xe', orbital: '3p', be: 937 },\n  { element: 'Cs', orbital: '3p', be: 998 },\n  { element: 'Ba', orbital: '3p', be: 1063 },\n  { element: 'La', orbital: '3p', be: 1124 },\n  { element: 'Ce', orbital: '3p', be: 1186 },\n  { element: 'Pr', orbital: '3p', be: 1243 },\n  { element: 'Sc', orbital: '3d3/2', be: 7 },\n  { element: 'Ti', orbital: '3d3/2', be: 3 },\n  { element: 'V', orbital: '3d3/2', be: 2 },\n  { element: 'Cr', orbital: '3d3/2', be: 2 },\n  { element: 'Mn', orbital: '3d3/2', be: 4 },\n  { element: 'Fe', orbital: '3d3/2', be: 6 },\n  { element: 'Co', orbital: '3d3/2', be: 3 },\n  { element: 'Ni', orbital: '3d3/2', be: 4 },\n  { element: 'Cu', orbital: '3d3/2', be: 2 },\n  { element: 'Zn', orbital: '3d3/2', be: 9 },\n  { element: 'Ga', orbital: '3d3/2', be: 18 },\n  { element: 'Ge', orbital: '3d3/2', be: 29 },\n  { element: 'As', orbital: '3d3/2', be: 41 },\n  { element: 'Se', orbital: '3d3/2', be: 57 },\n  { element: 'Br', orbital: '3d3/2', be: 70 },\n  { element: 'Kr', orbital: '3d3/2', be: 89 },\n  { element: 'Rb', orbital: '3d3/2', be: 112 },\n  { element: 'Sr', orbital: '3d3/2', be: 135 },\n  { element: 'Y', orbital: '3d3/2', be: 160 },\n  { element: 'Zr', orbital: '3d3/2', be: 183 },\n  { element: 'Nb', orbital: '3d3/2', be: 208 },\n  { element: 'Mo', orbital: '3d3/2', be: 230 },\n  { element: 'Tc', orbital: '3d3/2', be: 257 },\n  { element: 'Ru', orbital: '3d3/2', be: 284 },\n  { element: 'Rh', orbital: '3d3/2', be: 312 },\n  { element: 'Pd', orbital: '3d3/2', be: 340 },\n  { element: 'Ag', orbital: '3d3/2', be: 373 },\n  { element: 'Cd', orbital: '3d3/2', be: 411 },\n  { element: 'In', orbital: '3d3/2', be: 451 },\n  { element: 'Sn', orbital: '3d3/2', be: 494 },\n  { element: 'Sb', orbital: '3d3/2', be: 537 },\n  { element: 'Te', orbital: '3d3/2', be: 582 },\n  { element: 'I', orbital: '3d3/2', be: 631 },\n  { element: 'Xe', orbital: '3d3/2', be: 685 },\n  { element: 'Cs', orbital: '3d3/2', be: 740 },\n  { element: 'Ba', orbital: '3d3/2', be: 796 },\n  { element: 'La', orbital: '3d3/2', be: 849 },\n  { element: 'Ce', orbital: '3d3/2', be: 902 },\n  { element: 'Pr', orbital: '3d3/2', be: 951 },\n  { element: 'Nd', orbital: '3d3/2', be: 1000 },\n  { element: 'Pm', orbital: '3d3/2', be: 1052 },\n  { element: 'Sm', orbital: '3d3/2', be: 1107 },\n  { element: 'Eu', orbital: '3d3/2', be: 1161 },\n  { element: 'Gd', orbital: '3d3/2', be: 1218 },\n  { element: 'Sc', orbital: '3d5/2', be: 7 },\n  { element: 'Ti', orbital: '3d5/2', be: 3 },\n  { element: 'V', orbital: '3d5/2', be: 2 },\n  { element: 'Cr', orbital: '3d5/2', be: 2 },\n  { element: 'Mn', orbital: '3d5/2', be: 4 },\n  { element: 'Fe', orbital: '3d5/2', be: 6 },\n  { element: 'Co', orbital: '3d5/2', be: 3 },\n  { element: 'Ni', orbital: '3d5/2', be: 4 },\n  { element: 'Cu', orbital: '3d5/2', be: 2 },\n  { element: 'Zn', orbital: '3d5/2', be: 9 },\n  { element: 'Ga', orbital: '3d5/2', be: 18 },\n  { element: 'Ge', orbital: '3d5/2', be: 29 },\n  { element: 'As', orbital: '3d5/2', be: 41 },\n  { element: 'Se', orbital: '3d5/2', be: 57 },\n  { element: 'Br', orbital: '3d5/2', be: 69 },\n  { element: 'Kr', orbital: '3d5/2', be: 89 },\n  { element: 'Rb', orbital: '3d5/2', be: 111 },\n  { element: 'Sr', orbital: '3d5/2', be: 133 },\n  { element: 'Y', orbital: '3d5/2', be: 158 },\n  { element: 'Zr', orbital: '3d5/2', be: 180 },\n  { element: 'Nb', orbital: '3d5/2', be: 205 },\n  { element: 'Mo', orbital: '3d5/2', be: 227 },\n  { element: 'Tc', orbital: '3d5/2', be: 253 },\n  { element: 'Ru', orbital: '3d5/2', be: 279 },\n  { element: 'Rh', orbital: '3d5/2', be: 307 },\n  { element: 'Pd', orbital: '3d5/2', be: 335 },\n  { element: 'Ag', orbital: '3d5/2', be: 367 },\n  { element: 'Cd', orbital: '3d5/2', be: 404 },\n  { element: 'In', orbital: '3d5/2', be: 443 },\n  { element: 'Sn', orbital: '3d5/2', be: 485 },\n  { element: 'Sb', orbital: '3d5/2', be: 528 },\n  { element: 'Te', orbital: '3d5/2', be: 572 },\n  { element: 'I', orbital: '3d5/2', be: 620 },\n  { element: 'Xe', orbital: '3d5/2', be: 672 },\n  { element: 'Cs', orbital: '3d5/2', be: 726 },\n  { element: 'Ba', orbital: '3d5/2', be: 781 },\n  { element: 'La', orbital: '3d5/2', be: 832 },\n  { element: 'Ce', orbital: '3d5/2', be: 884 },\n  { element: 'Pr', orbital: '3d5/2', be: 931 },\n  { element: 'Nd', orbital: '3d5/2', be: 978 },\n  { element: 'Pm', orbital: '3d5/2', be: 1027 },\n  { element: 'Sm', orbital: '3d5/2', be: 1081 },\n  { element: 'Eu', orbital: '3d5/2', be: 1131 },\n  { element: 'Gd', orbital: '3d5/2', be: 1186 },\n  { element: 'Tb', orbital: '3d5/2', be: 1242 },\n  { element: 'Sc', orbital: '3d', be: 7 },\n  { element: 'Ti', orbital: '3d', be: 3 },\n  { element: 'V', orbital: '3d', be: 2 },\n  { element: 'Cr', orbital: '3d', be: 2 },\n  { element: 'Mn', orbital: '3d', be: 4 },\n  { element: 'Fe', orbital: '3d', be: 6 },\n  { element: 'Co', orbital: '3d', be: 3 },\n  { element: 'Ni', orbital: '3d', be: 4 },\n  { element: 'Cu', orbital: '3d', be: 2 },\n  { element: 'Zn', orbital: '3d', be: 9 },\n  { element: 'Ga', orbital: '3d', be: 18 },\n  { element: 'Ge', orbital: '3d', be: 29 },\n  { element: 'As', orbital: '3d', be: 41 },\n  { element: 'Se', orbital: '3d', be: 57 },\n  { element: 'Br', orbital: '3d', be: 69 },\n  { element: 'Kr', orbital: '3d', be: 89 },\n  { element: 'Rb', orbital: '3d', be: 111 },\n  { element: 'Sr', orbital: '3d', be: 133 },\n  { element: 'Y', orbital: '3d', be: 158 },\n  { element: 'Zr', orbital: '3d', be: 180 },\n  { element: 'Nb', orbital: '3d', be: 205 },\n  { element: 'Mo', orbital: '3d', be: 227 },\n  { element: 'Tc', orbital: '3d', be: 253 },\n  { element: 'Ru', orbital: '3d', be: 279 },\n  { element: 'Rh', orbital: '3d', be: 307 },\n  { element: 'Pd', orbital: '3d', be: 335 },\n  { element: 'Ag', orbital: '3d', be: 367 },\n  { element: 'Cd', orbital: '3d', be: 404 },\n  { element: 'In', orbital: '3d', be: 443 },\n  { element: 'Sn', orbital: '3d', be: 485 },\n  { element: 'Sb', orbital: '3d', be: 528 },\n  { element: 'Te', orbital: '3d', be: 572 },\n  { element: 'I', orbital: '3d', be: 620 },\n  { element: 'Xe', orbital: '3d', be: 672 },\n  { element: 'Cs', orbital: '3d', be: 726 },\n  { element: 'Ba', orbital: '3d', be: 781 },\n  { element: 'La', orbital: '3d', be: 832 },\n  { element: 'Ce', orbital: '3d', be: 884 },\n  { element: 'Pr', orbital: '3d', be: 931 },\n  { element: 'Nd', orbital: '3d', be: 978 },\n  { element: 'Pm', orbital: '3d', be: 1027 },\n  { element: 'Sm', orbital: '3d', be: 1081 },\n  { element: 'Eu', orbital: '3d', be: 1131 },\n  { element: 'Gd', orbital: '3d', be: 1186 },\n  { element: 'Tb', orbital: '3d', be: 1242 },\n  { element: 'Br', orbital: '4s', be: 27 },\n  { element: 'Kr', orbital: '4s', be: 24 },\n  { element: 'Rb', orbital: '4s', be: 30 },\n  { element: 'Sr', orbital: '4s', be: 38 },\n  { element: 'Y', orbital: '4s', be: 46 },\n  { element: 'Zr', orbital: '4s', be: 52 },\n  { element: 'Nb', orbital: '4s', be: 58 },\n  { element: 'Mo', orbital: '4s', be: 62 },\n  { element: 'Tc', orbital: '4s', be: 68 },\n  { element: 'Ru', orbital: '4s', be: 75 },\n  { element: 'Rh', orbital: '4s', be: 81 },\n  { element: 'Pd', orbital: '4s', be: 86 },\n  { element: 'Ag', orbital: '4s', be: 95 },\n  { element: 'Cd', orbital: '4s', be: 108 },\n  { element: 'In', orbital: '4s', be: 122 },\n  { element: 'Sn', orbital: '4s', be: 137 },\n  { element: 'Sb', orbital: '4s', be: 152 },\n  { element: 'Te', orbital: '4s', be: 168 },\n  { element: 'I', orbital: '4s', be: 186 },\n  { element: 'Xe', orbital: '4s', be: 208 },\n  { element: 'Cs', orbital: '4s', be: 231 },\n  { element: 'Ba', orbital: '4s', be: 253 },\n  { element: 'La', orbital: '4s', be: 271 },\n  { element: 'Ce', orbital: '4s', be: 290 },\n  { element: 'Pr', orbital: '4s', be: 305 },\n  { element: 'Nd', orbital: '4s', be: 316 },\n  { element: 'Pm', orbital: '4s', be: 331 },\n  { element: 'Sm', orbital: '4s', be: 347 },\n  { element: 'Eu', orbital: '4s', be: 360 },\n  { element: 'Gd', orbital: '4s', be: 376 },\n  { element: 'Tb', orbital: '4s', be: 398 },\n  { element: 'Dy', orbital: '4s', be: 416 },\n  { element: 'Ho', orbital: '4s', be: 436 },\n  { element: 'Er', orbital: '4s', be: 449 },\n  { element: 'Tm', orbital: '4s', be: 472 },\n  { element: 'Yb', orbital: '4s', be: 487 },\n  { element: 'Lu', orbital: '4s', be: 506 },\n  { element: 'Hf', orbital: '4s', be: 538 },\n  { element: 'Ta', orbital: '4s', be: 566 },\n  { element: 'W', orbital: '4s', be: 595 },\n  { element: 'Re', orbital: '4s', be: 625 },\n  { element: 'Os', orbital: '4s', be: 655 },\n  { element: 'Ir', orbital: '4s', be: 690 },\n  { element: 'Pt', orbital: '4s', be: 724 },\n  { element: 'Au', orbital: '4s', be: 759 },\n  { element: 'Hg', orbital: '4s', be: 800 },\n  { element: 'Tl', orbital: '4s', be: 846 },\n  { element: 'Pb', orbital: '4s', be: 894 },\n  { element: 'Bi', orbital: '4s', be: 939 },\n  { element: 'Po', orbital: '4s', be: 995 },\n  { element: 'At', orbital: '4s', be: 1042 },\n  { element: 'Rn', orbital: '4s', be: 1097 },\n  { element: 'Fr', orbital: '4s', be: 1153 },\n  { element: 'Ra', orbital: '4s', be: 1208 },\n  { element: 'Ga', orbital: '4p1/2', be: 1 },\n  { element: 'Ge', orbital: '4p1/2', be: 3 },\n  { element: 'As', orbital: '4p1/2', be: 3 },\n  { element: 'Se', orbital: '4p1/2', be: 6 },\n  { element: 'Br', orbital: '4p1/2', be: 5 },\n  { element: 'Kr', orbital: '4p1/2', be: 11 },\n  { element: 'Rb', orbital: '4p1/2', be: 15 },\n  { element: 'Sr', orbital: '4p1/2', be: 20 },\n  { element: 'Y', orbital: '4p1/2', be: 26 },\n  { element: 'Zr', orbital: '4p1/2', be: 29 },\n  { element: 'Nb', orbital: '4p1/2', be: 34 },\n  { element: 'Mo', orbital: '4p1/2', be: 35 },\n  { element: 'Tc', orbital: '4p1/2', be: 39 },\n  { element: 'Ru', orbital: '4p1/2', be: 43 },\n  { element: 'Rh', orbital: '4p1/2', be: 48 },\n  { element: 'Pd', orbital: '4p1/2', be: 51 },\n  { element: 'Ag', orbital: '4p1/2', be: 62 },\n  { element: 'Cd', orbital: '4p1/2', be: 67 },\n  { element: 'In', orbital: '4p1/2', be: 77 },\n  { element: 'Sn', orbital: '4p1/2', be: 89 },\n  { element: 'Sb', orbital: '4p1/2', be: 99 },\n  { element: 'Te', orbital: '4p1/2', be: 110 },\n  { element: 'I', orbital: '4p1/2', be: 123 },\n  { element: 'Xe', orbital: '4p1/2', be: 147 },\n  { element: 'Cs', orbital: '4p1/2', be: 172 },\n  { element: 'Ba', orbital: '4p1/2', be: 192 },\n  { element: 'La', orbital: '4p1/2', be: 206 },\n  { element: 'Ce', orbital: '4p1/2', be: 224 },\n  { element: 'Pr', orbital: '4p1/2', be: 237 },\n  { element: 'Nd', orbital: '4p1/2', be: 244 },\n  { element: 'Pm', orbital: '4p1/2', be: 255 },\n  { element: 'Sm', orbital: '4p1/2', be: 267 },\n  { element: 'Eu', orbital: '4p1/2', be: 284 },\n  { element: 'Gd', orbital: '4p1/2', be: 289 },\n  { element: 'Tb', orbital: '4p1/2', be: 311 },\n  { element: 'Dy', orbital: '4p1/2', be: 332 },\n  { element: 'Ho', orbital: '4p1/2', be: 343 },\n  { element: 'Er', orbital: '4p1/2', be: 366 },\n  { element: 'Tm', orbital: '4p1/2', be: 386 },\n  { element: 'Yb', orbital: '4p1/2', be: 396 },\n  { element: 'Lu', orbital: '4p1/2', be: 410 },\n  { element: 'Hf', orbital: '4p1/2', be: 437 },\n  { element: 'Ta', orbital: '4p1/2', be: 465 },\n  { element: 'W', orbital: '4p1/2', be: 492 },\n  { element: 'Re', orbital: '4p1/2', be: 518 },\n  { element: 'Os', orbital: '4p1/2', be: 547 },\n  { element: 'Ir', orbital: '4p1/2', be: 577 },\n  { element: 'Pt', orbital: '4p1/2', be: 608 },\n  { element: 'Au', orbital: '4p1/2', be: 644 },\n  { element: 'Hg', orbital: '4p1/2', be: 677 },\n  { element: 'Tl', orbital: '4p1/2', be: 722 },\n  { element: 'Pb', orbital: '4p1/2', be: 764 },\n  { element: 'Bi', orbital: '4p1/2', be: 806 },\n  { element: 'Po', orbital: '4p1/2', be: 851 },\n  { element: 'At', orbital: '4p1/2', be: 886 },\n  { element: 'Rn', orbital: '4p1/2', be: 929 },\n  { element: 'Fr', orbital: '4p1/2', be: 980 },\n  { element: 'Ra', orbital: '4p1/2', be: 1058 },\n  { element: 'Ac', orbital: '4p1/2', be: 1080 },\n  { element: 'Th', orbital: '4p1/2', be: 1168 },\n  { element: 'Ga', orbital: '4p3/2', be: 1 },\n  { element: 'Ge', orbital: '4p3/2', be: 3 },\n  { element: 'As', orbital: '4p3/2', be: 3 },\n  { element: 'Se', orbital: '4p3/2', be: 6 },\n  { element: 'Br', orbital: '4p3/2', be: 5 },\n  { element: 'Kr', orbital: '4p3/2', be: 11 },\n  { element: 'Rb', orbital: '4p3/2', be: 14 },\n  { element: 'Sr', orbital: '4p3/2', be: 20 },\n  { element: 'Y', orbital: '4p3/2', be: 26 },\n  { element: 'Zr', orbital: '4p3/2', be: 29 },\n  { element: 'Nb', orbital: '4p3/2', be: 34 },\n  { element: 'Mo', orbital: '4p3/2', be: 35 },\n  { element: 'Tc', orbital: '4p3/2', be: 39 },\n  { element: 'Ru', orbital: '4p3/2', be: 43 },\n  { element: 'Rh', orbital: '4p3/2', be: 48 },\n  { element: 'Pd', orbital: '4p3/2', be: 56 },\n  { element: 'Ag', orbital: '4p3/2', be: 56 },\n  { element: 'Cd', orbital: '4p3/2', be: 67 },\n  { element: 'In', orbital: '4p3/2', be: 77 },\n  { element: 'Sn', orbital: '4p3/2', be: 89 },\n  { element: 'Sb', orbital: '4p3/2', be: 99 },\n  { element: 'Te', orbital: '4p3/2', be: 110 },\n  { element: 'I', orbital: '4p3/2', be: 123 },\n  { element: 'Xe', orbital: '4p3/2', be: 147 },\n  { element: 'Cs', orbital: '4p3/2', be: 162 },\n  { element: 'Ba', orbital: '4p3/2', be: 180 },\n  { element: 'La', orbital: '4p3/2', be: 192 },\n  { element: 'Ce', orbital: '4p3/2', be: 208 },\n  { element: 'Pr', orbital: '4p3/2', be: 218 },\n  { element: 'Nd', orbital: '4p3/2', be: 225 },\n  { element: 'Pm', orbital: '4p3/2', be: 237 },\n  { element: 'Sm', orbital: '4p3/2', be: 249 },\n  { element: 'Eu', orbital: '4p3/2', be: 257 },\n  { element: 'Gd', orbital: '4p3/2', be: 271 },\n  { element: 'Tb', orbital: '4p3/2', be: 286 },\n  { element: 'Dy', orbital: '4p3/2', be: 293 },\n  { element: 'Ho', orbital: '4p3/2', be: 306 },\n  { element: 'Er', orbital: '4p3/2', be: 320 },\n  { element: 'Tm', orbital: '4p3/2', be: 337 },\n  { element: 'Yb', orbital: '4p3/2', be: 343 },\n  { element: 'Lu', orbital: '4p3/2', be: 359 },\n  { element: 'Hf', orbital: '4p3/2', be: 380 },\n  { element: 'Ta', orbital: '4p3/2', be: 405 },\n  { element: 'W', orbital: '4p3/2', be: 426 },\n  { element: 'Re', orbital: '4p3/2', be: 445 },\n  { element: 'Os', orbital: '4p3/2', be: 469 },\n  { element: 'Ir', orbital: '4p3/2', be: 495 },\n  { element: 'Pt', orbital: '4p3/2', be: 519 },\n  { element: 'Au', orbital: '4p3/2', be: 546 },\n  { element: 'Hg', orbital: '4p3/2', be: 571 },\n  { element: 'Tl', orbital: '4p3/2', be: 609 },\n  { element: 'Pb', orbital: '4p3/2', be: 645 },\n  { element: 'Bi', orbital: '4p3/2', be: 679 },\n  { element: 'Po', orbital: '4p3/2', be: 705 },\n  { element: 'At', orbital: '4p3/2', be: 740 },\n  { element: 'Rn', orbital: '4p3/2', be: 768 },\n  { element: 'Fr', orbital: '4p3/2', be: 810 },\n  { element: 'Ra', orbital: '4p3/2', be: 879 },\n  { element: 'Ac', orbital: '4p3/2', be: 890 },\n  { element: 'Th', orbital: '4p3/2', be: 968 },\n  { element: 'Ga', orbital: '4p', be: 1 },\n  { element: 'Ge', orbital: '4p', be: 3 },\n  { element: 'As', orbital: '4p', be: 3 },\n  { element: 'Se', orbital: '4p', be: 6 },\n  { element: 'Br', orbital: '4p', be: 5 },\n  { element: 'Kr', orbital: '4p', be: 11 },\n  { element: 'Rb', orbital: '4p', be: 14 },\n  { element: 'Sr', orbital: '4p', be: 20 },\n  { element: 'Y', orbital: '4p', be: 26 },\n  { element: 'Zr', orbital: '4p', be: 29 },\n  { element: 'Nb', orbital: '4p', be: 34 },\n  { element: 'Mo', orbital: '4p', be: 35 },\n  { element: 'Tc', orbital: '4p', be: 39 },\n  { element: 'Ru', orbital: '4p', be: 43 },\n  { element: 'Rh', orbital: '4p', be: 48 },\n  { element: 'Pd', orbital: '4p', be: 56 },\n  { element: 'Ag', orbital: '4p', be: 56 },\n  { element: 'Cd', orbital: '4p', be: 67 },\n  { element: 'In', orbital: '4p', be: 77 },\n  { element: 'Sn', orbital: '4p', be: 89 },\n  { element: 'Sb', orbital: '4p', be: 99 },\n  { element: 'Te', orbital: '4p', be: 110 },\n  { element: 'I', orbital: '4p', be: 123 },\n  { element: 'Xe', orbital: '4p', be: 147 },\n  { element: 'Cs', orbital: '4p', be: 162 },\n  { element: 'Ba', orbital: '4p', be: 180 },\n  { element: 'La', orbital: '4p', be: 192 },\n  { element: 'Ce', orbital: '4p', be: 208 },\n  { element: 'Pr', orbital: '4p', be: 218 },\n  { element: 'Nd', orbital: '4p', be: 225 },\n  { element: 'Pm', orbital: '4p', be: 237 },\n  { element: 'Sm', orbital: '4p', be: 249 },\n  { element: 'Eu', orbital: '4p', be: 257 },\n  { element: 'Gd', orbital: '4p', be: 271 },\n  { element: 'Tb', orbital: '4p', be: 286 },\n  { element: 'Dy', orbital: '4p', be: 293 },\n  { element: 'Ho', orbital: '4p', be: 306 },\n  { element: 'Er', orbital: '4p', be: 320 },\n  { element: 'Tm', orbital: '4p', be: 337 },\n  { element: 'Yb', orbital: '4p', be: 343 },\n  { element: 'Lu', orbital: '4p', be: 359 },\n  { element: 'Hf', orbital: '4p', be: 380 },\n  { element: 'Ta', orbital: '4p', be: 405 },\n  { element: 'W', orbital: '4p', be: 426 },\n  { element: 'Re', orbital: '4p', be: 445 },\n  { element: 'Os', orbital: '4p', be: 469 },\n  { element: 'Ir', orbital: '4p', be: 495 },\n  { element: 'Pt', orbital: '4p', be: 519 },\n  { element: 'Au', orbital: '4p', be: 546 },\n  { element: 'Hg', orbital: '4p', be: 571 },\n  { element: 'Tl', orbital: '4p', be: 609 },\n  { element: 'Pb', orbital: '4p', be: 645 },\n  { element: 'Bi', orbital: '4p', be: 679 },\n  { element: 'Po', orbital: '4p', be: 705 },\n  { element: 'At', orbital: '4p', be: 740 },\n  { element: 'Rn', orbital: '4p', be: 768 },\n  { element: 'Fr', orbital: '4p', be: 810 },\n  { element: 'Ra', orbital: '4p', be: 879 },\n  { element: 'Ac', orbital: '4p', be: 890 },\n  { element: 'Th', orbital: '4p', be: 968 },\n  { element: 'Y', orbital: '4d3/2', be: 3 },\n  { element: 'Zr', orbital: '4d3/2', be: 3 },\n  { element: 'Nb', orbital: '4d3/2', be: 4 },\n  { element: 'Mo', orbital: '4d3/2', be: 2 },\n  { element: 'Tc', orbital: '4d3/2', be: 2 },\n  { element: 'Ru', orbital: '4d3/2', be: 2 },\n  { element: 'Rh', orbital: '4d3/2', be: 3 },\n  { element: 'Pd', orbital: '4d3/2', be: 1 },\n  { element: 'Ag', orbital: '4d3/2', be: 3 },\n  { element: 'Cd', orbital: '4d3/2', be: 9 },\n  { element: 'In', orbital: '4d3/2', be: 16 },\n  { element: 'Sn', orbital: '4d3/2', be: 24 },\n  { element: 'Sb', orbital: '4d3/2', be: 32 },\n  { element: 'Te', orbital: '4d3/2', be: 40 },\n  { element: 'I', orbital: '4d3/2', be: 50 },\n  { element: 'Xe', orbital: '4d3/2', be: 63 },\n  { element: 'Cs', orbital: '4d3/2', be: 79 },\n  { element: 'Ba', orbital: '4d3/2', be: 93 },\n  { element: 'La', orbital: '4d3/2', be: 99 },\n  { element: 'Ce', orbital: '4d3/2', be: 111 },\n  { element: 'Pr', orbital: '4d3/2', be: 114 },\n  { element: 'Nd', orbital: '4d3/2', be: 118 },\n  { element: 'Pm', orbital: '4d3/2', be: 121 },\n  { element: 'Sm', orbital: '4d3/2', be: 130 },\n  { element: 'Eu', orbital: '4d3/2', be: 134 },\n  { element: 'Gd', orbital: '4d3/2', be: 141 },\n  { element: 'Tb', orbital: '4d3/2', be: 148 },\n  { element: 'Dy', orbital: '4d3/2', be: 154 },\n  { element: 'Ho', orbital: '4d3/2', be: 161 },\n  { element: 'Er', orbital: '4d3/2', be: 177 },\n  { element: 'Tm', orbital: '4d3/2', be: 180 },\n  { element: 'Yb', orbital: '4d3/2', be: 197 },\n  { element: 'Lu', orbital: '4d3/2', be: 205 },\n  { element: 'Hf', orbital: '4d3/2', be: 224 },\n  { element: 'Ta', orbital: '4d3/2', be: 242 },\n  { element: 'W', orbital: '4d3/2', be: 259 },\n  { element: 'Re', orbital: '4d3/2', be: 274 },\n  { element: 'Os', orbital: '4d3/2', be: 290 },\n  { element: 'Ir', orbital: '4d3/2', be: 312 },\n  { element: 'Pt', orbital: '4d3/2', be: 331 },\n  { element: 'Au', orbital: '4d3/2', be: 352 },\n  { element: 'Hg', orbital: '4d3/2', be: 379 },\n  { element: 'Tl', orbital: '4d3/2', be: 407 },\n  { element: 'Pb', orbital: '4d3/2', be: 435 },\n  { element: 'Bi', orbital: '4d3/2', be: 464 },\n  { element: 'Po', orbital: '4d3/2', be: 500 },\n  { element: 'At', orbital: '4d3/2', be: 533 },\n  { element: 'Rn', orbital: '4d3/2', be: 567 },\n  { element: 'Fr', orbital: '4d3/2', be: 603 },\n  { element: 'Ra', orbital: '4d3/2', be: 636 },\n  { element: 'Ac', orbital: '4d3/2', be: 675 },\n  { element: 'Th', orbital: '4d3/2', be: 714 },\n  { element: 'U', orbital: '4d3/2', be: 781 },\n  { element: 'Y', orbital: '4d5/2', be: 3 },\n  { element: 'Zr', orbital: '4d5/2', be: 3 },\n  { element: 'Nb', orbital: '4d5/2', be: 4 },\n  { element: 'Mo', orbital: '4d5/2', be: 2 },\n  { element: 'Tc', orbital: '4d5/2', be: 2 },\n  { element: 'Ru', orbital: '4d5/2', be: 2 },\n  { element: 'Rh', orbital: '4d5/2', be: 3 },\n  { element: 'Pd', orbital: '4d5/2', be: 1 },\n  { element: 'Ag', orbital: '4d5/2', be: 3 },\n  { element: 'Cd', orbital: '4d5/2', be: 9 },\n  { element: 'In', orbital: '4d5/2', be: 16 },\n  { element: 'Sn', orbital: '4d5/2', be: 24 },\n  { element: 'Sb', orbital: '4d5/2', be: 32 },\n  { element: 'Te', orbital: '4d5/2', be: 40 },\n  { element: 'I', orbital: '4d5/2', be: 50 },\n  { element: 'Xe', orbital: '4d5/2', be: 63 },\n  { element: 'Cs', orbital: '4d5/2', be: 77 },\n  { element: 'Ba', orbital: '4d5/2', be: 90 },\n  { element: 'La', orbital: '4d5/2', be: 99 },\n  { element: 'Ce', orbital: '4d5/2', be: 111 },\n  { element: 'Pr', orbital: '4d5/2', be: 114 },\n  { element: 'Nd', orbital: '4d5/2', be: 118 },\n  { element: 'Pm', orbital: '4d5/2', be: 121 },\n  { element: 'Sm', orbital: '4d5/2', be: 130 },\n  { element: 'Eu', orbital: '4d5/2', be: 134 },\n  { element: 'Gd', orbital: '4d5/2', be: 141 },\n  { element: 'Tb', orbital: '4d5/2', be: 148 },\n  { element: 'Dy', orbital: '4d5/2', be: 154 },\n  { element: 'Ho', orbital: '4d5/2', be: 161 },\n  { element: 'Er', orbital: '4d5/2', be: 168 },\n  { element: 'Tm', orbital: '4d5/2', be: 180 },\n  { element: 'Yb', orbital: '4d5/2', be: 184 },\n  { element: 'Lu', orbital: '4d5/2', be: 195 },\n  { element: 'Hf', orbital: '4d5/2', be: 214 },\n  { element: 'Ta', orbital: '4d5/2', be: 230 },\n  { element: 'W', orbital: '4d5/2', be: 246 },\n  { element: 'Re', orbital: '4d5/2', be: 260 },\n  { element: 'Os', orbital: '4d5/2', be: 273 },\n  { element: 'Ir', orbital: '4d5/2', be: 295 },\n  { element: 'Pt', orbital: '4d5/2', be: 314 },\n  { element: 'Au', orbital: '4d5/2', be: 334 },\n  { element: 'Hg', orbital: '4d5/2', be: 360 },\n  { element: 'Tl', orbital: '4d5/2', be: 386 },\n  { element: 'Pb', orbital: '4d5/2', be: 413 },\n  { element: 'Bi', orbital: '4d5/2', be: 440 },\n  { element: 'Po', orbital: '4d5/2', be: 473 },\n  { element: 'At', orbital: '4d5/2', be: 507 },\n  { element: 'Rn', orbital: '4d5/2', be: 541 },\n  { element: 'Fr', orbital: '4d5/2', be: 577 },\n  { element: 'Ra', orbital: '4d5/2', be: 603 },\n  { element: 'Ac', orbital: '4d5/2', be: 639 },\n  { element: 'Th', orbital: '4d5/2', be: 677 },\n  { element: 'U', orbital: '4d5/2', be: 739 },\n  { element: 'Y', orbital: '4d', be: 3 },\n  { element: 'Zr', orbital: '4d', be: 3 },\n  { element: 'Nb', orbital: '4d', be: 4 },\n  { element: 'Mo', orbital: '4d', be: 2 },\n  { element: 'Tc', orbital: '4d', be: 2 },\n  { element: 'Ru', orbital: '4d', be: 2 },\n  { element: 'Rh', orbital: '4d', be: 3 },\n  { element: 'Pd', orbital: '4d', be: 1 },\n  { element: 'Ag', orbital: '4d', be: 3 },\n  { element: 'Cd', orbital: '4d', be: 9 },\n  { element: 'In', orbital: '4d', be: 16 },\n  { element: 'Sn', orbital: '4d', be: 24 },\n  { element: 'Sb', orbital: '4d', be: 32 },\n  { element: 'Te', orbital: '4d', be: 40 },\n  { element: 'I', orbital: '4d', be: 50 },\n  { element: 'Xe', orbital: '4d', be: 63 },\n  { element: 'Cs', orbital: '4d', be: 77 },\n  { element: 'Ba', orbital: '4d', be: 90 },\n  { element: 'La', orbital: '4d', be: 99 },\n  { element: 'Ce', orbital: '4d', be: 111 },\n  { element: 'Pr', orbital: '4d', be: 114 },\n  { element: 'Nd', orbital: '4d', be: 118 },\n  { element: 'Pm', orbital: '4d', be: 121 },\n  { element: 'Sm', orbital: '4d', be: 130 },\n  { element: 'Eu', orbital: '4d', be: 134 },\n  { element: 'Gd', orbital: '4d', be: 141 },\n  { element: 'Tb', orbital: '4d', be: 148 },\n  { element: 'Dy', orbital: '4d', be: 154 },\n  { element: 'Ho', orbital: '4d', be: 161 },\n  { element: 'Er', orbital: '4d', be: 168 },\n  { element: 'Tm', orbital: '4d', be: 180 },\n  { element: 'Yb', orbital: '4d', be: 184 },\n  { element: 'Lu', orbital: '4d', be: 195 },\n  { element: 'Hf', orbital: '4d', be: 214 },\n  { element: 'Ta', orbital: '4d', be: 230 },\n  { element: 'W', orbital: '4d', be: 246 },\n  { element: 'Re', orbital: '4d', be: 260 },\n  { element: 'Os', orbital: '4d', be: 273 },\n  { element: 'Ir', orbital: '4d', be: 295 },\n  { element: 'Pt', orbital: '4d', be: 314 },\n  { element: 'Au', orbital: '4d', be: 334 },\n  { element: 'Hg', orbital: '4d', be: 360 },\n  { element: 'Tl', orbital: '4d', be: 386 },\n  { element: 'Pb', orbital: '4d', be: 413 },\n  { element: 'Bi', orbital: '4d', be: 440 },\n  { element: 'Po', orbital: '4d', be: 473 },\n  { element: 'At', orbital: '4d', be: 507 },\n  { element: 'Rn', orbital: '4d', be: 541 },\n  { element: 'Fr', orbital: '4d', be: 577 },\n  { element: 'Ra', orbital: '4d', be: 603 },\n  { element: 'Ac', orbital: '4d', be: 639 },\n  { element: 'Th', orbital: '4d', be: 677 },\n  { element: 'U', orbital: '4d', be: 739 },\n  { element: 'Ce', orbital: '4f5/2', be: 1 },\n  { element: 'Pr', orbital: '4f5/2', be: 2 },\n  { element: 'Nd', orbital: '4f5/2', be: 2 },\n  { element: 'Pm', orbital: '4f5/2', be: 4 },\n  { element: 'Sm', orbital: '4f5/2', be: 7 },\n  { element: 'Tb', orbital: '4f5/2', be: 3 },\n  { element: 'Dy', orbital: '4f5/2', be: 4 },\n  { element: 'Ho', orbital: '4f5/2', be: 4 },\n  { element: 'Er', orbital: '4f5/2', be: 4 },\n  { element: 'Tm', orbital: '4f5/2', be: 5 },\n  { element: 'Yb', orbital: '4f5/2', be: 6 },\n  { element: 'Lu', orbital: '4f5/2', be: 7 },\n  { element: 'Hf', orbital: '4f5/2', be: 19 },\n  { element: 'Ta', orbital: '4f5/2', be: 27 },\n  { element: 'W', orbital: '4f5/2', be: 37 },\n  { element: 'Re', orbital: '4f5/2', be: 47 },\n  { element: 'Os', orbital: '4f5/2', be: 52 },\n  { element: 'Ir', orbital: '4f5/2', be: 63 },\n  { element: 'Pt', orbital: '4f5/2', be: 74 },\n  { element: 'Au', orbital: '4f5/2', be: 87 },\n  { element: 'Hg', orbital: '4f5/2', be: 103 },\n  { element: 'Tl', orbital: '4f5/2', be: 122 },\n  { element: 'Pb', orbital: '4f5/2', be: 143 },\n  { element: 'Bi', orbital: '4f5/2', be: 163 },\n  { element: 'Po', orbital: '4f5/2', be: 184 },\n  { element: 'At', orbital: '4f5/2', be: 210 },\n  { element: 'Rn', orbital: '4f5/2', be: 238 },\n  { element: 'Fr', orbital: '4f5/2', be: 268 },\n  { element: 'Ra', orbital: '4f5/2', be: 299 },\n  { element: 'Ac', orbital: '4f5/2', be: 319 },\n  { element: 'Th', orbital: '4f5/2', be: 344 },\n  { element: 'U', orbital: '4f5/2', be: 391 },\n  { element: 'Ce', orbital: '4f7/2', be: 1 },\n  { element: 'Pr', orbital: '4f7/2', be: 2 },\n  { element: 'Nd', orbital: '4f7/2', be: 2 },\n  { element: 'Pm', orbital: '4f7/2', be: 4 },\n  { element: 'Sm', orbital: '4f7/2', be: 7 },\n  { element: 'Tb', orbital: '4f7/2', be: 3 },\n  { element: 'Dy', orbital: '4f7/2', be: 4 },\n  { element: 'Ho', orbital: '4f7/2', be: 4 },\n  { element: 'Er', orbital: '4f7/2', be: 4 },\n  { element: 'Tm', orbital: '4f7/2', be: 5 },\n  { element: 'Yb', orbital: '4f7/2', be: 6 },\n  { element: 'Lu', orbital: '4f7/2', be: 7 },\n  { element: 'Hf', orbital: '4f7/2', be: 18 },\n  { element: 'Ta', orbital: '4f7/2', be: 25 },\n  { element: 'W', orbital: '4f7/2', be: 34 },\n  { element: 'Re', orbital: '4f7/2', be: 45 },\n  { element: 'Os', orbital: '4f7/2', be: 50 },\n  { element: 'Ir', orbital: '4f7/2', be: 60 },\n  { element: 'Pt', orbital: '4f7/2', be: 70 },\n  { element: 'Au', orbital: '4f7/2', be: 83 },\n  { element: 'Hg', orbital: '4f7/2', be: 99 },\n  { element: 'Tl', orbital: '4f7/2', be: 118 },\n  { element: 'Pb', orbital: '4f7/2', be: 138 },\n  { element: 'Bi', orbital: '4f7/2', be: 158 },\n  { element: 'Po', orbital: '4f7/2', be: 184 },\n  { element: 'At', orbital: '4f7/2', be: 210 },\n  { element: 'Rn', orbital: '4f7/2', be: 238 },\n  { element: 'Fr', orbital: '4f7/2', be: 268 },\n  { element: 'Ra', orbital: '4f7/2', be: 299 },\n  { element: 'Ac', orbital: '4f7/2', be: 319 },\n  { element: 'Th', orbital: '4f7/2', be: 335 },\n  { element: 'U', orbital: '4f7/2', be: 380 },\n  { element: 'Ce', orbital: '4f', be: 1 },\n  { element: 'Pr', orbital: '4f', be: 2 },\n  { element: 'Nd', orbital: '4f', be: 2 },\n  { element: 'Pm', orbital: '4f', be: 4 },\n  { element: 'Sm', orbital: '4f', be: 7 },\n  { element: 'Tb', orbital: '4f', be: 3 },\n  { element: 'Dy', orbital: '4f', be: 4 },\n  { element: 'Ho', orbital: '4f', be: 4 },\n  { element: 'Er', orbital: '4f', be: 4 },\n  { element: 'Tm', orbital: '4f', be: 5 },\n  { element: 'Yb', orbital: '4f', be: 6 },\n  { element: 'Lu', orbital: '4f', be: 7 },\n  { element: 'Hf', orbital: '4f', be: 18 },\n  { element: 'Ta', orbital: '4f', be: 25 },\n  { element: 'W', orbital: '4f', be: 34 },\n  { element: 'Re', orbital: '4f', be: 45 },\n  { element: 'Os', orbital: '4f', be: 50 },\n  { element: 'Ir', orbital: '4f', be: 60 },\n  { element: 'Pt', orbital: '4f', be: 70 },\n  { element: 'Au', orbital: '4f', be: 83 },\n  { element: 'Hg', orbital: '4f', be: 99 },\n  { element: 'Tl', orbital: '4f', be: 118 },\n  { element: 'Pb', orbital: '4f', be: 138 },\n  { element: 'Bi', orbital: '4f', be: 158 },\n  { element: 'Po', orbital: '4f', be: 184 },\n  { element: 'At', orbital: '4f', be: 210 },\n  { element: 'Rn', orbital: '4f', be: 238 },\n  { element: 'Fr', orbital: '4f', be: 268 },\n  { element: 'Ra', orbital: '4f', be: 299 },\n  { element: 'Ac', orbital: '4f', be: 319 },\n  { element: 'Th', orbital: '4f', be: 335 },\n  { element: 'U', orbital: '4f', be: 380 },\n  { element: 'Sn', orbital: '5s', be: 1 },\n  { element: 'Sb', orbital: '5s', be: 7 },\n  { element: 'Te', orbital: '5s', be: 12 },\n  { element: 'I', orbital: '5s', be: 14 },\n  { element: 'Xe', orbital: '5s', be: 18 },\n  { element: 'Cs', orbital: '5s', be: 23 },\n  { element: 'Ba', orbital: '5s', be: 40 },\n  { element: 'La', orbital: '5s', be: 33 },\n  { element: 'Ce', orbital: '5s', be: 38 },\n  { element: 'Pr', orbital: '5s', be: 38 },\n  { element: 'Nd', orbital: '5s', be: 38 },\n  { element: 'Pm', orbital: '5s', be: 38 },\n  { element: 'Sm', orbital: '5s', be: 39 },\n  { element: 'Eu', orbital: '5s', be: 32 },\n  { element: 'Gd', orbital: '5s', be: 36 },\n  { element: 'Tb', orbital: '5s', be: 40 },\n  { element: 'Dy', orbital: '5s', be: 63 },\n  { element: 'Ho', orbital: '5s', be: 51 },\n  { element: 'Er', orbital: '5s', be: 60 },\n  { element: 'Tm', orbital: '5s', be: 53 },\n  { element: 'Yb', orbital: '5s', be: 53 },\n  { element: 'Lu', orbital: '5s', be: 57 },\n  { element: 'Hf', orbital: '5s', be: 65 },\n  { element: 'Ta', orbital: '5s', be: 71 },\n  { element: 'W', orbital: '5s', be: 77 },\n  { element: 'Re', orbital: '5s', be: 83 },\n  { element: 'Os', orbital: '5s', be: 84 },\n  { element: 'Ir', orbital: '5s', be: 96 },\n  { element: 'Pt', orbital: '5s', be: 102 },\n  { element: 'Au', orbital: '5s', be: 108 },\n  { element: 'Hg', orbital: '5s', be: 120 },\n  { element: 'Tl', orbital: '5s', be: 137 },\n  { element: 'Pb', orbital: '5s', be: 148 },\n  { element: 'Bi', orbital: '5s', be: 160 },\n  { element: 'Po', orbital: '5s', be: 177 },\n  { element: 'At', orbital: '5s', be: 195 },\n  { element: 'Rn', orbital: '5s', be: 214 },\n  { element: 'Fr', orbital: '5s', be: 234 },\n  { element: 'Ra', orbital: '5s', be: 254 },\n  { element: 'Ac', orbital: '5s', be: 272 },\n  { element: 'Th', orbital: '5s', be: 290 },\n  { element: 'In', orbital: '5p1/2', be: 1 },\n  { element: 'Sn', orbital: '5p1/2', be: 1 },\n  { element: 'Sb', orbital: '5p1/2', be: 2 },\n  { element: 'Te', orbital: '5p1/2', be: 2 },\n  { element: 'I', orbital: '5p1/2', be: 3 },\n  { element: 'Xe', orbital: '5p1/2', be: 7 },\n  { element: 'Cs', orbital: '5p1/2', be: 13 },\n  { element: 'Ba', orbital: '5p1/2', be: 17 },\n  { element: 'La', orbital: '5p1/2', be: 15 },\n  { element: 'Ce', orbital: '5p1/2', be: 20 },\n  { element: 'Pr', orbital: '5p1/2', be: 23 },\n  { element: 'Nd', orbital: '5p1/2', be: 22 },\n  { element: 'Pm', orbital: '5p1/2', be: 22 },\n  { element: 'Sm', orbital: '5p1/2', be: 22 },\n  { element: 'Eu', orbital: '5p1/2', be: 22 },\n  { element: 'Gd', orbital: '5p1/2', be: 21 },\n  { element: 'Tb', orbital: '5p1/2', be: 26 },\n  { element: 'Dy', orbital: '5p1/2', be: 26 },\n  { element: 'Ho', orbital: '5p1/2', be: 20 },\n  { element: 'Er', orbital: '5p1/2', be: 29 },\n  { element: 'Tm', orbital: '5p1/2', be: 32 },\n  { element: 'Yb', orbital: '5p1/2', be: 23 },\n  { element: 'Lu', orbital: '5p1/2', be: 28 },\n  { element: 'Hf', orbital: '5p1/2', be: 38 },\n  { element: 'Ta', orbital: '5p1/2', be: 45 },\n  { element: 'W', orbital: '5p1/2', be: 47 },\n  { element: 'Re', orbital: '5p1/2', be: 46 },\n  { element: 'Os', orbital: '5p1/2', be: 58 },\n  { element: 'Ir', orbital: '5p1/2', be: 63 },\n  { element: 'Pt', orbital: '5p1/2', be: 66 },\n  { element: 'Au', orbital: '5p1/2', be: 72 },\n  { element: 'Hg', orbital: '5p1/2', be: 81 },\n  { element: 'Tl', orbital: '5p1/2', be: 100 },\n  { element: 'Pb', orbital: '5p1/2', be: 105 },\n  { element: 'Bi', orbital: '5p1/2', be: 117 },\n  { element: 'Po', orbital: '5p1/2', be: 132 },\n  { element: 'At', orbital: '5p1/2', be: 148 },\n  { element: 'Rn', orbital: '5p1/2', be: 164 },\n  { element: 'Fr', orbital: '5p1/2', be: 182 },\n  { element: 'Ra', orbital: '5p1/2', be: 200 },\n  { element: 'Ac', orbital: '5p1/2', be: 215 },\n  { element: 'Th', orbital: '5p1/2', be: 229 },\n  { element: 'In', orbital: '5p3/2', be: 1 },\n  { element: 'Sn', orbital: '5p3/2', be: 1 },\n  { element: 'Sb', orbital: '5p3/2', be: 2 },\n  { element: 'Te', orbital: '5p3/2', be: 2 },\n  { element: 'I', orbital: '5p3/2', be: 3 },\n  { element: 'Xe', orbital: '5p3/2', be: 7 },\n  { element: 'Cs', orbital: '5p3/2', be: 12 },\n  { element: 'Ba', orbital: '5p3/2', be: 15 },\n  { element: 'La', orbital: '5p3/2', be: 15 },\n  { element: 'Ce', orbital: '5p3/2', be: 20 },\n  { element: 'Pr', orbital: '5p3/2', be: 23 },\n  { element: 'Nd', orbital: '5p3/2', be: 22 },\n  { element: 'Pm', orbital: '5p3/2', be: 22 },\n  { element: 'Sm', orbital: '5p3/2', be: 22 },\n  { element: 'Eu', orbital: '5p3/2', be: 22 },\n  { element: 'Gd', orbital: '5p3/2', be: 21 },\n  { element: 'Tb', orbital: '5p3/2', be: 26 },\n  { element: 'Dy', orbital: '5p3/2', be: 26 },\n  { element: 'Ho', orbital: '5p3/2', be: 20 },\n  { element: 'Er', orbital: '5p3/2', be: 29 },\n  { element: 'Tm', orbital: '5p3/2', be: 32 },\n  { element: 'Yb', orbital: '5p3/2', be: 23 },\n  { element: 'Lu', orbital: '5p3/2', be: 28 },\n  { element: 'Hf', orbital: '5p3/2', be: 31 },\n  { element: 'Ta', orbital: '5p3/2', be: 37 },\n  { element: 'W', orbital: '5p3/2', be: 37 },\n  { element: 'Re', orbital: '5p3/2', be: 35 },\n  { element: 'Os', orbital: '5p3/2', be: 46 },\n  { element: 'Ir', orbital: '5p3/2', be: 51 },\n  { element: 'Pt', orbital: '5p3/2', be: 51 },\n  { element: 'Au', orbital: '5p3/2', be: 54 },\n  { element: 'Hg', orbital: '5p3/2', be: 58 },\n  { element: 'Tl', orbital: '5p3/2', be: 76 },\n  { element: 'Pb', orbital: '5p3/2', be: 86 },\n  { element: 'Bi', orbital: '5p3/2', be: 93 },\n  { element: 'Po', orbital: '5p3/2', be: 104 },\n  { element: 'At', orbital: '5p3/2', be: 115 },\n  { element: 'Rn', orbital: '5p3/2', be: 127 },\n  { element: 'Fr', orbital: '5p3/2', be: 140 },\n  { element: 'Ra', orbital: '5p3/2', be: 153 },\n  { element: 'Ac', orbital: '5p3/2', be: 167 },\n  { element: 'Th', orbital: '5p3/2', be: 182 },\n  { element: 'In', orbital: '5p', be: 1 },\n  { element: 'Sn', orbital: '5p', be: 1 },\n  { element: 'Sb', orbital: '5p', be: 2 },\n  { element: 'Te', orbital: '5p', be: 2 },\n  { element: 'I', orbital: '5p', be: 3 },\n  { element: 'Xe', orbital: '5p', be: 7 },\n  { element: 'Cs', orbital: '5p', be: 12 },\n  { element: 'Ba', orbital: '5p', be: 15 },\n  { element: 'La', orbital: '5p', be: 15 },\n  { element: 'Ce', orbital: '5p', be: 20 },\n  { element: 'Pr', orbital: '5p', be: 23 },\n  { element: 'Nd', orbital: '5p', be: 22 },\n  { element: 'Pm', orbital: '5p', be: 22 },\n  { element: 'Sm', orbital: '5p', be: 22 },\n  { element: 'Eu', orbital: '5p', be: 22 },\n  { element: 'Gd', orbital: '5p', be: 21 },\n  { element: 'Tb', orbital: '5p', be: 26 },\n  { element: 'Dy', orbital: '5p', be: 26 },\n  { element: 'Ho', orbital: '5p', be: 20 },\n  { element: 'Er', orbital: '5p', be: 29 },\n  { element: 'Tm', orbital: '5p', be: 32 },\n  { element: 'Yb', orbital: '5p', be: 23 },\n  { element: 'Lu', orbital: '5p', be: 28 },\n  { element: 'Hf', orbital: '5p', be: 31 },\n  { element: 'Ta', orbital: '5p', be: 37 },\n  { element: 'W', orbital: '5p', be: 37 },\n  { element: 'Re', orbital: '5p', be: 35 },\n  { element: 'Os', orbital: '5p', be: 46 },\n  { element: 'Ir', orbital: '5p', be: 51 },\n  { element: 'Pt', orbital: '5p', be: 51 },\n  { element: 'Au', orbital: '5p', be: 54 },\n  { element: 'Hg', orbital: '5p', be: 58 },\n  { element: 'Tl', orbital: '5p', be: 76 },\n  { element: 'Pb', orbital: '5p', be: 86 },\n  { element: 'Bi', orbital: '5p', be: 93 },\n  { element: 'Po', orbital: '5p', be: 104 },\n  { element: 'At', orbital: '5p', be: 115 },\n  { element: 'Rn', orbital: '5p', be: 127 },\n  { element: 'Fr', orbital: '5p', be: 140 },\n  { element: 'Ra', orbital: '5p', be: 153 },\n  { element: 'Ac', orbital: '5p', be: 167 },\n  { element: 'Th', orbital: '5p', be: 182 },\n  { element: 'Lu', orbital: '5d3/2', be: 5 },\n  { element: 'Hf', orbital: '5d3/2', be: 7 },\n  { element: 'Ta', orbital: '5d3/2', be: 6 },\n  { element: 'W', orbital: '5d3/2', be: 6 },\n  { element: 'Re', orbital: '5d3/2', be: 4 },\n  { element: 'Ir', orbital: '5d3/2', be: 4 },\n  { element: 'Pt', orbital: '5d3/2', be: 2 },\n  { element: 'Au', orbital: '5d3/2', be: 3 },\n  { element: 'Hg', orbital: '5d3/2', be: 7 },\n  { element: 'Tl', orbital: '5d3/2', be: 16 },\n  { element: 'Pb', orbital: '5d3/2', be: 22 },\n  { element: 'Bi', orbital: '5d3/2', be: 27 },\n  { element: 'Po', orbital: '5d3/2', be: 31 },\n  { element: 'At', orbital: '5d3/2', be: 40 },\n  { element: 'Rn', orbital: '5d3/2', be: 48 },\n  { element: 'Fr', orbital: '5d3/2', be: 58 },\n  { element: 'Ra', orbital: '5d3/2', be: 68 },\n  { element: 'Ac', orbital: '5d3/2', be: 80 },\n  { element: 'Th', orbital: '5d3/2', be: 95 },\n  { element: 'U', orbital: '5d3/2', be: 104 },\n  { element: 'Lu', orbital: '5d5/2', be: 5 },\n  { element: 'Hf', orbital: '5d5/2', be: 7 },\n  { element: 'Ta', orbital: '5d5/2', be: 6 },\n  { element: 'W', orbital: '5d5/2', be: 6 },\n  { element: 'Re', orbital: '5d5/2', be: 4 },\n  { element: 'Ir', orbital: '5d5/2', be: 4 },\n  { element: 'Pt', orbital: '5d5/2', be: 2 },\n  { element: 'Au', orbital: '5d5/2', be: 3 },\n  { element: 'Hg', orbital: '5d5/2', be: 7 },\n  { element: 'Tl', orbital: '5d5/2', be: 13 },\n  { element: 'Pb', orbital: '5d5/2', be: 20 },\n  { element: 'Bi', orbital: '5d5/2', be: 25 },\n  { element: 'Po', orbital: '5d5/2', be: 31 },\n  { element: 'At', orbital: '5d5/2', be: 40 },\n  { element: 'Rn', orbital: '5d5/2', be: 48 },\n  { element: 'Fr', orbital: '5d5/2', be: 58 },\n  { element: 'Ra', orbital: '5d5/2', be: 68 },\n  { element: 'Ac', orbital: '5d5/2', be: 80 },\n  { element: 'Th', orbital: '5d5/2', be: 88 },\n  { element: 'U', orbital: '5d5/2', be: 96 },\n  { element: 'Lu', orbital: '5d', be: 5 },\n  { element: 'Hf', orbital: '5d', be: 7 },\n  { element: 'Ta', orbital: '5d', be: 6 },\n  { element: 'W', orbital: '5d', be: 6 },\n  { element: 'Re', orbital: '5d', be: 4 },\n  { element: 'Ir', orbital: '5d', be: 4 },\n  { element: 'Pt', orbital: '5d', be: 2 },\n  { element: 'Au', orbital: '5d', be: 3 },\n  { element: 'Hg', orbital: '5d', be: 7 },\n  { element: 'Tl', orbital: '5d', be: 13 },\n  { element: 'Pb', orbital: '5d', be: 20 },\n  { element: 'Bi', orbital: '5d', be: 25 },\n  { element: 'Po', orbital: '5d', be: 31 },\n  { element: 'At', orbital: '5d', be: 40 },\n  { element: 'Rn', orbital: '5d', be: 48 },\n  { element: 'Fr', orbital: '5d', be: 58 },\n  { element: 'Ra', orbital: '5d', be: 68 },\n  { element: 'Ac', orbital: '5d', be: 80 },\n  { element: 'Th', orbital: '5d', be: 88 },\n  { element: 'U', orbital: '5d', be: 96 },\n  { element: 'Pb', orbital: '6s', be: 3 },\n  { element: 'Bi', orbital: '6s', be: 8 },\n  { element: 'Po', orbital: '6s', be: 12 },\n  { element: 'At', orbital: '6s', be: 18 },\n  { element: 'Rn', orbital: '6s', be: 26 },\n  { element: 'Fr', orbital: '6s', be: 34 },\n  { element: 'Ra', orbital: '6s', be: 44 },\n  { element: 'Th', orbital: '6s', be: 60 },\n  { element: 'Pb', orbital: '6p1/2', be: 1 },\n  { element: 'Bi', orbital: '6p1/2', be: 3 },\n  { element: 'Po', orbital: '6p1/2', be: 5 },\n  { element: 'At', orbital: '6p1/2', be: 8 },\n  { element: 'Rn', orbital: '6p1/2', be: 11 },\n  { element: 'Fr', orbital: '6p1/2', be: 15 },\n  { element: 'Ra', orbital: '6p1/2', be: 19 },\n  { element: 'Th', orbital: '6p1/2', be: 49 },\n  { element: 'U', orbital: '6p1/2', be: 28.9 },\n  { element: 'Pb', orbital: '6p3/2', be: 1 },\n  { element: 'Bi', orbital: '6p3/2', be: 3 },\n  { element: 'Po', orbital: '6p3/2', be: 5 },\n  { element: 'At', orbital: '6p3/2', be: 8 },\n  { element: 'Rn', orbital: '6p3/2', be: 11 },\n  { element: 'Fr', orbital: '6p3/2', be: 15 },\n  { element: 'Ra', orbital: '6p3/2', be: 19 },\n  { element: 'Th', orbital: '6p3/2', be: 43 },\n  { element: 'U', orbital: '6p3/2', be: 19 },\n  { element: 'Pb', orbital: '6p', be: 1 },\n  { element: 'Bi', orbital: '6p', be: 3 },\n  { element: 'Po', orbital: '6p', be: 5 },\n  { element: 'At', orbital: '6p', be: 8 },\n  { element: 'Rn', orbital: '6p', be: 11 },\n  { element: 'Fr', orbital: '6p', be: 15 },\n  { element: 'Ra', orbital: '6p', be: 19 },\n  { element: 'Th', orbital: '6p', be: 43 },\n  { element: 'U', orbital: '6p', be: 19 },\n];\n","let xAtomicNumber = 0;\n/**\n * Returns the atomic number of the X atom\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getXAtomicNumber(molecule) {\n    if (!xAtomicNumber) {\n        const OCL = molecule.getOCL();\n        xAtomicNumber = OCL.Molecule.getAtomicNoFromLabel('X', OCL.Molecule.cPseudoAtomX);\n    }\n    return xAtomicNumber;\n}\n//# sourceMappingURL=getXAtomicNumber.js.map","/**\n * Check if a specific atom is a sp3 carbon\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} atomID\n */\nexport function isCsp3(molecule, atomID) {\n    if (molecule.getAtomicNo(atomID) !== 6)\n        return false;\n    if (molecule.getAtomCharge(atomID) !== 0)\n        return false;\n    if (molecule.getImplicitHydrogens(atomID) + molecule.getConnAtoms(atomID) !==\n        4) {\n        return false;\n    }\n    return true;\n}\n//# sourceMappingURL=isCsp3.js.map","/**\n * This method put all the chiral centers in the molecule in the same group and racemic\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @param {object} [options={}]\n * @param {object} [options.OCL] - openchemlib library\n */\nexport function makeRacemic(molecule) {\n    const { Molecule } = molecule.getOCL();\n    // if we don't calculate this we have 2 epimers\n    molecule.ensureHelperArrays(Molecule.cHelperCIP);\n    // we need to make one group \"AND\" for chiral (to force to racemic, this means diastereotopic and not enantiotopic)\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomParity(i) !== Molecule.cAtomParityNone) {\n            molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0); // changed to group 0; TLS 9.Nov.2015\n        }\n    }\n    // after the change we need to recalculate the CIP\n    molecule.ensureHelperArrays(Molecule.cHelperCIP);\n}\n//# sourceMappingURL=makeRacemic.js.map","import { getXAtomicNumber } from './getXAtomicNumber.js';\n/**\n * Tag an atom to be able to visualize it\n * @param molecule\n * @param iAtom\n */\nexport function tagAtom(molecule, iAtom) {\n    const customLabel = `${molecule.getAtomLabel(iAtom)}*`;\n    molecule.setAtomCustomLabel(iAtom, customLabel);\n    if (molecule.getAtomicNo(iAtom) === 1) {\n        molecule.setAtomicNo(iAtom, getXAtomicNumber(molecule));\n    }\n    else {\n        // we can not use X because we would have problems with valencies if it is\n        // expanded hydrogens or not\n        // we can not only use a custom label because it does not count for the canonisation\n        molecule.setAtomMass(iAtom, molecule.getAtomMass(iAtom) + 5);\n    }\n    return customLabel;\n}\n//# sourceMappingURL=tagAtom.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\nimport { isCsp3 } from '../util/isCsp3.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from '../util/tagAtom.js';\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n/**\n * Returns an array of hose code fragments for the specified molecule.\n * @param molecule - The OCL molecule to process.\n * @param options - Options for generating hose codes.\n * @returns An array of hose code fragments.\n */\nexport function getHoseCodesForAtomsAsFragments(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    const { allowedCustomLabels, minSphereSize = 0, maxSphereSize = 4, kind = FULL_HOSE_CODE, tagAtoms = [], tagAtomFct = tagAtom, } = options;\n    const rootAtoms = options.rootAtoms ? options.rootAtoms.slice() : [];\n    molecule = molecule.getCompactCopy();\n    if (tagAtoms.length > 0) {\n        internalTagAtoms(molecule, tagAtoms, rootAtoms, tagAtomFct);\n    }\n    else {\n        // this force reordering of atoms in order to have hydrogens at the end\n        molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    }\n    if (rootAtoms.length === 0) {\n        for (let j = 0; j < molecule.getAllAtoms(); j++) {\n            if (allowedCustomLabels?.includes(molecule.getAtomCustomLabel(j) ?? '') ||\n                molecule.getAtomCustomLabel(j)) {\n                rootAtoms.push(j);\n            }\n        }\n    }\n    const fragments = [];\n    // keep track of the atoms when creating the fragment\n    const mappings = [];\n    let min = 0;\n    let max = 0;\n    const atomMask = new Array(molecule.getAllAtoms()).fill(false);\n    const atomList = new Array(molecule.getAllAtoms());\n    for (let sphere = 0; sphere <= maxSphereSize; sphere++) {\n        if (max === 0) {\n            for (const rootAtom of rootAtoms) {\n                atomList[max] = rootAtom;\n                atomMask[rootAtom] = true;\n                max++;\n            }\n        }\n        else {\n            let newMax = max;\n            for (let i = min; i < max; i++) {\n                const atom = atomList[i];\n                for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                    const connAtom = molecule.getConnAtom(atom, j);\n                    if (!atomMask[connAtom]) {\n                        switch (kind) {\n                            case FULL_HOSE_CODE:\n                                atomMask[connAtom] = true;\n                                atomList[newMax++] = connAtom;\n                                break;\n                            case HOSE_CODE_CUT_C_SP3_SP3:\n                                if (!(isCsp3(molecule, atom) && isCsp3(molecule, connAtom))) {\n                                    atomMask[connAtom] = true;\n                                    atomList[newMax++] = connAtom;\n                                }\n                                break;\n                            default:\n                                throw new Error('getHoseCoesForAtom unknown kind');\n                        }\n                    }\n                }\n            }\n            min = max;\n            max = newMax;\n        }\n        if (sphere >= minSphereSize) {\n            const fragment = new OCL.Molecule(0, 0);\n            molecule.copyMoleculeByAtoms(fragment, atomMask, true, mappings);\n            // we using atomMapNo field in order to keep track of the original atom number even if we remove hydrogens\n            for (let i = 0; i < fragment.getAllAtoms(); i++) {\n                fragment.setAtomMapNo(i, mappings.indexOf(i) + 1);\n            }\n            fragment.removeExplicitHydrogens();\n            makeRacemic(fragment);\n            // we encode atom characteristics in the query features\n            addQueryFeaturesAndRemoveMapNo(fragment, molecule);\n            fragments.push(fragment);\n        }\n    }\n    return fragments;\n}\n/**\n * If the atom is not an halogen, X or an hydrogen\n * we add query features to the atom\n * This includes aromaticity, ring size, number of hydrogens\n * @param fragment\n * @param molecule\n */\nfunction addQueryFeaturesAndRemoveMapNo(fragment, molecule) {\n    const Molecule = molecule.getOCL().Molecule;\n    for (let i = 0; i < fragment.getAllAtoms(); i++) {\n        const mapping = fragment.getAtomMapNo(i) - 1;\n        fragment.setAtomMapNo(i, 0);\n        if ([1, 9, 17, 35, 53, getXAtomicNumber(molecule)].includes(fragment.getAtomicNo(i))) {\n            continue;\n        }\n        // aromaticity\n        const isAromatic = molecule.isAromaticAtom(mapping);\n        if (isAromatic) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFAromatic, true);\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNotAromatic, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFAromatic, false);\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNotAromatic, true);\n        }\n        // cycles\n        const smallestRing = molecule.getAtomRingSize(mapping);\n        switch (smallestRing) {\n            case 0:\n                break;\n            case 3:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize3, true);\n                break;\n            case 4:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize4, true);\n                break;\n            case 5:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize5, true);\n                break;\n            case 6:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize6, true);\n                break;\n            case 7:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize7, true);\n                break;\n            default:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSizeLarge, true);\n        }\n        const nbHydrogens = molecule.getAllHydrogens(mapping);\n        if (nbHydrogens === 0) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot0Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot0Hydrogen, true);\n        }\n        if (nbHydrogens === 1) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot1Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot1Hydrogen, true);\n        }\n        if (nbHydrogens === 2) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot2Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot2Hydrogen, true);\n        }\n        if (nbHydrogens === 3) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot3Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot3Hydrogen, true);\n        }\n    }\n}\n// tagging atoms may change the order of the atoms because hydrogens must be at the end of the file\n// in order to remember the rootAtoms we will tag before\nfunction internalTagAtoms(molecule, tagAtoms, rootAtoms, tagAtomFct) {\n    const OCL = molecule.getOCL();\n    if (tagAtoms) {\n        for (let i = 0; i < molecule.getAllAtoms(); i++) {\n            molecule.setAtomMapNo(i, i + 1);\n        }\n        if (tagAtoms.length > 0) {\n            for (const atom of tagAtoms) {\n                tagAtomFct(molecule, atom);\n            }\n        }\n    }\n    // this force reordering of atoms in order to have hydrogens at the end\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    if (rootAtoms.length > 0) {\n        const mapping = new Int32Array(molecule.getAllAtoms());\n        for (let i = 0; i < molecule.getAllAtoms(); i++) {\n            mapping[molecule.getAtomMapNo(i) - 1] = i;\n        }\n        for (let i = 0; i < rootAtoms.length; i++) {\n            rootAtoms[i] = mapping[rootAtoms[i]];\n        }\n    }\n}\n//# sourceMappingURL=getHoseCodesForAtomsAsFragments.js.map","/**\n * Creates a compact copy of the molecule without custom labels.\n * We don't want that custom labels interfere with hose code and diaID generation.\n * @param molecule\n * @returns\n */\nexport function getCompactCopyWithoutCustomLabels(molecule) {\n    const tempMolecule = molecule.getCompactCopy();\n    for (let i = 0; i < tempMolecule.getAllAtoms(); i++) {\n        tempMolecule.setAtomCustomLabel(i, '');\n    }\n    return tempMolecule;\n}\n//# sourceMappingURL=getCompactCopyWithoutCustomLabels.js.map","import { getHoseCodesForAtomsAsFragments } from './getHoseCodesForAtomsAsFragments.js';\n/**\n * Returns an array of strings (idCodes) specified molecule. Each string corresponds to a\n * hose code. By default it will calculate the hose codes for sphere 0 to 4 and will reuse\n * the existing tagged atoms.\n * @param molecule - The OCL molecule to process.\n * @param options - Options for generating hose codes.\n * @returns An array of hose code strings.\n */\nexport function getHoseCodesForAtomsAsStrings(molecule, options = {}) {\n    const fragments = getHoseCodesForAtomsAsFragments(molecule, options);\n    const OCL = molecule.getOCL();\n    const hoses = [];\n    for (const fragment of fragments) {\n        hoses.push(fragment.getCanonizedIDCode(OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS));\n    }\n    return hoses;\n}\n//# sourceMappingURL=getHoseCodesForAtomsAsStrings.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\n/**\n * Returns the atoms that are chiral or pseudo chiral.\n * There could be some issues if the original molecule lacks chiral bonds.\n * The function will add them and this could lead to some issues in the case of pseudochiral atoms.\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number[]}\n */\nexport function getChiralOrHeterotopicCarbons(molecule) {\n    const { Molecule } = molecule.getOCL();\n    const xAtomicNumber = getXAtomicNumber(molecule);\n    const internalMolecule = molecule.getCompactCopy();\n    // hydrogens may be diastereotopic, we need to add them\n    internalMolecule.addImplicitHydrogens();\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (internalMolecule.getAtomicNo(i) === 1) {\n            internalMolecule.setAtomicNo(i, xAtomicNumber);\n        }\n    }\n    addPossibleChiralBonds(internalMolecule);\n    internalMolecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (internalMolecule.getAtomicNo(i) === xAtomicNumber) {\n            continue;\n        }\n        if (molecule.getAtomicNo(i) !== internalMolecule.getAtomicNo(i)) {\n            throw new Error('getChiralOrHeterotopicCarbons: mismatching atomic numbers');\n        }\n        if (internalMolecule.getAtomicNo(i) !== 6) {\n            continue;\n        }\n        const neighbourSymmetries = getNeighbourSymmetries(internalMolecule, i);\n        if (neighbourSymmetries.length === 4) {\n            atoms.push(i);\n        }\n    }\n    return atoms;\n}\nfunction addPossibleChiralBonds(molecule) {\n    const { Molecule } = molecule.getOCL();\n    molecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    for (let i = 0; i < molecule.getAtoms(); i++) {\n        if (molecule.getAtomicNo(i) !== 6)\n            continue;\n        if (molecule.getStereoBond(i) >= 0)\n            continue;\n        const neighbourSymmetries = getNeighbourSymmetries(molecule, i);\n        if (neighbourSymmetries.length <= 2)\n            continue;\n        const stereoBond = molecule.getAtomPreferredStereoBond(i);\n        if (stereoBond !== -1) {\n            molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n            if (molecule.getBondAtom(1, stereoBond) === i) {\n                const connAtom = molecule.getBondAtom(0, stereoBond);\n                molecule.setBondAtom(0, stereoBond, i);\n                molecule.setBondAtom(1, stereoBond, connAtom);\n            }\n            // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n            molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0);\n        }\n    }\n}\nfunction getNeighbourSymmetries(molecule, iAtom) {\n    const neighbourSymmetries = [];\n    for (let j = 0; j < molecule.getAllConnAtoms(iAtom); j++) {\n        const connAtom = molecule.getConnAtom(iAtom, j);\n        const symmetryRank = molecule.getSymmetryRank(connAtom);\n        if (!neighbourSymmetries.includes(symmetryRank)) {\n            neighbourSymmetries.push(molecule.getSymmetryRank(connAtom));\n        }\n    }\n    return neighbourSymmetries;\n}\n//# sourceMappingURL=getChiralOrHeterotopicCarbons.js.map","import { getChiralOrHeterotopicCarbons } from './getChiralOrHeterotopicCarbons.js';\n/**\n * This function will add missing chiral bonds on carbons ensure that all enantiotopic\n * or diastereotopic atoms can be identified uniquely\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {number} [options.esrType=Molecule.cESRTypeAnd]\n * @param {boolean} [options.atLeastThreeAtoms=true] - if true, only carbons with at least three atoms will be considered\n */\nexport function ensureHeterotopicChiralBonds(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { esrType = Molecule.cESRTypeAnd, atLeastThreeAtoms = true } = options;\n    molecule.ensureHelperArrays(Molecule.cHelperBitNeighbours);\n    const heterotopicCarbons = getChiralOrHeterotopicCarbons(molecule);\n    for (const i of heterotopicCarbons) {\n        if (atLeastThreeAtoms && molecule.getAllConnAtoms(i) < 3)\n            continue;\n        if (molecule.getStereoBond(i) === -1) {\n            const stereoBond = molecule.getAtomPreferredStereoBond(i);\n            if (stereoBond !== -1) {\n                molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n                if (molecule.getBondAtom(1, stereoBond) === i) {\n                    const connAtom = molecule.getBondAtom(0, stereoBond);\n                    molecule.setBondAtom(0, stereoBond, i);\n                    molecule.setBondAtom(1, stereoBond, connAtom);\n                }\n                // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n                molecule.setAtomESR(i, esrType, 0);\n            }\n        }\n    }\n}\n//# sourceMappingURL=ensureHeterotopicChiralBonds.js.map","import { getXAtomicNumber } from './getXAtomicNumber.js';\n/**\n * Returns an array of symmetry ranks.\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getSymmetryRanks(molecule) {\n    const { Molecule } = molecule.getOCL();\n    const xAtomNumber = getXAtomicNumber(molecule);\n    // most of the molecules have some symmetry\n    const internalMolecule = molecule.getCompactCopy();\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (internalMolecule.getAtomicNo(i) === 1) {\n            internalMolecule.setAtomicNo(i, xAtomNumber);\n        }\n    }\n    internalMolecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const symmetryRanks = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        symmetryRanks.push(internalMolecule.getSymmetryRank(i));\n    }\n    return symmetryRanks;\n}\n//# sourceMappingURL=getSymmetryRanks.js.map","import { getCompactCopyWithoutCustomLabels } from \"../util/getCompactCopyWithoutCustomLabels.js\";\nimport { getSymmetryRanks } from '../util/getSymmetryRanks.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nimport { ensureHeterotopicChiralBonds } from './ensureHeterotopicChiralBonds.js';\n/**\n * Returns an array of diastereotopic ID (as idCode)\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDs(molecule) {\n    const { Molecule } = molecule.getOCL();\n    ensureHeterotopicChiralBonds(molecule);\n    const symmetryRanks = getSymmetryRanks(molecule);\n    const numberAtoms = molecule.getAllAtoms();\n    const ids = [];\n    const cache = {};\n    for (let iAtom = 0; iAtom < numberAtoms; iAtom++) {\n        const rank = symmetryRanks[iAtom];\n        if (rank && cache[rank]) {\n            ids[iAtom] = cache[rank];\n            continue;\n        }\n        const tempMolecule = getCompactCopyWithoutCustomLabels(molecule);\n        tagAtom(tempMolecule, iAtom);\n        makeRacemic(tempMolecule);\n        // We need to ensure the helper array in order to get correctly the result of racemisation\n        ids[iAtom] = tempMolecule.getCanonizedIDCode(Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        cache[rank] = ids[iAtom];\n    }\n    return ids;\n}\n//# sourceMappingURL=getDiastereotopicAtomIDs.js.map","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs.js';\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDsAndH(molecule) {\n    const OCL = molecule.getOCL();\n    molecule = molecule.getCompactCopy();\n    molecule.addImplicitHydrogens();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    const newDiaIDs = [];\n    for (let i = 0; i < diaIDs.length; i++) {\n        const diaID = diaIDs[i];\n        const newDiaID = {\n            oclID: diaID,\n            hydrogenOCLIDs: [],\n            nbHydrogens: 0,\n        };\n        if (molecule.getAtomicNo(i) === 1) {\n            const atom = molecule.getConnAtom(i, 0);\n            newDiaID.heavyAtom = diaIDs[atom];\n        }\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const atom = molecule.getConnAtom(i, j);\n            if (molecule.getAtomicNo(atom) === 1) {\n                newDiaID.nbHydrogens++;\n                if (!newDiaID.hydrogenOCLIDs.includes(diaIDs[atom])) {\n                    newDiaID.hydrogenOCLIDs.push(diaIDs[atom]);\n                }\n            }\n        }\n        newDiaIDs.push(newDiaID);\n    }\n    return newDiaIDs;\n}\n//# sourceMappingURL=getDiastereotopicAtomIDsAndH.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { getCompactCopyWithoutCustomLabels } from \"../util/getCompactCopyWithoutCustomLabels.js\";\nimport { tagAtom } from \"../util/tagAtom.js\";\nimport { getHoseCodesForAtomsAsStrings } from './getHoseCodesForAtomsAsStrings.js';\n/**\n * Returns the hose codes for all atoms in the molecule\n * @param {*} molecule\n * @param {object} [options={}]\n * @param {string[]} [options.atomLabels]\n * @param {number} [options.minSphereSize=0]\n * @param {number} [options.maxSphereSize=4]\n * @returns\n */\nexport function getHoseCodes(molecule, options = {}) {\n    const { atomLabels, minSphereSize, maxSphereSize } = options;\n    const { Molecule } = molecule.getOCL();\n    const atomicNumbers = atomLabels?.map((label) => Molecule.getAtomicNoFromLabel(label));\n    const internalMolecule = getCompactCopyWithoutCustomLabels(molecule);\n    internalMolecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(internalMolecule);\n    const hoses = [];\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        if (atomicNumbers &&\n            !atomicNumbers.includes(internalMolecule.getAtomicNo(i))) {\n            hoses.push(undefined);\n        }\n        else {\n            const tempMolecule = internalMolecule.getCompactCopy();\n            tagAtom(tempMolecule, i);\n            hoses.push(getHoseCodesForAtomsAsStrings(tempMolecule, {\n                minSphereSize,\n                maxSphereSize,\n            }));\n        }\n    }\n    return hoses;\n}\n//# sourceMappingURL=getHoseCodes.js.map","/**\n * Create a polymer from a unit, alpha and omega groups\n * A unit must contain a R1 and a R2\n * An alpha end group must contain a R1\n * An omega end group must contain a R2\n * @param {import('openchemlib').Molecule} unit - an instance of OCL.Molecule\n * @param {object} options\n * @param {number} [options.count=10] - number of units\n * @param {boolean} [options.markMonomer=false] - mark the different units of the polymer in the atom map\n * @param {import('openchemlib').Molecule} [options.alpha] - alpha end group, default is an hydrogen\n * @param {import('openchemlib').Molecule} [options.gamma] - omega end group, default is an hydrogen\n */\nexport function createPolymer(unit, options = {}) {\n    const { count = 10 } = options;\n    checkEntity(unit, 'unit');\n    const { Molecule } = unit.getOCL();\n    const { alpha, gamma } = getAlphaGamma(unit, options);\n    checkEntity(alpha, 'alpha');\n    checkEntity(gamma, 'gamma');\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    const polymer = alpha.getCompactCopy();\n    polymer.addMolecule(getUnit(unit, 1, options));\n    addBond(polymer, r1AtomicNo, r1AtomicNo);\n    for (let i = 0; i < count - 1; i++) {\n        polymer.addMolecule(getUnit(unit, i + 2, options));\n        addBond(polymer, r2AtomicNo, r1AtomicNo);\n    }\n    polymer.addMolecule(gamma);\n    addBond(polymer, r2AtomicNo, r2AtomicNo);\n    polymer.ensureHelperArrays(Molecule.cHelperNeighbours);\n    // encoding directly in atomNapNo didn't work out because it was removed when deleting atoms\n    for (let i = 0; i < polymer.getAtoms(); i++) {\n        polymer.setAtomMapNo(i, (polymer.getAtomCustomLabel(i) || '').replace(/monomer_/, ''));\n        polymer.setAtomCustomLabel(i, '');\n    }\n    return polymer;\n}\nfunction getUnit(unit, index, options) {\n    const { markMonomer = false } = options;\n    if (markMonomer) {\n        unit = unit.getCompactCopy();\n        unit.ensureHelperArrays(unit.getOCL().Molecule.cHelperNeighbours);\n        for (let j = 0; j < unit.getAtoms(); j++) {\n            unit.setAtomCustomLabel(j, `monomer_${index}`);\n        }\n    }\n    return unit;\n}\nfunction addBond(molecule, firstAtomicNo, secondAtomicNo) {\n    molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n    let i, j;\n    loop: for (i = 0; i < molecule.getAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === firstAtomicNo) {\n            for (j = i + 1; j < molecule.getAtoms(); j++) {\n                if (molecule.getAtomicNo(j) === secondAtomicNo) {\n                    molecule.addBond(molecule.getConnAtom(i, 0), molecule.getConnAtom(j, 0), 1);\n                    break loop;\n                }\n            }\n        }\n    }\n    molecule.deleteAtoms([i, j]);\n}\nfunction checkEntity(unit, kind) {\n    let nbR1 = 1;\n    let nbR2 = 1;\n    switch (kind) {\n        case 'unit':\n            break;\n        case 'alpha':\n            nbR2 = 0;\n            break;\n        case 'gamma':\n            nbR1 = 0;\n            break;\n        default:\n            throw new Error('Unknown kind');\n    }\n    if (!unit) {\n        throw new Error('unit is required');\n    }\n    const { Molecule } = unit.getOCL();\n    // unit must contain ONE R1 and ONE R2\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    let r1Count = 0;\n    let r2Count = 0;\n    for (let i = 0; i < unit.getAtoms(); i++) {\n        if (unit.getAtomicNo(i) === r1AtomicNo) {\n            r1Count++;\n        }\n        if (unit.getAtomicNo(i) === r2AtomicNo) {\n            r2Count++;\n        }\n    }\n    if (r1Count !== nbR1) {\n        throw new Error(`${kind} must contain ${nbR1} R1`);\n    }\n    if (r2Count !== nbR2) {\n        throw new Error(`${kind} must contain ${nbR2} R2`);\n    }\n}\nfunction getAlphaGamma(unit, options) {\n    let { alpha, gamma } = options;\n    const { Molecule } = unit.getOCL();\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    if (!alpha) {\n        alpha = Molecule.fromSmiles('CC');\n        alpha.setAtomicNo(0, r1AtomicNo);\n        alpha.setAtomicNo(1, 1);\n    }\n    if (!gamma) {\n        gamma = Molecule.fromSmiles('CC');\n        gamma.setAtomicNo(0, r2AtomicNo);\n        gamma.setAtomicNo(1, 1);\n    }\n    return { alpha, gamma };\n}\nfunction getR1R2AtomicNo(Molecule) {\n    const r1AtomicNo = Molecule.getAtomicNoFromLabel('R1', Molecule.cPseudoAtomsRGroups);\n    const r2AtomicNo = Molecule.getAtomicNoFromLabel('R2', Molecule.cPseudoAtomsRGroups);\n    return { r1AtomicNo, r2AtomicNo };\n}\n//# sourceMappingURL=createPolymer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.atomSorter = atomSorter;\n/**\n * Implementation of the Hill system for sorting atoms\n * https://en.wikipedia.org/wiki/Chemical_formula#Hill_system\n * @param a - first atom to compare\n * @param b - second atom to compare\n * @returns A value suitable for use in Array.prototype.sort.\n */\nfunction atomSorter(a, b) {\n    if (a === b)\n        return 0;\n    if (a === 'C')\n        return -1;\n    if (b === 'C')\n        return 1;\n    if (a === 'H')\n        return -1;\n    if (b === 'H')\n        return 1;\n    if (a < b)\n        return -1;\n    return 1;\n}\n//# sourceMappingURL=index.js.map","/* @license\nPapa Parse\nv5.5.3\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n((e,t)=>{\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()})(this,function r(){var n=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==n?n:{};var d,s=!n.document&&!!n.postMessage,a=n.IS_PAPA_WORKER||!1,o={},h=0,v={};function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=b(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(t,e){var i=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<i){let e=this._config.newline;e||(r=this._config.quoteChar||'\"',e=this._handle.guessLineEndings(t,r)),t=[...t.split(e).slice(i)].join(e)}this.isFirstChunk&&U(this._config.beforeFirstChunk)&&void 0!==(r=this._config.beforeFirstChunk(t))&&(t=r),this.isFirstChunk=!1,this._halted=!1;var i=this._partialLine+t,r=(this._partialLine=\"\",this._handle.parse(i,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){t=r.meta.cursor,i=(this._finished||(this._partialLine=i.substring(t-this._baseIndex),this._baseIndex=t),r&&r.data&&(this._rowCount+=r.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview);if(a)n.postMessage({results:r,workerId:v.WORKER_ID,finished:i});else if(U(this._config.chunk)&&!e){if(this._config.chunk(r,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=r=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(r.data),this._completeResults.errors=this._completeResults.errors.concat(r.errors),this._completeResults.meta=r.meta),this._completed||!i||!U(this._config.complete)||r&&r.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),i||r&&r.meta.paused||this._nextChunk(),r}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):a&&this._config.error&&n.postMessage({workerId:v.WORKER_ID,error:e,finished:!1})}}function f(e){var r;(e=e||{}).chunkSize||(e.chunkSize=v.RemoteChunkSize),u.call(this,e),this._nextChunk=s?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),s||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!s),this._config.downloadRequestHeaders){var e,t=this._config.downloadRequestHeaders;for(e in t)r.setRequestHeader(e,t[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i));try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}s&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize||r.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>null!==(e=e.getResponseHeader(\"Content-Range\"))?parseInt(e.substring(e.lastIndexOf(\"/\")+1)):-1)(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){e=r.statusText||e;this._sendError(new Error(e))}}function l(e){(e=e||{}).chunkSize||(e.chunkSize=v.LocalChunkSize),u.call(this,e);var i,r,n=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,n?((i=new FileReader).onload=y(this._chunkLoaded,this),i.onerror=y(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,t=(this._config.chunkSize&&(t=Math.min(this._start+this._config.chunkSize,this._input.size),e=r.call(e,this._start,t)),i.readAsText(e,this._config.encoding));n||this._chunkLoaded({target:{result:t}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function c(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){var e,t;if(!this._finished)return e=this._config.chunkSize,i=e?(t=i.substring(0,e),i.substring(e)):(t=i,\"\"),this._finished=!i,this.parseChunk(t)}}function p(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var n,s,a,t,o=Math.pow(2,53),h=-o,u=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,d=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,i=this,r=0,f=0,l=!1,e=!1,c=[],p={data:[],errors:[],meta:{}};function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(p&&a&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+v.DefaultDelimiter+\"'\"),a=!1),m.skipEmptyLines&&(p.data=p.data.filter(function(e){return!y(e)})),_()){if(p)if(Array.isArray(p.data[0])){for(var e=0;_()&&e<p.data.length;e++)p.data[e].forEach(t);p.data.splice(0,1)}else p.data.forEach(t);function t(e,t){U(m.transformHeader)&&(e=m.transformHeader(e,t)),c.push(e)}}function i(e,t){for(var i=m.header?{}:[],r=0;r<e.length;r++){var n=r,s=e[r],s=((e,t)=>(e=>(m.dynamicTypingFunction&&void 0===m.dynamicTyping[e]&&(m.dynamicTyping[e]=m.dynamicTypingFunction(e)),!0===(m.dynamicTyping[e]||m.dynamicTyping)))(e)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&((e=>{if(u.test(e)){e=parseFloat(e);if(h<e&&e<o)return 1}})(t)?parseFloat(t):d.test(t)?new Date(t):\"\"===t?null:t):t)(n=m.header?r>=c.length?\"__parsed_extra\":c[r]:n,s=m.transform?m.transform(s,n):s);\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>c.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+c.length+\" fields but parsed \"+r,f+t):r<c.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+c.length+\" fields but parsed \"+r,f+t)),i}var r;p&&(m.header||m.dynamicTyping||m.transform)&&(r=1,!p.data.length||Array.isArray(p.data[0])?(p.data=p.data.map(i),r=p.data.length):p.data=i(p.data,0),m.header&&p.meta&&(p.meta.fields=c),f+=r)}function _(){return m.header&&0===c.length}function k(e,t,i,r){e={type:e,code:t,message:i};void 0!==r&&(e.row=r),p.errors.push(e)}U(m.step)&&(t=m.step,m.step=function(e){p=e,_()?g():(g(),0!==p.data.length&&(r+=e.data.length,m.preview&&r>m.preview?s.abort():(p.data=p.data[0],t(p,i))))}),this.parse=function(e,t,i){var r=m.quoteChar||'\"',r=(m.newline||(m.newline=this.guessLineEndings(e,r)),a=!1,m.delimiter?U(m.delimiter)&&(m.delimiter=m.delimiter(e),p.meta.delimiter=m.delimiter):((r=((e,t,i,r,n)=>{var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",v.RECORD_SEP,v.UNIT_SEP];for(var u=0;u<n.length;u++){for(var d,f=n[u],l=0,c=0,p=0,g=(o=void 0,new E({comments:r,delimiter:f,newline:t,preview:10}).parse(e)),_=0;_<g.data.length;_++)i&&y(g.data[_])?p++:(d=g.data[_].length,c+=d,void 0===o?o=d:0<d&&(l+=Math.abs(d-o),o=d));0<g.data.length&&(c/=g.data.length-p),(void 0===a||l<=a)&&(void 0===h||h<c)&&1.99<c&&(a=l,s=f,h=c)}return{successful:!!(m.delimiter=s),bestDelimiter:s}})(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess)).successful?m.delimiter=r.bestDelimiter:(a=!0,m.delimiter=v.DefaultDelimiter),p.meta.delimiter=m.delimiter),b(m));return m.preview&&m.header&&r.preview++,n=e,s=new E(r),p=s.parse(n,t,i),g(),l?{meta:{paused:!0}}:p||{meta:{paused:!1}}},this.paused=function(){return l},this.pause=function(){l=!0,s.abort(),n=U(m.chunk)?\"\":n.substring(s.getCharIndex())},this.resume=function(){i.streamer._halted?(l=!1,i.streamer.parseChunk(n,!0)):setTimeout(i.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,s.abort(),p.meta.aborted=!0,U(m.complete)&&m.complete(p),n=\"\"},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=new RegExp(P(t)+\"([^]*?)\"+P(t),\"gm\"),i=(e=e.replace(t,\"\")).split(\"\\r\"),t=e.split(\"\\n\"),e=1<t.length&&t[0].length<i[0].length;if(1===i.length||e)return\"\\n\";for(var r=0,n=0;n<i.length;n++)\"\\n\"===i[n][0]&&r++;return r>=i.length/2?\"\\r\\n\":\"\\r\"}}function P(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(C){var S=(C=C||{}).delimiter,O=C.newline,x=C.comments,I=C.step,A=C.preview,T=C.fastMode,D=null,L=!1,F=null==C.quoteChar?'\"':C.quoteChar,j=F;if(void 0!==C.escapeChar&&(j=C.escapeChar),(\"string\"!=typeof S||-1<v.BAD_DELIMITERS.indexOf(S))&&(S=\",\"),x===S)throw new Error(\"Comment character same as delimiter\");!0===x?x=\"#\":(\"string\"!=typeof x||-1<v.BAD_DELIMITERS.indexOf(x))&&(x=!1),\"\\n\"!==O&&\"\\r\"!==O&&\"\\r\\n\"!==O&&(O=\"\\n\");var z=0,M=!1;this.parse=function(i,t,r){if(\"string\"!=typeof i)throw new Error(\"Input must be a string\");var n=i.length,e=S.length,s=O.length,a=x.length,o=U(I),h=[],u=[],d=[],f=z=0;if(!i)return w();if(T||!1!==T&&-1===i.indexOf(F)){for(var l=i.split(O),c=0;c<l.length;c++){if(d=l[c],z+=d.length,c!==l.length-1)z+=O.length;else if(r)return w();if(!x||d.substring(0,a)!==x){if(o){if(h=[],k(d.split(S)),R(),M)return w()}else k(d.split(S));if(A&&A<=c)return h=h.slice(0,A),w(!0)}}return w()}for(var p=i.indexOf(S,z),g=i.indexOf(O,z),_=new RegExp(P(j)+P(F),\"g\"),m=i.indexOf(F,z);;)if(i[z]===F)for(m=z,z++;;){if(-1===(m=i.indexOf(F,m+1)))return r||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:z}),E();if(m===n-1)return E(i.substring(z,m).replace(_,F));if(F===j&&i[m+1]===j)m++;else if(F===j||0===m||i[m-1]!==j){-1!==p&&p<m+1&&(p=i.indexOf(S,m+1));var y=v(-1===(g=-1!==g&&g<m+1?i.indexOf(O,m+1):g)?p:Math.min(p,g));if(i.substr(m+1+y,e)===S){d.push(i.substring(z,m).replace(_,F)),i[z=m+1+y+e]!==F&&(m=i.indexOf(F,z)),p=i.indexOf(S,z),g=i.indexOf(O,z);break}y=v(g);if(i.substring(m+1+y,m+1+y+s)===O){if(d.push(i.substring(z,m).replace(_,F)),b(m+1+y+s),p=i.indexOf(S,z),m=i.indexOf(F,z),o&&(R(),M))return w();if(A&&h.length>=A)return w(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:z}),m++}}else if(x&&0===d.length&&i.substring(z,z+a)===x){if(-1===g)return w();z=g+s,g=i.indexOf(O,z),p=i.indexOf(S,z)}else if(-1!==p&&(p<g||-1===g))d.push(i.substring(z,p)),z=p+e,p=i.indexOf(S,z);else{if(-1===g)break;if(d.push(i.substring(z,g)),b(g+s),o&&(R(),M))return w();if(A&&h.length>=A)return w(!0)}return E();function k(e){h.push(e),f=z}function v(e){var t=0;return t=-1!==e&&(e=i.substring(m+1,e))&&\"\"===e.trim()?e.length:t}function E(e){return r||(void 0===e&&(e=i.substring(z)),d.push(e),z=n,k(d),o&&R()),w()}function b(e){z=e,k(d),d=[],g=i.indexOf(O,z)}function w(e){if(C.header&&!t&&h.length&&!L){var s=h[0],a=Object.create(null),o=new Set(s);let n=!1;for(let r=0;r<s.length;r++){let i=s[r];if(a[i=U(C.transformHeader)?C.transformHeader(i,r):i]){let e,t=a[i];for(;e=i+\"_\"+t,t++,o.has(e););o.add(e),s[r]=e,a[i]++,n=!0,(D=null===D?{}:D)[e]=i}else a[i]=1,s[r]=i;o.add(i)}n&&console.warn(\"Duplicate headers found and renamed.\"),L=!0}return{data:h,errors:u,meta:{delimiter:S,linebreak:O,aborted:M,truncated:!!e,cursor:f+(t||0),renamedHeaders:D}}}function R(){I(w()),h=[],u=[]}},this.abort=function(){M=!0},this.getCharIndex=function(){return z}}function g(e){var t=e.data,i=o[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,_(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:m,resume:m};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&_(t.workerId,t.results)}function _(e,t){var i=o[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete o[e]}function m(){throw new Error(\"Not implemented.\")}function b(e){if(\"object\"!=typeof e||null===e)return e;var t,i=Array.isArray(e)?[]:{};for(t in e)i[t]=b(e[t]);return i}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return v.parse=function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,!t.worker||!v.WORKERS_SUPPORTED)return i=null,v.NODE_STREAM_INPUT,\"string\"==typeof e?(e=(e=>65279!==e.charCodeAt(0)?e:e.slice(1))(e),i=new(t.download?f:c)(t)):!0===e.readable&&U(e.read)&&U(e.on)?i=new p(t):(n.File&&e instanceof File||e instanceof Object)&&(i=new l(t)),i.stream(e);(i=(()=>{var e;return!!v.WORKERS_SUPPORTED&&(e=(()=>{var e=n.URL||n.webkitURL||null,t=r.toString();return v.BLOB_URL||(v.BLOB_URL=e.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",t,\")();\"],{type:\"text/javascript\"})))})(),(e=new n.Worker(e)).onmessage=g,e.id=h++,o[e.id]=e)})()).userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,i.postMessage({input:e,config:t,workerId:i.id})},v.unparse=function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1,h=((()=>{if(\"object\"==typeof t){if(\"string\"!=typeof t.delimiter||v.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter),\"boolean\"!=typeof t.quotes&&\"function\"!=typeof t.quotes&&!Array.isArray(t.quotes)||(n=t.quotes),\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines),\"string\"==typeof t.newline&&(y=t.newline),\"string\"==typeof t.quoteChar&&(s=t.quoteChar),\"boolean\"==typeof t.header&&(_=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s),t.escapeFormulae instanceof RegExp?o=t.escapeFormulae:\"boolean\"==typeof t.escapeFormulae&&t.escapeFormulae&&(o=/^[=+\\-@\\t\\r].*$/)}})(),new RegExp(P(s),\"g\"));\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e,t,i){var r=\"\",n=(\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=k(e[a],a);0<t.length&&(r+=y)}for(var o=0;o<t.length;o++){var h=(n?e:t[o]).length,u=!1,d=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var f=[],l=0;l<h;l++){var c=s?e[l]:l;f.push(t[o][c])}u=\"\"===f.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!d&&(r+=m);var g=n&&s?e[p]:p;r+=k(t[o][g],p)}o<t.length-1&&(!i||0<h&&!d)&&(r+=y)}}return r}function k(e,t){var i,r;return null==e?\"\":e.constructor===Date?JSON.stringify(e).slice(1,25):(r=!1,o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,r=!0),i=e.toString().replace(h,a),(r=r||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1})(i,v.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1))?s+i+s:i)}},v.RECORD_SEP=String.fromCharCode(30),v.UNIT_SEP=String.fromCharCode(31),v.BYTE_ORDER_MARK=\"\\ufeff\",v.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',v.BYTE_ORDER_MARK],v.WORKERS_SUPPORTED=!s&&!!n.Worker,v.NODE_STREAM_INPUT=1,v.LocalChunkSize=10485760,v.RemoteChunkSize=5242880,v.DefaultDelimiter=\",\",v.Parser=E,v.ParserHandle=i,v.NetworkStreamer=f,v.FileStreamer=l,v.StringStreamer=c,v.ReadableStreamStreamer=p,n.jQuery&&((d=n.jQuery).fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&n.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0===h.length)U(o.complete)&&o.complete();else{var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},v.parse(n.file,n.instanceConfig)}}function u(){h.splice(0,1),e()}}),a&&(n.onmessage=function(e){e=e.data;void 0===v.WORKER_ID&&e&&(v.WORKER_ID=e.workerId);\"string\"==typeof e.input?n.postMessage({workerId:v.WORKER_ID,results:v.parse(e.input,e.config),finished:!0}):(n.File&&e.input instanceof File||e.input instanceof Object)&&(e=v.parse(e.input,e.config))&&n.postMessage({workerId:v.WORKER_ID,results:e,finished:!0})}),(f.prototype=Object.create(u.prototype)).constructor=f,(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(c.prototype)).constructor=c,(p.prototype=Object.create(u.prototype)).constructor=p,v});","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n/**\n * Approximate inverse error function.\n * @param x - value in the range (-1, 1).\n * @returns erfinv(x).\n * @see https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n */\nexport default function erfinv(x) {\n    const a = 0.147;\n    if (x === 0)\n        return 0;\n    const ln1MinusXSqrd = Math.log(1 - x * x);\n    const lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    const firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    const secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2, ROOT_PI_OVER_LN2, } from \"../../../util/constants.js\";\nimport erfinv from \"../../../util/erfinv.js\";\nexport class Gaussian {\n    /**\n     * Full width at half maximum.\n     * @default 500\n     */\n    fwhm;\n    constructor(options = {}) {\n        const { fwhm = 500, sd } = options;\n        this.fwhm = sd ? gaussianWidthToFWHM(2 * sd) : fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fct(x) {\n        return gaussianFct(x, this.fwhm);\n    }\n    getArea(height = calculateGaussianHeight({ fwhm: this.fwhm })) {\n        return getGaussianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getGaussianFactor(area);\n    }\n    getData(options = {}) {\n        return getGaussianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateGaussianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\n/**\n * Calculate the peak height for a given area and fwhm.\n * @param options - fwhm, area, and optional sd.\n * @returns the peak height.\n */\nexport function calculateGaussianHeight(options) {\n    const { area = 1, sd } = options;\n    let { fwhm = 500 } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (2 * area) / ROOT_PI_OVER_LN2 / fwhm;\n}\n/**\n * Evaluate the gaussian function centered at x=0.\n * @param x - position at which to evaluate.\n * @param fwhm - full width at half maximum.\n * @returns the intensity at x.\n */\nexport function gaussianFct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * (x / fwhm) ** 2);\n}\n/**\n * Convert inflection-point width to full width at half maximum.\n * @param width - width between inflection points.\n * @returns full width at half maximum.\n */\nexport function gaussianWidthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\n/**\n * Convert full width at half maximum to inflection-point width.\n * @param fwhm - full width at half maximum.\n * @returns width between inflection points.\n */\nexport function gaussianFwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\n/**\n * Calculate the area under a gaussian peak.\n * @param options - fwhm, height, and optional sd.\n * @returns the area.\n */\nexport function getGaussianArea(options) {\n    const { sd, height = 1 } = options;\n    let { fwhm = 500 } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\n/**\n * Calculate the half-width factor corresponding to a given area coverage fraction.\n * @param area - target area fraction (0–1). Defaults to `0.9999`.\n * @returns the factor by which to multiply fwhm to cover the given area.\n */\nexport function getGaussianFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\n/**\n * Generate an intensity array for a gaussian shape.\n * @param shape - gaussian shape parameters (fwhm, sd).\n * @param options - sampling options (length, factor, height).\n * @returns Float64Array of intensity values.\n */\nexport function getGaussianData(shape = {}, options = {}) {\n    const { sd } = shape;\n    let { fwhm = 500 } = shape;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    const { factor = getGaussianFactor(), height = calculateGaussianHeight({ fwhm }), } = options;\n    let { length } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), 2 ** 25 - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        const value = gaussianFct(i - center, fwhm) * height;\n        data[i] = value;\n        data[length - 1 - i] = value;\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from \"../../../util/constants.js\";\nexport class Lorentzian {\n    /**\n     * Full width at half maximum.\n     * @default 500\n     */\n    fwhm;\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianFct(x, this.fwhm);\n    }\n    getArea(height = 1) {\n        return getLorentzianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const calculateLorentzianHeight = ({ fwhm = 1, area = 1 }) => {\n    return (2 * area) / Math.PI / fwhm;\n};\nexport const getLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1 } = options;\n    return (height * Math.PI * fwhm) / 2;\n};\nexport const lorentzianFct = (x, fwhm) => {\n    return fwhm ** 2 / (4 * x ** 2 + fwhm ** 2);\n};\nexport const lorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const lorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nconst lorentzianQuantile = (p) => Math.tan(Math.PI * (p - 0.5));\nexport const getLorentzianFactor = (area = 0.9999) => {\n    if (area >= 1) {\n        throw new Error('area should be (0 - 1)');\n    }\n    const halfResidual = (1 - area) * 0.5;\n    return ((lorentzianQuantile(1 - halfResidual) - lorentzianQuantile(halfResidual)) /\n        2);\n};\nexport const getLorentzianData = (shape = {}, options = {}) => {\n    const { fwhm = 500 } = shape;\n    const { factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    let { length } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), 2 ** 25 - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        const value = lorentzianFct(i - center, fwhm) * height;\n        data[i] = value;\n        data[length - 1 - i] = value;\n    }\n    return data;\n};\n//# sourceMappingURL=Lorentzian.js.map","import { calculateLorentzianHeight, getLorentzianFactor, lorentzianFwhmToWidth, lorentzianWidthToFWHM, } from \"../lorentzian/Lorentzian.js\";\nexport class LorentzianDispersive {\n    /**\n     * Full width at half maximum.\n     * @default 500\n     */\n    fwhm;\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianDispersiveFct(x, this.fwhm);\n    }\n    getArea() {\n        return 0;\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianDispersiveData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const lorentzianDispersiveFct = (x, fwhm) => {\n    return (2 * fwhm * x) / (4 * x ** 2 + fwhm ** 2);\n};\nexport const getLorentzianDispersiveData = (shape = {}, options = {}) => {\n    const { fwhm = 500 } = shape;\n    const { factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    let { length } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), 2 ** 25 - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        const value = lorentzianDispersiveFct(i - center, fwhm) * height;\n        data[i] = value;\n        data[length - 1 - i] = -value;\n    }\n    return data;\n};\n//# sourceMappingURL=LorentzianDispersive.js.map","import { getGaussianFactor } from \"../gaussian/Gaussian.js\";\nimport { getLorentzianFactor } from \"../lorentzian/Lorentzian.js\";\n/**\n * Find the k factor for a pseudo-Voigt distribution such that the\n * cumulative probability pPseudoVoigt(k, mu) equals `pTarget`.\n *\n * Uses a simple bisection search (with exponential bracketing) to\n * invert the pseudo-Voigt cumulative function. Special cases:\n * - mu === 1 -> reduces to the gaussian case\n * - mu === 0 -> reduces to the lorentzian case\n * @param pTarget - Target cumulative probability in (0,1)\n * @param mu - Gaussian fraction in [0,1]\n * @param tol - Convergence tolerance\n * @param maxIter - Maximum number of bisection iterations\n * @returns the factor k such that pPseudoVoigt(k, mu) ~= pTarget\n */\nexport function pseudoVoigtFindFactor(pTarget, mu, tol = 1e-9, maxIter = 200) {\n    if (pTarget <= 0 || pTarget >= 1) {\n        throw new RangeError('pTarget must be in (0,1)');\n    }\n    if (mu === 1) {\n        return getGaussianFactor(pTarget);\n    }\n    else if (mu === 0) {\n        return getLorentzianFactor(pTarget);\n    }\n    // bisection\n    let lo = 0;\n    let hi = 10;\n    let it = 0;\n    while (pPseudoVoigt(hi, mu) < pTarget && it++ < 200)\n        hi *= 2;\n    for (let i = 0; i < maxIter; i++) {\n        const mid = 0.5 * (lo + hi);\n        const val = pPseudoVoigt(mid, mu);\n        if (Math.abs(val - pTarget) < tol)\n            return mid;\n        if (val < pTarget) {\n            lo = mid;\n        }\n        else {\n            hi = mid;\n        }\n    }\n    return 0.5 * (lo + hi);\n}\nfunction erf(x) {\n    const sign = x < 0 ? -1 : 1;\n    x = Math.abs(x);\n    const a1 = 0.254829592;\n    const a2 = -0.284496736;\n    const a3 = 1.421413741;\n    const a4 = -1.453152027;\n    const a5 = 1.061405429;\n    const p = 0.3275911;\n    const t = 1 / (1 + p * x);\n    const y = 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-x * x);\n    return sign * y;\n}\nconst sqrtLn2 = Math.sqrt(Math.log(2));\nfunction pGaussian(k) {\n    return erf(k * sqrtLn2);\n}\nfunction pLorentz(k) {\n    return (2 / Math.PI) * Math.atan(k);\n}\nfunction pPseudoVoigt(k, mu) {\n    return (1 - mu) * pLorentz(k) + mu * pGaussian(k);\n}\n//# sourceMappingURL=computeFactor.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from \"../../../util/constants.js\";\nimport { gaussianFct } from \"../gaussian/Gaussian.js\";\nimport { lorentzianFct } from \"../lorentzian/Lorentzian.js\";\nimport { pseudoVoigtFindFactor } from \"./computeFactor.js\";\nexport class PseudoVoigt {\n    fwhm;\n    /**\n     * Ratio of gaussian contribution in the shape\n     * @default 0.5\n     */\n    mu;\n    constructor(options = {}) {\n        const { fwhm = 500, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return pseudoVoigtFwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return pseudoVoigtWidthToFWHM(width, mu);\n    }\n    fct(x) {\n        return pseudoVoigtFct(x, this.fwhm, this.mu);\n    }\n    getArea(height = 1) {\n        return getPseudoVoigtArea({ fwhm: this.fwhm, height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getPseudoVoigtFactor(area, this.mu);\n    }\n    getData(options = {}) {\n        const { length, factor, height = calculatePseudoVoigtHeight({\n            fwhm: this.fwhm,\n            mu: this.mu,\n            area: 1,\n        }), } = options;\n        return getPseudoVoigtData(this, { factor, length, height });\n    }\n    calculateHeight(area = 1) {\n        return calculatePseudoVoigtHeight({ fwhm: this.fwhm, mu: this.mu, area });\n    }\n    getParameters() {\n        return ['fwhm', 'mu'];\n    }\n}\nexport const calculatePseudoVoigtHeight = (options = {}) => {\n    const { fwhm = 1, mu = 0.5, area = 1 } = options;\n    return (2 * area) / (fwhm * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI));\n};\nexport const pseudoVoigtFct = (x, fwhm, mu) => {\n    return (1 - mu) * lorentzianFct(x, fwhm) + mu * gaussianFct(x, fwhm);\n};\nexport const pseudoVoigtWidthToFWHM = (width, mu = 0.5) => {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const pseudoVoigtFwhmToWidth = (fwhm, mu = 0.5) => {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const getPseudoVoigtArea = (options) => {\n    const { fwhm = 500, height = 1, mu = 0.5 } = options;\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\nexport const getPseudoVoigtFactor = (area = 0.9999, mu = 0.5) => {\n    return pseudoVoigtFindFactor(area, mu);\n};\nexport const getPseudoVoigtData = (shape = {}, options = {}) => {\n    const { fwhm = 500, mu = 0.5 } = shape;\n    const { factor = getPseudoVoigtFactor(0.999, mu) } = options;\n    let { length, height = calculatePseudoVoigtHeight({ fwhm, mu, area: 1 }) } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), 2 ** 25 - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        const value = pseudoVoigtFct(i - center, fwhm, mu) * height;\n        data[i] = value;\n        data[length - 1 - i] = value;\n    }\n    return data;\n};\n//# sourceMappingURL=PseudoVoigt.js.map","import { calculatePseudoVoigtHeight, getPseudoVoigtArea, getPseudoVoigtData, getPseudoVoigtFactor, pseudoVoigtFct, pseudoVoigtFwhmToWidth, pseudoVoigtWidthToFWHM, } from \"../pseudoVoigt/PseudoVoigt.js\";\n/**\n * TCH-style pseudo-Voigt where gaussian and lorentzian widths are independent.\n * The effective fwhm and mixing parameter mu are derived from fwhmG and fwhmL\n * via the Thompson–Cox–Hastings approximation.\n */\nexport class PseudoVoigtTCH {\n    _fwhmG;\n    _fwhmL;\n    _fwhm;\n    _mu;\n    _lorentzianWidthFraction;\n    constructor(options = {}) {\n        const { fwhmG, fwhmL, fwhm, mu = 0.5 } = options;\n        this._mu = mu;\n        this._fwhm = 0;\n        this._fwhmG = 0;\n        this._fwhmL = 0;\n        this._lorentzianWidthFraction = lorentzianWidthFraction(1 - mu);\n        if (fwhmG && fwhmL) {\n            this._fwhmG = fwhmG;\n            this.fwhmL = fwhmL;\n        }\n        else if (fwhm) {\n            this.fwhm = fwhm;\n        }\n    }\n    set fwhmG(value) {\n        const effectiveFwhm = computeEffectiveWidth(value, this._fwhmL);\n        const lorentzianFraction = this._fwhmL / effectiveFwhm;\n        this._fwhm = effectiveFwhm;\n        this._mu =\n            1 -\n                (1.36603 * lorentzianFraction -\n                    0.47719 * lorentzianFraction * lorentzianFraction +\n                    0.11116 * lorentzianFraction * lorentzianFraction * lorentzianFraction);\n        this._fwhmG = value;\n        this._lorentzianWidthFraction = lorentzianFraction;\n    }\n    get fwhmG() {\n        return this._fwhmG;\n    }\n    set fwhmL(value) {\n        const effectiveFwhm = computeEffectiveWidth(this._fwhmG, value);\n        const lorentzianFraction = value / effectiveFwhm;\n        this._fwhm = effectiveFwhm;\n        this._mu =\n            1 -\n                (1.36603 * lorentzianFraction -\n                    0.47719 * lorentzianFraction * lorentzianFraction +\n                    0.11116 * lorentzianFraction * lorentzianFraction * lorentzianFraction);\n        this._fwhmL = value;\n        this._lorentzianWidthFraction = lorentzianFraction;\n    }\n    get fwhmL() {\n        return this._fwhmL;\n    }\n    set mu(value) {\n        const lorentzianFraction = lorentzianWidthFraction(1 - value);\n        this._lorentzianWidthFraction = lorentzianFraction;\n        this._fwhmL = this._fwhm * lorentzianFraction;\n        this._fwhmG = this._fwhm * (1 - lorentzianFraction);\n        this._mu = value;\n    }\n    get mu() {\n        return this._mu;\n    }\n    set fwhm(value) {\n        const lorentzianFraction = this._lorentzianWidthFraction || lorentzianWidthFraction(1 - this._mu);\n        this._fwhmL = value * lorentzianFraction;\n        this._fwhmG = value * (1 - lorentzianFraction);\n        this._fwhm = value;\n    }\n    get fwhm() {\n        return this._fwhm;\n    }\n    fwhmToWidth(fwhm = this._fwhm, mu = this._mu) {\n        return pseudoVoigtFwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this._mu) {\n        return pseudoVoigtWidthToFWHM(width, mu);\n    }\n    fct(x) {\n        return pseudoVoigtFct(x, this._fwhm, this._mu);\n    }\n    getArea(height = 1) {\n        return getPseudoVoigtArea({ fwhm: this._fwhm, height, mu: this._mu });\n    }\n    getFactor(area) {\n        return getPseudoVoigtFactor(area, this._mu);\n    }\n    getData(options = {}) {\n        const { length, factor, height = calculatePseudoVoigtHeight({\n            fwhm: this._fwhm,\n            mu: this._mu,\n            area: 1,\n        }), } = options;\n        return getPseudoVoigtData(this, { factor, length, height });\n    }\n    calculateHeight(area = 1) {\n        return calculatePseudoVoigtHeight({\n            fwhm: this._fwhm,\n            mu: this._mu,\n            area,\n        });\n    }\n    getParameters() {\n        return ['fwhmG', 'fwhmL'];\n    }\n}\n/**\n * Compute the effective FWHM from gaussian and lorentzian component widths\n * using the Thompson–Cox–Hastings approximation.\n * @param fwhmG - gaussian component FWHM.\n * @param fwhmL - lorentzian component FWHM.\n * @returns effective combined FWHM.\n */\nfunction computeEffectiveWidth(fwhmG, fwhmL) {\n    return ((fwhmG ** 5 +\n        2.69269 * fwhmG ** 4 * fwhmL +\n        2.42843 * fwhmG ** 3 * fwhmL ** 2 +\n        4.47163 * fwhmG ** 2 * fwhmL ** 3 +\n        0.07842 * fwhmG * fwhmL ** 4 +\n        fwhmL ** 5) **\n        0.2);\n}\n/**\n * Solve for the lorentzian width fraction fwhmL/fwhm given lorentzianFraction = 1 - mu,\n * using Newton's method on: 1.36603·x - 0.47719·x² + 0.11116·x³ = lorentzianFraction.\n * @param lorentzianFraction - TCH lorentzian mixing parameter (= 1 - mu).\n * @returns the lorentzian width fraction fwhmL/fwhm.\n */\nfunction lorentzianWidthFraction(lorentzianFraction) {\n    let fraction = lorentzianFraction;\n    for (let i = 0; i < 6; i++) {\n        const f = 1.36603 * fraction -\n            0.47719 * fraction * fraction +\n            0.11116 * fraction * fraction * fraction -\n            lorentzianFraction;\n        const df = 1.36603 - 2 * 0.47719 * fraction + 3 * 0.11116 * fraction * fraction;\n        fraction -= f / df;\n    }\n    return fraction;\n}\n//# sourceMappingURL=PseudoVoigtTCH.js.map","import { ROOT_THREE } from \"../../../util/constants.js\";\n/**\n * This shape is a linear combination of rational function (n|n+2), for n = 0 (lorentzian function) and n = 2\n * the parameter that combines those two functions is `gamma` and it is called the kurtosis parameter, it is an\n * implementation of generalized lorentzian shape published by Stanislav Sykora in the SMASH 2010. DOI:10.3247/SL3nmr10.006\n * {@link http://www.ebyte.it/stan/Talk_ML_UserMeeting_SMASH_2010_GeneralizedLorentzian.html}\n */\nexport class GeneralizedLorentzian {\n    /**\n     * Full width at half maximum.\n     * @default 500\n     */\n    fwhm;\n    /**\n     * kurtosis parameter of the shape, between -1 to 2\n     * @default 1\n     */\n    gamma;\n    constructor(options = {}) {\n        const { fwhm = 500, gamma = 0.5 } = options;\n        this.fwhm = fwhm;\n        this.gamma = gamma;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return generalizedLorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return generalizedLorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return generalizedLorentzianFct(x, this.fwhm, this.gamma);\n    }\n    getArea(height = 1) {\n        return getGeneralizedLorentzianArea({\n            fwhm: this.fwhm,\n            height,\n            gamma: this.gamma,\n        });\n    }\n    getFactor(area) {\n        return getGeneralizedLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getGeneralizedLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        const { gamma, fwhm } = this;\n        return calculateGeneralizedLorentzianHeight({ fwhm, area, gamma });\n    }\n    getParameters() {\n        return ['fwhm', 'gamma'];\n    }\n}\nexport const calculateGeneralizedLorentzianHeight = ({ fwhm = 1, gamma = 1, area = 1, }) => {\n    return (area / fwhm / (3.14159 - 0.420894 * gamma)) * 2;\n};\n/**\n * Calculate the area under a generalized Lorentzian peak (integral from Mathematica).\n * @param options - shape parameters including fwhm, height, and gamma.\n * @returns the area under the peak.\n */\nexport const getGeneralizedLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1, gamma = 1 } = options;\n    return (height * fwhm * (3.14159 - 0.420894 * gamma)) / 2;\n};\nexport const generalizedLorentzianFct = (x, fwhm, gamma) => {\n    const u = ((2 * x) / fwhm) ** 2;\n    return (1 - gamma) / (1 + u) + (gamma * (1 + u / 2)) / (1 + u + u ** 2);\n};\nexport const generalizedLorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const generalizedLorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nconst generalizedLorentzianQuantile = (p) => Math.tan(Math.PI * (p - 0.5));\nexport const getGeneralizedLorentzianFactor = (area = 0.9999) => {\n    if (area >= 1) {\n        throw new Error('area should be (0 - 1)');\n    }\n    const halfResidual = (1 - area) * 0.5;\n    return ((generalizedLorentzianQuantile(1 - halfResidual) -\n        generalizedLorentzianQuantile(halfResidual)) /\n        2);\n};\nexport const getGeneralizedLorentzianData = (shape = {}, options = {}) => {\n    const { fwhm = 500, gamma = 1 } = shape;\n    const { factor = getGeneralizedLorentzianFactor(), height = calculateGeneralizedLorentzianHeight({ fwhm, area: 1, gamma }), } = options;\n    let { length } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), 2 ** 25 - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        const value = generalizedLorentzianFct(i - center, fwhm, gamma) * height;\n        data[i] = value;\n        data[length - 1 - i] = value;\n    }\n    return data;\n};\n//# sourceMappingURL=GeneralizedLorentzian.js.map","import { Gaussian } from \"./gaussian/Gaussian.js\";\nimport { GeneralizedLorentzian } from \"./generalizedLorentzian/GeneralizedLorentzian.js\";\nimport { Lorentzian } from \"./lorentzian/Lorentzian.js\";\nimport { LorentzianDispersive } from \"./lorentzianDispersive/LorentzianDispersive.js\";\nimport { PseudoVoigt } from \"./pseudoVoigt/PseudoVoigt.js\";\nimport { PseudoVoigtTCH } from \"./pseudoVoigtTCH/PseudoVoigtTCH.js\";\n/**\n * Generate a instance of a specific kind of shape.\n * @param shape - shape descriptor specifying the kind and parameters.\n * @returns an instance of the requested shape class.\n */\nexport function getShape1D(shape) {\n    const { kind } = shape;\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shape);\n        case 'lorentzian':\n            return new Lorentzian(shape);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shape);\n        case 'pseudoVoigtTCH':\n            return new PseudoVoigtTCH(shape);\n        case 'lorentzianDispersive':\n            return new LorentzianDispersive(shape);\n        case 'generalizedLorentzian':\n            return new GeneralizedLorentzian(shape);\n        default: {\n            throw new Error(`Unknown distribution ${kind}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nexport class BaseSpectrumGenerator {\n    from;\n    to;\n    nbPoints;\n    interval;\n    peakWidthFct;\n    shape;\n    constructor(options = {}) {\n        const { from = 0, to = 1000, nbPoints = 10001, peakWidthFct, shape = { kind: 'gaussian', fwhm: 5 }, } = options;\n        assertNumber(from, 'from');\n        assertNumber(to, 'to');\n        assertInteger(nbPoints, 'nbPoints');\n        if (to <= from) {\n            throw new RangeError('to option must be larger than from');\n        }\n        if (peakWidthFct && typeof peakWidthFct !== 'function') {\n            throw new TypeError('peakWidthFct option must be a function');\n        }\n        this.from = from;\n        this.to = to;\n        this.nbPoints = nbPoints;\n        this.interval = (to - from) / (nbPoints - 1);\n        this.peakWidthFct = peakWidthFct;\n        this.shape = getShape1D(shape);\n    }\n    /**\n     * Resolves a peak to its canonical parameters, cloning and configuring\n     * separate shape instances for the left and right halves.\n     */\n    resolvePeak(peak, options) {\n        let x0;\n        let intensity;\n        let peakFWHM;\n        let peakWidth;\n        let peakShapeOptions;\n        if (Array.isArray(peak)) {\n            [x0, intensity, peakFWHM, peakShapeOptions] = peak;\n        }\n        else {\n            x0 = peak.x;\n            intensity = peak.y;\n            peakWidth = peak.width;\n            peakShapeOptions = peak.shape;\n        }\n        let { shape: shapeOptions } = options;\n        if (peakShapeOptions) {\n            shapeOptions = shapeOptions\n                ? { ...shapeOptions, ...peakShapeOptions }\n                : peakShapeOptions;\n        }\n        const shape = shapeOptions\n            ? getShape1D(shapeOptions)\n            : cloneShape(this.shape);\n        const { width } = options;\n        let { widthLeft, widthRight } = options;\n        const fwhm = peakFWHM !== undefined\n            ? peakFWHM\n            : peakWidth\n                ? shape.widthToFWHM(peakWidth)\n                : this.peakWidthFct\n                    ? this.peakWidthFct(x0)\n                    : width !== undefined\n                        ? width\n                        : shape.fwhm;\n        if (!widthLeft)\n            widthLeft = fwhm;\n        if (!widthRight)\n            widthRight = fwhm;\n        if (!widthLeft || !widthRight) {\n            throw new Error('Width left or right is undefined or zero');\n        }\n        const factor = options.factor === undefined ? shape.getFactor() : options.factor;\n        const shapeLeft = cloneShape(shape);\n        shapeLeft.fwhm = widthLeft;\n        const shapeRight = cloneShape(shape);\n        shapeRight.fwhm = widthRight;\n        return {\n            x0,\n            intensity,\n            shapeLeft,\n            shapeRight,\n            widthLeft,\n            widthRight,\n            factor,\n        };\n    }\n}\nfunction cloneShape(shape) {\n    return Object.assign(Object.create(Object.getPrototypeOf(shape)), shape);\n}\nfunction assertInteger(value, name) {\n    if (!Number.isInteger(value)) {\n        throw new TypeError(`${name} option must be an integer`);\n    }\n}\nfunction assertNumber(value, name) {\n    if (!Number.isFinite(value)) {\n        throw new TypeError(`${name} option must be a number`);\n    }\n}\n//# sourceMappingURL=BaseSpectrumGenerator.js.map","/**\n * Adds a baseline to the spectrum data.\n * @param data - The spectrum data to modify.\n * @param baselineFct - Function that generates the baseline value for a given x.\n * @returns The modified spectrum data.\n */\nexport default function addBaseline(data, baselineFct) {\n    if (!baselineFct)\n        return data;\n    const xs = data.x;\n    const ys = data.y;\n    for (let i = 0; i < xs.length; i++) {\n        ys[i] += baselineFct(xs[i]);\n    }\n    return data;\n}\n//# sourceMappingURL=addBaseline.js.map","import { xMaxValue, xAdd, createRandomArray } from 'ml-spectra-processing';\n/**\n * Adds noise to the spectrum data.\n * @param data - The spectrum data to modify.\n * @param options - Configuration for noise generation.\n * @returns The modified spectrum data.\n */\nexport default function addNoise(data, options = {}) {\n    const { seed = 0, distribution = 'normal', percent = 1 } = options;\n    const range = (xMaxValue(data.y) * percent) / 100;\n    const noise = createRandomArray({\n        distribution,\n        seed,\n        mean: 0,\n        standardDeviation: range,\n        range,\n        length: data.x.length,\n    });\n    data.y = xAdd(data.y, noise);\n    return data;\n}\n//# sourceMappingURL=addNoise.js.map","import { BaseSpectrumGenerator } from \"./BaseSpectrumGenerator.js\";\nimport addBaseline from \"./util/addBaseline.js\";\nimport addNoise from \"./util/addNoise.js\";\nexport { BaseSpectrumGenerator } from \"./BaseSpectrumGenerator.js\";\nexport class SpectrumGenerator extends BaseSpectrumGenerator {\n    maxPeakHeight;\n    data;\n    constructor(options = {}) {\n        super(options);\n        this.maxPeakHeight = Number.MIN_SAFE_INTEGER;\n        this.data = {\n            x: new Float64Array(this.nbPoints),\n            y: new Float64Array(this.nbPoints),\n        };\n        this.reset();\n    }\n    /**\n     * Generates a spectrum from a list of peaks and returns it.\n     * @param peaks - List of peaks to add.\n     * @param options - Options for spectrum generation.\n     * @returns The generated spectrum data.\n     */\n    generateSpectrum(peaks, options = {}) {\n        const { noise, baseline, threshold, peakOptions } = options;\n        this.addPeaks(peaks, peakOptions);\n        if (baseline)\n            this.addBaseline(baseline);\n        if (noise)\n            this.addNoise(noise);\n        return this.getSpectrum({ threshold });\n    }\n    /**\n     * Add a series of peaks to the spectrum.\n     * @param peaks - Peaks to add.\n     * @param options - Options for adding peaks.\n     * @returns The generator instance.\n     */\n    addPeaks(peaks, options) {\n        if (!Array.isArray(peaks) &&\n            (typeof peaks !== 'object' ||\n                peaks.x === undefined ||\n                peaks.y === undefined ||\n                !Array.isArray(peaks.x) ||\n                !Array.isArray(peaks.y) ||\n                peaks.x.length !== peaks.y.length)) {\n            throw new TypeError('peaks must be an array or an object containing x[] and y[]');\n        }\n        if (Array.isArray(peaks)) {\n            for (const peak of peaks) {\n                this.addPeak(peak, options);\n            }\n        }\n        else {\n            for (let i = 0; i < peaks.x.length; i++) {\n                this.addPeak([peaks.x[i], peaks.y[i]], options);\n            }\n        }\n        return this;\n    }\n    /**\n     * Add a single peak to the spectrum.\n     * A peak may be either defined as [x,y,fwhm,...] or as {x, y, shape}\n     * @param peak - The peak to add, defined as array or object.\n     * @param options - Options for adding the peak.\n     * @returns The generator instance.\n     */\n    addPeak(peak, options = {}) {\n        if (Array.isArray(peak) && peak.length < 2) {\n            throw new Error('peak must be an array with two (or three) values or an object with {x,y,width?}');\n        }\n        if (!Array.isArray(peak) &&\n            (peak.x === undefined || peak.y === undefined)) {\n            throw new Error('peak must be an array with two (or three) values or an object with {x,y,width?}');\n        }\n        const { x0, intensity, shapeLeft, shapeRight, widthLeft, widthRight, factor, } = this.resolvePeak(peak, options);\n        if (intensity > this.maxPeakHeight)\n            this.maxPeakHeight = intensity;\n        const firstValue = x0 - (widthLeft / 2) * factor;\n        const lastValue = x0 + (widthRight / 2) * factor;\n        const firstPoint = Math.max(0, Math.floor((firstValue - this.from) / this.interval));\n        const lastPoint = Math.min(this.nbPoints - 1, Math.ceil((lastValue - this.from) / this.interval));\n        const middlePoint = Math.round((x0 - this.from) / this.interval);\n        // PEAK SHAPE MAY BE ASYMMETRIC (widthLeft and widthRight) !\n        // we calculate the left part of the shape\n        for (let index = firstPoint; index < Math.max(middlePoint, 0); index++) {\n            this.data.y[index] += intensity * shapeLeft.fct(this.data.x[index] - x0);\n        }\n        // we calculate the right part of the gaussian\n        for (let index = Math.min(middlePoint, lastPoint); index <= lastPoint; index++) {\n            this.data.y[index] += intensity * shapeRight.fct(this.data.x[index] - x0);\n        }\n        return this;\n    }\n    /**\n     * Add a baseline to the spectrum.\n     * @param baselineFct - Mathematical function producing the baseline you want.\n     * @returns The generator instance.\n     */\n    addBaseline(baselineFct) {\n        addBaseline(this.data, baselineFct);\n        return this;\n    }\n    /**\n     * Add noise to the spectrum.\n     * @param options - Configuration for noise generation.\n     * @returns The generator instance.\n     */\n    addNoise(options) {\n        addNoise(this.data, options);\n        return this;\n    }\n    /**\n     * Get the generated spectrum.\n     * @param options - Options for getting the spectrum.\n     * @returns The generated spectrum data.\n     */\n    getSpectrum(options = {}) {\n        if (typeof options === 'boolean') {\n            options = { copy: options };\n        }\n        const { copy = true, threshold = 0 } = options;\n        if (threshold) {\n            const minPeakHeight = this.maxPeakHeight * threshold;\n            const x = [];\n            const y = [];\n            for (let i = 0; i < this.data.x.length; i++) {\n                if (this.data.y[i] >= minPeakHeight) {\n                    x.push(this.data.x[i]);\n                    y.push(this.data.y[i]);\n                }\n            }\n            return { x: Float64Array.from(x), y: Float64Array.from(y) };\n        }\n        if (copy) {\n            return {\n                x: this.data.x.slice(),\n                y: this.data.y.slice(),\n            };\n        }\n        else {\n            return this.data;\n        }\n    }\n    /**\n     * Resets the generator with an empty spectrum.\n     * @returns The generator instance.\n     */\n    reset() {\n        if (this.nbPoints === 1) {\n            this.data.x[0] = (this.from + this.to) / 2;\n        }\n        else {\n            for (let i = 0; i < this.nbPoints; i++) {\n                this.data.x[i] = this.from + i * this.interval;\n            }\n        }\n        return this;\n    }\n}\n//# sourceMappingURL=SpectrumGenerator.js.map","import { SpectrumGenerator } from \"./SpectrumGenerator.js\";\n/**\n * Generates a spectrum and returns it.\n * @param peaks - List of peaks to put in the spectrum.\n * @param options - Configuration for spectrum generation.\n * @returns The generated spectrum data.\n */\nexport function generateSpectrum(peaks, options = {}) {\n    const { generator, ...rest } = options;\n    return new SpectrumGenerator(generator).generateSpectrum(peaks, rest);\n}\n//# sourceMappingURL=generateSpectrum.js.map","import { getDiastereotopicAtomIDsAndH, getHoseCodes } from 'openchemlib-utils';\nimport { generateSpectrum } from 'spectrum-generator';\n\nlet data;\n\nconst xShiftFcts = {\n  solid: {\n    C1s: (x) => -2501.002792622873 + 18.12807741 * x - 0.02938832 * x ** 2,\n    O1s: (x) => -14914.578039681715 + 5.67166123e1 * x - 5.20506217e-2 * x ** 2,\n  },\n};\n\n/**\n *\n * @param {import('openchemlib').Molecule} [molecule]\n * @param {object} options\n * @param {string} [options.statsKey='gw']\n * @param {number|undefined} [options.atomMapNo] - // allows to filter for specific atoms\n * @param {'solid'|'none'} [options.energyReference='solid']\n * @param {import('spectrum-generator').GenerateSpectrumOptions} [options.spectrum]\n * @param {object} [options.data] - Pre-loaded QM9 hose-code statistics (`{ spheres: { ... } }`). When provided, the network fetch from data.cheminfo.org is skipped, which makes the prediction work offline and in the browser.\n */\nexport async function predictUsingHoseCodes(molecule, options = {}) {\n  const {\n    statsKey = 'gw',\n    spectrum: spectrumOptions,\n    energyReference = 'solid',\n    atomMapNo,\n    data: injectedData,\n  } = options;\n  const spheresData = await ensureSpheres(injectedData);\n\n  const spheres = spheresData.spheres[statsKey];\n  const diaIDs = getDiastereotopicAtomIDsAndH(molecule);\n  const annotations = [];\n  const annotationOptions = { verticalPosition: 0 };\n\n  let values = getHoseCodes(molecule, {\n    maxSphereSize: 2,\n  })\n    .map((hoses, index) => ({\n      hoses,\n      atomLabel: molecule.getAtomLabel(index),\n      atomNumber: index,\n      atomMapNo: molecule.getAtomMapNo(index),\n      _highlight: [diaIDs[index].oclID],\n    }))\n    .filter(\n      (value) =>\n        value.atomLabel && value.atomLabel !== 'H' && value.atomLabel !== '?',\n    )\n    .filter((value) => value.hoses)\n    .filter((value) => !atomMapNo || value.atomMapNo === atomMapNo);\n\n  for (const hoseCode of values) {\n    for (let i = hoseCode.hoses.length - 1; i >= 0; i--) {\n      const hose = hoseCode.hoses[i];\n      const sphere = spheres[i];\n      if (!sphere) {\n        throw new Error(`sphere not found: ${i} - ${hoseCode.hoses.length}`);\n      }\n      const prediction = sphere.hoses[hose];\n      if (prediction) {\n        hoseCode.prediction = structuredClone(prediction);\n        break;\n      }\n    }\n  }\n\n  // before anything else we should shift if required\n  for (const hoseCode of values) {\n    const transition = `${hoseCode.atomLabel}1s`;\n    const xShiftFct = xShiftFcts[energyReference]?.[transition];\n    if (xShiftFct) {\n      for (const key of Object.keys(hoseCode.prediction.boxplot)) {\n        hoseCode.prediction.boxplot[key] = xShiftFct(\n          hoseCode.prediction.boxplot[key],\n        );\n      }\n    }\n  }\n\n  const peaks = values\n    .filter((value) => value.prediction)\n    .map((value) => ({\n      x: value.prediction.boxplot.median,\n      y: 1,\n    }));\n\n  // todo shift values if required\n  const spectrum = generateSpectrum(peaks, spectrumOptions);\n\n  // values should be unique based on value.prediction.idCode\n  // during this operation we should take care to combine _highlights\n  const uniqueValuesObject = {};\n  for (const value of values) {\n    const key = `${value.prediction.idCode}`;\n    if (uniqueValuesObject[key]) {\n      uniqueValuesObject[key].atomNumbers.push(value.atomNumber);\n      const highlight = value._highlight[0];\n      if (!uniqueValuesObject[key]._highlight.includes(highlight)) {\n        uniqueValuesObject[key]._highlight.push(highlight);\n      }\n    } else {\n      // eslint-disable-next-line no-unused-vars\n      const { atomNumber, ...uniqueValueObject } = {\n        ...value,\n        atomNumbers: [value.atomNumber],\n      };\n      uniqueValuesObject[key] = uniqueValueObject;\n    }\n  }\n  const grouped = Object.values(uniqueValuesObject).toSorted(\n    (a, b) => a.prediction.boxplot.median - b.prediction.boxplot.median,\n  );\n\n  for (const hoseCode of grouped) {\n    annotations.push(\n      ...getAnnotations(\n        hoseCode.prediction,\n        hoseCode._highlight,\n        annotationOptions,\n      ),\n    );\n  }\n\n  return { grouped, spectrum, annotations, peaks };\n}\n\nasync function ensureSpheres(injectedData) {\n  if (injectedData) return injectedData;\n  if (data) return data;\n  const url = `https://data.cheminfo.org/xps/qm9.json`;\n  const response = await fetch(url);\n  //We do a global in place modification,\n  // eslint-disable-next-line require-atomic-updates\n  data = await response.json();\n  return data;\n}\n\nfunction getAnnotations(prediction, highlight, options) {\n  const annotations = [\n    {\n      position: [\n        {\n          x: prediction.boxplot.q1,\n          y: `${options.verticalPosition * 8 + 2}px`,\n        },\n        {\n          x: prediction.boxplot.q3,\n          y: `${options.verticalPosition * 8 + 6}px`,\n        },\n      ],\n      type: 'rect',\n      fillColor: 'transparent',\n      strokeColor: 'orange',\n      _highlight: highlight,\n    },\n    {\n      position: [\n        {\n          x: prediction.boxplot.min,\n          y: `${options.verticalPosition * 8 + 4}px`,\n        },\n        {\n          x: prediction.boxplot.max,\n          y: `${options.verticalPosition * 8 + 4}px`,\n        },\n      ],\n      type: 'line',\n      fillColor: 'transparent',\n      strokeColor: 'orange',\n    },\n    {\n      position: [\n        {\n          x: prediction.boxplot.median,\n          y: `${options.verticalPosition * 8 + 2}px`,\n        },\n        {\n          x: prediction.boxplot.median,\n          y: `${options.verticalPosition * 8 + 6}px`,\n        },\n      ],\n      type: 'line',\n      fillColor: 'transparent',\n      strokeColor: 'darkorange',\n    },\n  ];\n  options.verticalPosition = (options.verticalPosition + 1) % 7;\n  return annotations;\n}\n","(function() {\n  var base64map\n      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n  crypt = {\n    // Bit-wise rotation left\n    rotl: function(n, b) {\n      return (n << b) | (n >>> (32 - b));\n    },\n\n    // Bit-wise rotation right\n    rotr: function(n, b) {\n      return (n << (32 - b)) | (n >>> b);\n    },\n\n    // Swap big-endian to little-endian and vice versa\n    endian: function(n) {\n      // If number given, swap endian\n      if (n.constructor == Number) {\n        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n      }\n\n      // Else, assume array and swap all items\n      for (var i = 0; i < n.length; i++)\n        n[i] = crypt.endian(n[i]);\n      return n;\n    },\n\n    // Generate an array of any length of random bytes\n    randomBytes: function(n) {\n      for (var bytes = []; n > 0; n--)\n        bytes.push(Math.floor(Math.random() * 256));\n      return bytes;\n    },\n\n    // Convert a byte array to big-endian 32-bit words\n    bytesToWords: function(bytes) {\n      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n        words[b >>> 5] |= bytes[i] << (24 - b % 32);\n      return words;\n    },\n\n    // Convert big-endian 32-bit words to a byte array\n    wordsToBytes: function(words) {\n      for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a hex string\n    bytesToHex: function(bytes) {\n      for (var hex = [], i = 0; i < bytes.length; i++) {\n        hex.push((bytes[i] >>> 4).toString(16));\n        hex.push((bytes[i] & 0xF).toString(16));\n      }\n      return hex.join('');\n    },\n\n    // Convert a hex string to a byte array\n    hexToBytes: function(hex) {\n      for (var bytes = [], c = 0; c < hex.length; c += 2)\n        bytes.push(parseInt(hex.substr(c, 2), 16));\n      return bytes;\n    },\n\n    // Convert a byte array to a base-64 string\n    bytesToBase64: function(bytes) {\n      for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n        for (var j = 0; j < 4; j++)\n          if (i * 8 + j * 6 <= bytes.length * 8)\n            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n          else\n            base64.push('=');\n      }\n      return base64.join('');\n    },\n\n    // Convert a base-64 string to a byte array\n    base64ToBytes: function(base64) {\n      // Remove non-base-64 characters\n      base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n          imod4 = ++i % 4) {\n        if (imod4 == 0) continue;\n        bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n      }\n      return bytes;\n    }\n  };\n\n  module.exports = crypt;\n})();\n","var charenc = {\n  // UTF-8 encoding\n  utf8: {\n    // Convert a string to a byte array\n    stringToBytes: function(str) {\n      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n    },\n\n    // Convert a byte array to a string\n    bytesToString: function(bytes) {\n      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n    }\n  },\n\n  // Binary encoding\n  bin: {\n    // Convert a string to a byte array\n    stringToBytes: function(str) {\n      for (var bytes = [], i = 0; i < str.length; i++)\n        bytes.push(str.charCodeAt(i) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a string\n    bytesToString: function(bytes) {\n      for (var str = [], i = 0; i < bytes.length; i++)\n        str.push(String.fromCharCode(bytes[i]));\n      return str.join('');\n    }\n  }\n};\n\nmodule.exports = charenc;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n  var crypt = require('crypt'),\r\n      utf8 = require('charenc').utf8,\r\n      isBuffer = require('is-buffer'),\r\n      bin = require('charenc').bin,\r\n\r\n  // The core\r\n  md5 = function (message, options) {\r\n    // Convert to byte array\r\n    if (message.constructor == String)\r\n      if (options && options.encoding === 'binary')\r\n        message = bin.stringToBytes(message);\r\n      else\r\n        message = utf8.stringToBytes(message);\r\n    else if (isBuffer(message))\r\n      message = Array.prototype.slice.call(message, 0);\r\n    else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n      message = message.toString();\r\n    // else, assume byte array already\r\n\r\n    var m = crypt.bytesToWords(message),\r\n        l = message.length * 8,\r\n        a =  1732584193,\r\n        b = -271733879,\r\n        c = -1732584194,\r\n        d =  271733878;\r\n\r\n    // Swap endian\r\n    for (var i = 0; i < m.length; i++) {\r\n      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;\r\n    }\r\n\r\n    // Padding\r\n    m[l >>> 5] |= 0x80 << (l % 32);\r\n    m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n    // Method shortcuts\r\n    var FF = md5._ff,\r\n        GG = md5._gg,\r\n        HH = md5._hh,\r\n        II = md5._ii;\r\n\r\n    for (var i = 0; i < m.length; i += 16) {\r\n\r\n      var aa = a,\r\n          bb = b,\r\n          cc = c,\r\n          dd = d;\r\n\r\n      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);\r\n      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);\r\n      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);\r\n      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);\r\n      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);\r\n      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n      c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n      b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n      a = FF(a, b, c, d, m[i+12],  7,  1804603682);\r\n      d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n      c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n      b = FF(b, c, d, a, m[i+15], 22,  1236535329);\r\n\r\n      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);\r\n      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);\r\n      c = GG(c, d, a, b, m[i+11], 14,  643717713);\r\n      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);\r\n      d = GG(d, a, b, c, m[i+10],  9,  38016083);\r\n      c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);\r\n      d = GG(d, a, b, c, m[i+14],  9, -1019803690);\r\n      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);\r\n      a = GG(a, b, c, d, m[i+13],  5, -1444681467);\r\n      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);\r\n      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);\r\n      b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n      a = HH(a, b, c, d, m[i+ 5],  4, -378558);\r\n      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n      c = HH(c, d, a, b, m[i+11], 16,  1839030562);\r\n      b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);\r\n      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);\r\n      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n      b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n      a = HH(a, b, c, d, m[i+13],  4,  681279174);\r\n      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);\r\n      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);\r\n      d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n      c = HH(c, d, a, b, m[i+15], 16,  530742520);\r\n      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n      a = II(a, b, c, d, m[i+ 0],  6, -198630844);\r\n      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);\r\n      c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n      b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n      a = II(a, b, c, d, m[i+12],  6,  1700485571);\r\n      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n      c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);\r\n      d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n      b = II(b, c, d, a, m[i+13], 21,  1309151649);\r\n      a = II(a, b, c, d, m[i+ 4],  6, -145523070);\r\n      d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n      c = II(c, d, a, b, m[i+ 2], 15,  718787259);\r\n      b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n      a = (a + aa) >>> 0;\r\n      b = (b + bb) >>> 0;\r\n      c = (c + cc) >>> 0;\r\n      d = (d + dd) >>> 0;\r\n    }\r\n\r\n    return crypt.endian([a, b, c, d]);\r\n  };\r\n\r\n  // Auxiliary functions\r\n  md5._ff  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._gg  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._hh  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._ii  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n\r\n  // Package private blocksize\r\n  md5._blocksize = 16;\r\n  md5._digestsize = 16;\r\n\r\n  module.exports = function (message, options) {\r\n    if (message === undefined || message === null)\r\n      throw new Error('Illegal argument ' + message);\r\n\r\n    var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n    return options && options.asBytes ? digestbytes :\r\n        options && options.asString ? bin.bytesToString(digestbytes) :\r\n        crypt.bytesToHex(digestbytes);\r\n  };\r\n\r\n})();\r\n","import md5 from 'md5';\nimport { generateSpectrum } from 'spectrum-generator';\n\nconst cache = {};\n\n/**\n *\n * @param {import('openchemlib').Molecule} [molecule]\n * @param {object} options\n * @param {number} [options.xShift=0]\n * @param {import('spectrum-generator').GenerateSpectrumOptions} [options.spectrum]\n */\nexport async function predictUsingAI(molecule, options = {}) {\n  const { spectrum: spectrumOptions, energyReference = 'solid' } = options;\n\n  const moleculeWithH = molecule.getCompactCopy();\n  moleculeWithH.addImplicitHydrogens();\n\n  const molfile = moleculeWithH.toMolfile();\n  const cacheKey = md5(molfile + energyReference);\n\n  if (!cache[cacheKey]) {\n    const response = await fetch(\n      'https://xps-service.cheminfo.org/v1/predict_binding_energies',\n      {\n        method: 'post',\n        headers: {\n          'content-type': 'application/json',\n        },\n        body: JSON.stringify({\n          molFile: molfile,\n          method: 'GFN2xTB',\n          fmax: 0.01,\n          energyReference,\n        }),\n      },\n    );\n    cache[cacheKey] = await response.json();\n  }\n\n  const predictions = cache[cacheKey].predictions;\n\n  const peaks = [];\n  const xyz = [predictions.length, 'XTB optimized geometry'];\n  for (const prediction of predictions) {\n    xyz.push(\n      [\n        prediction.atom,\n        prediction.position.x,\n        prediction.position.y,\n        prediction.position.z,\n      ].join(' '),\n    );\n    const orbitals = Object.keys(prediction.prediction);\n    if (!orbitals) continue;\n    for (const orbital of orbitals) {\n      peaks.push({\n        x: prediction.prediction[orbital].bindingEnergy,\n        y: 1,\n        standardDeviation: prediction.prediction[orbital].standardDeviation,\n      });\n    }\n  }\n\n  const spectrum = generateSpectrum(peaks, spectrumOptions);\n\n  return {\n    peaks,\n    spectrum,\n    xyz: xyz.join('\\n'),\n  };\n}\n","import { createPolymer } from 'openchemlib-utils';\n\nimport { predictUsingHoseCodes } from './predictUsingHoseCodes.js';\n\nexport async function predictPolymer(monomer, options = {}) {\n  const { Molecule } = monomer.getOCL();\n  const polymer = createPolymer(monomer, {\n    count: 5, // we create 5 monomers and we use the middle one\n    markMonomer: true,\n    ...getAlphaGamma(Molecule),\n  });\n\n  const prediction = await predictUsingHoseCodes(polymer, {\n    atomMapNo: 3,\n    ...options,\n  });\n\n  return prediction;\n}\n\nfunction getAlphaGamma(Molecule) {\n  const r1AtomicNo = Molecule.getAtomicNoFromLabel(\n    'R1',\n    Molecule.cPseudoAtomsRGroups,\n  );\n  const r2AtomicNo = Molecule.getAtomicNoFromLabel(\n    'R2',\n    Molecule.cPseudoAtomsRGroups,\n  );\n  const alpha = Molecule.fromSmiles('C[2H]');\n  alpha.setAtomicNo(0, r1AtomicNo);\n  const gamma = Molecule.fromSmiles('C[2H]');\n  gamma.setAtomicNo(0, r2AtomicNo);\n  return { alpha, gamma };\n}\n","import { JSGraph as OriginalJSGraph } from 'common-spectrum';\n\nimport { getComponentsAnnotations } from './jsgraph/getComponentsAnnotations.js';\nimport { getRegionsAnnotations } from './jsgraph/getRegionsAnnotations.js';\n\nexport {\n  AnalysesManager,\n  Analysis,\n  fromJcamp,\n  toJcamp,\n  toJcamps,\n} from 'common-spectrum';\n\nexport { fromVamas } from './from/fromVamas.js';\n\nexport { peakPicking } from './peakPicking.js';\n\nexport { references } from './references.js';\n\nexport const JSGraph = {\n  ...OriginalJSGraph,\n  getRegionsAnnotations,\n  getComponentsAnnotations,\n};\n\nexport { predictUsingHoseCodes } from './utilities/prediction/predictUsingHoseCodes.js';\nexport { predictUsingAI } from './utilities/prediction/predictUsingAI.js';\nexport { predictPolymer } from './utilities/prediction/predictPolymer.js';\n"],"names":["toString","Object","prototype","isAnyArray","value","tag","call","endsWith","includes","getOutputArray","output","length","undefined","TypeError","Float64Array","xMedian","input","options","exact","array","slice","middleIndex","calcMiddle","median","quickSelect","medianNext","low","high","middle","currentLow","currentHigh","swap","i","j","temp","Math","floor","xCheck","minLength","Error","xFindClosestIndex","target","sorted","abs","index","diff","Number","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","from","to","xAbsoluteSum","sum","xAdd","array1","array2","isConstant","constant","array3","xApplyFunctionStr","variableLabel","fctString","fct","Function","replaceAll","toReturn","isNaN","xBinning","binSize","numberOfPoints","keepFirstAndLast","RangeError","isInteger","binByNumberOfPoints","effectiveBinSize","innerLength","innerBinCount","ceil","start","end","min","k","outputLength","innerBins","Matrix","matrix","MatrixTransposeView","solve","xMean","sumValue","xVariance","values","unbiased","mean","sqrError","xStandardDeviation","sqrt","xDivide","xEnsureFloat64","FFT","size","_csize","table","Array","angle","PI","cos","sin","power","t","_width","_bitrev","shift","revShift","_out","_data","_inv","fromComplexArray","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","data","_transform4","realTransform","_realTransform4","inverseTransform","width","step","len","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","A","B","C","D","Ar","Ai","Br","Bi","Cr","Ci","Dr","Di","MAr","MAi","tableBr","tableBi","MBr","MBi","tableCr","tableCi","MCr","MCi","tableDr","tableDi","MDr","MDi","T0r","T0i","T1r","T1i","T2r","T2i","T3r","T3i","FAr","FAi","FCr","FCi","FBr","FBi","FDr","FDi","evenR","evenI","oddR","oddI","leftR","leftI","rightR","rightI","step2","step3","_singleRealTransform2","_singleRealTransform4","halfLen","hquarterLen","ST0r","ST0i","ST1r","ST1i","ST2r","ST2i","ST3r","ST3i","SFAr","SFAi","SFBr","SFBi","SA","SB","createFromToArray","includeFrom","includeTo","distribution","div","delta","base","firstExponent","log","LOOP","FLOAT_MUL","sh1","sh2","sh3","multiplyUint32","n","m","nlo","nhi","XSadd","random","state","constructor","seed","Date","now","Uint32Array","init","getFloat","bind","getUint32","nextState","periodCertification","createRandomArray","standardDeviation","range","generator","returnArray","gaussianGenerator","GaussianGenerator","generateGaussian","String","val","u","v","s","stringify","object","replacer","space","internalReplacer","key","ArrayBuffer","isView","JSON","xSubtract","xMaxValue","maxValue","xMinValue","minValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","at","xMaxAbsoluteValue","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","max","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","c","p","coef","calc","P","Q","Y","r","erfcinv","sign","q","g","NaN","NEGATIVE_INFINITY","simpleNormInv","magnitudeMode","result","SQRT2","simpleNormInvNumber","xNoiseSanPlot","mask","cutOff","refine","scaleFactor","factorStd","fixOffset","prepareData","medianIndex","firstNegativeValueIndex","findIndex","e","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","round","push","minKi","whereToCutStat","top","elementsOfCutOff","filter","averageValue","element","kiSqrt","logBaseY","scale","y","reverse","log10","logOfBase","xAxis","_e","sort","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","absoluteSumValue","absoluteSum","currentMaxValue","factor","sumFactor","xPadding","fromEnd","toEnd","xParetoNormalization","sqrtSD","xRescale","currentMin","currentMax","xRolling","window","padding","padded","newArray","subarray","xRollingAverage","xRollingMedian","matrixCheck","firstLength","matrixCholeskySolver","nonZerosArray","dimension","permutationEncoded","pinv","Int32Array","mt","a","ar","ac","nnz","ap","ai","ax","lnz","idx","col","colOffset","adr","d","lp","parent","lnzArray","flag","pattern","bp1","ldlSymbolic","nz","lx","li","ldlNumeric","b","ldlPerm","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPermt","apLoc","aiLoc","parentLoc","lnzLoc","flagLoc","kk","p2","axLoc","lpLoc","liLoc","lxLoc","dLoc","yLoc","patternLoc","yi","lKi","p2col","xLoc","perm","bLoc","matrixCuthillMckee","list","adj","visited","fill","l","toVisit","eol","ptr","nbhd","matrixMinMaxZ","nbRows","nbColumns","column","row","xyCheck","xyEnsureGrowingX","prevX","currentIndex","zonesNormalize","zones","exclusions","map","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","results","zoneIndex","zonesWithPoints","normalizedZones","zonesWithNumberOfPoints","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","tempZone","tempZoneNumberOfPoints","equallySpacedSlot","xLength","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x0","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","add","getSlope","y0","y1","xyEquallySpaced","variant","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyFilterXPositive","xyGrowingX","toReversed","xyInterpolateLinear","xTarget","sparseIndex","targetX","leftIdx","rightIdx","addStyle","serie","color","opacity","lineWidth","match","toUpperCase","replace","style","name","line","dash","label","id","COLORS","getJSGraph","analyses","colors","opacities","linesWidth","selector","normalization","yAxis","series","xLabel","yLabel","xUnits","units","yUnits","analysis","spectra","getNormalizedSpectra","firstSpectrum","variables","logScale","axes","unit","unitWrapperBefore","unitWrapperAfter","flipped","display","defaultBoundary","getNormalizationAnnotations","boundary","annotations","exclusion","ignore","annotation","type","strokeWidth","fillColor","centerMean","centerMedian","normed","divideBySD","rescale","paretoNormalization","updateSystem","weights","nbPoints","newMatrix","newVector","w","diag","next","getDeltaMatrix","lambda","last","lowerTriangularNonZeros","permutationEncodedArray","airPLS","xWork","yWork","optionsWork","shouldDownsample","getDownSampleData","controlPoints","getControlPoints","maxIterations","baseline","iteration","sumNegDifferences","corrected","stopCriterion","getStopCriterion","threshold","prevNegSum","leftHandSide","rightHandSide","cho","applyCorrection","absChange","exp","finalBaseline","finalCorrected","error","autoDownsample","maxResolution","getDownsampleFactor","downsampledControlPoints","Int8Array","closestIndex","indexFrom","indexTo","originalLength","targetResolution","sequentialFill","isArray","airPLSBaseline","ys","numberPoints","regressionOptions","airpls","correctedSpectrum","checkArrayLength","BaseRegression","new","predict","_predict","xVal","train","precision","toLaTeX","score","y2","ySum","chi2","rmsd","xSquared","ySquared","xY","r2","maybeToPrecision","number","figures","toPrecision","PolynomialRegression","degree","powers","coefficients","regress","coefficient","toJSON","_toFormula","isLaTeX","sup","closeSup","times","fn","str","startsWith","load","json","interceptAtZero","nCoefficients","F","set","FT","mmul","to1DArray","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","rollingAverageBaseline","defaults","actualOptions","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","xs","windowSize","derivative","polynomial","console","warn","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","h","center","count","gramPoly","Grampoly","genFact","gf","weight","firstDerivative","secondDerivative","thirdDerivative","savitzkyGolay","ensureGrowing","reverseIfNeeded","equallySpaced","filterX","setMaxX","existingMax","setMinX","existingMin","getMinMaxIntervalsDy","dY","dX","lastMax","lastMin","intervalL","intervalR","tryMatchOneIntervalWithMinData","lastK","minData","yThreshold","intervalWidth","intervalCenter","yData","minDistance","possible","newLastIndex","centerIndex","deltaX","currentDistance","lastIndex","autoAlgorithm","ddY","minddY","crossDy","peaks","lastJ","yIndex","crypto","randomUUID","inflectionPoints","getPeakFromIntervals","xGetCrossZeroPoints","isLessAndGreaterThanZero","back","optimizeTop","peak","alpha","beta","gamma","xCurrent","xPrevious","gsd","noiseLevel","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","peakDetectionAlgorithm","isEquallySpaced","noiseInfo","xValue","minY","maxY","peakData","calibrateX","nbPeaks","gsdOptions","xFunction","function","yFunction","setMaxY","setMinY","filterXY","filters","logs","filterFct","Filters","time","getNormalizedSpectrum","newSpectrum","title","dataType","meta","applyRangeSelectionFirst","structuredClone","unshift","isMonotonic","global","factory","module","exports","this","isString","isFiniteImpl","isFinite","isNumber","identity","uniq","strings","seen","item","hasOwnProperty","compareArray","assign","properties","keys","forEach","mulSafe","decimals","arguments","arg","getFractional","divSafe","num","den","pow","invDen","QtyError","err","create","apply","message","stack","throwIncompatibleUnits","left","right","UNITS","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","scalar","numerator","denominator","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","kind","unitKeys","indexOf","substr","getKinds","toLowerCase","getAliases","unitName","SIGNATURE_VECTOR","unitSignature","signature","vector","unitSignatureVector","isBase","toBase","SIGN","INTEGER","SIGNED_INTEGER","FRACTION","FLOAT","EXPONENT","SCI_NUMBER","SIGNED_NUMBER","QTY_STRING","QTY_STRING_REGEX","RegExp","POWER_OP","SAFE_POWER","TOP_REGEX","BOTTOM_REGEX","parse","trim","exec","scalarMatch","parseFloat","bottom","nx","UNIT_TEST_REGEX","test","parseUnits","PREFIX_REGEX","join","UNIT_REGEX","BOUNDARY_REGEX","UNIT_MATCH","UNIT_MATCH_REGEX","parsedUnitsCache","cached","unitMatch","normalizedUnits","globalParse","isQty","Qty","initValue","initUnits","assertValidConstructorArgs","baseScalar","_conversionCache","isDefinitionObject","updateBaseScalar","isTemperature","KINDS","knownSignature","isDegrees","subtractTemperatures","lhs","rhs","lhsUnits","rhsConverted","dstDegrees","getDegreeUnits","subtractTempDegrees","deg","tempDegrees","addTempDegrees","toDegrees","src","dst","srcDegK","toDegK","dstUnits","dstScalar","qty","toTemp","toTempK","other","isCompatible","isInverse","inverse","baseUnitCache","toBaseUnits","mul","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","sub","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","every","_isBase","NestedMap","get","childMap","defaultFormatter","formatter","_units","numIsUnity","denIsUnity","numUnits","stringifyUnits","denUnits","targetUnitsOrMaxDecimalsOrPrec","maxDecimals","targetUnits","outScalar","format","targetQty","stringifiedUnitsCache","stringified","isUnity","simplify","getOutputNames","unitNames","token","tokenNext","unitCounts","acc","unitCounter","unitCount","version","convertUnit","fromUnit","toUnit","normalize","testRegExp","ensureRegexp","string","parts","stringToRegexp","flags","getConvertedVariable","variable","newUnits","getXYSpectra","selectedSpectra","labels","xVariable","yVariable","split","variableNames","getPossibleVariable","variableName","convertibleUnits","regexpLabel","upper","hasOwn","lower","possibleFiltered","getXYSpectrum","Analysis","spectrumCallback","cache","clone","ids","fromJSON","pushSpectrum","standardizeData","getXY","normalizedSpectra","getSpectrum","getXLabel","getYLabel","analysisOptions","entries","appendDistinctParameter","appendDistinctValue","AnalysesManager","analysesManager","addAnalysis","getAnalysisIndex","getAnalyses","processedAnalysisIds","Set","has","getSpectra","getAnalysisBySpectrumId","getSpectrumById","getDistinctTitles","getDistinctUnits","getDistinctLabelUnits","normalizeLabelUnits","getDistinctLabels","getDistinctDataTypes","getDistinctMeta","removeAllAnalyses","splice","removeAnalysis","originalLabel","originalUnits","search","ensureString","blob","encoding","TextDecoder","decode","decodeText","uint8","Uint8Array","buffer","byteOffset","byteLength","fatal","parseString","lowercase","gyromagneticRatioMHzT","getGyromagneticNucleus","nucleus","gyromagneticRatio","nucleusNumber","filteredNuclei","getGyromagneticRatio","realNucleus","fromEntries","f","_ref","quickSelectMedian","$","E","o","Boolean","te","ne","ms","pageValue","chromatogram","re","O","V","logger","xFactor","info","yFactor","isXYdata","firstX","firstY","codePointAt","I","S","X","L","N","trace","M","oe","isPeaktable","ue","ce","isXYAdata","se","Z","lastY","pe","ae","z","minX","maxX","minZ","maxZ","noise","ntuples","symbol","find","some","ie","first","H","nbContourLevels","U","fe","noiseMultiplier","zValue","lines","_","ee","T","segments","G","noContour","contourLines","minMax","observeFrequency","shiftOffsetVal","lastX","tmp","$NUC2","$NUC1","yType","xType","W","pageSymbol","J","intensity","de","twoD","wantXY","profiling","keepSpectra","dynamicTyping","le","K","charAt","vardim","varname","R","he","removeComments","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","withoutXY","noTrimRegExp","pt","ge","debug","flatten","children","datatable","dataClass","jcampDX","jcampCS","shiftOffsetNum","vartype","varform","page","sampleDescription","pop","be","fromJcamp","jcamp","addJcamp","converted","entry","currentSpectrum","addInfoData","header","checkMatrix","checkNumberOrArray","getExtremeValues","firstRow","firstLast","creatorNtuples","owner","origin","resInfo","varName","varType","varDim","isDependent","point","getFactorNumber","getBestFactor","onlyInteger","extremeValues","getNumber","rounded","EPSILON","peakTableCreator","rescaleAndEnsureInteger","newLine","pseudoDigits","SQZ_P","SQZ_N","DIF_P","DIF_N","DUP","maxLinelength","vectorEncoder","intervalX","xyEncoding","fixEncoding","squeezedEncoding","differenceEncoding","differenceDuplicateEncoding","commaSeparatedValuesEncoding","packedEncoding","separator","outputData","dataLength","squeezedDigit","mult","charCount","encodedData","encodedNumber","diffData","numDiff","differenceDigit","duplicateDigit","sqzDigits","charCodeAt","substring","diffDigits","dupDigits","xyDataCreator","fromVariables","forceNtuples","jcampOptions","xData","toJcamps","jcamps","getJcamp","toJcamp","JSGraph","getComponentsAnnotations","components","strokeColor","creationFct","component","getAnnotation","showAssignment","mode","energy","kineticEnergy","bindingEnergy","text","assignment","anchor","dy","dx","getRegionsAnnotations","regions","region","background","showRegionID","energyStart","parameters","kineticEnergyStart","bindingEnergyStart","energyEnd","kineticEnergyEnd","bindingEnergyEnd","regionID","isUtf8","buf","guessEncoding","decoder","isutf8","pointer","parsed","blocks","parseHeader","nbBlocks","parseBlock","nbComments","comments","nbExperimentVariables","experimentVariables","nbEntriesInclusionExclusion","blockParametersincludes","nbFutureUpgradeExperimentEntries","futureUpgradeExperimentEntries","firstBlock","block","month","hours","minutes","seconds","blockComment","technique","nbCorrespondingVariables","correspondingVariables","nbAdditionalNumericalParameters","additionalNumericalParameters","nbOrdinateValues","correspondingVariable","minimumOrdinateValue","maximumOrdinateValue","appendCalibration","calibrations","calibration","fields","groups","rest","measured","referenced","bindingEnergyShift","kineticEnergyShift","appendComponent","componentRegex","source","componentID","shape","parseShape","area","parseMultiplicationConstrain","fwhm","parseKEShiftConstrain","relativeSensitivityFactor","parseRSF","rsf","atomicMass","parseMass","mass","groupIndex","parseIndex","uncorrectedRSF","parseUncorrectedRSF","mixingRatio","mu","lowerBound","upperBound","constrain","linkedComponent","appendRegion","regionBlockID","backgroundType","parseBackgroundParameters","backgroundOptions","rawParameters","averageWidth","startOffset","endOffset","otherParameters","field","crossSection","parseCASA","casa","mapComponents","parsedBlockComment","sourceEnergy","energyUnits","mapRegions","newRegion","XPS_REGEX","AUGER_REGEX","parseRegion","orbital","shell","angularMomentum","auger","transition","xpsMatches","augerMatches","parseInt","getNormalizedMeta","normalized","energyType","characteristicEnergy","beamWidthX","beamWidthY","analysisSource","speciesLabel","parsedCASAs","increment","analyserMode","fromVamas","yValues","xStart","xIncrement","xValues","cheminfo","maxAbsoluteRatio","maxAbsoluteValue","peakPicking","references","xAtomicNumber","getXAtomicNumber","molecule","OCL","getOCL","Molecule","getAtomicNoFromLabel","cPseudoAtomX","isCsp3","atomID","getAtomicNo","getAtomCharge","getImplicitHydrogens","getConnAtoms","makeRacemic","ensureHelperArrays","cHelperCIP","getAllAtoms","getAtomParity","cAtomParityNone","setAtomESR","cESRTypeAnd","tagAtom","iAtom","customLabel","getAtomLabel","setAtomCustomLabel","setAtomicNo","setAtomMass","getAtomMass","FULL_HOSE_CODE","HOSE_CODE_CUT_C_SP3_SP3","getHoseCodesForAtomsAsFragments","allowedCustomLabels","minSphereSize","maxSphereSize","tagAtoms","tagAtomFct","rootAtoms","getCompactCopy","internalTagAtoms","cHelperNeighbours","getAtomCustomLabel","fragments","mappings","atomMask","atomList","sphere","rootAtom","newMax","atom","getAllConnAtoms","connAtom","getConnAtom","fragment","copyMoleculeByAtoms","setAtomMapNo","removeExplicitHydrogens","addQueryFeaturesAndRemoveMapNo","mapping","getAtomMapNo","isAromatic","isAromaticAtom","setAtomQueryFeature","cAtomQFAromatic","cAtomQFNotAromatic","smallestRing","getAtomRingSize","cAtomQFRingSize3","cAtomQFRingSize4","cAtomQFRingSize5","cAtomQFRingSize6","cAtomQFRingSize7","cAtomQFRingSizeLarge","nbHydrogens","getAllHydrogens","cAtomQFNot0Hydrogen","cAtomQFNot1Hydrogen","cAtomQFNot2Hydrogen","cAtomQFNot3Hydrogen","getCompactCopyWithoutCustomLabels","tempMolecule","getHoseCodesForAtomsAsStrings","hoses","getCanonizedIDCode","CANONIZER_ENCODE_ATOM_CUSTOM_LABELS","getChiralOrHeterotopicCarbons","internalMolecule","addImplicitHydrogens","addPossibleChiralBonds","cHelperSymmetryStereoHeterotopicity","atoms","neighbourSymmetries","getNeighbourSymmetries","getAtoms","getStereoBond","stereoBond","getAtomPreferredStereoBond","setBondType","cBondTypeUp","getBondAtom","setBondAtom","symmetryRank","getSymmetryRank","ensureHeterotopicChiralBonds","esrType","atLeastThreeAtoms","cHelperBitNeighbours","heterotopicCarbons","getSymmetryRanks","xAtomNumber","symmetryRanks","getDiastereotopicAtomIDs","numberAtoms","rank","getDiastereotopicAtomIDsAndH","diaIDs","newDiaIDs","diaID","newDiaID","oclID","hydrogenOCLIDs","heavyAtom","getHoseCodes","atomLabels","atomicNumbers","createPolymer","checkEntity","getAlphaGamma","r1AtomicNo","r2AtomicNo","getR1R2AtomicNo","polymer","addMolecule","getUnit","addBond","markMonomer","firstAtomicNo","secondAtomicNo","loop","deleteAtoms","nbR1","nbR2","r1Count","r2Count","fromSmiles","cPseudoAtomsRGroups","atomSorter","self","document","postMessage","IS_PAPA_WORKER","_handle","_finished","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","chunkSize","chunk","streamer","_config","parseChunk","skipFirstNLines","newline","quoteChar","guessLineEndings","beforeFirstChunk","paused","aborted","cursor","preview","workerId","WORKER_ID","finished","complete","_sendError","RemoteChunkSize","_readChunk","_chunkLoaded","stream","XMLHttpRequest","withCredentials","onload","onerror","_chunkError","open","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","status","readyState","responseText","getResponseHeader","lastIndexOf","statusText","LocalChunkSize","FileReader","webkitSlice","mozSlice","FileReaderSync","readAsText","pause","resume","on","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","removeListener","skipEmptyLines","DefaultDelimiter","transformHeader","dynamicTypingFunction","code","abort","delimiter","RECORD_SEP","UNIT_SEP","successful","bestDelimiter","delimitersToGuess","getCharIndex","setTimeout","fastMode","escapeChar","BAD_DELIMITERS","linebreak","truncated","renamedHeaders","userError","file","userStep","userChunk","userComplete","terminate","worker","WORKERS_SUPPORTED","NODE_STREAM_INPUT","download","readable","read","File","URL","webkitURL","BLOB_URL","createObjectURL","Blob","Worker","onmessage","config","unparse","quotes","columns","escapeFormulae","fromCharCode","BYTE_ORDER_MARK","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","each","attr","files","inputElem","instanceConfig","extend","before","action","reason","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","gaussianWidthToFWHM","fwhmToWidth","gaussianFwhmToWidth","widthToFWHM","gaussianFct","getArea","height","calculateGaussianHeight","getGaussianArea","getFactor","getGaussianFactor","getData","getGaussianData","calculateHeight","getParameters","Lorentzian","lorentzianFwhmToWidth","lorentzianWidthToFWHM","lorentzianFct","getLorentzianArea","getLorentzianFactor","getLorentzianData","calculateLorentzianHeight","lorentzianQuantile","tan","halfResidual","LorentzianDispersive","lorentzianDispersiveFct","getLorentzianDispersiveData","pseudoVoigtFindFactor","pTarget","tol","maxIter","lo","hi","it","pPseudoVoigt","mid","erf","a1","a2","a3","a4","a5","sqrtLn2","pGaussian","pLorentz","atan","PseudoVoigt","pseudoVoigtFwhmToWidth","pseudoVoigtWidthToFWHM","pseudoVoigtFct","getPseudoVoigtArea","getPseudoVoigtFactor","calculatePseudoVoigtHeight","getPseudoVoigtData","PseudoVoigtTCH","_fwhmG","_fwhmL","_fwhm","_mu","_lorentzianWidthFraction","fwhmG","fwhmL","lorentzianWidthFraction","effectiveFwhm","computeEffectiveWidth","lorentzianFraction","fraction","df","GeneralizedLorentzian","generalizedLorentzianFwhmToWidth","generalizedLorentzianWidthToFWHM","generalizedLorentzianFct","getGeneralizedLorentzianArea","getGeneralizedLorentzianFactor","getGeneralizedLorentzianData","calculateGeneralizedLorentzianHeight","generalizedLorentzianQuantile","getShape1D","BaseSpectrumGenerator","interval","peakWidthFct","assertNumber","assertInteger","resolvePeak","peakFWHM","peakWidth","peakShapeOptions","shapeOptions","cloneShape","widthLeft","widthRight","shapeLeft","shapeRight","getPrototypeOf","addBaseline","addNoise","percent","SpectrumGenerator","maxPeakHeight","reset","generateSpectrum","peakOptions","addPeaks","addPeak","firstValue","lastValue","firstPoint","lastPoint","middlePoint","copy","minPeakHeight","xShiftFcts","solid","C1s","O1s","predictUsingHoseCodes","statsKey","spectrumOptions","energyReference","atomMapNo","injectedData","spheresData","ensureSpheres","spheres","annotationOptions","verticalPosition","atomLabel","atomNumber","_highlight","hoseCode","hose","prediction","xShiftFct","boxplot","uniqueValuesObject","idCode","atomNumbers","highlight","uniqueValueObject","grouped","toSorted","getAnnotations","url","response","fetch","q1","q3","base64map","crypt","rotl","rotr","endian","randomBytes","bytes","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","base64","triplet","base64ToBytes","imod4","cryptModule","charenc","utf8","stringToBytes","bin","unescape","encodeURIComponent","bytesToString","decodeURIComponent","escape","charenc_1","isBuffer_1","obj","isBuffer","isSlowBuffer","_isBuffer","readFloatLE","require$$0","require$$1","require$$2","md5","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","md5Module","digestbytes","asBytes","asString","predictUsingAI","moleculeWithH","molfile","toMolfile","cacheKey","method","headers","body","molFile","fmax","predictions","xyz","orbitals","predictPolymer","monomer","OriginalJSGraph"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,155,156,157,158,159,160,161,167,168,169,170,171,172,173,174,175,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,210,211,212,213]}