{"version":3,"file":"tga-spectrum.umd.js","sources":["../node_modules/is-any-array/lib-esm/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/xMultiply.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.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-spectra-processing/lib/utils/stringify.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/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/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/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/src/choleskySolver.js","../node_modules/cuthill-mckee/cuthill-mckee.js","../node_modules/ml-airpls/src/utils.js","../node_modules/ml-airpls/src/index.js","../node_modules/ml-array-sequential-fill/lib-es6/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-esm/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-esm/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-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","../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/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/lib-esm/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-es6/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/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","../node_modules/xlsx/xlsx.mjs","../node_modules/physical-chemistry-parser/src/utils/getAllSheetsFromXLS.js","../node_modules/physical-chemistry-parser/src/utils/taInstrumentsUtilities.js","../node_modules/physical-chemistry-parser/src/hgPorosimetry/thermoFinnigan/hgParseThermoFinnigan.js","../node_modules/physical-chemistry-parser/src/tga/mettlerToledo/util/calculateResidual.js","../node_modules/physical-chemistry-parser/src/tga/mettlerToledo/util/createLabeledRecords.js","../node_modules/value-units/src/split.js","../node_modules/physical-chemistry-parser/src/tga/mettlerToledo/util/getMetaTGA.js","../node_modules/physical-chemistry-parser/src/tga/mettlerToledo/util/improveRelativeResult.js","../node_modules/physical-chemistry-parser/src/tga/mettlerToledo/util/parseCurveValues.js","../node_modules/physical-chemistry-parser/src/tga/mettlerToledo/tgaParseMettlerToledo.js","../node_modules/physical-chemistry-parser/src/tga/taInstruments/tgaParseTAInstrumentsXLS.js","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/ignoreAttributes.js","../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","../node_modules/physical-chemistry-parser/src/xrf/panalytical/xrfParserPanalytical.js","../lib/from/fromMettlerToledo.js","../lib/from/fromNetzsch.js","../lib/from/parser/parsePerkinElmerAscii.js","../lib/from/fromPerkinElmer.js","../node_modules/papaparse/papaparse.min.js","../lib/from/fromPerkinElmerCSV.js","../lib/from/parser/parseTAInstruments.js","../lib/from/fromTAInstruments.js","../lib/from/fromTAInstrumentsExcel.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 *\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 { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function xMultiply 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\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\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 = 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=xMultiply.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isAnyArray = require('is-any-array');\nvar rescale = require('ml-array-rescale');\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.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.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.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.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.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.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.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.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.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.isAnyArray(array)) {\n    if (array[0] && isAnyArray.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.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.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.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","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","/* 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 { 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 { 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","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    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","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","// Based on https://github.com/scijs/cholesky-solve\n\n/*\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\nfunction ldlSymbolic(\n  n /* A and L are n-by-n, where n >= 0 */,\n  Ap /* input of size n + 1, not modified */,\n  Ai /* input of size nz=Ap[n], not modified */,\n  Lp /* output of size n + 1, not defined on input */,\n  Parent /* output of size n, not defined on input */,\n  Lnz /* output of size n, not defined on input */,\n  Flag /* workspace of size n, not defn. on input or output */,\n) {\n  let i, k, p, kk, p2;\n\n  for (k = 0; k < n; k++) {\n    /* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */\n    Parent[k] = -1; /* parent of k is not yet known */\n    Flag[k] = k; /* mark node k as visited */\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\n    kk = k; /* kth original, or permuted, column */\n    p2 = Ap[kk + 1];\n    for (p = Ap[kk]; p < p2; p++) {\n      /* A (i,k) is nonzero (original or permuted A) */\n      i = Ai[p];\n\n      if (i < k) {\n        /* follow path from i to root of etree, stop at flagged node */\n        for (; Flag[i] !== k; i = Parent[i]) {\n          /* find parent of i if not yet determined */\n          if (Parent[i] === -1) Parent[i] = k;\n          Lnz[i]++; /* L (k,i) is nonzero */\n          Flag[i] = k; /* mark i as visited */\n        }\n      }\n    }\n  }\n  /* construct Lp index array from Lnz column counts */\n  Lp[0] = 0;\n  for (k = 0; k < n; k++) {\n    Lp[k + 1] = Lp[k] + Lnz[k];\n  }\n}\n\nfunction ldlNumeric(\n  n /* A and L are n-by-n, where n >= 0 */,\n  Ap /* input of size n+1, not modified */,\n  Ai /* input of size nz=Ap[n], not modified */,\n  Ax /* input of size nz=Ap[n], not modified */,\n  Lp /* input of size n+1, not modified */,\n  Parent /* input of size n, not modified */,\n  Lnz /* output of size n, not defn. on input */,\n  Li /* output of size lnz=Lp[n], not defined on input */,\n  Lx /* output of size lnz=Lp[n], not defined on input */,\n  D /* output of size n, not defined on input */,\n  Y /* workspace of size n, not defn. on input or output */,\n  Pattern /* workspace of size n, not defn. on input or output */,\n  Flag /* workspace of size n, not defn. on input or output */,\n) {\n  let yi, lKi;\n  let i, k, p, kk, p2, len, top;\n  for (k = 0; k < n; k++) {\n    /* compute nonzero Pattern of kth row of L, in topological order */\n    Y[k] = 0.0; /* Y(0:k) is now all zero */\n    top = n; /* stack for pattern is empty */\n    Flag[k] = k; /* mark node k as visited */\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\n    kk = k; /* kth original, or permuted, column */\n    p2 = Ap[kk + 1];\n    for (p = Ap[kk]; p < p2; p++) {\n      i = Ai[p]; /* get A(i,k) */\n      if (i <= k) {\n        Y[i] += Ax[p]; /* scatter A(i,k) into Y (sum duplicates) */\n        for (len = 0; Flag[i] !== k; i = Parent[i]) {\n          Pattern[len++] = i; /* L(k,i) is nonzero */\n          Flag[i] = k; /* mark i as visited */\n        }\n        while (len > 0) Pattern[--top] = Pattern[--len];\n      }\n    }\n    /* compute numerical values kth row of L (a sparse triangular solve) */\n    D[k] = Y[k]; /* get D(k,k) and clear Y(k) */\n    Y[k] = 0.0;\n    for (; top < n; top++) {\n      i = Pattern[top]; /* Pattern[top:n-1] is pattern of L(:,k) */\n      yi = Y[i]; /* get and clear Y(i) */\n      Y[i] = 0.0;\n      p2 = Lp[i] + Lnz[i];\n      for (p = Lp[i]; p < p2; p++) {\n        Y[Li[p]] -= Lx[p] * yi;\n      }\n      lKi = yi / D[i]; /* the nonzero entry L(k,i) */\n      D[k] -= lKi * yi;\n      Li[p] = k; /* store L(k,i) in column form of L */\n      Lx[p] = lKi;\n      Lnz[i]++; /* increment count of nonzeros in col i */\n    }\n\n    if (D[k] === 0.0) return k; /* failure, D(k,k) is zero */\n  }\n\n  return n; /* success, diagonal of D is all nonzero */\n}\n\nfunction ldlLsolve(\n  n /* L is n-by-n, where n >= 0 */,\n  X /* size n. right-hand-side on input, soln. on output */,\n  Lp /* input of size n+1, not modified */,\n  Li /* input of size lnz=Lp[n], not modified */,\n  Lx /* input of size lnz=Lp[n], not modified */,\n) {\n  let j, p, p2;\n  for (j = 0; j < n; j++) {\n    p2 = Lp[j + 1];\n    for (p = Lp[j]; p < p2; p++) {\n      X[Li[p]] -= Lx[p] * X[j];\n    }\n  }\n}\n\nfunction ldlDsolve(\n  n /* D is n-by-n, where n >= 0 */,\n  X /* size n. right-hand-side on input, soln. on output */,\n  D /* input of size n, not modified */,\n) {\n  let j;\n  for (j = 0; j < n; j++) {\n    X[j] /= D[j];\n  }\n}\n\nfunction ldlLTsolve(\n  n /* L is n-by-n, where n >= 0 */,\n  X /* size n. right-hand-side on input, soln. on output */,\n  Lp /* input of size n+1, not modified */,\n  Li /* input of size lnz=Lp[n], not modified */,\n  Lx /* input of size lnz=Lp[n], not modified */,\n) {\n  let j, p, p2;\n  for (j = n - 1; j >= 0; j--) {\n    p2 = Lp[j + 1];\n    for (p = Lp[j]; p < p2; p++) {\n      X[j] -= Lx[p] * X[Li[p]];\n    }\n  }\n}\n\nfunction ldlPerm(\n  n /* size of X, B, and P */,\n  X /* output of size n. */,\n  B /* input of size n. */,\n  P /* input permutation array of size n. */,\n) {\n  let j;\n  for (j = 0; j < n; j++) {\n    X[j] = B[P[j]];\n  }\n}\n\nfunction ldlPermt(\n  n /* size of X, B, and P */,\n  X /* output of size n. */,\n  B /* input of size n. */,\n  P /* input permutation array of size n. */,\n) {\n  let j;\n  for (j = 0; j < n; j++) {\n    X[P[j]] = B[j];\n  }\n}\n\nfunction prepare(M, n, P) {\n  // if a permutation was specified, apply it.\n  if (P) {\n    let Pinv = new Array(n);\n\n    for (let k = 0; k < n; k++) {\n      Pinv[P[k]] = k;\n    }\n\n    let Mt = []; // scratch memory\n    // Apply permutation. We make M into P*M*P^T\n    for (let a = 0; a < M.length; ++a) {\n      let ar = Pinv[M[a][0]];\n      let ac = Pinv[M[a][1]];\n\n      // we only store the upper-diagonal elements(since we assume matrix is symmetric, we only need to store these)\n      // if permuted element is below diagonal, we simply transpose it.\n      if (ac < ar) {\n        let t = ac;\n        ac = ar;\n        ar = t;\n      }\n\n      Mt[a] = [];\n      Mt[a][0] = ar;\n      Mt[a][1] = ac;\n      Mt[a][2] = M[a][2];\n    }\n\n    M = Mt; // copy scratch memory.\n  } else {\n    // if P argument is null, we just use an identity permutation.\n    P = [];\n    for (let i = 0; i < n; ++i) {\n      P[i] = i;\n    }\n  }\n\n  // The sparse matrix we are decomposing is A.\n  // Now we shall create A from M.\n  let Ap = new Array(n + 1);\n  let Ai = new Array(M.length);\n  let Ax = new Array(M.length);\n\n  // count number of non-zero elements in columns.\n  let LNZ = [];\n  for (let i = 0; i < n; ++i) {\n    LNZ[i] = 0;\n  }\n  for (let a = 0; a < M.length; ++a) {\n    LNZ[M[a][1]]++;\n  }\n\n  Ap[0] = 0;\n  for (let i = 0; i < n; ++i) {\n    Ap[i + 1] = Ap[i] + LNZ[i];\n  }\n\n  let coloffset = [];\n  for (let a = 0; a < n; ++a) {\n    coloffset[a] = 0;\n  }\n\n  // go through all elements in M, and add them to sparse matrix A.\n  for (let i = 0; i < M.length; ++i) {\n    let e = M[i];\n    let col = e[1];\n\n    let adr = Ap[col] + coloffset[col];\n    Ai[adr] = e[0];\n    Ax[adr] = e[2];\n\n    coloffset[col]++;\n  }\n\n  let D = new Array(n);\n  let Y = new Array(n);\n  let Lp = new Array(n + 1);\n  let Parent = new Array(n);\n  let Lnz = new Array(n);\n  let Flag = new Array(n);\n  let Pattern = new Array(n);\n  let bp1 = new Array(n);\n  let x = new Array(n);\n  let d;\n\n  ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag);\n\n  let Lx = new Array(Lp[n]);\n  let Li = new Array(Lp[n]);\n\n  d = ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag);\n\n  if (d === n) {\n    return (b) => {\n      ldlPerm(n, bp1, b, P);\n      ldlLsolve(n, bp1, Lp, Li, Lx);\n      ldlDsolve(n, bp1, D);\n      ldlLTsolve(n, bp1, Lp, Li, Lx);\n      ldlPermt(n, x, bp1, P);\n\n      return x;\n    };\n  } else {\n    return null;\n  }\n}\n\nexport { prepare as default };\n","'use strict'\n\nmodule.exports = cuthillMckee\n\nfunction compareNum(a, b) { return a - b }\n\nfunction cuthillMckee(list, n) {\n  var adj = new Array(n)\n  var visited = new Array(n)\n  for(var i=0; i<n; ++i) {\n    adj[i]     = []\n    visited[i] = false\n  }\n\n  for(var i=0; i<list.length; ++i) {\n    var l = list[i]\n    adj[l[0]].push(l[1])\n  }\n\n  var toVisit = new Array(n)\n  var eol = 0\n  var ptr = 0\n  for(var i=0; i<n; ++i) {\n    if(visited[i]) {\n      continue\n    }\n    toVisit[eol++] = i\n    visited[i] = true\n    while(ptr < eol) {\n      var v = toVisit[ptr++]\n      var nbhd = adj[v]\n      nbhd.sort(compareNum)\n      for(var j=0; j<nbhd.length; ++j) {\n        var u = nbhd[j]\n        if(visited[u]) {\n          continue\n        }\n        visited[u] = true\n        toVisit[eol++] = u\n      }\n    }\n  }\n\n  var result = new Array(n)\n  for(var i=0; i<n; ++i) {\n    result[toVisit[i]] = i\n  }\n\n  return result\n}\n","import cuthillMckee from 'cuthill-mckee';\n\nconst getClosestNumber = (array = [], goal = 0) => {\n  const closest = array.reduce((prev, curr) => {\n    return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n  });\n  return closest;\n};\n\nconst getCloseIndex = (array = [], goal = 0) => {\n  const closest = getClosestNumber(array, goal);\n  return array.indexOf(closest);\n};\n\nconst updateSystem = (matrix, y, weights) => {\n  let nbPoints = y.length;\n  let l = nbPoints - 1;\n  let newMatrix = new Array(matrix.length);\n  let newVector = new Float64Array(nbPoints);\n  for (let i = 0; i < l; i++) {\n    let w = weights[i];\n    let diag = i * 2;\n    let next = diag + 1;\n    newMatrix[diag] = matrix[diag].slice();\n    newMatrix[next] = matrix[next].slice();\n    if (w === 0) {\n      newVector[i] = 0;\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\n  return [newMatrix, newVector];\n};\n\nconst getDeltaMatrix = (nbPoints, lambda) => {\n  let matrix = [];\n  let last = nbPoints - 1;\n  for (let i = 0; i < last; i++) {\n    matrix.push([i, i, lambda * 2]);\n    matrix.push([i + 1, i, -1 * lambda]);\n  }\n  matrix[0][2] = lambda;\n  matrix.push([last, last, lambda]);\n  return {\n    lowerTriangularNonZeros: matrix,\n    permutationEncodedArray: cuthillMckee(matrix, nbPoints),\n  };\n};\n\nexport { updateSystem, getDeltaMatrix, getCloseIndex, getClosestNumber };\n","import { xMultiply, xNoiseSanPlot, xAbsoluteSum } from 'ml-spectra-processing';\n\nimport cholesky from './choleskySolver';\nimport { updateSystem, getDeltaMatrix, getCloseIndex } from './utils';\n\nfunction getControlPoints(x, y, options = {}) {\n  const { length } = x;\n  let { controlPoints = Int8Array.from({ length }).fill(0) } = options;\n  const { zones = [], weights = Float64Array.from({ length }).fill(1) } =\n    options;\n\n  if (x.length !== y.length) {\n    throw new RangeError('Y should match the length with X');\n  } else if (controlPoints.length !== x.length) {\n    throw new RangeError('controlPoints should match the length with X');\n  } else if (weights.length !== x.length) {\n    throw new RangeError('weights should match the length with X');\n  }\n\n  zones.forEach((range) => {\n    let indexFrom = getCloseIndex(x, range.from);\n    let indexTo = getCloseIndex(x, range.to);\n    if (indexFrom > indexTo) [indexFrom, indexTo] = [indexTo, indexFrom];\n    for (let i = indexFrom; i < indexTo; i++) {\n      controlPoints[i] = 1;\n    }\n  });\n\n  return {\n    weights:\n      'controlPoints' in options || zones.length > 0\n        ? xMultiply(weights, controlPoints)\n        : weights,\n    controlPoints,\n  };\n}\n\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 [paper of airPLS](https://github.com/zmzhang/airPLS/blob/main/airPLS_manuscript.pdf)\n * @param {Array<number>} x - x axis data useful when control points or zones are submitted\n * @param {Array<number>} y - Original data\n * @param {object} [options={}] - Options object\n * @param {number} [options.maxIterations = 100] - Maximal number of iterations if the method does not reach the stop criterion\n * @param {number} [options.tolerance = 0.001] - Factor of the sum of absolute value of original data, to compute stop criterion\n * @param {Array<number>} [options.weights = [1,1,...]] - Initial weights vector, default each point has the same weight\n * @param {number} [options.lambda = 100] - Factor of weights matrix in -> [I + lambda D'D]z = x\n * @param {Array<number>} [options.controlPoints = []] - Array of 0|1 to force the baseline cross those points.\n * @param {Array<number>} [options.zones = []] - Array of x axis values (as from - to), to force that baseline cross those zones.\n * @returns {{corrected: Array<number>, error: number, iteration: number, baseline: Array<number>}}\n */\n\nexport default function airPLS(x, y, options = {}) {\n  const { weights, controlPoints } = getControlPoints(x, y, options);\n  let { maxIterations = 100, lambda = 10, tolerance = 0.001 } = options;\n\n  let baseline, iteration;\n  let sumNegDifferences = Number.MAX_SAFE_INTEGER;\n  const corrected = Float64Array.from(y);\n  let stopCriterion = getStopCriterion(y, tolerance);\n\n  const { length } = y;\n  let { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(\n    length,\n    lambda,\n  );\n\n  let threshold = 1;\n  const l = length - 1;\n  let prevNegSum = Number.MAX_SAFE_INTEGER;\n  for (\n    iteration = 0;\n    iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion;\n    iteration++\n  ) {\n    let [leftHandSide, rightHandSide] = updateSystem(\n      lowerTriangularNonZeros,\n      y,\n      weights,\n    );\n\n    let cho = cholesky(leftHandSide, length, permutationEncodedArray);\n\n    baseline = cho(rightHandSide);\n\n    sumNegDifferences = applyCorrection(y, baseline, corrected);\n    if (iteration === 1) {\n      const { positive } = xNoiseSanPlot(corrected);\n      threshold = positive;\n    } else {\n      const absChange = Math.abs(prevNegSum / sumNegDifferences);\n      if (absChange < 1.01 && absChange > 0.99) {\n        break;\n      }\n    }\n\n    prevNegSum = sumNegDifferences + 0;\n    for (let i = 1; i < l; i++) {\n      const diff = corrected[i];\n      if (controlPoints[i] < 1 && Math.abs(diff) > threshold) {\n        weights[i] = 0;\n      } else {\n        const factor = diff > 0 ? -1 : 1;\n        weights[i] = Math.exp(\n          (factor * (iteration * diff)) / Math.abs(sumNegDifferences),\n        );\n      }\n    }\n\n    weights[0] = 1;\n    weights[l] = 1;\n  }\n\n  return {\n    corrected,\n    baseline,\n    iteration,\n    error: sumNegDifferences,\n  };\n\n  function applyCorrection(y, baseline, corrected) {\n    let sumNegDifferences = 0;\n    for (let i = 0; i < y.length; i++) {\n      let diff = y[i] - baseline[i];\n      if (diff < 0) sumNegDifferences += diff;\n      corrected[i] = diff;\n    }\n\n    return sumNegDifferences;\n  }\n}\n\nfunction getStopCriterion(y, tolerance) {\n  let sum = xAbsoluteSum(y);\n  return tolerance * sum;\n}\n","import { isAnyArray } from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","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    /**\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     * @example `new PolynomialRegression(x, y, 2)`, in this case, you can pass the option `interceptAtZero`, if you need it.\n     * @param options\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     * @param options.interceptAtZero - force the polynomial regression so that f(0) = 0\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        let y = 0;\n        for (let k = 0; k < this.powers.length; k++) {\n            y += this.coefficients[k] * x ** this.powers[k];\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            if (this.coefficients[k] !== 0) {\n                if (this.powers[k] === 0) {\n                    str = maybeToPrecision(this.coefficients[k], precision);\n                }\n                else if (this.powers[k] === 1) {\n                    str = `${maybeToPrecision(this.coefficients[k], precision) + times}x`;\n                }\n                else {\n                    str = `${maybeToPrecision(this.coefficients[k], precision) + times}x${sup}${this.powers[k]}${closeSup}`;\n                }\n                if (this.coefficients[k] > 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.interceptAtZero - force the polynomial regression so that $f(0) = 0$\n * @param options\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; //must be false in this case\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; //1 per power, in any case.\n    const F = new Matrix(n, nCoefficients);\n    const Y = new Matrix([y]);\n    for (let k = 0; k < nCoefficients; k++) {\n        for (let i = 0; i < n; i++) {\n            if (powers[k] === 0) {\n                F.set(i, k, 1);\n            }\n            else {\n                F.set(i, k, x[i] ** powers[k]);\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 * @return  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 (typeof 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 * @private\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\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","export 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","export 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\";\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, lastJ] = [-1, -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\";\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 = -1, 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 *\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\";\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\";\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 * Correction of the x and y coordinates using a quadratic optimizations with the peak and its 3 closest neighbors to determine the true x,y values of the peak.\n * This process is done in place and is very fast.\n * @param data\n * @param peaks\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        // interpolation to a sin() function\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 = 20 * Math.log10(y[currentIndex - 1]);\n            const beta = 20 * Math.log10(y[currentIndex]);\n            const gamma = 20 * 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 data with x and y arrays. Values in x has to be growing\n * @param options\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\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    //rescale;\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    peaks.forEach((peak) => {\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    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","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","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","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/),l=[],i=[],n=[],f={title:\"\",jcamp:\"\",children:[]},s=0,u=e.includes(\"## \");for(let c=0;c<o.length;c++){let b=o[c],p=u?b.replaceAll(\" \",\"\"):b;if(p.startsWith(\"##NTUPLES\")&&s++,p.startsWith(\"##TITLE\")){let r=[p.slice(8).trim()];for(let a=c+1;a<o.length&&!o[a].startsWith(\"##\");a++)r.push(o[a].trim());i.push({title:r.join(`\n`),jcamp:`${b}\n`,children:[]}),f=i.at(-1),l.push(f)}else if(p.startsWith(\"##END\")&&s===0&&f){f.jcamp+=`${b}\n`;let r=i.pop();if(!r)throw new Error(\"Not finished\");i.length>0?(f=i.at(-1),f.children?.push(r)):(f=void 0,n.push(r))}else if(f?.jcamp){f.jcamp+=`${b}\n`;let r=p.match(/^##(.*?)=(.+)/);if(r){let a=r[1].replaceAll(/[ _-]/g,\"\").toUpperCase();a===\"DATATYPE\"?f.dataType=r[2].trim():a===\"DATACLASS\"?f.dataClass=r[2].trim():a===\"JCAMPDX\"?f.jcampDX=E(r[2].trim()):a===\"JCAMPCS\"&&(f.jcampCS=E(r[2].trim()))}}p.startsWith(\"##END\")&&s>0&&s--}if(t){for(let c of l)c.children=void 0;return l}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)}}},l=[];for(let i of te){let n=k(i);m[0][n]&&(l.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 f of l)o.series[f].data[i]=Number(n[f]);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 l=e.yFactor??1,i=e.xFactor??1,n=e.deltaX??1,f=Math.abs(n*.1),s=.01;e.isXYdata=!0;let u={x:[],y:[]};e.data=u;let c=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(c-n-h)>f&&(Math.abs(c-h)<f?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: ${c}.`):Math.abs(c-n-h)>10*f?o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${c} 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 ${c} based on increment after a DIFFERENCE is too high`)):Math.abs(c-h)>f&&o.trace(`Data line ${d}: The difference between the first value ${h} and the first x value ${c} 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,u.x.push(c),u.y.push(b*l),c+=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?ce(e,m,t):ue(e,m,t),e.variables)for(let o in e.variables)e.variables[o].data=e.data?.[o]}function ce(e,m,t){let{logger:o}=t,l={x:[],y:[]};e.data=l;let i=m.split(/,? *,?[;\\r\\n]+ */);for(let n=1;n<i.length;n++){let f=i[n].trim().replace($,\"\").split(oe);if(f.length%2===0)for(let s=0;s<f.length;s=s+2)e.xFactor!==void 0&&e.yFactor!==void 0&&(l.x.push(Number(f[s])*e.xFactor),l.y.push(Number(f[s+1])*e.yFactor));else o?.warn(`Format error: ${f.toString()}`)}}function ue(e,m,t){let{logger:o}=t,l={},i=Object.keys(e.variables),n=i.length;for(let s of i)l[s]=[];e.data=l;let f=m.split(/,? *,?[;\\r\\n]+ */);for(let s=1;s<f.length;s++){let u=f[s].trim().replace($,\"\").split(oe);if(u.length%n===0)for(let c=0;c<u.length;c++)l[i[c%n]].push(Number(u[c]));else o?.warn(`Wrong number of columns: ${u.toString()}`)}}function B(e,m){e.isXYAdata=!0;let t={};e.data=t;let o=m.split(/\\r?\\n/),l=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 f=0;f<l.length;f++){let s=n[f];switch(l[f]){case\"x\":case\"y\":case\"w\":s=Number.parseFloat(s);break;case\"a\":s=s.replace(/^<(.*)>$/,\"$1\");break;case\"m\":break;default:continue}t[l[f]]||(t[l[f]]=[]),t[l[f]].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,l=m.length,i=m[0].data.x.length||0,n=new Array(l);for(let r=0;r<l;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 f=m[0].data.x[0],s=m[0].data.x.at(-1),{firstY:u,lastY:c}=pe(e);if(f>s)for(let r of n)r.reverse();u>c&&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(f,s),maxX:Math.max(f,s),minY:Math.min(u,c),maxY:Math.max(u,c),minZ:t,maxZ:o,noise:p}}function pe(e){let{spectra:m,ntuples:t,info:o}=e;if(t)for(let l of t){let{symbol:i,nucleus:n,units:f}=l;if(i.match(/[F|T]1/)&&f?.toUpperCase().match(\"HZ\")){let s=se(o[\".OBSERVEFREQUENCY\"]),{nucleus:u}=t.find(d=>d.symbol.match(/[F|T]2/));if([s,u,n].some(d=>!d))break;let c=ie(u),b=ie(n),{first:p,last:r}=l,a=b!==null&&c!==null?s*b/c: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,l,i,n,f,s,u,c,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++)l=_[T],i=_[T+1],n=ee[T],f=ee[T+1],s=l>y,u=i>y,c=n>y,b=f>y,s!==u&&s!==c&&(a=T+(y-l)/(i-l),d=v,g=T,A=v+(y-l)/(n-l),D.push(a*S+x,d*X+C,g*S+x,A*X+C)),b!==u&&b!==c&&(a=T+1,d=v+1-(y-f)/(i-f),g=T+1-(y-f)/(n-f),A=v+1,D.push(a*S+x,d*X+C,g*S+x,A*X+C)),u!==c&&(a=(T+1-(y-i)/(n-i))*S+x,d=(v+(y-i)/(n-i))*X+C,u!==s&&(g=T+1-(y-i)/(l-i),A=v,D.push(a,d,g*S+x,A*X+C)),c!==s&&(g=T,A=v+1-(y-n)/(l-n),D.push(a,d,g*S+x,A*X+C)),u!==b&&(g=T+1,A=v+(y-i)/(f-i),D.push(a,d,g*S+x,A*X+C)),c!==b&&(g=T+(y-n)/(f-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,l=0;for(let i of t.spectra){if(t.ntuples?.symbol?(!o&&i.observeFrequency&&(o=i.observeFrequency),!l&&i.shiftOffsetVal&&(l=i.shiftOffsetVal)):(o=i.observeFrequency,l=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(l&&i.xUnits.toLowerCase().includes(\"ppm\")&&i.firstX!==void 0&&i.lastX!==void 0){let n=i.firstX-l;if(i.firstX=i.firstX-n,i.lastX=i.lastX-n,i.data)for(let f=0;f<i.data.x.length;f++)i.data.x[f]-=n}if(t.ntuples?.nucleus&&t.ntuples.symbol)for(let n=0;n<t.ntuples.nucleus.length;n++){let f=t.ntuples.symbol[n],s=t.ntuples.nucleus[n];if(f.match(/^[F|T]/)&&!s){if(f.match(/[F|T]1/))if(t.tmp.$NUC2&&typeof t.tmp.$NUC2==\"string\")t.ntuples.nucleus[n]=t.tmp.$NUC2;else{let u=t.ntuples.symbol.indexOf(f.replace(/^([F|T]).*/,\"$12\"));u&&t.ntuples.nucleus[u]&&(t.ntuples.nucleus[n]=t.ntuples.nucleus[u])}f.match(/[F|T]2/)&&typeof t.tmp.$NUC1==\"string\"&&(t.ntuples.nucleus[n]=t.tmp.$NUC1)}f.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=\"\",f=t.ntuples.symbol.indexOf(i.pageSymbol);t.ntuples.units?.[f]&&(n=t.ntuples.units[f]);let{nucleus:s}=t.ntuples;if(!n.toLowerCase().match(/(ppm|seconds)/)&&s.length>1){if(f!==0){let p=\"Not sure about this ntuples format\";if(m){m.warn(p);continue}else throw new Error(p)}let{nucleus:u}=t.ntuples,c=W(u[0]),b=W(u[1]);if(!c||!b){let p=`Problem with determination of gyromagnetic ratio for ${u.join(\"-\")}`;if(m)m.error(p);else throw new Error(p)}else{let p=c/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 l=[],i=Object.keys(o.ntuples);for(let n of i){let f=o.ntuples[n];if(f)for(let s=0;s<f.length;s++)l[s]||(l[s]={}),l[s][n]=f[s]}o.ntuples=l}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 l=t.meta[o];if(typeof l==\"string\"){if(l.startsWith(\"{\")){if(!l.includes(\":\")&&l.endsWith(\"}\")){let i=l.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(l.startsWith(\"(\")){let i=l.split(/\\r?\\n/),n=/^\\((?<from>\\d+)\\.\\.(?<to>\\d+)\\).*$/;if(n.test(i[0])){let[f,s]=i[0].match(n)?.slice(1).map(Number)??[],u=i.slice(1).join(\" \").split(/[,; ]+/).filter(Boolean);for(let c=f;c<=s;c++)m.dynamicTyping&&typeof u[c-f]==\"string\"?t.meta[o+String(c)]=le(u[c-f]):t.meta[o+String(c)]=u[c-f]}}}}}function K(e,m,t){let o=-1,l=-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 f of t){let s=f.toLowerCase(),u=e.ntuples.symbol?.indexOf(f)||0;if(u===-1)throw new Error(`Symbol undefined: ${f}`);m.variables[s]={};for(let c in e.ntuples)e.ntuples[c]?.[u]&&(m.variables[s][c.replace(/^var/,\"\")]=e.ntuples[c]?.[u])}}o=e.ntuples.symbol?.indexOf(i)??-1,l=e.ntuples.symbol?.indexOf(n)??-1,o===-1&&(o=0),l===-1&&(l=0),e.ntuples.first&&(e.ntuples.first.length>o&&(m.firstX=e.ntuples.first[o]),e.ntuples.first.length>l&&(m.firstY=e.ntuples.first[l])),e.ntuples.last&&(e.ntuples.last.length>o&&(m.lastX=e.ntuples.last[o]),e.ntuples.last.length>l&&(m.lastY=e.ntuples.last[l])),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>l&&(m.yFactor=e.ntuples.factor[l])),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>l&&(e.ntuples.varname?.[l]?m.yUnits=`${e.ntuples.varname[l]} [${e.ntuples.units[l]}]`:m.yUnits=e.ntuples.units[l]))}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=[],l={entries:[],flatten:[]},i={children:[],spectra:[],ntuples:{},info:{},meta:{},tmp:{}},n=i,f=[],s={data:{}};t.logger?.trace({profiling:!0},\"Before split to LDRS\");let u=e.replaceAll(/[\\r\\n]+##/g,`\n##`).split(`\n##`);t.logger?.trace({profiling:!0},\"Split to LDRS\"),u[0]&&(u[0]=u[0].replace(/^[\\r\\n ]*##/,\"\"));for(let c of u){let b=c.indexOf(\"=\"),p=b>0?c.slice(0,Math.max(0,b)):c,r=b>0?p.match(t.noTrimRegExp)?c.slice(Math.max(0,b+1)):c.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),f.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=f.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,l,t),t.logger?.trace({profiling:!0},\"Total time\"),l.entries=i.children||[],l.flatten=o,t.logger){t.logger.debug(\"Finished jcamp conversion\");for(let c of l.flatten)t.logger.debug(`${c.dataType} - ${c.title}`)}return l}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 l=xe(e.info.ATOMLIST),i=Ae(e.info.BONDLIST),n=Ne(e.info.CHARGE,t),f=Se(e.info.XYRASTER,t),s=Ce(e.info.STEREOCENTER,t),u=ye(o,{atoms:l,bonds:i,charges:n,xyRasters:f,stereocenters:s},t);return{molecule:u,molfile:u.toMolfile()}}function ye(e,m,t){let{atoms:o,bonds:l,charges:i,xyRasters:n,stereocenters:f}=m,s={S:e.Molecule.cBondTypeSingle,D:e.Molecule.cBondTypeDouble,T:e.Molecule.cBondTypeTriple,Q:e.Molecule.cBondTypeQuadruple},u={},c=new e.Molecule(o.length,l.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\")),u[p.atomNumber]=c.addAtom(r),c.setAtomMapNo(u[p.atomNumber],p.atomNumber,!1)}for(let p of l){if(u[p.atomNumber1]===void 0){t?.error(`A bond goes from atomNumber ${p.atomNumber1} that does not exists`);continue}if(u[p.atomNumber2]===void 0){t?.error(`A bond goes to atomNumber ${p.atomNumber2} that does not exists`);continue}let r=c.addBond(u[p.atomNumber1],u[p.atomNumber2]);c.setBondType(r,s[p.bondType])}for(let p of i){if(u[p.atomNumber]===void 0){t?.error(`A charge goes to atomNumber ${p.atomNumber} that does not exists`);continue}c.setAtomCharge(u[p.atomNumber],p.value)}let b=n.length===0||f.length>0;for(let p of n){if(u[p.atomNumber]===void 0){t?.error(`A XYRASTER goes to atomNumber ${p.atomNumber} that does not exists`);continue}c.setAtomX(u[p.atomNumber],p.x),c.setAtomY(u[p.atomNumber],p.y),c.setAtomZ(u[p.atomNumber],p.z)}c.ensureHelperArrays(e.Molecule.cHelperParities);for(let p of f){let{atomNumber:r,type:a}=p,d=u[r];if(d===void 0){t?.error(`A stereocenter goes to atomNumber ${r} that does not exists`);continue}if(!c.isAtomStereoCenter(d)){t?.warn(`Want to set chirality of atom number ${r} but it is not a stereocenter`);continue}if(c.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;c.setAtomParity(u[r],x,!1)}return c.ensureHelperArrays(e.Molecule.cHelperParities),b&&c.inventCoordinates(),c}function xe(e){let m=P(e),t=[];for(let o of m){let[l,i,n]=o.trim().split(/\\s+/);t.push({atomNumber:Number(l),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[l,i,n]=o.trim().split(/\\s+/);t.push({atomNumber1:Number(l),atomNumber2:Number(i),bondType:n})}return t}function Ne(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n,f]=l.trim().split(/\\s+/);f!==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 l of t){let[i,n,f,s]=l.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(f),z:s!==void 0?Number(s):0})}return o}function Ce(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n]=l.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={}]\n * @param [options.id=Math.random()]\n * @param [options.label=options.id] - human redeable label\n * @param [options.spectrumCallback] - a callback to apply on variables when creating spectrum\n * @returns - New class element with the given 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","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';\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/AutoPeakPickingOptions.js';\nexport * from './types/PeakPickingOptions.js';\nexport * from './types/NormalizedSpectrumOptions.js';\nexport * from './types/PlotObject.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","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/:    1252, /* ANSI */\n\t/*::[*/1/*::]*/:   65001, /* DEFAULT */\n\t/*::[*/2/*::]*/:   65001, /* SYMBOL */\n\t/*::[*/77/*::]*/:  10000, /* MAC */\n\t/*::[*/128/*::]*/:   932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/:   949, /* HANGUL */\n\t/*::[*/130/*::]*/:  1361, /* JOHAB */\n\t/*::[*/134/*::]*/:   936, /* GB2312 */\n\t/*::[*/136/*::]*/:   950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/:  1253, /* GREEK */\n\t/*::[*/162/*::]*/:  1254, /* TURKISH */\n\t/*::[*/163/*::]*/:  1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/:  1255, /* HEBREW */\n\t/*::[*/178/*::]*/:  1256, /* ARABIC */\n\t/*::[*/186/*::]*/:  1257, /* BALTIC */\n\t/*::[*/204/*::]*/:  1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/:   874, /* THAI */\n\t/*::[*/238/*::]*/:  1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/:  1252, /* OEM */\n\t/*::[*/69/*::]*/:   6969  /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array<number>*/ { var o/*:Array<number>*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  for (var i = 0; i < input.length; ) {\n    c1 = input.charCodeAt(i++);\n    e1 = c1 >> 2;\n    c2 = input.charCodeAt(i++);\n    e2 = (c1 & 3) << 4 | c2 >> 4;\n    c3 = input.charCodeAt(i++);\n    e3 = (c2 & 15) << 2 | c3 >> 6;\n    e4 = c3 & 63;\n    if (isNaN(c2)) {\n      e3 = e4 = 64;\n    } else if (isNaN(c3)) {\n      e4 = 64;\n    }\n    o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n  }\n  return o;\n}\nfunction Base64_decode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n  for (var i = 0; i < input.length; ) {\n    e1 = Base64_map.indexOf(input.charAt(i++));\n    e2 = Base64_map.indexOf(input.charAt(i++));\n    c1 = e1 << 2 | e2 >> 4;\n    o += String.fromCharCode(c1);\n    e3 = Base64_map.indexOf(input.charAt(i++));\n    c2 = (e2 & 15) << 4 | e3 >> 2;\n    if (e3 !== 64) {\n      o += String.fromCharCode(c2);\n    }\n    e4 = Base64_map.indexOf(input.charAt(i++));\n    c3 = (e3 & 3) << 6 | e4;\n    if (e4 !== 64) {\n      o += String.fromCharCode(c3);\n    }\n  }\n  return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array<string>*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array<number>*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array<number>*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array<string>};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array<Array<string> >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array<Array<string> >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]=  'General';\n\tt[1]=  '0';\n\tt[2]=  '0.00';\n\tt[3]=  '#,##0';\n\tt[4]=  '#,##0.00';\n\tt[9]=  '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0:  'General',\n\t1:  '0',\n\t2:  '0.00',\n\t3:  '#,##0',\n\t4:  '#,##0.00',\n\t9:  '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5:  37, 6:  38, 7:  39, 8:  40,         //  5 -> 37 ...  8 -> 40\n\n\t23:  0, 24:  0, 25:  0, 26:  0,         // 23 ->  0 ... 26 ->  0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59:  1, 60:  2, 61:  3, 62:  4,         // 59 ->  1 ... 62 ->  4\n\n\t67:  9, 68: 10,                         // 67 ->  9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14,                 // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17,         // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22,                 // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47,                 // 79 -> 45 ... 81 -> 47\n\t82: 0                                   // 82 ->  0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t//  5 -- Currency,   0 decimal, black negative\n\t5:  '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t//  6 -- Currency,   0 decimal, red   negative\n\t6:  '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t//  7 -- Currency,   2 decimal, black negative\n\t7:  '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t//  8 -- Currency,   2 decimal, red   negative\n\t8:  '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $  Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $  Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array<number>*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n  /* TODO: properly adjust y/m/d and  */\n  o[0] -= 581;\n  var dow = date.getDay();\n  if(date < 60) dow = (dow + 6) % 7;\n  return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_flt(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = pad0r(val, 0);\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0?]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\tri = dec(val, r[1].length);\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(ri,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,##0.00\": return write_num_flt(type, \"#,##0.00\", val);\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(pad0r(aval,0)); return x !== \"0\" ? sign + x : \"\";\n\t\tcase \"###,###.00\": return write_num_flt(type, \"###,##0.00\",val).replace(/^0\\./,\".\");\n\t\tcase \"#,###.00\": return write_num_flt(type, \"#,##0.00\",val).replace(/^0\\./,\".\");\n\t\tdefault:\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num_cm2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\nfunction write_num_pct2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\nfunction write_num_exp2(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp2(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(!o.match(/[Ee]/)) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nfunction write_num_int(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_int(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = \"\" + val;\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify(\"\"+val).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(0,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(\"\"+aval); return x !== \"0\" ? sign + x : \"\";\n\t\tdefault:\n\t\t\tif(fmt.match(/\\.[0#?]*$/)) return write_num_int(type, fmt.slice(0,fmt.lastIndexOf(\".\")), val) + hashq(fmt.slice(fmt.lastIndexOf(\".\")));\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\treturn (val|0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);\n}\nfunction SSF_split_fmt(fmt/*:string*/)/*:Array<string>*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >=  60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t}\n\t\telse if(decpt !== out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tjj = ostr.indexOf(\".\")-1;\n\t\t\tfor(i=decpt; i>= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t\tjj = ostr.indexOf(\".\")+1;\n\t\t\tfor(i=decpt; i<out.length; ++i) {\n\t\t\t\tif(out[i] == null || ('n?('.indexOf(out[i].t) === -1 && i !== decpt)) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j<out[i].v.length; ++j) {\n\t\t\t\t\tif(jj<ostr.length) vv += ostr.charAt(jj++);\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t}\n\t}\n\tfor(i=0; i<out.length; ++i) if(out[i] != null && 'n?'.indexOf(out[i].t)>-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\":  if(v == thresh) return true; break;\n\t\tcase \">\":  if(v >  thresh) return true; break;\n\t\tcase \"<\":  if(v <  thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array<string>*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array<number>;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array<number>;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array<number>*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4];\nvar T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array<number>*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n   high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n   add 1980 to stored year\n   stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array<number>*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array<RawBytes>*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array<RawBytes>*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array<RawBytes>*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array<number>*/ = [], q/*:Array<number>*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n    DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array<RawBytes>*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array<RawBytes>*/, start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/, chkd/*:?Array<boolean>*/)/*:SectorEntry*/ {\n\tvar buf/*:Array<number>*/ = [], buf_chain/*:Array<any>*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array<RawBytes>*/, dir_start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array<boolean>*/ = [], buf/*:Array<number>*/ = [], buf_chain/*:Array<RawBytes>*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array<number>*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname:  name,\n\t\t\ttype:  blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL:     blob.read_shift(4, 'i'),\n\t\t\tR:     blob.read_shift(4, 'i'),\n\t\t\tC:     blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name =  filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array<number>*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L =  [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i<T-1; ++i) o.write_shift(-4, i+1);\n\t\tif(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }\n\t};\n\tT = i = 0;\n\tfor(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);\n\tfor(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);\n\tchainit(L[3]);\n\tchainit(L[4]);\n\tvar j/*:number*/ = 0, flen/*:number*/ = 0;\n\tvar file/*:CFBEntry*/ = cfb.FileIndex[0];\n\tfor(; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(flen < 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x01FF) >> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array<string>*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array<string>*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/*  LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [   3,   4,   5,   6,   7,   8,   9,  10,  11,  13 , 15,  17,  19,  23,  27,  31,  35,  43,  51,  59,  67,  83,  99, 115, 131, 163, 195, 227, 258 ];\n\n/*  DST_ID = [  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 ]; */\nvar DST_LN = [  1,  2,  3,  4,  5,  7,  9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<<n)-1);\n\tvar v = buf[h] >>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count  = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<<cleni)] = (cleni&15) | (i<<4);\n\t\t}\n\t}\n\treturn maxlen;\n}\n\n/* Fixed Huffman */\nvar fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512);\nvar fix_dmap = use_typed_arrays ? new Uint16Array(32)  : zero_fill_array(32);\nif(!use_typed_arrays) {\n\tfor(var i = 0; i < 512; ++i) fix_lmap[i] = 0;\n\tfor(i = 0; i < 32; ++i) fix_dmap[i] = 0;\n}\n(function() {\n\tvar dlens/*:Array<number>*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array<number>*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token  */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128)   : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count =  use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<<cleni)] = (cleni&7) | (i<<3);\n\t\t}\n\t}\n\n\t/* read literal and dist codes at once */\n\tvar hcodes/*:Array<number>*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4,  (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4,  (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n<table class=3DMsoTableGrid border=3D1 cellspacing=3D0 cellpadding=3D0 width=\n=\"70%\"\n```\n*/\nfunction write_quoted_printable(text/*:string*/)/*:string*/ {\n\tvar encoded = text.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF=]/g, function(c) {\n\t\tvar w = c.charCodeAt(0).toString(16).toUpperCase();\n\t\treturn \"=\" + (w.length == 1 ? \"0\" + w : w);\n\t});\n\n\tencoded = encoded.replace(/ $/mg, \"=20\").replace(/\\t$/mg, \"=09\");\n\n\tif(encoded.charAt(0) == \"\\n\") encoded = \"=0D\" + encoded.slice(1);\n\tencoded = encoded.replace(/\\r(?!\\n)/mg, \"=0D\").replace(/\\n\\n/mg, \"\\n=0A\").replace(/([^\\r\\n])\\n/mg, \"$1=0A\");\n\n\tvar o/*:Array<string>*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array<string>*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array<string>*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array<any>*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array<number>*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array<string>*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i<k.length; ++i) {\n\t\tvar n = k[i].replace(/^Root Entry[\\/]/,\"\").toLowerCase();\n\t\tif(f == n || g == n) return zip.files ? zip.files[k[i]] : zip.FileIndex[i];\n\t}\n\treturn null;\n}\n\nfunction getzipfile(zip, file/*:string*/) {\n\tvar o = safegetzipfile(zip, file);\n\tif(o == null) throw new Error(\"Cannot find file \" + file + \" in zip\");\n\treturn o;\n}\n\nfunction getzipdata(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdata(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipdata(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipstr(zip, file/*:string*/, safe/*:?boolean*/)/*:?string*/ {\n\tif(!safe) return getdatastr(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipstr(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipbin(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdatabin(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipbin(zip, file); } catch(e) { return null; }\n}\n\nfunction zipentries(zip) {\n\tvar k = zip.FullPaths || keys(zip.files), o = [];\n\tfor(var i = 0; i < k.length; ++i) if(k[i].slice(-1) != '/') o.push(k[i].replace(/^Root Entry[\\/]/, \"\"));\n\treturn o.sort();\n}\n\nfunction zip_add_file(zip, path, content) {\n\tif(zip.FullPaths) {\n\t\tif(typeof content == \"string\") {\n\t\t\tvar res;\n\t\t\tif(has_buf) res = Buffer_from(content);\n\t\t\t/* TODO: investigate performance in Edge 13 */\n\t\t\t//else if(typeof TextEncoder !== \"undefined\") res = new TextEncoder().encode(content);\n\t\t\telse res = utf8decode(content);\n\t\t\treturn CFB.utils.cfb_add(zip, path, res);\n\t\t}\n\t\tCFB.utils.cfb_add(zip, path, content);\n\t}\n\telse zip.file(path, content);\n}\n\nfunction zip_new() { return CFB.utils.cfb_new(); }\n\nfunction zip_read(d, o) {\n\tswitch(o.type) {\n\t\tcase \"base64\": return CFB.read(d, { type: \"base64\" });\n\t\tcase \"binary\": return CFB.read(d, { type: \"binary\" });\n\t\tcase \"buffer\": case \"array\": return CFB.read(d, { type: \"buffer\" });\n\t}\n\tthrow new Error(\"Unrecognized type \" + o.type);\n}\n\nfunction resolve_path(path/*:string*/, base/*:string*/)/*:string*/ {\n\tif(path.charAt(0) == \"/\") return path.slice(1);\n\tvar result = base.split('/');\n\tif(base.slice(-1) != \"/\") result.pop(); // folder path\n\tvar target = path.split('/');\n\twhile (target.length !== 0) {\n\t\tvar step = target.shift();\n\t\tif (step === '..') result.pop();\n\t\telse if (step !== '.') result.push(step);\n\t}\n\treturn result.join('/');\n}\nvar XML_HEADER = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r\\n';\nvar attregexg=/([^\"\\s?>\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'&quot;': '\"',\n\t'&apos;': \"'\",\n\t'&gt;': '>',\n\t'&lt;': '<',\n\t'&amp;': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"<![CDATA[\");\n\t\tif(i == -1) return s.replace(encregex, function($$, $1) { return encodings[$$]||String.fromCharCode(parseInt($1,$$.indexOf(\"x\")>-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"<br/>\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\&#10;\"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches <foo>...</foo> extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)</(?:\\\\w+:)?'+f+'>',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt',   '>'], ['lt',   '<'], ['amp',  '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+</g,\"<\")\n\t\t\t\t// Replace remaining new lines and spaces with space\n\t\t\t\t.replace(/[\\t\\n\\r ]+/g, \" \")\n\t\t\t\t// Replace <br> tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)</(?:vt:)?\" + bt + \">\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)</;\nfunction parseVector(data/*:string*/, opts)/*:Array<{v:string,t:string}>*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array<string>*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array<any>*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f + '>'; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f : \"/\") + '>';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/&quot;/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?><!\\/:]*:|)([^\\s?<>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o':    'urn:schemas-microsoft-com:office:office',\n\t'x':    'urn:schemas-microsoft-com:office:excel',\n\t'ss':   'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt':   'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv':   'http://macVmlSchemaUri',\n\t'v':    'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array<Array<RawBytes> >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i<bufs[0].length;++i) if(bufs[0][i]) for(var j=0,L=bufs[0][i].length;j<L;j+=w) x.push.apply(x, bufs[0][i].slice(j,j+w)); return x; };\nvar __toBuffer = has_buf ? function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(\"\").replace(chr0,''); };\nvar __utf16le = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; } : ___utf16le;\n\nvar ___hexlify = function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<s+l; ++i) ss.push((\"0\" + b[i].toString(16)).slice(-2)); return ss.join(\"\"); };\nvar __hexlify = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { return Buffer.isBuffer(b)/*:: && b instanceof Buffer*/ ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); } : ___hexlify;\n\nvar ___utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { var ss=[]; for(var i=s; i<e; i++) ss.push(String.fromCharCode(__readUInt8(b,i))); return ss.join(\"\"); };\nvar __utf8 = has_buf ? function utf8_b(b/*:RawBytes|CFBlob*/, s/*:number*/, e/*:number*/) { return (Buffer.isBuffer(b)/*:: && (b instanceof Buffer)*/) ? b.toString('utf8',s,e) : ___utf8(b,s,e); } : ___utf8;\n\nvar ___lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE  = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase  1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase  2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase  3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase  4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase  8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array<Block>*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array<string>*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range.  If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0),  q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY    = 0x0000;\n//var VT_NULL     = 0x0001;\nvar VT_I2       = 0x0002;\nvar VT_I4       = 0x0003;\n//var VT_R4       = 0x0004;\n//var VT_R8       = 0x0005;\n//var VT_CY       = 0x0006;\n//var VT_DATE     = 0x0007;\n//var VT_BSTR     = 0x0008;\n//var VT_ERROR    = 0x000A;\nvar VT_BOOL     = 0x000B;\nvar VT_VARIANT  = 0x000C;\n//var VT_DECIMAL  = 0x000E;\n//var VT_I1       = 0x0010;\n//var VT_UI1      = 0x0011;\n//var VT_UI2      = 0x0012;\nvar VT_UI4      = 0x0013;\n//var VT_I8       = 0x0014;\n//var VT_UI8      = 0x0015;\n//var VT_INT      = 0x0016;\n//var VT_UINT     = 0x0017;\nvar VT_LPSTR    = 0x001E;\n//var VT_LPWSTR   = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB     = 0x0041;\n//var VT_STREAM   = 0x0042;\n//var VT_STORAGE  = 0x0043;\n//var VT_STREAMED_Object  = 0x0044;\n//var VT_STORED_Object    = 0x0045;\n//var VT_BLOB_Object      = 0x0046;\nvar VT_CF       = 0x0047;\n//var VT_CLSID    = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR   = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR   = 0x101E;\n//var VT_ARRAY    = 0x2000;\n\nvar VT_STRING   = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR     = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM   = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\"  // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array<number>*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\":        0x00,\n\t\"#DIV/0!\":       0x07,\n\t\"#VALUE!\":       0x0F,\n\t\"#REF!\":         0x17,\n\t\"#NAME?\":        0x1D,\n\t\"#NUM!\":         0x24,\n\t\"#N/A\":          0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\":         0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary <SpreadsheetML> */\n/* 14.2 Part Summary <DrawingML> */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Types': ct.xmlns = y['xmlns' + (y[0].match(/<(\\w+):/)||[\"\",\"\"])[1] ]; break;\n\t\t\tcase '<Default': ctext[y.Extension] = y.ContentType; break;\n\t\t\tcase '<Override':\n\t\t\t\tif(ct[ct2type[y.ContentType]] !== undefined) ct[ct2type[y.ContentType]].push(y.PartName);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\tif(ct.xmlns !== XMLNS.CT) throw new Error(\"Unknown Namespace: \" + ct.xmlns);\n\tct.calcchain = ct.calcchains.length > 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array<string>}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array<string>*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = ('</Types>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '<Relationship') {\n\t\t\tvar rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; if(y.TargetMode) rel.TargetMode = y.TargetMode;\n\t\t\tvar canonictarget = y.TargetMode === 'External' ? y.Target : resolve_path(y.Target, currentFilePath);\n\t\t\trels[canonictarget] = rel;\n\t\t\thash[y.Id] = rel;\n\t\t}\n\t});\n\trels[\"!id\"] = hash;\n\treturn rels;\n}\n\n\n/* TODO */\nfunction write_rels(rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Relationships', null, {\n\t\t//'xmlns:ns0': XMLNS.RELS,\n\t\t'xmlns': XMLNS.RELS\n\t})];\n\tkeys(rels['!id']).forEach(function(rid) {\n\t\to[o.length] = (writextag('Relationship', null, rels['!id'][rid]));\n\t});\n\tif(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 <manifest:manifest>\n\t\tcase 'file-entry': // 4.3 <manifest:file-entry>\n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 <manifest:encryption-data>\n\t\tcase 'algorithm': // 4.5 <manifest:algorithm>\n\t\tcase 'start-key-generation': // 4.6 <manifest:start-key-generation>\n\t\tcase 'key-derivation': // 4.7 <manifest:key-derivation>\n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array<Array<string> >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\" manifest:version=\"1.2\">\\n');\n\to.push('  <manifest:file-entry manifest:full-path=\"/\" manifest:version=\"1.2\" manifest:media-type=\"application/vnd.oasis.opendocument.spreadsheet\"/>\\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push('  <manifest:file-entry manifest:full-path=\"' + manifest[i][0] + '\" manifest:media-type=\"' + manifest[i][1] + '\"/>\\n');\n\to.push('</manifest:manifest>');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + file + '\">\\n',\n\t\t'    <rdf:type rdf:resource=\"http://docs.oasis-open.org/ns/office/1.2/meta/' + (tag || \"odf\") + '#' + res + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + base + '\">\\n',\n\t\t'    <ns0:hasPart xmlns:ns0=\"http://docs.oasis-open.org/ns/office/1.2/meta/pkg#\" rdf:resource=\"' + file + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('</rdf:RDF>');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn '<office:document-meta xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" office:version=\"1.2\"><office:meta><meta:generator>Sheet' + 'JS ' + XLSX.version + '</meta:generator></office:meta></office:document-meta>';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array<Array<string> >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array<RegExp>*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = ('</cp:coreProperties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array<Array<string> >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\",  \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array<Array<any>>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', '<vt:lpstr>Worksheets</vt:lpstr>')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"<vt:lpstr>\" + escapexml(s) + \"</vt:lpstr>\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = ('</Properties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Properties': break;\n\t\t\tcase '<property': name = unescapexml(y.name); break;\n\t\t\tcase '</property>': name = null; break;\n\t\t\tdefault: if (x.indexOf('<vt:') === 0) {\n\t\t\t\tvar toks = x.split('>');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"</\") {/* empty */\n\t\t\t} else if(opts.WTF) throw new Error(x);\n\t\t}\n\t}\n\treturn p;\n}\n\nfunction write_cust_props(cp/*::, opts*/)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Properties', null, {\n\t\t'xmlns': XMLNS.CUST_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t})];\n\tif(!cp) return o.join(\"\");\n\tvar pid = 1;\n\tkeys(cp).forEach(function custprop(k) { ++pid;\n\t\to[o.length] = (writextag('property', write_vt(cp[k], true), {\n\t\t\t'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',\n\t\t\t'pid': pid,\n\t\t\t'name': escapexml(k)\n\t\t}));\n\t});\n\tif(o.length>2){ o[o.length] = '</Properties>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array<string>*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array<string>*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '</' + T + '>';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j<n; ++j) o.write_shift(1, 0); return o; }\n\nfunction parslurp(blob, length, cb) {\n\tvar arr = [], target = blob.l + length;\n\twhile(blob.l < target) arr.push(cb(blob, target - blob.l));\n\tif(target !== blob.l) throw new Error(\"Slurp error\");\n\treturn arr;\n}\n\nfunction parsebool(blob, length/*:number*/) { return blob.read_shift(length) === 0x1; }\nfunction writebool(v/*:any*/, o) { if(!o) o=new_buf(2); o.write_shift(2, +!!v); return o; }\n\nfunction parseuint16(blob/*::, length:?number, opts:?any*/) { return blob.read_shift(2, 'u'); }\nfunction writeuint16(v/*:number*/, o) { if(!o) o=new_buf(2); o.write_shift(2, v); return o; }\nfunction parseuint16a(blob, length/*:: :?number, opts:?any*/) { return parslurp(blob,length,parseuint16);}\n\n/* --- 2.5 Structures --- */\n\n/* [MS-XLS] 2.5.10 Bes (boolean or error) */\nfunction parse_Bes(blob/*::, length*/) {\n\tvar v = blob.read_shift(1), t = blob.read_shift(1);\n\treturn t === 0x01 ? v : v === 0x01;\n}\nfunction write_Bes(v, t/*:string*/, o) {\n\tif(!o) o = new_buf(2);\n\to.write_shift(1, ((t == 'e') ? +v : +!!v));\n\to.write_shift(1, ((t == 'e') ? 1 : 0));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.240 ShortXLUnicodeString */\nfunction parse_ShortXLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff >= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"<t>\" + z.t + \"</t>\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip,      /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip,      /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip,      /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip,      /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf,        /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip,      /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip,      /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip,      /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip,      /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip,      /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts,       /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip,      /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip,      /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip,      /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip,      /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip,      /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip,      /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip,      /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array<number>*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array<Range>*/ {\n\tvar merges/*:Array<Range>*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array<Range>*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present  SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127,           /*::[*/0x08/*::]*/:   865,\n\t/*::[*/0x09/*::]*/:   437,           /*::[*/0x0A/*::]*/:   850,\n\t/*::[*/0x0B/*::]*/:   437,           /*::[*/0x0D/*::]*/:   437,\n\t/*::[*/0x0E/*::]*/:   850,           /*::[*/0x0F/*::]*/:   437,\n\t/*::[*/0x10/*::]*/:   850,           /*::[*/0x11/*::]*/:   437,\n\t/*::[*/0x12/*::]*/:   850,           /*::[*/0x13/*::]*/:   932,\n\t/*::[*/0x14/*::]*/:   850,           /*::[*/0x15/*::]*/:   437,\n\t/*::[*/0x16/*::]*/:   850,           /*::[*/0x17/*::]*/:   865,\n\t/*::[*/0x18/*::]*/:   437,           /*::[*/0x19/*::]*/:   437,\n\t/*::[*/0x1A/*::]*/:   850,           /*::[*/0x1B/*::]*/:   437,\n\t/*::[*/0x1C/*::]*/:   863,           /*::[*/0x1D/*::]*/:   850,\n\t/*::[*/0x1F/*::]*/:   852,           /*::[*/0x22/*::]*/:   852,\n\t/*::[*/0x23/*::]*/:   852,           /*::[*/0x24/*::]*/:   860,\n\t/*::[*/0x25/*::]*/:   850,           /*::[*/0x26/*::]*/:   866,\n\t/*::[*/0x37/*::]*/:   850,           /*::[*/0x40/*::]*/:   852,\n\t/*::[*/0x4D/*::]*/:   936,           /*::[*/0x4E/*::]*/:   949,\n\t/*::[*/0x4F/*::]*/:   950,           /*::[*/0x50/*::]*/:   874,\n\t/*::[*/0x57/*::]*/:  1252,           /*::[*/0x58/*::]*/:  1252,\n\t/*::[*/0x59/*::]*/:  1252,           /*::[*/0x6C/*::]*/:   863,\n\t/*::[*/0x86/*::]*/:   737,           /*::[*/0x87/*::]*/:   852,\n\t/*::[*/0x88/*::]*/:   857,           /*::[*/0xCC/*::]*/:  1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array<DBFField>*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write '  /  /  ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \"  .  \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array<string>*/ = [];\n\tvar colwidths/*:Array<number>*/ = [];\n\tvar coldecimals/*:Array<number>*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array<any>*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j<headers.length; ++j) {\n\t\t\tif(headers[j] == null) continue;\n\t\t\tswitch(coltypes[j]) {\n\t\t\t\tcase 'L': rout.write_shift(1, data[i][j] == null ? 0x3F : data[i][j] ? 0x54 : 0x46); break;\n\t\t\t\tcase 'B': rout.write_shift(8, data[i][j]||0, 'f'); break;\n\t\t\t\tcase 'N':\n\t\t\t\t\tvar _n = \"0\";\n\t\t\t\t\tif(typeof data[i][j] == \"number\") _n = data[i][j].toFixed(coldecimals[j]||0);\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"sbcs\");\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_s.length; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê',         HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î',         HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û',         HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê',         He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î',         Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û',         Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ',  z:'œ',  a:'Æ',  j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169,  c:170,  R:174,  \"B \":180,\n\t\t/*::[*/0/*::]*/:176,    /*::[*/1/*::]*/:177,  /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179,    /*::[*/5/*::]*/:181,  /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183,    Q:185,  k:186,  b:208,  i:216,  l:222,  s:240,  y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array<string>*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array<RowInfo>*/ = [], colinfo/*:Array<ColInfo>*/ = [], cw/*:Array<string>*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'A': break; // TODO: comment\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; C_seen_X = true; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; if(!C_seen_X) C = 0;\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'K':\n\t\t\t\t\tval = record[rj].slice(1);\n\t\t\t\t\tif(val.charAt(0) === '\"') val = val.slice(1,val.length - 1);\n\t\t\t\t\telse if(val === 'TRUE') val = true;\n\t\t\t\t\telse if(val === 'FALSE') val = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(val))) {\n\t\t\t\t\t\tval = fuzzynum(val);\n\t\t\t\t\t\tif(next_cell_format !== null && fmt_is_date(next_cell_format)) val = numdate(val);\n\t\t\t\t\t} else if(!isNaN(fuzzydate(val).getDate())) {\n\t\t\t\t\t\tval = parseDate(val);\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof $cptable !== 'undefined' && typeof val == \"string\" && ((opts||{}).type != \"string\") && (opts||{}).codepage) val = $cptable.utils.decode(opts.codepage, val);\n\t\t\t\t\tC_seen_K = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'E':\n\t\t\t\t\tC_seen_E = true;\n\t\t\t\t\tvar formula = rc_to_a1(record[rj].slice(1), {r:R,c:C});\n\t\t\t\t\tarr[R][C] = [arr[R][C], formula];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S':\n\t\t\t\t\tC_seen_S = true;\n\t\t\t\t\tarr[R][C] = [arr[R][C], \"S5S\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'G': break; // unknown\n\t\t\t\tcase 'R': _R = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tcase 'C': _C = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(C_seen_K) {\n\t\t\t\tif(arr[R][C] && arr[R][C].length == 2) arr[R][C][0] = val;\n\t\t\t\telse arr[R][C] = val;\n\t\t\t\tnext_cell_format = null;\n\t\t\t}\n\t\t\tif(C_seen_S) {\n\t\t\t\tif(C_seen_E) throw new Error(\"SYLK shared formula cannot have own formula\");\n\t\t\t\tvar shrbase = _R > -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; ++F_seen; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; /*C = 0;*/\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'M': Mval = parseInt(record[rj].slice(1)) / 20; break;\n\t\t\t\tcase 'F': break; /* ??? */\n\t\t\t\tcase 'G': break; /* hide grid */\n\t\t\t\tcase 'P':\n\t\t\t\t\tnext_cell_format = formats[parseInt(record[rj].slice(1))];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S': break; /* cell style */\n\t\t\t\tcase 'D': break; /* column */\n\t\t\t\tcase 'N': break; /* font */\n\t\t\t\tcase 'W':\n\t\t\t\t\tcw = record[rj].slice(1).split(\" \");\n\t\t\t\t\tfor(j = parseInt(cw[0], 10); j <= parseInt(cw[1], 10); ++j) {\n\t\t\t\t\t\tMval = parseInt(cw[2], 10);\n\t\t\t\t\t\tcolinfo[j-1] = Mval === 0 ? {hidden:true}: {wch:Mval}; process_col(colinfo[j-1]);\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C': /* default column format */\n\t\t\t\t\tC = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!colinfo[C]) colinfo[C] = {};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'R': /* row properties */\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!rowinfo[R]) rowinfo[R] = {};\n\t\t\t\t\tif(Mval > 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array<string>*/, rows/*:Array<RowInfo>*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array<string>*/ = [\"ID;PWXL;N;E\"], o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array<string>*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array<string>*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array<string>*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array<string>*/ = [], oo/*:Array<string>*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage)  str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array<string>*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\"          \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t  \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t  \"\",  \"+\",  \"-\",  \"*\",  \"/\",  \"^\",  \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\",  \"<\",  \">\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\"  // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<condense': break;\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<extend': break;\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<shadow':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<shadow>':\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\t\t\tcase '</shadow>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\tfont.cp = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty TODO */\n\t\t\tcase '<outline':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<outline>':\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\t\t\tcase '</outline>': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '<rFont': font.name = y.val; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': font.sz = y.val; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<strike>':\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\t\t\tcase '</strike>': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tif(!y.val) break;\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase 'double': font.uval = \"double\"; break;\n\t\t\t\t\tcase 'singleAccounting': font.uval = \"single-accounting\"; break;\n\t\t\t\t\tcase 'doubleAccounting': font.uval = \"double-accounting\"; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '<u>':\n\t\t\tcase '<u/>': font.u = 1; break;\n\t\t\tcase '</u>': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '<b':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<b>':\n\t\t\tcase '<b/>': font.b = 1; break;\n\t\t\tcase '</b>': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '<i':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<i>':\n\t\t\tcase '<i/>': font.i = 1; break;\n\t\t\tcase '</i>': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '<color':\n\t\t\t\tif(y.rgb) font.color = y.rgb.slice(2,8);\n\t\t\t\tbreak;\n\t\t\tcase '<color>': case '<color/>': case '</color>': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '<family': font.family = y.val; break;\n\t\t\tcase '<family>': case '<family/>': case '</family>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '<vertAlign': font.valign = y.val; break;\n\t\t\tcase '<vertAlign>': case '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '<scheme': break;\n\t\t\tcase '<scheme>': case '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of <r> tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array<string>*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('<span style=\"' + style.join(\"\") + '\">');\n\n\t\tif(font.b) { intro.push(\"<b>\"); outro.push(\"</b>\"); }\n\t\tif(font.i) { intro.push(\"<i>\"); outro.push(\"</i>\"); }\n\t\tif(font.strike) { intro.push(\"<s>\"); outro.push(\"</s>\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"</\" + align + \">\"); }\n\n\t\toutro.push(\"</span>\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array<string>, string, Array<string>]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'<br/>') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"<si>\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"<t\";\n\t\t\tif(!s.t) s.t = \"\";\n\t\t\tif(s.t.match(straywsregex)) sitag += ' xml:space=\"preserve\"';\n\t\t\tsitag += \">\" + escapexml(s.t) + \"</t>\";\n\t\t}\n\t\tsitag += \"</si>\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = ('</sst>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array<number>*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array<number>*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array<string>*/ {\n\tvar o/*:Array<string>*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5  EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6  EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<encryption': case '</encryption>': break;\n\t\t\tcase '<keyData': KeyData.forEach(function(k) { o[k] = y[k]; }); break;\n\t\t\tcase '<dataIntegrity': o.encryptedHmacKey = y.encryptedHmacKey; o.encryptedHmacValue = y.encryptedHmacValue; break;\n\t\t\tcase '<keyEncryptors>': case '<keyEncryptors': o.encs = []; break;\n\t\t\tcase '</keyEncryptors>': break;\n\n\t\t\tcase '<keyEncryptor': o.uri = y.uri; break;\n\t\t\tcase '</keyEncryptor>': break;\n\t\t\tcase '<encryptedKey': o.encs.push(y); break;\n\t\t\tdefault: throw y[0];\n\t\t}\n\t});\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.5.1 RC4 CryptoAPI Encryption Header */\nfunction parse_RC4CryptoHeader(blob, length/*:number*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); length -= 4;\n\tif(vers.Minor != 2) throw new Error('unrecognized minor version code: ' + vers.Minor);\n\tif(vers.Major > 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array':  return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6);   rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2);   rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6);   rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4);   rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6);   rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) if(Math.abs(collw - cycle_width(collw)) <= delta) { delta = Math.abs(collw - cycle_width(collw)); _MDW = MDW; }\n\tMDW = _MDW;\n}\n/* XLML specifies width in terms of pixels */\n/*function find_mdw_wpx(wpx) {\n\tvar delta = Infinity, guess = 0, _MDW = MIN_MDW;\n\tfor(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) {\n\t\tguess = char2width_(px2char_(wpx))*256;\n\t\tguess = (guess) % 1;\n\t\tif(guess > 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<borders': case '<borders>': case '</borders>': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '<border': case '<border>': case '<border/>':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '</border>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<left/>': break;\n\t\t\tcase '<left': case '<left>': break;\n\t\t\tcase '</left>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<right/>': break;\n\t\t\tcase '<right': case '<right>': break;\n\t\t\tcase '</right>': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '<top/>': break;\n\t\t\tcase '<top': case '<top>': break;\n\t\t\tcase '</top>': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '<bottom/>': break;\n\t\t\tcase '<bottom': case '<bottom>': break;\n\t\t\tcase '</bottom>': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '<diagonal': case '<diagonal>': case '<diagonal/>': break;\n\t\t\tcase '</diagonal>': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '<horizontal': case '<horizontal>': case '<horizontal/>': break;\n\t\t\tcase '</horizontal>': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '<vertical': case '<vertical>': case '<vertical/>': break;\n\t\t\tcase '</vertical>': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '<start': case '<start>': case '<start/>': break;\n\t\t\tcase '</start>': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '<end': case '<end>': case '<end/>': break;\n\t\t\tcase '</end>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color>':\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fills': case '<fills>': case '</fills>': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '<fill>': case '<fill': case '<fill/>':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '</fill>': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '<gradientFill>': break;\n\t\t\tcase '<gradientFill':\n\t\t\tcase '</gradientFill>': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '<patternFill': case '<patternFill>':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '<patternFill/>': case '</patternFill>': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '<bgColor':\n\t\t\t\tif(!fill.bgColor) fill.bgColor = {};\n\t\t\t\tif(y.indexed) fill.bgColor.indexed = parseInt(y.indexed, 10);\n\t\t\t\tif(y.theme) fill.bgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.bgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb) fill.bgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<bgColor/>': case '</bgColor>': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '<fgColor':\n\t\t\t\tif(!fill.fgColor) fill.fgColor = {};\n\t\t\t\tif(y.theme) fill.fgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.fgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb != null) fill.fgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<fgColor/>': case '</fgColor>': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '<stop': case '<stop/>': break;\n\t\t\tcase '</stop>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color/>': break;\n\t\t\tcase '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fonts': case '<fonts>': case '</fonts>': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '<font': case '<font>': break;\n\t\t\tcase '</font>': case '<font/>':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '<name': if(y.val) font.name = utf8read(y.val); break;\n\t\t\tcase '<name/>': case '</name>': break;\n\n\t\t\t/* 18.8.2  b CT_BooleanProperty */\n\t\t\tcase '<b': font.bold = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<b/>': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '<i': font.italic = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<i/>': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase \"none\": font.underline = 0x00; break;\n\t\t\t\t\tcase \"single\": font.underline = 0x01; break;\n\t\t\t\t\tcase \"double\": font.underline = 0x02; break;\n\t\t\t\t\tcase \"singleAccounting\": font.underline = 0x21; break;\n\t\t\t\t\tcase \"doubleAccounting\": font.underline = 0x22; break;\n\t\t\t\t} break;\n\t\t\tcase '<u/>': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike': font.strike = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\n\t\t\t/* 18.4.2  outline CT_BooleanProperty */\n\t\t\tcase '<outline': font.outline = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '<shadow': font.shadow = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '<condense': font.condense = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<condense/>': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '<extend': font.extend = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<extend/>': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': if(y.val) font.sz = +y.val; break;\n\t\t\tcase '<sz/>': case '</sz>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '<vertAlign': if(y.val) font.vertAlign = y.val; break;\n\t\t\tcase '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '<family': if(y.val) font.family = parseInt(y.val,10); break;\n\t\t\tcase '<family/>': case '</family>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '<scheme': if(y.val) font.scheme = y.val; break;\n\t\t\tcase '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\ty.codepage = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.?.? color CT_Color */\n\t\t\tcase '<color':\n\t\t\t\tif(!font.color) font.color = {};\n\t\t\t\tif(y.auto) font.color.auto = parsexmlbool(y.auto);\n\n\t\t\t\tif(y.rgb) font.color.rgb = y.rgb.slice(-6);\n\t\t\t\telse if(y.indexed) {\n\t\t\t\t\tfont.color.index = parseInt(y.indexed, 10);\n\t\t\t\t\tvar icv = XLSIcv[font.color.index];\n\t\t\t\t\tif(font.color.index == 81) icv = XLSIcv[1];\n\t\t\t\t\tif(!icv) icv = XLSIcv[1]; //throw new Error(x); // note: 206 is valid\n\t\t\t\t\tfont.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);\n\t\t\t\t} else if(y.theme) {\n\t\t\t\t\tfont.color.theme = parseInt(y.theme, 10);\n\t\t\t\t\tif(y.tint) font.color.tint = parseFloat(y.tint);\n\t\t\t\t\tif(y.theme && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\t\tfont.color.rgb = rgb_tint(themes.themeElements.clrScheme[font.color.theme].rgb, font.color.tint || 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array<number>*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<numFmts': case '</numFmts>': case '<numFmts/>': case '<numFmts>': break;\n\t\t\tcase '<numFmt': {\n\t\t\t\tvar f=unescapexml(utf8read(y.formatCode)), j=parseInt(y.numFmtId,10);\n\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\tif(j>0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '</numFmt>': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"<numFmts>\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"</numFmts>\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<cellXfs': case '<cellXfs>': case '<cellXfs/>': case '</cellXfs>': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '<xf': case '<xf/>':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '</xf>': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '<alignment': case '<alignment/>':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '</alignment>': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '<protection':\n\t\t\t\tbreak;\n\t\t\tcase '</protection>': case '<protection/>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"</cellXfs>\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5  borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9  cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8  cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('<fonts count=\"1\"><font><sz val=\"12\"/><color theme=\"1\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font></fonts>');\n\to[o.length] = ('<fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills>');\n\to[o.length] = ('<borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>');\n\to[o.length] = ('<cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('<cellStyles count=\"1\"><cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/></cellStyles>');\n\to[o.length] = ('<dxfs count=\"0\"/>');\n\to[o.length] = ('<tableStyles count=\"0\" defaultTableStyle=\"TableStyleMedium9\" defaultPivotStyle=\"PivotStyleMedium4\"/>');\n\n\tif(o.length>2){ o[o.length] = ('</styleSheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId:   0,\n\t\tfillId:   0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'</a:lt1>', '</a:dk1>', '</a:lt2>', '</a:dk2>',\n\t'</a:accent1>', '</a:accent2>', '</a:accent3>',\n\t'</a:accent4>', '</a:accent5>', '</a:accent6>',\n\t'</a:hlink>', '</a:folHlink>'\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '<a:clrScheme': case '</a:clrScheme>': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '<a:srgbClr':\n\t\t\t\tcolor.rgb = y.val; break;\n\n\t\t\t/* 20.1.2.3.33 sysClr CT_SystemColor */\n\t\t\tcase '<a:sysClr':\n\t\t\t\tcolor.rgb = y.lastClr; break;\n\n\t\t\t/* 20.1.4.1.1 accent1 (Accent 1) */\n\t\t\t/* 20.1.4.1.2 accent2 (Accent 2) */\n\t\t\t/* 20.1.4.1.3 accent3 (Accent 3) */\n\t\t\t/* 20.1.4.1.4 accent4 (Accent 4) */\n\t\t\t/* 20.1.4.1.5 accent5 (Accent 5) */\n\t\t\t/* 20.1.4.1.6 accent6 (Accent 6) */\n\t\t\t/* 20.1.4.1.9 dk1 (Dark 1) */\n\t\t\t/* 20.1.4.1.10 dk2 (Dark 2) */\n\t\t\t/* 20.1.4.1.15 folHlink (Followed Hyperlink) */\n\t\t\t/* 20.1.4.1.19 hlink (Hyperlink) */\n\t\t\t/* 20.1.4.1.22 lt1 (Light 1) */\n\t\t\t/* 20.1.4.1.23 lt2 (Light 2) */\n\t\t\tcase '<a:dk1>': case '</a:dk1>':\n\t\t\tcase '<a:lt1>': case '</a:lt1>':\n\t\t\tcase '<a:dk2>': case '</a:dk2>':\n\t\t\tcase '<a:lt2>': case '</a:lt2>':\n\t\t\tcase '<a:accent1>': case '</a:accent1>':\n\t\t\tcase '<a:accent2>': case '</a:accent2>':\n\t\t\tcase '<a:accent3>': case '</a:accent3>':\n\t\t\tcase '<a:accent4>': case '</a:accent4>':\n\t\t\tcase '<a:accent5>': case '</a:accent5>':\n\t\t\tcase '<a:accent6>': case '</a:accent6>':\n\t\t\tcase '<a:hlink>': case '</a:hlink>':\n\t\t\tcase '<a:folHlink>': case '</a:folHlink>':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /<a:clrScheme([^>]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /<a:fontScheme([^>]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /<a:fmtScheme([^>]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /<a:themeElements([^>]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">';\n\to[o.length] =  '<a:themeElements>';\n\n\to[o.length] =   '<a:clrScheme name=\"Office\">';\n\to[o.length] =    '<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>';\n\to[o.length] =    '<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>';\n\to[o.length] =    '<a:dk2><a:srgbClr val=\"1F497D\"/></a:dk2>';\n\to[o.length] =    '<a:lt2><a:srgbClr val=\"EEECE1\"/></a:lt2>';\n\to[o.length] =    '<a:accent1><a:srgbClr val=\"4F81BD\"/></a:accent1>';\n\to[o.length] =    '<a:accent2><a:srgbClr val=\"C0504D\"/></a:accent2>';\n\to[o.length] =    '<a:accent3><a:srgbClr val=\"9BBB59\"/></a:accent3>';\n\to[o.length] =    '<a:accent4><a:srgbClr val=\"8064A2\"/></a:accent4>';\n\to[o.length] =    '<a:accent5><a:srgbClr val=\"4BACC6\"/></a:accent5>';\n\to[o.length] =    '<a:accent6><a:srgbClr val=\"F79646\"/></a:accent6>';\n\to[o.length] =    '<a:hlink><a:srgbClr val=\"0000FF\"/></a:hlink>';\n\to[o.length] =    '<a:folHlink><a:srgbClr val=\"800080\"/></a:folHlink>';\n\to[o.length] =   '</a:clrScheme>';\n\n\to[o.length] =   '<a:fontScheme name=\"Office\">';\n\to[o.length] =    '<a:majorFont>';\n\to[o.length] =     '<a:latin typeface=\"Cambria\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:majorFont>';\n\to[o.length] =    '<a:minorFont>';\n\to[o.length] =     '<a:latin typeface=\"Calibri\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:minorFont>';\n\to[o.length] =   '</a:fontScheme>';\n\n\to[o.length] =   '<a:fmtScheme name=\"Office\">';\n\to[o.length] =    '<a:fillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"35000\"><a:schemeClr val=\"phClr\"><a:tint val=\"37000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"15000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"1\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"100000\"/><a:shade val=\"100000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:shade val=\"100000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"0\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:fillStyleLst>';\n\to[o.length] =    '<a:lnStyleLst>';\n\to[o.length] =     '<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"><a:shade val=\"95000\"/><a:satMod val=\"105000\"/></a:schemeClr></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =    '</a:lnStyleLst>';\n\to[o.length] =    '<a:effectStyleLst>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"38000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =      '<a:scene3d><a:camera prst=\"orthographicFront\"><a:rot lat=\"0\" lon=\"0\" rev=\"0\"/></a:camera><a:lightRig rig=\"threePt\" dir=\"t\"><a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/></a:lightRig></a:scene3d>';\n\to[o.length] =      '<a:sp3d><a:bevelT w=\"63500\" h=\"25400\"/></a:sp3d>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =    '</a:effectStyleLst>';\n\to[o.length] =    '<a:bgFillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"40000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"40000\"><a:schemeClr val=\"phClr\"><a:tint val=\"45000\"/><a:shade val=\"99000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"20000\"/><a:satMod val=\"255000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"80000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"30000\"/><a:satMod val=\"200000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:bgFillStyleLst>';\n\to[o.length] =   '</a:fmtScheme>';\n\to[o.length] =  '</a:themeElements>';\n\n\to[o.length] =  '<a:objectDefaults>';\n\to[o.length] =   '<a:spDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"3\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"lt1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:spDef>';\n\to[o.length] =   '<a:lnDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"0\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"tx1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:lnDef>';\n\to[o.length] =  '</a:objectDefaults>';\n\to[o.length] =  '<a:extraClrSchemeLst/>';\n\to[o.length] = '</a:theme>';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array<any>*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n  return {\n    flags: data.read_shift(4),\n    version: data.read_shift(4),\n    name: parse_XLWideString(data, length - 8)\n  };\n}\nfunction write_BrtMdtinfo(data) {\n  var o = new_buf(12 + 2 * data.name.length);\n  o.write_shift(4, data.flags);\n  o.write_shift(4, data.version);\n  write_XLWideString(data.name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n  var out = [];\n  var cnt = data.read_shift(4);\n  while (cnt-- > 0)\n    out.push([data.read_shift(4), data.read_shift(4)]);\n  return out;\n}\nfunction write_BrtMdb(mdb) {\n  var o = new_buf(4 + 8 * mdb.length);\n  o.write_shift(4, mdb.length);\n  for (var i = 0; i < mdb.length; ++i) {\n    o.write_shift(4, mdb[i][0]);\n    o.write_shift(4, mdb[i][1]);\n  }\n  return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n  var o = new_buf(8 + 2 * name.length);\n  o.write_shift(4, cnt);\n  write_XLWideString(name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n  data.l += 4;\n  return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n  var o = new_buf(8);\n  o.write_shift(4, cnt);\n  o.write_shift(4, cm ? 1 : 0);\n  return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  var opts = _opts || {};\n  var state = [];\n  var pass = false;\n  var metatype = 2;\n  recordhopper(data, function(val, R, RT) {\n    switch (RT) {\n      case 335:\n        out.Types.push({ name: val.name });\n        break;\n      case 51:\n        val.forEach(function(r) {\n          if (metatype == 1)\n            out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n          else if (metatype == 0)\n            out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n        });\n        break;\n      case 337:\n        metatype = val ? 1 : 0;\n        break;\n      case 338:\n        metatype = 2;\n        break;\n      case 35:\n        state.push(RT);\n        pass = true;\n        break;\n      case 36:\n        state.pop();\n        pass = false;\n        break;\n      default:\n        if (R.T) {\n        } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n          throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n    }\n  });\n  return out;\n}\nfunction write_xlmeta_bin() {\n  var ba = buf_array();\n  write_record(ba, 332);\n  write_record(ba, 334, write_UInt32LE(1));\n  write_record(ba, 335, write_BrtMdtinfo({\n    name: \"XLDAPR\",\n    version: 12e4,\n    flags: 3496657072\n  }));\n  write_record(ba, 336);\n  write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n  write_record(ba, 52);\n  write_record(ba, 35, write_UInt32LE(514));\n  write_record(ba, 4096, write_UInt32LE(0));\n  write_record(ba, 4097, writeuint16(1));\n  write_record(ba, 36);\n  write_record(ba, 53);\n  write_record(ba, 340);\n  write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n  write_record(ba, 51, write_BrtMdb([[1, 0]]));\n  write_record(ba, 338);\n  write_record(ba, 333);\n  return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  if (!data)\n    return out;\n  var pass = false;\n  var metatype = 2;\n  var lastmeta;\n  data.replace(tagregex, function(x) {\n    var y = parsexmltag(x);\n    switch (strip_ns(y[0])) {\n      case \"<?xml\":\n        break;\n      case \"<metadata\":\n      case \"</metadata>\":\n        break;\n      case \"<metadataTypes\":\n      case \"</metadataTypes>\":\n        break;\n      case \"<metadataType\":\n        out.Types.push({ name: y.name });\n        break;\n      case \"</metadataType>\":\n        break;\n      case \"<futureMetadata\":\n        for (var j = 0; j < out.Types.length; ++j)\n          if (out.Types[j].name == y.name)\n            lastmeta = out.Types[j];\n        break;\n      case \"</futureMetadata>\":\n        break;\n      case \"<bk>\":\n        break;\n      case \"</bk>\":\n        break;\n      case \"<rc\":\n        if (metatype == 1)\n          out.Cell.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        else if (metatype == 0)\n          out.Value.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        break;\n      case \"</rc>\":\n        break;\n      case \"<cellMetadata\":\n        metatype = 1;\n        break;\n      case \"</cellMetadata>\":\n        metatype = 2;\n        break;\n      case \"<valueMetadata\":\n        metatype = 0;\n        break;\n      case \"</valueMetadata>\":\n        metatype = 2;\n        break;\n      case \"<extLst\":\n      case \"<extLst>\":\n      case \"</extLst>\":\n      case \"<extLst/>\":\n        break;\n      case \"<ext\":\n        pass = true;\n        break;\n      case \"</ext>\":\n        pass = false;\n        break;\n      case \"<rvb\":\n        if (!lastmeta)\n          break;\n        if (!lastmeta.offsets)\n          lastmeta.offsets = [];\n        lastmeta.offsets.push(+y.i);\n        break;\n      default:\n        if (!pass && opts.WTF)\n          throw new Error(\"unrecognized \" + y[0] + \" in metadata\");\n    }\n    return x;\n  });\n  return out;\n}\nfunction write_xlmeta_xml() {\n  var o = [XML_HEADER];\n  o.push('<metadata xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:xlrd=\"http://schemas.microsoft.com/office/spreadsheetml/2017/richdata\" xmlns:xda=\"http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray\">\\n  <metadataTypes count=\"1\">\\n    <metadataType name=\"XLDAPR\" minSupportedVersion=\"120000\" copy=\"1\" pasteAll=\"1\" pasteValues=\"1\" merge=\"1\" splitFirst=\"1\" rowColShift=\"1\" clearFormats=\"1\" clearComments=\"1\" assign=\"1\" coerce=\"1\" cellMeta=\"1\"/>\\n  </metadataTypes>\\n  <futureMetadata name=\"XLDAPR\" count=\"1\">\\n    <bk>\\n      <extLst>\\n        <ext uri=\"{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}\">\\n          <xda:dynamicArrayProperties fDynamic=\"1\" fCollapsed=\"0\"/>\\n        </ext>\\n      </extLst>\\n    </bk>\\n  </futureMetadata>\\n  <cellMetadata count=\"1\">\\n    <bk>\\n      <rc t=\"1\" v=\"0\"/>\\n    </bk>\\n  </cellMetadata>\\n</metadata>');\n  return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array<any>*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\t/* 18.6.2  calcChain CT_CalcChain 1 */\n\t\t\tcase '<calcChain': case '<calcChain>': case '</calcChain>': break;\n\t\t\t/* 18.6.1  c CT_CalcCell 1 */\n\t\t\tcase '<c': delete y[0]; if(y.i) i = y.i; else y.i = i; d.push(y); break;\n\t\t}\n\t});\n\treturn d;\n}\n\n//function write_cc_xml(data, opts) { }\n\n/* [MS-XLSB] 2.6.4.1 */\nfunction parse_BrtCalcChainItem$(data) {\n\tvar out = {};\n\tout.i = data.read_shift(4);\n\tvar cell = {};\n\tcell.r = data.read_shift(4);\n\tcell.c = data.read_shift(4);\n\tout.r = encode_cell(cell);\n\tvar flags = data.read_shift(1);\n\tif(flags & 0x2) out.l = '1';\n\tif(flags & 0x8) out.a = '1';\n\treturn out;\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_bin(data, name, opts) {\n\tvar out = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_cc(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x003F: /* 'BrtCalcChainItem$' */\n\t\t\t\tout.push(val); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml(/*::data, rel, name:string, _opts*/) {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, rel, name/*:string*/, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n}\n/* 20.5 DrawingML - SpreadsheetML Drawing */\n/* 20.5.2.35 wsDr CT_Drawing */\nfunction parse_drawing(data, rels/*:any*/) {\n\tif(!data) return \"??\";\n\t/*\n\t  Chartsheet Drawing:\n\t   - 20.5.2.35 wsDr CT_Drawing\n\t    - 20.5.2.1  absoluteAnchor CT_AbsoluteAnchor\n\t     - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t      - 20.1.2.2.16 graphic CT_GraphicalObject\n\t       - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n          - chart reference\n\t   the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/<c:chart [^>]*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'<v:shape' + wxt_helper({\n\t\tid:'_x0000_s' + _shapeid,\n\t\ttype:\"#_x0000_t202\",\n\t\tstyle:\"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10\" + (x[1].hidden ? \";visibility:hidden\" : \"\") ,\n\t\tfillcolor:\"#ECFAD4\",\n\t\tstrokecolor:\"#edeaa1\"\n\t}) + '>',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'<v:textbox><div style=\"text-align:left\"></div></v:textbox>',\n\t\t'<x:ClientData ObjectType=\"Note\">',\n\t\t\t'<x:MoveWithCells/>',\n\t\t\t'<x:SizeWithCells/>',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '<x:Visible/>',\n\t\t'</x:ClientData>',\n\t'</v:shape>'\n\t]); });\n\to.push('</xml>');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array<RawComment>*/, threaded/*:boolean*/, people/*:?Array<any>*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar commentList/*:Array<RawComment>*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"<t></t>\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array<string>*/ = [];\n\to.push(\"<authors>\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"<author>\" + a + \"</author>\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"<author>\" + \"tc=\" + w.ID + \"</author>\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"<author>SheetJ5</author>\"); }\n\to.push(\"</authors>\");\n\to.push(\"<commentList>\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('<comment ref=\"' + d[0] + '\" authorId=\"' + lastauthor + '\"><text>');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n    \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n    \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('</text></comment>');\n\t});\n\to.push(\"</commentList>\");\n\tif(o.length>2) { o[o.length] = ('</comments>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.6.207 ThreadedComments CT_ThreadedComments */\n\t\t\tcase '<ThreadedComments': break;\n\t\t\tcase '</ThreadedComments>': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '<threadedComment': comment = {author: y.personId, guid: y.id, ref: y.ref, T: 1}; break;\n\t\t\tcase '</threadedComment>': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '<text>': case '<text': tidx = idx + x.length; break;\n\t\t\tcase '</text>': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '<mentions': case '<mentions>': pass = true; break;\n\t\t\tcase '</mentions>': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('</ThreadedComments>');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.4.85 personList CT_PersonList */\n\t\t\tcase '<personList': break;\n\t\t\tcase '</personList>': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '<person': out.push({name: y.displayname, id: y.id }); break;\n\t\t\tcase '</person>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"</personList>\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array<RawComment>*/ {\n\tvar out/*:Array<RawComment>*/ = [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n  var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n  cfb.FullPaths.forEach(function(p, i) {\n    if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n      return;\n    var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n    CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n  });\n  return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n  vba.FullPaths.forEach(function(p, i) {\n    if (i == 0)\n      return;\n    var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n    if (newpath.slice(-1) !== \"/\")\n      CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n  });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array<number>*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array<number>*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array<Range>*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array<Array<any>>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73  ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array<Array<string>>*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array<string>*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array<any>*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array<string>*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd':    /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv':    /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq':     /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe':     /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt':     /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe':     /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt':     /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul':    /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe':     /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower':  /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub':    /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n  0: \"BEEP\",\n  1: \"OPEN\",\n  2: \"OPEN.LINKS\",\n  3: \"CLOSE.ALL\",\n  4: \"SAVE\",\n  5: \"SAVE.AS\",\n  6: \"FILE.DELETE\",\n  7: \"PAGE.SETUP\",\n  8: \"PRINT\",\n  9: \"PRINTER.SETUP\",\n  10: \"QUIT\",\n  11: \"NEW.WINDOW\",\n  12: \"ARRANGE.ALL\",\n  13: \"WINDOW.SIZE\",\n  14: \"WINDOW.MOVE\",\n  15: \"FULL\",\n  16: \"CLOSE\",\n  17: \"RUN\",\n  22: \"SET.PRINT.AREA\",\n  23: \"SET.PRINT.TITLES\",\n  24: \"SET.PAGE.BREAK\",\n  25: \"REMOVE.PAGE.BREAK\",\n  26: \"FONT\",\n  27: \"DISPLAY\",\n  28: \"PROTECT.DOCUMENT\",\n  29: \"PRECISION\",\n  30: \"A1.R1C1\",\n  31: \"CALCULATE.NOW\",\n  32: \"CALCULATION\",\n  34: \"DATA.FIND\",\n  35: \"EXTRACT\",\n  36: \"DATA.DELETE\",\n  37: \"SET.DATABASE\",\n  38: \"SET.CRITERIA\",\n  39: \"SORT\",\n  40: \"DATA.SERIES\",\n  41: \"TABLE\",\n  42: \"FORMAT.NUMBER\",\n  43: \"ALIGNMENT\",\n  44: \"STYLE\",\n  45: \"BORDER\",\n  46: \"CELL.PROTECTION\",\n  47: \"COLUMN.WIDTH\",\n  48: \"UNDO\",\n  49: \"CUT\",\n  50: \"COPY\",\n  51: \"PASTE\",\n  52: \"CLEAR\",\n  53: \"PASTE.SPECIAL\",\n  54: \"EDIT.DELETE\",\n  55: \"INSERT\",\n  56: \"FILL.RIGHT\",\n  57: \"FILL.DOWN\",\n  61: \"DEFINE.NAME\",\n  62: \"CREATE.NAMES\",\n  63: \"FORMULA.GOTO\",\n  64: \"FORMULA.FIND\",\n  65: \"SELECT.LAST.CELL\",\n  66: \"SHOW.ACTIVE.CELL\",\n  67: \"GALLERY.AREA\",\n  68: \"GALLERY.BAR\",\n  69: \"GALLERY.COLUMN\",\n  70: \"GALLERY.LINE\",\n  71: \"GALLERY.PIE\",\n  72: \"GALLERY.SCATTER\",\n  73: \"COMBINATION\",\n  74: \"PREFERRED\",\n  75: \"ADD.OVERLAY\",\n  76: \"GRIDLINES\",\n  77: \"SET.PREFERRED\",\n  78: \"AXES\",\n  79: \"LEGEND\",\n  80: \"ATTACH.TEXT\",\n  81: \"ADD.ARROW\",\n  82: \"SELECT.CHART\",\n  83: \"SELECT.PLOT.AREA\",\n  84: \"PATTERNS\",\n  85: \"MAIN.CHART\",\n  86: \"OVERLAY\",\n  87: \"SCALE\",\n  88: \"FORMAT.LEGEND\",\n  89: \"FORMAT.TEXT\",\n  90: \"EDIT.REPEAT\",\n  91: \"PARSE\",\n  92: \"JUSTIFY\",\n  93: \"HIDE\",\n  94: \"UNHIDE\",\n  95: \"WORKSPACE\",\n  96: \"FORMULA\",\n  97: \"FORMULA.FILL\",\n  98: \"FORMULA.ARRAY\",\n  99: \"DATA.FIND.NEXT\",\n  100: \"DATA.FIND.PREV\",\n  101: \"FORMULA.FIND.NEXT\",\n  102: \"FORMULA.FIND.PREV\",\n  103: \"ACTIVATE\",\n  104: \"ACTIVATE.NEXT\",\n  105: \"ACTIVATE.PREV\",\n  106: \"UNLOCKED.NEXT\",\n  107: \"UNLOCKED.PREV\",\n  108: \"COPY.PICTURE\",\n  109: \"SELECT\",\n  110: \"DELETE.NAME\",\n  111: \"DELETE.FORMAT\",\n  112: \"VLINE\",\n  113: \"HLINE\",\n  114: \"VPAGE\",\n  115: \"HPAGE\",\n  116: \"VSCROLL\",\n  117: \"HSCROLL\",\n  118: \"ALERT\",\n  119: \"NEW\",\n  120: \"CANCEL.COPY\",\n  121: \"SHOW.CLIPBOARD\",\n  122: \"MESSAGE\",\n  124: \"PASTE.LINK\",\n  125: \"APP.ACTIVATE\",\n  126: \"DELETE.ARROW\",\n  127: \"ROW.HEIGHT\",\n  128: \"FORMAT.MOVE\",\n  129: \"FORMAT.SIZE\",\n  130: \"FORMULA.REPLACE\",\n  131: \"SEND.KEYS\",\n  132: \"SELECT.SPECIAL\",\n  133: \"APPLY.NAMES\",\n  134: \"REPLACE.FONT\",\n  135: \"FREEZE.PANES\",\n  136: \"SHOW.INFO\",\n  137: \"SPLIT\",\n  138: \"ON.WINDOW\",\n  139: \"ON.DATA\",\n  140: \"DISABLE.INPUT\",\n  142: \"OUTLINE\",\n  143: \"LIST.NAMES\",\n  144: \"FILE.CLOSE\",\n  145: \"SAVE.WORKBOOK\",\n  146: \"DATA.FORM\",\n  147: \"COPY.CHART\",\n  148: \"ON.TIME\",\n  149: \"WAIT\",\n  150: \"FORMAT.FONT\",\n  151: \"FILL.UP\",\n  152: \"FILL.LEFT\",\n  153: \"DELETE.OVERLAY\",\n  155: \"SHORT.MENUS\",\n  159: \"SET.UPDATE.STATUS\",\n  161: \"COLOR.PALETTE\",\n  162: \"DELETE.STYLE\",\n  163: \"WINDOW.RESTORE\",\n  164: \"WINDOW.MAXIMIZE\",\n  166: \"CHANGE.LINK\",\n  167: \"CALCULATE.DOCUMENT\",\n  168: \"ON.KEY\",\n  169: \"APP.RESTORE\",\n  170: \"APP.MOVE\",\n  171: \"APP.SIZE\",\n  172: \"APP.MINIMIZE\",\n  173: \"APP.MAXIMIZE\",\n  174: \"BRING.TO.FRONT\",\n  175: \"SEND.TO.BACK\",\n  185: \"MAIN.CHART.TYPE\",\n  186: \"OVERLAY.CHART.TYPE\",\n  187: \"SELECT.END\",\n  188: \"OPEN.MAIL\",\n  189: \"SEND.MAIL\",\n  190: \"STANDARD.FONT\",\n  191: \"CONSOLIDATE\",\n  192: \"SORT.SPECIAL\",\n  193: \"GALLERY.3D.AREA\",\n  194: \"GALLERY.3D.COLUMN\",\n  195: \"GALLERY.3D.LINE\",\n  196: \"GALLERY.3D.PIE\",\n  197: \"VIEW.3D\",\n  198: \"GOAL.SEEK\",\n  199: \"WORKGROUP\",\n  200: \"FILL.GROUP\",\n  201: \"UPDATE.LINK\",\n  202: \"PROMOTE\",\n  203: \"DEMOTE\",\n  204: \"SHOW.DETAIL\",\n  206: \"UNGROUP\",\n  207: \"OBJECT.PROPERTIES\",\n  208: \"SAVE.NEW.OBJECT\",\n  209: \"SHARE\",\n  210: \"SHARE.NAME\",\n  211: \"DUPLICATE\",\n  212: \"APPLY.STYLE\",\n  213: \"ASSIGN.TO.OBJECT\",\n  214: \"OBJECT.PROTECTION\",\n  215: \"HIDE.OBJECT\",\n  216: \"SET.EXTRACT\",\n  217: \"CREATE.PUBLISHER\",\n  218: \"SUBSCRIBE.TO\",\n  219: \"ATTRIBUTES\",\n  220: \"SHOW.TOOLBAR\",\n  222: \"PRINT.PREVIEW\",\n  223: \"EDIT.COLOR\",\n  224: \"SHOW.LEVELS\",\n  225: \"FORMAT.MAIN\",\n  226: \"FORMAT.OVERLAY\",\n  227: \"ON.RECALC\",\n  228: \"EDIT.SERIES\",\n  229: \"DEFINE.STYLE\",\n  240: \"LINE.PRINT\",\n  243: \"ENTER.DATA\",\n  249: \"GALLERY.RADAR\",\n  250: \"MERGE.STYLES\",\n  251: \"EDITION.OPTIONS\",\n  252: \"PASTE.PICTURE\",\n  253: \"PASTE.PICTURE.LINK\",\n  254: \"SPELLING\",\n  256: \"ZOOM\",\n  259: \"INSERT.OBJECT\",\n  260: \"WINDOW.MINIMIZE\",\n  265: \"SOUND.NOTE\",\n  266: \"SOUND.PLAY\",\n  267: \"FORMAT.SHAPE\",\n  268: \"EXTEND.POLYGON\",\n  269: \"FORMAT.AUTO\",\n  272: \"GALLERY.3D.BAR\",\n  273: \"GALLERY.3D.SURFACE\",\n  274: \"FILL.AUTO\",\n  276: \"CUSTOMIZE.TOOLBAR\",\n  277: \"ADD.TOOL\",\n  278: \"EDIT.OBJECT\",\n  279: \"ON.DOUBLECLICK\",\n  280: \"ON.ENTRY\",\n  281: \"WORKBOOK.ADD\",\n  282: \"WORKBOOK.MOVE\",\n  283: \"WORKBOOK.COPY\",\n  284: \"WORKBOOK.OPTIONS\",\n  285: \"SAVE.WORKSPACE\",\n  288: \"CHART.WIZARD\",\n  289: \"DELETE.TOOL\",\n  290: \"MOVE.TOOL\",\n  291: \"WORKBOOK.SELECT\",\n  292: \"WORKBOOK.ACTIVATE\",\n  293: \"ASSIGN.TO.TOOL\",\n  295: \"COPY.TOOL\",\n  296: \"RESET.TOOL\",\n  297: \"CONSTRAIN.NUMERIC\",\n  298: \"PASTE.TOOL\",\n  302: \"WORKBOOK.NEW\",\n  305: \"SCENARIO.CELLS\",\n  306: \"SCENARIO.DELETE\",\n  307: \"SCENARIO.ADD\",\n  308: \"SCENARIO.EDIT\",\n  309: \"SCENARIO.SHOW\",\n  310: \"SCENARIO.SHOW.NEXT\",\n  311: \"SCENARIO.SUMMARY\",\n  312: \"PIVOT.TABLE.WIZARD\",\n  313: \"PIVOT.FIELD.PROPERTIES\",\n  314: \"PIVOT.FIELD\",\n  315: \"PIVOT.ITEM\",\n  316: \"PIVOT.ADD.FIELDS\",\n  318: \"OPTIONS.CALCULATION\",\n  319: \"OPTIONS.EDIT\",\n  320: \"OPTIONS.VIEW\",\n  321: \"ADDIN.MANAGER\",\n  322: \"MENU.EDITOR\",\n  323: \"ATTACH.TOOLBARS\",\n  324: \"VBAActivate\",\n  325: \"OPTIONS.CHART\",\n  328: \"VBA.INSERT.FILE\",\n  330: \"VBA.PROCEDURE.DEFINITION\",\n  336: \"ROUTING.SLIP\",\n  338: \"ROUTE.DOCUMENT\",\n  339: \"MAIL.LOGON\",\n  342: \"INSERT.PICTURE\",\n  343: \"EDIT.TOOL\",\n  344: \"GALLERY.DOUGHNUT\",\n  350: \"CHART.TREND\",\n  352: \"PIVOT.ITEM.PROPERTIES\",\n  354: \"WORKBOOK.INSERT\",\n  355: \"OPTIONS.TRANSITION\",\n  356: \"OPTIONS.GENERAL\",\n  370: \"FILTER.ADVANCED\",\n  373: \"MAIL.ADD.MAILER\",\n  374: \"MAIL.DELETE.MAILER\",\n  375: \"MAIL.REPLY\",\n  376: \"MAIL.REPLY.ALL\",\n  377: \"MAIL.FORWARD\",\n  378: \"MAIL.NEXT.LETTER\",\n  379: \"DATA.LABEL\",\n  380: \"INSERT.TITLE\",\n  381: \"FONT.PROPERTIES\",\n  382: \"MACRO.OPTIONS\",\n  383: \"WORKBOOK.HIDE\",\n  384: \"WORKBOOK.UNHIDE\",\n  385: \"WORKBOOK.DELETE\",\n  386: \"WORKBOOK.NAME\",\n  388: \"GALLERY.CUSTOM\",\n  390: \"ADD.CHART.AUTOFORMAT\",\n  391: \"DELETE.CHART.AUTOFORMAT\",\n  392: \"CHART.ADD.DATA\",\n  393: \"AUTO.OUTLINE\",\n  394: \"TAB.ORDER\",\n  395: \"SHOW.DIALOG\",\n  396: \"SELECT.ALL\",\n  397: \"UNGROUP.SHEETS\",\n  398: \"SUBTOTAL.CREATE\",\n  399: \"SUBTOTAL.REMOVE\",\n  400: \"RENAME.OBJECT\",\n  412: \"WORKBOOK.SCROLL\",\n  413: \"WORKBOOK.NEXT\",\n  414: \"WORKBOOK.PREV\",\n  415: \"WORKBOOK.TAB.SPLIT\",\n  416: \"FULL.SCREEN\",\n  417: \"WORKBOOK.PROTECT\",\n  420: \"SCROLLBAR.PROPERTIES\",\n  421: \"PIVOT.SHOW.PAGES\",\n  422: \"TEXT.TO.COLUMNS\",\n  423: \"FORMAT.CHARTTYPE\",\n  424: \"LINK.FORMAT\",\n  425: \"TRACER.DISPLAY\",\n  430: \"TRACER.NAVIGATE\",\n  431: \"TRACER.CLEAR\",\n  432: \"TRACER.ERROR\",\n  433: \"PIVOT.FIELD.GROUP\",\n  434: \"PIVOT.FIELD.UNGROUP\",\n  435: \"CHECKBOX.PROPERTIES\",\n  436: \"LABEL.PROPERTIES\",\n  437: \"LISTBOX.PROPERTIES\",\n  438: \"EDITBOX.PROPERTIES\",\n  439: \"PIVOT.REFRESH\",\n  440: \"LINK.COMBO\",\n  441: \"OPEN.TEXT\",\n  442: \"HIDE.DIALOG\",\n  443: \"SET.DIALOG.FOCUS\",\n  444: \"ENABLE.OBJECT\",\n  445: \"PUSHBUTTON.PROPERTIES\",\n  446: \"SET.DIALOG.DEFAULT\",\n  447: \"FILTER\",\n  448: \"FILTER.SHOW.ALL\",\n  449: \"CLEAR.OUTLINE\",\n  450: \"FUNCTION.WIZARD\",\n  451: \"ADD.LIST.ITEM\",\n  452: \"SET.LIST.ITEM\",\n  453: \"REMOVE.LIST.ITEM\",\n  454: \"SELECT.LIST.ITEM\",\n  455: \"SET.CONTROL.VALUE\",\n  456: \"SAVE.COPY.AS\",\n  458: \"OPTIONS.LISTS.ADD\",\n  459: \"OPTIONS.LISTS.DELETE\",\n  460: \"SERIES.AXES\",\n  461: \"SERIES.X\",\n  462: \"SERIES.Y\",\n  463: \"ERRORBAR.X\",\n  464: \"ERRORBAR.Y\",\n  465: \"FORMAT.CHART\",\n  466: \"SERIES.ORDER\",\n  467: \"MAIL.LOGOFF\",\n  468: \"CLEAR.ROUTING.SLIP\",\n  469: \"APP.ACTIVATE.MICROSOFT\",\n  470: \"MAIL.EDIT.MAILER\",\n  471: \"ON.SHEET\",\n  472: \"STANDARD.WIDTH\",\n  473: \"SCENARIO.MERGE\",\n  474: \"SUMMARY.INFO\",\n  475: \"FIND.FILE\",\n  476: \"ACTIVE.CELL.FONT\",\n  477: \"ENABLE.TIPWIZARD\",\n  478: \"VBA.MAKE.ADDIN\",\n  480: \"INSERTDATATABLE\",\n  481: \"WORKGROUP.OPTIONS\",\n  482: \"MAIL.SEND.MAILER\",\n  485: \"AUTOCORRECT\",\n  489: \"POST.DOCUMENT\",\n  491: \"PICKLIST\",\n  493: \"VIEW.SHOW\",\n  494: \"VIEW.DEFINE\",\n  495: \"VIEW.DELETE\",\n  509: \"SHEET.BACKGROUND\",\n  510: \"INSERT.MAP.OBJECT\",\n  511: \"OPTIONS.MENONO\",\n  517: \"MSOCHECKS\",\n  518: \"NORMAL\",\n  519: \"LAYOUT\",\n  520: \"RM.PRINT.AREA\",\n  521: \"CLEAR.PRINT.AREA\",\n  522: \"ADD.PRINT.AREA\",\n  523: \"MOVE.BRK\",\n  545: \"HIDECURR.NOTE\",\n  546: \"HIDEALL.NOTES\",\n  547: \"DELETE.NOTE\",\n  548: \"TRAVERSE.NOTES\",\n  549: \"ACTIVATE.NOTES\",\n  620: \"PROTECT.REVISIONS\",\n  621: \"UNPROTECT.REVISIONS\",\n  647: \"OPTIONS.ME\",\n  653: \"WEB.PUBLISH\",\n  667: \"NEWWEBQUERY\",\n  673: \"PIVOT.TABLE.CHART\",\n  753: \"OPTIONS.SAVE\",\n  755: \"OPTIONS.SPELL\",\n  808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n  0: \"COUNT\",\n  1: \"IF\",\n  2: \"ISNA\",\n  3: \"ISERROR\",\n  4: \"SUM\",\n  5: \"AVERAGE\",\n  6: \"MIN\",\n  7: \"MAX\",\n  8: \"ROW\",\n  9: \"COLUMN\",\n  10: \"NA\",\n  11: \"NPV\",\n  12: \"STDEV\",\n  13: \"DOLLAR\",\n  14: \"FIXED\",\n  15: \"SIN\",\n  16: \"COS\",\n  17: \"TAN\",\n  18: \"ATAN\",\n  19: \"PI\",\n  20: \"SQRT\",\n  21: \"EXP\",\n  22: \"LN\",\n  23: \"LOG10\",\n  24: \"ABS\",\n  25: \"INT\",\n  26: \"SIGN\",\n  27: \"ROUND\",\n  28: \"LOOKUP\",\n  29: \"INDEX\",\n  30: \"REPT\",\n  31: \"MID\",\n  32: \"LEN\",\n  33: \"VALUE\",\n  34: \"TRUE\",\n  35: \"FALSE\",\n  36: \"AND\",\n  37: \"OR\",\n  38: \"NOT\",\n  39: \"MOD\",\n  40: \"DCOUNT\",\n  41: \"DSUM\",\n  42: \"DAVERAGE\",\n  43: \"DMIN\",\n  44: \"DMAX\",\n  45: \"DSTDEV\",\n  46: \"VAR\",\n  47: \"DVAR\",\n  48: \"TEXT\",\n  49: \"LINEST\",\n  50: \"TREND\",\n  51: \"LOGEST\",\n  52: \"GROWTH\",\n  53: \"GOTO\",\n  54: \"HALT\",\n  55: \"RETURN\",\n  56: \"PV\",\n  57: \"FV\",\n  58: \"NPER\",\n  59: \"PMT\",\n  60: \"RATE\",\n  61: \"MIRR\",\n  62: \"IRR\",\n  63: \"RAND\",\n  64: \"MATCH\",\n  65: \"DATE\",\n  66: \"TIME\",\n  67: \"DAY\",\n  68: \"MONTH\",\n  69: \"YEAR\",\n  70: \"WEEKDAY\",\n  71: \"HOUR\",\n  72: \"MINUTE\",\n  73: \"SECOND\",\n  74: \"NOW\",\n  75: \"AREAS\",\n  76: \"ROWS\",\n  77: \"COLUMNS\",\n  78: \"OFFSET\",\n  79: \"ABSREF\",\n  80: \"RELREF\",\n  81: \"ARGUMENT\",\n  82: \"SEARCH\",\n  83: \"TRANSPOSE\",\n  84: \"ERROR\",\n  85: \"STEP\",\n  86: \"TYPE\",\n  87: \"ECHO\",\n  88: \"SET.NAME\",\n  89: \"CALLER\",\n  90: \"DEREF\",\n  91: \"WINDOWS\",\n  92: \"SERIES\",\n  93: \"DOCUMENTS\",\n  94: \"ACTIVE.CELL\",\n  95: \"SELECTION\",\n  96: \"RESULT\",\n  97: \"ATAN2\",\n  98: \"ASIN\",\n  99: \"ACOS\",\n  100: \"CHOOSE\",\n  101: \"HLOOKUP\",\n  102: \"VLOOKUP\",\n  103: \"LINKS\",\n  104: \"INPUT\",\n  105: \"ISREF\",\n  106: \"GET.FORMULA\",\n  107: \"GET.NAME\",\n  108: \"SET.VALUE\",\n  109: \"LOG\",\n  110: \"EXEC\",\n  111: \"CHAR\",\n  112: \"LOWER\",\n  113: \"UPPER\",\n  114: \"PROPER\",\n  115: \"LEFT\",\n  116: \"RIGHT\",\n  117: \"EXACT\",\n  118: \"TRIM\",\n  119: \"REPLACE\",\n  120: \"SUBSTITUTE\",\n  121: \"CODE\",\n  122: \"NAMES\",\n  123: \"DIRECTORY\",\n  124: \"FIND\",\n  125: \"CELL\",\n  126: \"ISERR\",\n  127: \"ISTEXT\",\n  128: \"ISNUMBER\",\n  129: \"ISBLANK\",\n  130: \"T\",\n  131: \"N\",\n  132: \"FOPEN\",\n  133: \"FCLOSE\",\n  134: \"FSIZE\",\n  135: \"FREADLN\",\n  136: \"FREAD\",\n  137: \"FWRITELN\",\n  138: \"FWRITE\",\n  139: \"FPOS\",\n  140: \"DATEVALUE\",\n  141: \"TIMEVALUE\",\n  142: \"SLN\",\n  143: \"SYD\",\n  144: \"DDB\",\n  145: \"GET.DEF\",\n  146: \"REFTEXT\",\n  147: \"TEXTREF\",\n  148: \"INDIRECT\",\n  149: \"REGISTER\",\n  150: \"CALL\",\n  151: \"ADD.BAR\",\n  152: \"ADD.MENU\",\n  153: \"ADD.COMMAND\",\n  154: \"ENABLE.COMMAND\",\n  155: \"CHECK.COMMAND\",\n  156: \"RENAME.COMMAND\",\n  157: \"SHOW.BAR\",\n  158: \"DELETE.MENU\",\n  159: \"DELETE.COMMAND\",\n  160: \"GET.CHART.ITEM\",\n  161: \"DIALOG.BOX\",\n  162: \"CLEAN\",\n  163: \"MDETERM\",\n  164: \"MINVERSE\",\n  165: \"MMULT\",\n  166: \"FILES\",\n  167: \"IPMT\",\n  168: \"PPMT\",\n  169: \"COUNTA\",\n  170: \"CANCEL.KEY\",\n  171: \"FOR\",\n  172: \"WHILE\",\n  173: \"BREAK\",\n  174: \"NEXT\",\n  175: \"INITIATE\",\n  176: \"REQUEST\",\n  177: \"POKE\",\n  178: \"EXECUTE\",\n  179: \"TERMINATE\",\n  180: \"RESTART\",\n  181: \"HELP\",\n  182: \"GET.BAR\",\n  183: \"PRODUCT\",\n  184: \"FACT\",\n  185: \"GET.CELL\",\n  186: \"GET.WORKSPACE\",\n  187: \"GET.WINDOW\",\n  188: \"GET.DOCUMENT\",\n  189: \"DPRODUCT\",\n  190: \"ISNONTEXT\",\n  191: \"GET.NOTE\",\n  192: \"NOTE\",\n  193: \"STDEVP\",\n  194: \"VARP\",\n  195: \"DSTDEVP\",\n  196: \"DVARP\",\n  197: \"TRUNC\",\n  198: \"ISLOGICAL\",\n  199: \"DCOUNTA\",\n  200: \"DELETE.BAR\",\n  201: \"UNREGISTER\",\n  204: \"USDOLLAR\",\n  205: \"FINDB\",\n  206: \"SEARCHB\",\n  207: \"REPLACEB\",\n  208: \"LEFTB\",\n  209: \"RIGHTB\",\n  210: \"MIDB\",\n  211: \"LENB\",\n  212: \"ROUNDUP\",\n  213: \"ROUNDDOWN\",\n  214: \"ASC\",\n  215: \"DBCS\",\n  216: \"RANK\",\n  219: \"ADDRESS\",\n  220: \"DAYS360\",\n  221: \"TODAY\",\n  222: \"VDB\",\n  223: \"ELSE\",\n  224: \"ELSE.IF\",\n  225: \"END.IF\",\n  226: \"FOR.CELL\",\n  227: \"MEDIAN\",\n  228: \"SUMPRODUCT\",\n  229: \"SINH\",\n  230: \"COSH\",\n  231: \"TANH\",\n  232: \"ASINH\",\n  233: \"ACOSH\",\n  234: \"ATANH\",\n  235: \"DGET\",\n  236: \"CREATE.OBJECT\",\n  237: \"VOLATILE\",\n  238: \"LAST.ERROR\",\n  239: \"CUSTOM.UNDO\",\n  240: \"CUSTOM.REPEAT\",\n  241: \"FORMULA.CONVERT\",\n  242: \"GET.LINK.INFO\",\n  243: \"TEXT.BOX\",\n  244: \"INFO\",\n  245: \"GROUP\",\n  246: \"GET.OBJECT\",\n  247: \"DB\",\n  248: \"PAUSE\",\n  251: \"RESUME\",\n  252: \"FREQUENCY\",\n  253: \"ADD.TOOLBAR\",\n  254: \"DELETE.TOOLBAR\",\n  255: \"User\",\n  256: \"RESET.TOOLBAR\",\n  257: \"EVALUATE\",\n  258: \"GET.TOOLBAR\",\n  259: \"GET.TOOL\",\n  260: \"SPELLING.CHECK\",\n  261: \"ERROR.TYPE\",\n  262: \"APP.TITLE\",\n  263: \"WINDOW.TITLE\",\n  264: \"SAVE.TOOLBAR\",\n  265: \"ENABLE.TOOL\",\n  266: \"PRESS.TOOL\",\n  267: \"REGISTER.ID\",\n  268: \"GET.WORKBOOK\",\n  269: \"AVEDEV\",\n  270: \"BETADIST\",\n  271: \"GAMMALN\",\n  272: \"BETAINV\",\n  273: \"BINOMDIST\",\n  274: \"CHIDIST\",\n  275: \"CHIINV\",\n  276: \"COMBIN\",\n  277: \"CONFIDENCE\",\n  278: \"CRITBINOM\",\n  279: \"EVEN\",\n  280: \"EXPONDIST\",\n  281: \"FDIST\",\n  282: \"FINV\",\n  283: \"FISHER\",\n  284: \"FISHERINV\",\n  285: \"FLOOR\",\n  286: \"GAMMADIST\",\n  287: \"GAMMAINV\",\n  288: \"CEILING\",\n  289: \"HYPGEOMDIST\",\n  290: \"LOGNORMDIST\",\n  291: \"LOGINV\",\n  292: \"NEGBINOMDIST\",\n  293: \"NORMDIST\",\n  294: \"NORMSDIST\",\n  295: \"NORMINV\",\n  296: \"NORMSINV\",\n  297: \"STANDARDIZE\",\n  298: \"ODD\",\n  299: \"PERMUT\",\n  300: \"POISSON\",\n  301: \"TDIST\",\n  302: \"WEIBULL\",\n  303: \"SUMXMY2\",\n  304: \"SUMX2MY2\",\n  305: \"SUMX2PY2\",\n  306: \"CHITEST\",\n  307: \"CORREL\",\n  308: \"COVAR\",\n  309: \"FORECAST\",\n  310: \"FTEST\",\n  311: \"INTERCEPT\",\n  312: \"PEARSON\",\n  313: \"RSQ\",\n  314: \"STEYX\",\n  315: \"SLOPE\",\n  316: \"TTEST\",\n  317: \"PROB\",\n  318: \"DEVSQ\",\n  319: \"GEOMEAN\",\n  320: \"HARMEAN\",\n  321: \"SUMSQ\",\n  322: \"KURT\",\n  323: \"SKEW\",\n  324: \"ZTEST\",\n  325: \"LARGE\",\n  326: \"SMALL\",\n  327: \"QUARTILE\",\n  328: \"PERCENTILE\",\n  329: \"PERCENTRANK\",\n  330: \"MODE\",\n  331: \"TRIMMEAN\",\n  332: \"TINV\",\n  334: \"MOVIE.COMMAND\",\n  335: \"GET.MOVIE\",\n  336: \"CONCATENATE\",\n  337: \"POWER\",\n  338: \"PIVOT.ADD.DATA\",\n  339: \"GET.PIVOT.TABLE\",\n  340: \"GET.PIVOT.FIELD\",\n  341: \"GET.PIVOT.ITEM\",\n  342: \"RADIANS\",\n  343: \"DEGREES\",\n  344: \"SUBTOTAL\",\n  345: \"SUMIF\",\n  346: \"COUNTIF\",\n  347: \"COUNTBLANK\",\n  348: \"SCENARIO.GET\",\n  349: \"OPTIONS.LISTS.GET\",\n  350: \"ISPMT\",\n  351: \"DATEDIF\",\n  352: \"DATESTRING\",\n  353: \"NUMBERSTRING\",\n  354: \"ROMAN\",\n  355: \"OPEN.DIALOG\",\n  356: \"SAVE.DIALOG\",\n  357: \"VIEW.GET\",\n  358: \"GETPIVOTDATA\",\n  359: \"HYPERLINK\",\n  360: \"PHONETIC\",\n  361: \"AVERAGEA\",\n  362: \"MAXA\",\n  363: \"MINA\",\n  364: \"STDEVPA\",\n  365: \"VARPA\",\n  366: \"STDEVA\",\n  367: \"VARA\",\n  368: \"BAHTTEXT\",\n  369: \"THAIDAYOFWEEK\",\n  370: \"THAIDIGIT\",\n  371: \"THAIMONTHOFYEAR\",\n  372: \"THAINUMSOUND\",\n  373: \"THAINUMSTRING\",\n  374: \"THAISTRINGLENGTH\",\n  375: \"ISTHAIDIGIT\",\n  376: \"ROUNDBAHTDOWN\",\n  377: \"ROUNDBAHTUP\",\n  378: \"THAIYEAR\",\n  379: \"RTD\",\n  380: \"CUBEVALUE\",\n  381: \"CUBEMEMBER\",\n  382: \"CUBEMEMBERPROPERTY\",\n  383: \"CUBERANKEDMEMBER\",\n  384: \"HEX2BIN\",\n  385: \"HEX2DEC\",\n  386: \"HEX2OCT\",\n  387: \"DEC2BIN\",\n  388: \"DEC2HEX\",\n  389: \"DEC2OCT\",\n  390: \"OCT2BIN\",\n  391: \"OCT2HEX\",\n  392: \"OCT2DEC\",\n  393: \"BIN2DEC\",\n  394: \"BIN2OCT\",\n  395: \"BIN2HEX\",\n  396: \"IMSUB\",\n  397: \"IMDIV\",\n  398: \"IMPOWER\",\n  399: \"IMABS\",\n  400: \"IMSQRT\",\n  401: \"IMLN\",\n  402: \"IMLOG2\",\n  403: \"IMLOG10\",\n  404: \"IMSIN\",\n  405: \"IMCOS\",\n  406: \"IMEXP\",\n  407: \"IMARGUMENT\",\n  408: \"IMCONJUGATE\",\n  409: \"IMAGINARY\",\n  410: \"IMREAL\",\n  411: \"COMPLEX\",\n  412: \"IMSUM\",\n  413: \"IMPRODUCT\",\n  414: \"SERIESSUM\",\n  415: \"FACTDOUBLE\",\n  416: \"SQRTPI\",\n  417: \"QUOTIENT\",\n  418: \"DELTA\",\n  419: \"GESTEP\",\n  420: \"ISEVEN\",\n  421: \"ISODD\",\n  422: \"MROUND\",\n  423: \"ERF\",\n  424: \"ERFC\",\n  425: \"BESSELJ\",\n  426: \"BESSELK\",\n  427: \"BESSELY\",\n  428: \"BESSELI\",\n  429: \"XIRR\",\n  430: \"XNPV\",\n  431: \"PRICEMAT\",\n  432: \"YIELDMAT\",\n  433: \"INTRATE\",\n  434: \"RECEIVED\",\n  435: \"DISC\",\n  436: \"PRICEDISC\",\n  437: \"YIELDDISC\",\n  438: \"TBILLEQ\",\n  439: \"TBILLPRICE\",\n  440: \"TBILLYIELD\",\n  441: \"PRICE\",\n  442: \"YIELD\",\n  443: \"DOLLARDE\",\n  444: \"DOLLARFR\",\n  445: \"NOMINAL\",\n  446: \"EFFECT\",\n  447: \"CUMPRINC\",\n  448: \"CUMIPMT\",\n  449: \"EDATE\",\n  450: \"EOMONTH\",\n  451: \"YEARFRAC\",\n  452: \"COUPDAYBS\",\n  453: \"COUPDAYS\",\n  454: \"COUPDAYSNC\",\n  455: \"COUPNCD\",\n  456: \"COUPNUM\",\n  457: \"COUPPCD\",\n  458: \"DURATION\",\n  459: \"MDURATION\",\n  460: \"ODDLPRICE\",\n  461: \"ODDLYIELD\",\n  462: \"ODDFPRICE\",\n  463: \"ODDFYIELD\",\n  464: \"RANDBETWEEN\",\n  465: \"WEEKNUM\",\n  466: \"AMORDEGRC\",\n  467: \"AMORLINC\",\n  468: \"CONVERT\",\n  724: \"SHEETJS\",\n  469: \"ACCRINT\",\n  470: \"ACCRINTM\",\n  471: \"WORKDAY\",\n  472: \"NETWORKDAYS\",\n  473: \"GCD\",\n  474: \"MULTINOMIAL\",\n  475: \"LCM\",\n  476: \"FVSCHEDULE\",\n  477: \"CUBEKPIMEMBER\",\n  478: \"CUBESET\",\n  479: \"CUBESETCOUNT\",\n  480: \"IFERROR\",\n  481: \"COUNTIFS\",\n  482: \"SUMIFS\",\n  483: \"AVERAGEIF\",\n  484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n  2: 1,\n  3: 1,\n  10: 0,\n  15: 1,\n  16: 1,\n  17: 1,\n  18: 1,\n  19: 0,\n  20: 1,\n  21: 1,\n  22: 1,\n  23: 1,\n  24: 1,\n  25: 1,\n  26: 1,\n  27: 2,\n  30: 2,\n  31: 3,\n  32: 1,\n  33: 1,\n  34: 0,\n  35: 0,\n  38: 1,\n  39: 2,\n  40: 3,\n  41: 3,\n  42: 3,\n  43: 3,\n  44: 3,\n  45: 3,\n  47: 3,\n  48: 2,\n  53: 1,\n  61: 3,\n  63: 0,\n  65: 3,\n  66: 3,\n  67: 1,\n  68: 1,\n  69: 1,\n  70: 1,\n  71: 1,\n  72: 1,\n  73: 1,\n  74: 0,\n  75: 1,\n  76: 1,\n  77: 1,\n  79: 2,\n  80: 2,\n  83: 1,\n  85: 0,\n  86: 1,\n  89: 0,\n  90: 1,\n  94: 0,\n  95: 0,\n  97: 2,\n  98: 1,\n  99: 1,\n  101: 3,\n  102: 3,\n  105: 1,\n  106: 1,\n  108: 2,\n  111: 1,\n  112: 1,\n  113: 1,\n  114: 1,\n  117: 2,\n  118: 1,\n  119: 4,\n  121: 1,\n  126: 1,\n  127: 1,\n  128: 1,\n  129: 1,\n  130: 1,\n  131: 1,\n  133: 1,\n  134: 1,\n  135: 1,\n  136: 2,\n  137: 2,\n  138: 2,\n  140: 1,\n  141: 1,\n  142: 3,\n  143: 4,\n  144: 4,\n  161: 1,\n  162: 1,\n  163: 1,\n  164: 1,\n  165: 2,\n  172: 1,\n  175: 2,\n  176: 2,\n  177: 3,\n  178: 2,\n  179: 1,\n  184: 1,\n  186: 1,\n  189: 3,\n  190: 1,\n  195: 3,\n  196: 3,\n  197: 1,\n  198: 1,\n  199: 3,\n  201: 1,\n  207: 4,\n  210: 3,\n  211: 1,\n  212: 2,\n  213: 2,\n  214: 1,\n  215: 1,\n  225: 0,\n  229: 1,\n  230: 1,\n  231: 1,\n  232: 1,\n  233: 1,\n  234: 1,\n  235: 3,\n  244: 1,\n  247: 4,\n  252: 2,\n  257: 1,\n  261: 1,\n  271: 1,\n  273: 4,\n  274: 2,\n  275: 2,\n  276: 2,\n  277: 3,\n  278: 3,\n  279: 1,\n  280: 3,\n  281: 3,\n  282: 3,\n  283: 1,\n  284: 1,\n  285: 2,\n  286: 4,\n  287: 3,\n  288: 2,\n  289: 4,\n  290: 3,\n  291: 3,\n  292: 3,\n  293: 4,\n  294: 1,\n  295: 3,\n  296: 1,\n  297: 3,\n  298: 1,\n  299: 2,\n  300: 3,\n  301: 3,\n  302: 4,\n  303: 2,\n  304: 2,\n  305: 2,\n  306: 2,\n  307: 2,\n  308: 2,\n  309: 3,\n  310: 2,\n  311: 2,\n  312: 2,\n  313: 2,\n  314: 2,\n  315: 2,\n  316: 4,\n  325: 2,\n  326: 2,\n  327: 2,\n  328: 2,\n  331: 2,\n  332: 2,\n  337: 2,\n  342: 1,\n  343: 1,\n  346: 2,\n  347: 1,\n  350: 4,\n  351: 3,\n  352: 1,\n  353: 2,\n  360: 1,\n  368: 1,\n  369: 1,\n  370: 1,\n  371: 1,\n  372: 1,\n  373: 1,\n  374: 1,\n  375: 1,\n  376: 1,\n  377: 1,\n  378: 1,\n  382: 3,\n  385: 1,\n  392: 1,\n  393: 1,\n  396: 2,\n  397: 2,\n  398: 2,\n  399: 1,\n  400: 1,\n  401: 1,\n  402: 1,\n  403: 1,\n  404: 1,\n  405: 1,\n  406: 1,\n  407: 1,\n  408: 1,\n  409: 1,\n  410: 1,\n  414: 4,\n  415: 1,\n  416: 1,\n  417: 2,\n  420: 1,\n  421: 1,\n  422: 2,\n  424: 1,\n  425: 2,\n  426: 2,\n  427: 2,\n  428: 2,\n  430: 3,\n  438: 3,\n  439: 3,\n  440: 3,\n  443: 2,\n  444: 2,\n  445: 2,\n  446: 2,\n  447: 6,\n  448: 6,\n  449: 2,\n  450: 2,\n  464: 2,\n  468: 3,\n  476: 2,\n  479: 1,\n  480: 2,\n  65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left   == null) margins.left   = defs[0];\n\tif(margins.right  == null) margins.right  = defs[1];\n\tif(margins.top    == null) margins.top    = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array<any>*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array<ColInfo>*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2  autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array<Range>*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array<Range>*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '<mergeCells count=\"' + merges.length + '\">';\n\tfor(var i = 0; i != merges.length; ++i) o += '<mergeCell ref=\"' + encode_range(merges[i]) + '\"/>';\n\treturn o + '</mergeCells>';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array<string>*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"<cols>\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"</cols>\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array<string>*/ = [], cref/*:?Array<string>*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array<RowInfo>*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"<c \" + (x.slice(0,1)==\"<\"?\">\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/<f[^>]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], r/*:Array<string>*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array<string>*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '<sheetData/>';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = ('</sheetData>'); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"<hyperlinks>\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"</hyperlinks>\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] =  write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = ('</worksheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left  = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left)  f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\",             false], // fObjects\n\t\t[\"scenarios\",           false], // fScenarios\n\t\t[\"formatCells\",          true], // fFormatCells\n\t\t[\"formatColumns\",        true], // fFormatColumns\n\t\t[\"formatRows\",           true], // fFormatRows\n\t\t[\"insertColumns\",        true], // fInsertColumns\n\t\t[\"insertRows\",           true], // fInsertRows\n\t\t[\"insertHyperlinks\",     true], // fInsertHyperlinks\n\t\t[\"deleteColumns\",        true], // fDeleteColumns\n\t\t[\"deleteRows\",           true], // fDeleteRows\n\t\t[\"selectLockedCells\",   false], // fSelLockedCells\n\t\t[\"sort\",                 true], // fSort\n\t\t[\"autoFilter\",           true], // fAutoFilter\n\t\t[\"pivotTables\",          true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false]  // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse      o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array<Range>*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array<number|string>, string, ?string]*/ {\n\tvar col/*:Array<number|string>*/ = [];\n\tvar num = data.match(/^<c:numCache>/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/<c:pt idx=\"(\\d*)\">(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/<c:pt idx=\"(\\d*?)\"><c:v>(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/<c:formatCode>([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/<c:f>(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/<c:numCache>[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = ('</chartsheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery',           false, \"bool\"],\n\t['autoCompressPictures',        true,  \"bool\"],\n\t['backupFile',                  false, \"bool\"],\n\t['checkCompatibility',          false, \"bool\"],\n\t['CodeName',                    ''],\n\t['date1904',                    false, \"bool\"],\n\t['defaultThemeVersion',         0,      \"int\"],\n\t['filterPrivacy',               false, \"bool\"],\n\t['hidePivotFieldList',          false, \"bool\"],\n\t['promptedSolutions',           false, \"bool\"],\n\t['publishItems',                false, \"bool\"],\n\t['refreshAllConnections',       false, \"bool\"],\n\t['saveExternalLinkValues',      true,  \"bool\"],\n\t['showBorderUnselectedTables',  true,  \"bool\"],\n\t['showInkAnnotation',           true,  \"bool\"],\n\t['showObjects',                 'all'],\n\t['showPivotChartFilter',        false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab',                   0,      \"int\"],\n\t['autoFilterDateGrouping',      true,  \"bool\"],\n\t['firstSheet',                  0,      \"int\"],\n\t['minimized',                   false, \"bool\"],\n\t['showHorizontalScroll',        true,  \"bool\"],\n\t['showSheetTabs',               true,  \"bool\"],\n\t['showVerticalScroll',          true,  \"bool\"],\n\t['tabRatio',                    600,    \"int\"],\n\t['visibility',                  'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2  (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 18.2.27 workbook CT_Workbook 1 */\n\t\t\tcase '<workbook':\n\t\t\t\tif(x.match(wbnsregex)) xmlns = \"xmlns\" + x.match(/<(\\w+):/)[1];\n\t\t\t\twb.xmlns = y[xmlns];\n\t\t\t\tbreak;\n\t\t\tcase '</workbook>': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '<fileVersion': delete y[0]; wb.AppVersion = y; break;\n\t\t\tcase '<fileVersion/>': case '</fileVersion>': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '<fileSharing':\n\t\t\t\tbreak;\n\t\t\tcase '<fileSharing/>': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '<workbookPr':\n\t\t\tcase '<workbookPr/>':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '</workbookPr>': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '<workbookProtection':\n\t\t\t\tbreak;\n\t\t\tcase '<workbookProtection/>': break;\n\n\t\t\t/* 18.2.1  bookViews CT_BookViews ? */\n\t\t\tcase '<bookViews': case '<bookViews>': case '</bookViews>': break;\n\t\t\t/* 18.2.30   workbookView CT_BookView + */\n\t\t\tcase '<workbookView': case '<workbookView/>': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '</workbookView>': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '<sheets': case '<sheets>': case '</sheets>': break; // aggregate sheet\n\t\t\t/* 18.2.19   sheet CT_Sheet + */\n\t\t\tcase '<sheet':\n\t\t\t\tswitch(y.state) {\n\t\t\t\t\tcase \"hidden\": y.Hidden = 1; break;\n\t\t\t\t\tcase \"veryHidden\": y.Hidden = 2; break;\n\t\t\t\t\tdefault: y.Hidden = 0;\n\t\t\t\t}\n\t\t\t\tdelete y.state;\n\t\t\t\ty.name = unescapexml(utf8read(y.name));\n\t\t\t\tdelete y[0]; wb.Sheets.push(y); break;\n\t\t\tcase '</sheet>': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '<functionGroups': case '<functionGroups/>': break;\n\t\t\t/* 18.2.14   functionGroup CT_FunctionGroup + */\n\t\t\tcase '<functionGroup': break;\n\n\t\t\t/* 18.2.9  externalReferences CT_ExternalReferences ? */\n\t\t\tcase '<externalReferences': case '</externalReferences>': case '<externalReferences>': break;\n\t\t\t/* 18.2.8    externalReference CT_ExternalReference + */\n\t\t\tcase '<externalReference': break;\n\n\t\t\t/* 18.2.6  definedNames CT_DefinedNames ? */\n\t\t\tcase '<definedNames/>': break;\n\t\t\tcase '<definedNames>': case '<definedNames': pass=true; break;\n\t\t\tcase '</definedNames>': pass=false; break;\n\t\t\t/* 18.2.5    definedName CT_DefinedName + */\n\t\t\tcase '<definedName': {\n\t\t\t\tdname = {};\n\t\t\t\tdname.Name = utf8read(y.name);\n\t\t\t\tif(y.comment) dname.Comment = y.comment;\n\t\t\t\tif(y.localSheetId) dname.Sheet = +y.localSheetId;\n\t\t\t\tif(parsexmlbool(y.hidden||\"0\")) dname.Hidden = true;\n\t\t\t\tdnstart = idx + x.length;\n\t\t\t}\tbreak;\n\t\t\tcase '</definedName>': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '<definedName/>': break;\n\n\t\t\t/* 18.2.2  calcPr CT_CalcPr ? */\n\t\t\tcase '<calcPr': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '<calcPr/>': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '</calcPr>': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '<oleSize': break;\n\n\t\t\t/* 18.2.4  customWorkbookViews CT_CustomWorkbookViews ? */\n\t\t\tcase '<customWorkbookViews>': case '</customWorkbookViews>': case '<customWorkbookViews': break;\n\t\t\t/* 18.2.3  customWorkbookView CT_CustomWorkbookView + */\n\t\t\tcase '<customWorkbookView': case '</customWorkbookView>': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '<pivotCaches>': case '</pivotCaches>': case '<pivotCaches': break;\n\t\t\t/* 18.2.17 pivotCache CT_PivotCache ? */\n\t\t\tcase '<pivotCache': break;\n\n\t\t\t/* 18.2.21 smartTagPr CT_SmartTagPr ? */\n\t\t\tcase '<smartTagPr': case '<smartTagPr/>': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '<smartTagTypes': case '<smartTagTypes>': case '</smartTagTypes>': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '<smartTagType': break;\n\n\t\t\t/* 18.2.24 webPublishing CT_WebPublishing ? */\n\t\t\tcase '<webPublishing': case '<webPublishing/>': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '<fileRecoveryPr': case '<fileRecoveryPr/>': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '<webPublishObjects>': case '<webPublishObjects': case '</webPublishObjects>': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '<webPublishObject': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break; //TODO: check with versions of excel\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '<ArchID': break;\n\t\t\tcase '<AlternateContent':\n\t\t\tcase '<AlternateContent>': pass=true; break;\n\t\t\tcase '</AlternateContent>': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase '<revisionPtr': break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');\n\t\t}\n\t\treturn x;\n\t});\n\tif(XMLNS_main.indexOf(wb.xmlns) === -1) throw new Error(\"Unknown Namespace: \" + wb.xmlns);\n\n\tparse_wb_defaults(wb);\n\n\treturn wb;\n}\n\nfunction write_wb_xml(wb/*:Workbook*//*::, opts:?WriteOpts*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to[o.length] = writextag('workbook', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t//'xmlns:mx': XMLNS.mx,\n\t\t//'xmlns:s': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t});\n\n\tvar write_names = (wb.Workbook && (wb.Workbook.Names||[]).length > 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"<bookViews>\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '<workbookView firstSheet=\"' + i + '\" activeTab=\"' + i + '\"/>';\n\t\to[o.length] = \"</bookViews>\";\n\t}\n\n\to[o.length] = \"<sheets>\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"</sheets>\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"<definedNames>\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"</definedNames>\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = '</workbook>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4,  28800);\n\to.write_shift(4,  17600);\n\to.write_shift(4,  500);\n\to.write_shift(4,  idx);\n\to.write_shift(4,  idx);\n\tvar flags = 0x78;\n\to.write_shift(1,  flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array<RawComment>*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array<any>*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"<?xml\") == -1) [\"html\", \"table\", \"head\", \"meta\", \"script\", \"style\", \"div\"].forEach(function(tag) { if(opening.indexOf(\"<\" + tag) >= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array<string>*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag('<Data ss:Type=\"String\">'), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array<RowInfo>*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is <office:document> */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is <uof:UOF> */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array<string>*/ = ['<Style ss:ID=\"Default\" ss:Name=\"Normal\"><NumberFormat/></Style>'];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array<string>*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array<string>*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"<PageSetup>\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"</PageSetup>\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"<Selected/>\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"<DisplayRightToLeft/>\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array<any>*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('<Data ss:Type=\"' + t + '\">' + _v + '</Data>');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '<Row ss:Index=\"' + (R+1) + '\"';\n\tif(row) {\n\t\tif(row.hpt && !row.hpx) row.hpx = pt2px(row.hpt);\n\t\tif(row.hpx) o += ' ss:AutoFitHeight=\"0\" ss:Height=\"' + row.hpx + '\"';\n\t\tif(row.hidden) o += ' ss:Hidden=\"1\"';\n\t}\n\treturn o + '>';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array<string>*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"</Row>\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Names>\" + t + \"</Names>\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Table>\" + t + \"</Table>\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array<string>*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns':      XLMLNS.ss,\n\t\t'xmlns:o':    XLMLNS.o,\n\t\t'xmlns:x':    XLMLNS.x,\n\t\t'xmlns:ss':   XLMLNS.ss,\n\t\t'xmlns:dt':   XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue          0x003c\n\t- 2.4.59 ContinueBigName   0x043c\n\t- 2.4.60 ContinueFrt       0x0812\n\t- 2.4.61 ContinueFrt11     0x0875\n\t- 2.4.62 ContinueFrt12     0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array<string>*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval =  1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval =  1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i<wb.SheetNames.length;++i) if(wb.SheetNames[i] == o.sheet) idx=i;\n\tif(idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet) throw new Error(\"Sheet not found: \" + o.sheet);\n\twrite_biff_rec(ba, (o.biff == 4 ? 0x0409 : (o.biff == 3 ? 0x0209 : 0x0009)), write_BOF(wb, 0x10, o));\n\t/* ... */\n\twrite_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);\n\t/* ... */\n\twrite_biff_rec(ba, 0x000A);\n\treturn ba.end();\n}\n\nfunction write_FONTS_biff8(ba, data, opts) {\n\twrite_biff_rec(ba, 0x0031 /* Font */, write_Font({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Arial\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}, opts));\n}\n\n\nfunction write_FMTS_biff8(ba, NF/*:?SSFTable*/, opts) {\n\tif(!NF) return;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_biff_rec(ba, 0x041E /* Format */, write_Format(i, NF[i], opts));\n\t});\n}\n\nfunction write_FEAT(ba, ws) {\n\t/* [MS-XLS] 2.4.112 */\n\tvar o = new_buf(19);\n\to.write_shift(4, 0x867); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 1); o.write_shift(4, 0);\n\twrite_biff_rec(ba, 0x0867 /* FeatHdr */, o);\n\t/* [MS-XLS] 2.4.111 */\n\to = new_buf(39);\n\to.write_shift(4, 0x868); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 0); o.write_shift(4, 0);\n\to.write_shift(2, 1); o.write_shift(4, 4); o.write_shift(2, 0);\n\twrite_Ref8U(safe_decode_range(ws['!ref']||\"A1\"), o);\n\to.write_shift(4, 4);\n\twrite_biff_rec(ba, 0x0868 /* Feat */, o);\n}\n\nfunction write_CELLXFS_biff8(ba, opts) {\n\tfor(var i = 0; i < 16; ++i) write_biff_rec(ba, 0x00e0 /* XF */, write_XF({numFmtId:0, style:true}, 0, opts));\n\topts.cellXfs.forEach(function(c) {\n\t\twrite_biff_rec(ba, 0x00e0 /* XF */, write_XF(c, 0, opts));\n\t});\n}\n\nfunction write_ws_biff8_hlinks(ba/*:BufArray*/, ws) {\n\tfor(var R=0; R<ws['!links'].length; ++R) {\n\t\tvar HL = ws['!links'][R];\n\t\twrite_biff_rec(ba, 0x01b8 /* HLink */, write_HLink(HL));\n\t\tif(HL[1].Tooltip) write_biff_rec(ba, 0x0800 /* HLinkTooltip */, write_HLinkTooltip(HL));\n\t}\n\tdelete ws['!links'];\n}\n\nfunction write_ws_cols_biff8(ba, cols) {\n\tif(!cols) return;\n\tvar cnt = 0;\n\tcols.forEach(function(col, idx) {\n\t\tif(++cnt <= 256 && col) {\n\t\t\twrite_biff_rec(ba, 0x007d /* ColInfo */, write_ColInfo(col_obj_w(idx, col), idx));\n\t\t}\n\t});\n}\n\nfunction write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts) {\n\tvar os = 16 + get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.v == null && !cell.bf) {\n\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t\treturn;\n\t}\n\tif(cell.bf) write_biff_rec(ba, 0x0006 /* Formula */, write_Formula(cell, R, C, opts, os));\n\telse switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\t/* TODO: emit RK as appropriate */\n\t\t\twrite_biff_rec(ba, 0x0203 /* Number */, write_Number(R, C, v, os, opts));\n\t\t\tbreak;\n\t\tcase 'b': case 'e':\n\t\t\twrite_biff_rec(ba, 0x0205 /* BoolErr */, write_BoolErr(R, C, cell.v, os, opts, cell.t));\n\t\t\tbreak;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvar isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);\n\t\t\t\twrite_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));\n\t\t\t} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||\"\").slice(0,255), os, opts));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t}\n}\n\n/* [MS-XLS] 2.1.7.20.5 */\nfunction write_ws_biff8(idx/*:number*/, opts, wb/*:Workbook*/) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheet/*:WBWSProp*/ = ((_WB.Sheets||[])[idx]||{}/*:any*/);\n\tvar dense = Array.isArray(ws);\n\tvar b8 = opts.biff == 8;\n\tvar ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array<WBWSProp>*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255).  Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(/<!--.*?-->/g, \"\");\n\tvar mtch/*:any*/ = str.match(/<table/i);\n\tif(!mtch) throw new Error(\"Invalid HTML: could not find <table>\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?<tr[^>]*>)/i, \"<tr>\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array<Range>*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"<tr\") { ++R; if(opts.sheetRows && opts.sheetRows <= R) { --R; break; } C = 0; continue; }\n\t\tif(hd != \"<td\" && hd != \"<th\") continue;\n\t\tvar cells = row.split(/<\\/t[dh]>/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/<t[dh]/i)) continue;\n\t\t\tvar m = cell, cc = 0;\n\t\t\t/* TODO: parse styles etc */\n\t\t\twhile(m.charAt(0) == \"<\" && (cc = m.indexOf(\">\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array<Range>*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array<string>*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '<span contenteditable=\"true\">' + w + '</span>';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '<a href=\"' + cell.l.Target +'\">' + w + '</a>';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"<tr>\";\n\treturn preamble + oo.join(\"\") + \"</tr>\";\n}\n\nvar HTML_BEGIN = '<html><head><meta charset=\"utf-8\"/><title>SheetJS Table Export</title></head><body>';\nvar HTML_END = '</body></html>';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/<table[\\s\\S]*?>[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find <table>\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\treturn out.join(\"\") + '<table' + (o && o.id ? ' id=\"' + o.id + '\"' : \"\") + '>';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array<string>*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"</table>\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection<HTMLTableRowElement>*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array<Range>*/ = [], midx = 0;\n\tvar rowinfo/*:Array<RowInfo>*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection<HTMLTableCellElement>*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used.  Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new <a> */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array<any>*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(/<text:s\\/>/g,\" \")\n\t\t.replace(/<text:s text:c=\"(\\d+)\"\\/>/g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/<text:tab[^>]*\\/>/g,\"\\t\")\n\t\t.replace(/<text:line-break\\/>/g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday:           [\"d\",   \"dd\"],\n\tmonth:         [\"m\",   \"mm\"],\n\tyear:          [\"y\",   \"yy\"],\n\thours:         [\"h\",   \"hh\"],\n\tminutes:       [\"m\",   \"mm\"],\n\tseconds:       [\"s\",   \"ss\"],\n\t\"am-pm\":       [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera:           [\"e\",   \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter:       [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array<any>*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array<string>*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array<Range>*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array<RowInfo>*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 <table:table>\n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 <table:table-row-group>\n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 <table:table-row>\n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 <table:covered-table-cell>\n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 <table:table-cell>\n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: <office:document> is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 <office:document-content>\n\t\t\tcase 'spreadsheet': case '主体': // 3.7 <office:spreadsheet>\n\t\t\tcase 'scripts': // 3.12 <office:scripts>\n\t\t\tcase 'styles': // TODO <office:styles>\n\t\t\tcase 'font-face-decls': // 3.14 <office:font-face-decls>\n\t\t\tcase 'master-styles': // 3.15.4 <office:master-styles> -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 <office:annotation>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 <dc:creator>\n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: <office:meta> <uof:元数据> FODS/UOF\n\t\t\tcase 'settings': // TODO: <office:settings>\n\t\t\tcase 'config-item-set': // TODO: <office:config-item-set>\n\t\t\tcase 'config-item-map-indexed': // TODO: <office:config-item-map-indexed>\n\t\t\tcase 'config-item-map-entry': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'config-item-map-named': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'shapes': // 9.2.8 <table:shapes>\n\t\t\tcase 'frame': // 10.4.2 <draw:frame>\n\t\t\tcase 'text-box': // 10.4.3 <draw:text-box>\n\t\t\tcase 'image': // 10.4.4 <draw:image>\n\t\t\tcase 'data-pilot-tables': // 9.6.2 <table:data-pilot-tables>\n\t\t\tcase 'list-style': // 16.30 <text:list-style>\n\t\t\tcase 'form': // 13.13 <form:form>\n\t\t\tcase 'dde-links': // 9.8 <table:dde-links>\n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: <number:scientific-number>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: <number:currency-symbol>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: <number:currency-style>\n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 <number:number-style>\n\t\t\tcase 'percentage-style': // 16.27.9 <number:percentage-style>\n\t\t\tcase 'date-style': // 16.27.10 <number:date-style>\n\t\t\tcase 'time-style': // 16.27.18 <number:time-style>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 <office:script>\n\t\t\tcase 'libraries': break; // TODO: <ooo:libraries>\n\t\t\tcase 'automatic-styles': break; // 3.15.3 <office:automatic-styles>\n\n\t\t\tcase 'default-style': // TODO: <style:default-style>\n\t\t\tcase 'page-layout': break; // TODO: <style:page-layout>\n\t\t\tcase 'style': // 16.2 <style:style>\n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 <style:map>\n\t\t\tcase 'font-face': break; // 16.21 <style:font-face>\n\n\t\t\tcase 'paragraph-properties': break; // 17.6 <style:paragraph-properties>\n\t\t\tcase 'table-properties': break; // 17.15 <style:table-properties>\n\t\t\tcase 'table-column-properties': break; // 17.16 <style:table-column-properties>\n\t\t\tcase 'table-row-properties': break; // 17.17 <style:table-row-properties>\n\t\t\tcase 'table-cell-properties': break; // 17.18 <style:table-cell-properties>\n\n\t\t\tcase 'number': // 16.27.3 <number:number>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 <number:fraction>\n\n\t\t\tcase 'day': // 16.27.11 <number:day>\n\t\t\tcase 'month': // 16.27.12 <number:month>\n\t\t\tcase 'year': // 16.27.13 <number:year>\n\t\t\tcase 'era': // 16.27.14 <number:era>\n\t\t\tcase 'day-of-week': // 16.27.15 <number:day-of-week>\n\t\t\tcase 'week-of-year': // 16.27.16 <number:week-of-year>\n\t\t\tcase 'quarter': // 16.27.17 <number:quarter>\n\t\t\tcase 'hours': // 16.27.19 <number:hours>\n\t\t\tcase 'minutes': // 16.27.20 <number:minutes>\n\t\t\tcase 'seconds': // 16.27.21 <number:seconds>\n\t\t\tcase 'am-pm': // 16.27.22 <number:am-pm>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 <number:boolean-style>\n\t\t\tcase 'boolean': break; // 16.27.24 <number:boolean>\n\t\t\tcase 'text-style': break; // 16.27.25 <number:text-style>\n\t\t\tcase 'text': // 16.27.26 <number:text>\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 <table:named-range>\n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 <number:text-content>\n\t\t\tcase 'text-properties': break; // 16.27.27 <style:text-properties>\n\t\t\tcase 'embedded-text': break; // 16.27.4 <number:embedded-text>\n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 <table:table-column>\n\t\t\tcase 'table-header-rows': break; // 9.1.7 <table:table-header-rows>\n\t\t\tcase 'table-rows': break; // 9.1.12 <table:table-rows>\n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 <table:table-column-group>\n\t\t\tcase 'table-header-columns': break; // 9.1.11 <table:table-header-columns>\n\t\t\tcase 'table-columns': break; // 9.1.12 <table:table-columns>\n\n\t\t\tcase 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 <style:graphic-properties>\n\t\t\tcase 'calculation-settings': break; // 9.4.1 <table:calculation-settings>\n\t\t\tcase 'named-expressions': break; // 9.4.11 <table:named-expressions>\n\t\t\tcase 'label-range': break; // 9.4.9 <table:label-range>\n\t\t\tcase 'label-ranges': break; // 9.4.10 <table:label-ranges>\n\t\t\tcase 'named-expression': break; // 9.4.13 <table:named-expression>\n\t\t\tcase 'sort': break; // 9.4.19 <table:sort>\n\t\t\tcase 'sort-by': break; // 9.4.20 <table:sort-by>\n\t\t\tcase 'sort-groups': break; // 9.4.22 <table:sort-groups>\n\n\t\t\tcase 'tab': break; // 6.1.4 <text:tab>\n\t\t\tcase 'line-break': break; // 6.1.5 <text:line-break>\n\t\t\tcase 'span': break; // 6.1.7 <text:span>\n\t\t\tcase 'p': case '文本串': // 5.1.3 <text:p>\n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // <text:p>\n\t\t\tcase 's': break; // <text:s>\n\n\t\t\tcase 'database-range': // 9.4.15 <table:database-range>\n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 <draw:object>\n\t\t\tcase 'title': case '标题': break; // <*:title> OR <uof:标题>\n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 <table:iteration>\n\t\t\tcase 'content-validations': break; // 9.4.4 <table:\n\t\t\tcase 'content-validation': break; // 9.4.5 <table:\n\t\t\tcase 'help-message': break; // 9.4.6 <table:\n\t\t\tcase 'error-message': break; // 9.4.7 <table:\n\t\t\tcase 'database-ranges': break; // 9.4.14 <table:database-ranges>\n\t\t\tcase 'filter': break; // 9.5.2 <table:filter>\n\t\t\tcase 'filter-and': break; // 9.5.3 <table:filter-and>\n\t\t\tcase 'filter-or': break; // 9.5.4 <table:filter-or>\n\t\t\tcase 'filter-condition': break; // 9.5.5 <table:filter-condition>\n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 <text:\n\t\t\tcase 'list-level-style-number': break; // 16.32 <text:\n\t\t\tcase 'list-level-properties': break; // 17.19 <style:\n\n\t\t\t/* 7.3 Document Fields */\n\t\t\tcase 'sender-firstname': // 7.3.6.2\n\t\t\tcase 'sender-lastname': // 7.3.6.3\n\t\t\tcase 'sender-initials': // 7.3.6.4\n\t\t\tcase 'sender-title': // 7.3.6.5\n\t\t\tcase 'sender-position': // 7.3.6.6\n\t\t\tcase 'sender-email': // 7.3.6.7\n\t\t\tcase 'sender-phone-private': // 7.3.6.8\n\t\t\tcase 'sender-fax': // 7.3.6.9\n\t\t\tcase 'sender-company': // 7.3.6.10\n\t\t\tcase 'sender-phone-work': // 7.3.6.11\n\t\t\tcase 'sender-street': // 7.3.6.12\n\t\t\tcase 'sender-city': // 7.3.6.13\n\t\t\tcase 'sender-postal-code': // 7.3.6.14\n\t\t\tcase 'sender-country': // 7.3.6.15\n\t\t\tcase 'sender-state-or-province': // 7.3.6.16\n\t\t\tcase 'author-name': // 7.3.7.1\n\t\t\tcase 'author-initials': // 7.3.7.2\n\t\t\tcase 'chapter': // 7.3.8\n\t\t\tcase 'file-name': // 7.3.9\n\t\t\tcase 'template-name': // 7.3.9\n\t\t\tcase 'sheet-name': // 7.3.9\n\t\t\t\tbreak;\n\n\t\t\tcase 'event-listener':\n\t\t\t\tbreak;\n\t\t\t/* TODO: FODS Properties */\n\t\t\tcase 'initial-creator':\n\t\t\tcase 'creation-date':\n\t\t\tcase 'print-date':\n\t\t\tcase 'generator':\n\t\t\tcase 'document-statistic':\n\t\t\tcase 'user-defined':\n\t\t\tcase 'editing-duration':\n\t\t\tcase 'editing-cycles':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: FODS Config */\n\t\t\tcase 'config-item':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: style tokens */\n\t\t\tcase 'page-number': break; // TODO <text:page-number>\n\t\t\tcase 'page-count': break; // TODO <text:page-count>\n\t\t\tcase 'time': break; // TODO <text:time>\n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 <table:\n\t\t\tcase 'detective': break; // 9.3.2 <table:\n\t\t\tcase 'operation': break; // 9.3.3 <table:\n\t\t\tcase 'highlighted-range': break; // 9.3.4 <table:\n\n\t\t\t/* 9.6 Data Pilot Tables <table: */\n\t\t\tcase 'data-pilot-table': // 9.6.3\n\t\t\tcase 'source-cell-range': // 9.6.5\n\t\t\tcase 'source-service': // 9.6.6\n\t\t\tcase 'data-pilot-field': // 9.6.7\n\t\t\tcase 'data-pilot-level': // 9.6.8\n\t\t\tcase 'data-pilot-subtotals': // 9.6.9\n\t\t\tcase 'data-pilot-subtotal': // 9.6.10\n\t\t\tcase 'data-pilot-members': // 9.6.11\n\t\t\tcase 'data-pilot-member': // 9.6.12\n\t\t\tcase 'data-pilot-display-info': // 9.6.13\n\t\t\tcase 'data-pilot-sort-info': // 9.6.14\n\t\t\tcase 'data-pilot-layout-info': // 9.6.15\n\t\t\tcase 'data-pilot-field-reference': // 9.6.16\n\t\t\tcase 'data-pilot-groups': // 9.6.17\n\t\t\tcase 'data-pilot-group': // 9.6.18\n\t\t\tcase 'data-pilot-group-member': // 9.6.19\n\t\t\t\tbreak;\n\n\t\t\t/* 10.3 Drawing Shapes */\n\t\t\tcase 'rect': // 10.3.2\n\t\t\t\tbreak;\n\n\t\t\t/* 14.6 DDE Connections */\n\t\t\tcase 'dde-connection-decls': // 14.6.2 <text:\n\t\t\tcase 'dde-connection-decl': // 14.6.3 <text:\n\t\t\tcase 'dde-link': // 14.6.4 <table:\n\t\t\tcase 'dde-source': // 14.6.5 <office:\n\t\t\t\tbreak;\n\n\t\t\tcase 'properties': break; // 13.7 <form:properties>\n\t\t\tcase 'property': break; // 13.8 <form:property>\n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // <table:\n\t\t\tcase 'office-document-common-attrs': break; // bare\n\t\t\tdefault: switch(Rn[2]) {\n\t\t\t\tcase 'dc:':       // TODO: properties\n\t\t\t\tcase 'calcext:':  // ignore undocumented extensions\n\t\t\t\tcase 'loext:':    // ignore undocumented extensions\n\t\t\t\tcase 'ooo:':      // ignore undocumented extensions\n\t\t\t\tcase 'chartooo:': // ignore undocumented extensions\n\t\t\t\tcase 'draw:':     // TODO: drawing\n\t\t\t\tcase 'style:':    // TODO: styles\n\t\t\t\tcase 'chart:':    // TODO: charts\n\t\t\t\tcase 'form:':     // TODO: forms\n\t\t\t\tcase 'uof:':      // TODO: uof\n\t\t\t\tcase '表:':       // TODO: uof\n\t\t\t\tcase '字:':       // TODO: uof\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts.WTF) throw new Error(Rn);\n\t\t\t}\n\t\t}\n\t\tvar out/*:Workbook*/ = ({\n\t\t\tSheets: Sheets,\n\t\t\tSheetNames: SheetNames,\n\t\t\tWorkbook: WB\n\t\t}/*:any*/);\n\t\tif(opts.bookSheets) delete /*::(*/out/*:: :any)*/.Sheets;\n\t\treturn out;\n}\n\nfunction parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\topts = opts || ({}/*:any*/);\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts);\n\tvar content = getzipstr(zip, 'content.xml');\n\tif(!content) throw new Error(\"Missing content.xml in ODS / UOF file\");\n\tvar wb = parse_content_xml(utf8read(content), opts);\n\tif(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml'));\n\treturn wb;\n}\nfunction parse_fods(data/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treturn parse_content_xml(data, opts);\n}\n\n/* OpenDocument */\nvar write_styles_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\tvar master_styles = [\n\t\t'<office:master-styles>',\n\t\t\t'<style:master-page style:name=\"mp1\" style:page-layout-name=\"mp1\">',\n\t\t\t\t'<style:header/>',\n\t\t\t\t'<style:header-left style:display=\"false\"/>',\n\t\t\t\t'<style:footer/>',\n\t\t\t\t'<style:footer-left style:display=\"false\"/>',\n\t\t\t'</style:master-page>',\n\t\t'</office:master-styles>'\n\t].join(\"\");\n\n\tvar payload = '<office:document-styles ' + wxt_helper({\n\t\t'xmlns:office':   \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t'xmlns:table':    \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t'xmlns:style':    \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t'xmlns:text':     \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t'xmlns:draw':     \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t'xmlns:fo':       \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t'xmlns:xlink':    \"http://www.w3.org/1999/xlink\",\n\t\t'xmlns:dc':       \"http://purl.org/dc/elements/1.1/\",\n\t\t'xmlns:number':   \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t'xmlns:svg':      \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t'xmlns:of':       \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t'office:version': \"1.2\"\n\t}) + '>' + master_styles + '</office:document-styles>';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/  +/g, function($$){return '<text:s text:c=\"'+$$.length+'\"/>';})\n\t\t\t.replace(/\\t/g, \"<text:tab/>\")\n\t\t\t.replace(/\\n/g, \"</text:p><text:p>\")\n\t\t\t.replace(/^ /, \"<text:s/>\").replace(/ $/, \"<text:s/>\");\n\t};\n\n\tvar null_cell_xml = '          <table:table-cell />\\n';\n\tvar covered_cell_xml = '          <table:covered-table-cell/>\\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array<string>*/ = [];\n\t\to.push('      <table:table table:name=\"' + escapexml(wb.SheetNames[i]) + '\" table:style-name=\"ta1\">\\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push('        <table:table-column' + (ws[\"!cols\"][C] ? ' table:style-name=\"co' + ws[\"!cols\"][C].ods + '\"' : '') + '></table:table-column>\\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '></table:table-row>\\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '>\\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] =    (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] =    (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&amp;\")});\n\t\t\t\t}\n\t\t\t\to.push('          ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push('        </table:table-row>\\n');\n\t\t}\n\t\to.push('      </table:table>\\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array<string>*/, wb) {\n\t\to.push(' <office:automatic-styles>\\n');\n\n\t\to.push('  <number:date-style style:name=\"N37\" number:automatic-order=\"true\">\\n');\n\t\to.push('   <number:month number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:day number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:year/>\\n');\n\t\to.push('  </number:date-style>\\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"co' + cidx + '\" style:family=\"table-column\">\\n');\n\t\t\t\t\to.push('   <style:table-column-properties fo:break-before=\"auto\" style:column-width=\"' + w + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"ro' + ridx + '\" style:family=\"table-row\">\\n');\n\t\t\t\t\to.push('   <style:table-row-properties fo:break-before=\"auto\" style:row-height=\"' + h + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push('  <style:style style:name=\"ta1\" style:family=\"table\" style:master-page-name=\"mp1\">\\n');\n\t\to.push('   <style:table-properties table:display=\"true\" style:writing-mode=\"lr-tb\"/>\\n');\n\t\to.push('  </style:style>\\n');\n\n\t\t/* table cells, text */\n\t\to.push('  <style:style style:name=\"ce1\" style:family=\"table-cell\" style:parent-style-name=\"Default\" style:data-style-name=\"N37\"/>\\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' </office:automatic-styles>\\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office':       \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table':        \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style':        \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text':         \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw':         \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo':           \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink':        \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc':           \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta':         \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number':       \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg':          \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart':        \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d':         \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math':         \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form':         \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script':       \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo':          \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow':         \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc':         \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom':          \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms':       \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd':          \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi':          \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet':        \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt':          \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of':           \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml':        \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl':        \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo':     \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo':      \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext':      \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext':        \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field':        \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx':        \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t':        \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version':     \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config':    \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('<office:document' + attr + fods + '>\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('<office:document-content' + attr  + '>\\n');\n\t\t// o.push('  <office:scripts/>\\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push('  <office:body>\\n');\n\t\to.push('    <office:spreadsheet>\\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push('    </office:spreadsheet>\\n');\n\t\to.push('  </office:body>\\n');\n\t\tif(opts.bookType == \"fods\") o.push('</office:document>');\n\t\telse o.push('</office:document-content>');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array<Array<string> >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n  return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n  return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n  return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n  outer:\n    for (var L = 0; L <= body.length - search.length; ++L) {\n      for (var j = 0; j < search.length; ++j)\n        if (body[L + j] != search[j])\n          continue outer;\n      return true;\n    }\n  return false;\n}\nfunction u8concat(u8a) {\n  var len = u8a.reduce(function(acc, x) {\n    return acc + x.length;\n  }, 0);\n  var out = new Uint8Array(len);\n  var off = 0;\n  u8a.forEach(function(u8) {\n    out.set(u8, off);\n    off += u8.length;\n  });\n  return out;\n}\nfunction popcnt(x) {\n  x -= x >> 1 & 1431655765;\n  x = (x & 858993459) + (x >> 2 & 858993459);\n  return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n  var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n  var mantissa = buf[offset + 14] & 1;\n  for (var j = offset + 13; j >= offset; --j)\n    mantissa = mantissa * 256 + buf[j];\n  return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n  var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n  var mantissa = value / Math.pow(10, exp - 6176);\n  buf[offset + 15] |= exp >> 7;\n  buf[offset + 14] |= (exp & 127) << 1;\n  for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n    buf[offset + i] = mantissa & 255;\n  buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n  var l = ptr ? ptr[0] : 0;\n  var usz = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      usz |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 28);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 35);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 42);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n    }\n  if (ptr)\n    ptr[0] = l;\n  return usz;\n}\nfunction write_varint49(v) {\n  var usz = new Uint8Array(7);\n  usz[0] = v & 127;\n  var L = 1;\n  sz:\n    if (v > 127) {\n      usz[L - 1] |= 128;\n      usz[L] = v >> 7 & 127;\n      ++L;\n      if (v <= 16383)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 14 & 127;\n      ++L;\n      if (v <= 2097151)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 21 & 127;\n      ++L;\n      if (v <= 268435455)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 256 >>> 21 & 127;\n      ++L;\n      if (v <= 34359738367)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 65536 >>> 21 & 127;\n      ++L;\n      if (v <= 4398046511103)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 16777216 >>> 21 & 127;\n      ++L;\n    }\n  return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n  var l = 0, i32 = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      i32 |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 28;\n    }\n  return i32;\n}\nfunction parse_shallow(buf) {\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var off = ptr[0];\n    var num = parse_varint49(buf, ptr);\n    var type = num & 7;\n    num = Math.floor(num / 8);\n    var len = 0;\n    var res;\n    if (num == 0)\n      break;\n    switch (type) {\n      case 0:\n        {\n          var l = ptr[0];\n          while (buf[ptr[0]++] >= 128)\n            ;\n          res = buf.slice(l, ptr[0]);\n        }\n        break;\n      case 5:\n        len = 4;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 1:\n        len = 8;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 2:\n        len = parse_varint49(buf, ptr);\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 3:\n      case 4:\n      default:\n        throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n    }\n    var v = { data: res, type: type };\n    if (out[num] == null)\n      out[num] = [v];\n    else\n      out[num].push(v);\n  }\n  return out;\n}\nfunction write_shallow(proto) {\n  var out = [];\n  proto.forEach(function(field, idx) {\n    field.forEach(function(item) {\n      if (!item.data)\n        return;\n      out.push(write_varint49(idx * 8 + item.type));\n      if (item.type == 2)\n        out.push(write_varint49(item.data.length));\n      out.push(item.data);\n    });\n  });\n  return u8concat(out);\n}\nfunction mappa(data, cb) {\n  return (data == null ? void 0 : data.map(function(d) {\n    return cb(d.data);\n  })) || [];\n}\nfunction parse_iwa_file(buf) {\n  var _a;\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var len = parse_varint49(buf, ptr);\n    var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n    ptr[0] += len;\n    var res = {\n      id: varint_to_i32(ai[1][0].data),\n      messages: []\n    };\n    ai[2].forEach(function(b) {\n      var mi = parse_shallow(b.data);\n      var fl = varint_to_i32(mi[3][0].data);\n      res.messages.push({\n        meta: mi,\n        data: buf.slice(ptr[0], ptr[0] + fl)\n      });\n      ptr[0] += fl;\n    });\n    if ((_a = ai[3]) == null ? void 0 : _a[0])\n      res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n    out.push(res);\n  }\n  return out;\n}\nfunction write_iwa_file(ias) {\n  var bufs = [];\n  ias.forEach(function(ia) {\n    var ai = [];\n    ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n    ai[2] = [];\n    if (ia.merge != null)\n      ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n    var midata = [];\n    ia.messages.forEach(function(mi) {\n      midata.push(mi.data);\n      mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n      ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n    });\n    var aipayload = write_shallow(ai);\n    bufs.push(write_varint49(aipayload.length));\n    bufs.push(aipayload);\n    midata.forEach(function(mid) {\n      return bufs.push(mid);\n    });\n  });\n  return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n  if (type != 0)\n    throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n  var ptr = [0];\n  var usz = parse_varint49(buf, ptr);\n  var chunks = [];\n  while (ptr[0] < buf.length) {\n    var tag = buf[ptr[0]] & 3;\n    if (tag == 0) {\n      var len = buf[ptr[0]++] >> 2;\n      if (len < 60)\n        ++len;\n      else {\n        var c = len - 59;\n        len = buf[ptr[0]];\n        if (c > 1)\n          len |= buf[ptr[0] + 1] << 8;\n        if (c > 2)\n          len |= buf[ptr[0] + 2] << 16;\n        if (c > 3)\n          len |= buf[ptr[0] + 3] << 24;\n        len >>>= 0;\n        len++;\n        ptr[0] += c;\n      }\n      chunks.push(buf.slice(ptr[0], ptr[0] + len));\n      ptr[0] += len;\n      continue;\n    } else {\n      var offset = 0, length = 0;\n      if (tag == 1) {\n        length = (buf[ptr[0]] >> 2 & 7) + 4;\n        offset = (buf[ptr[0]++] & 224) << 3;\n        offset |= buf[ptr[0]++];\n      } else {\n        length = (buf[ptr[0]++] >> 2) + 1;\n        if (tag == 2) {\n          offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n          ptr[0] += 2;\n        } else {\n          offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n          ptr[0] += 4;\n        }\n      }\n      chunks = [u8concat(chunks)];\n      if (offset == 0)\n        throw new Error(\"Invalid offset 0\");\n      if (offset > chunks[0].length)\n        throw new Error(\"Invalid offset beyond length\");\n      if (length >= offset) {\n        chunks.push(chunks[0].slice(-offset));\n        length -= offset;\n        while (length >= chunks[chunks.length - 1].length) {\n          chunks.push(chunks[chunks.length - 1]);\n          length -= chunks[chunks.length - 1].length;\n        }\n      }\n      chunks.push(chunks[0].slice(-offset, -offset + length));\n    }\n  }\n  var o = u8concat(chunks);\n  if (o.length != usz)\n    throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n  return o;\n}\nfunction decompress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var t = buf[l++];\n    var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n    l += 3;\n    out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n    l += len;\n  }\n  if (l !== buf.length)\n    throw new Error(\"data is not a valid framed stream!\");\n  return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var c = Math.min(buf.length - l, 268435455);\n    var frame = new Uint8Array(4);\n    out.push(frame);\n    var usz = write_varint49(c);\n    var L = usz.length;\n    out.push(usz);\n    if (c <= 60) {\n      L++;\n      out.push(new Uint8Array([c - 1 << 2]));\n    } else if (c <= 256) {\n      L += 2;\n      out.push(new Uint8Array([240, c - 1 & 255]));\n    } else if (c <= 65536) {\n      L += 3;\n      out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n    } else if (c <= 16777216) {\n      L += 4;\n      out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n    } else if (c <= 4294967296) {\n      L += 5;\n      out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n    }\n    out.push(buf.slice(l, l + c));\n    L += c;\n    frame[0] = 0;\n    frame[1] = L & 255;\n    frame[2] = L >> 8 & 255;\n    frame[3] = L >> 16 & 255;\n    l += c;\n  }\n  return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(4, true);\n  var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n  var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 512) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n  if (flags & 16) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 32) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 64) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  var ret;\n  switch (buf[2]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: ieee };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else if (sidx > -1)\n          ret = { t: \"s\", v: sst[sidx] };\n        else if (!isNaN(ieee))\n          ret = { t: \"n\", v: ieee };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n      }\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(8, true);\n  var data_offset = 12;\n  var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 1) {\n    d128 = readDecimal128LE(buf, data_offset);\n    data_offset += 16;\n  }\n  if (flags & 2) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 4) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  if (flags & 8) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 16) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  var ret;\n  switch (buf[1]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: d128 };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n      }\n      break;\n    case 10:\n      ret = { t: \"n\", v: d128 };\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction write_new_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 5;\n  switch (cell.t) {\n    case \"n\":\n      out[1] = 2;\n      writeDecimal128LE(out, l, cell.v);\n      flags |= 1;\n      l += 16;\n      break;\n    case \"b\":\n      out[1] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 2;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[1] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 8;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(8, flags, true);\n  return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 3;\n  switch (cell.t) {\n    case \"n\":\n      out[2] = 2;\n      dv.setFloat64(l, cell.v, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"b\":\n      out[2] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[2] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 16;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(4, flags, true);\n  return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n  switch (buf[0]) {\n    case 0:\n    case 1:\n    case 2:\n    case 3:\n      return parse_old_storage(buf, sst, rsst, buf[0]);\n    case 5:\n      return parse_new_storage(buf, sst, rsst);\n    default:\n      throw new Error(\"Unsupported payload version \".concat(buf[0]));\n  }\n}\nfunction parse_TSP_Reference(buf) {\n  var pb = parse_shallow(buf);\n  return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n  var out = [];\n  out[1] = [{ type: 0, data: write_varint49(idx) }];\n  return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n  var pb = parse_shallow(root.data);\n  var type = varint_to_i32(pb[1][0].data);\n  var entries = pb[3];\n  var data = [];\n  (entries || []).forEach(function(entry) {\n    var le = parse_shallow(entry.data);\n    var key = varint_to_i32(le[1][0].data) >>> 0;\n    switch (type) {\n      case 1:\n        data[key] = u8str(le[3][0].data);\n        break;\n      case 8:\n        {\n          var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n          var rtp = parse_shallow(rt.data);\n          var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n          var mtype = varint_to_i32(rtpref.meta[1][0].data);\n          if (mtype != 2001)\n            throw new Error(\"2000 unexpected reference to \".concat(mtype));\n          var tswpsa = parse_shallow(rtpref.data);\n          data[key] = tswpsa[3].map(function(x) {\n            return u8str(x.data);\n          }).join(\"\");\n        }\n        break;\n    }\n  });\n  return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n  var pb = parse_shallow(u8);\n  var R = varint_to_i32(pb[1][0].data) >>> 0;\n  var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n  var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n  var used_storage_u8, used_storage;\n  if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n    used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n    used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n  } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n    used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n    used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n  } else\n    throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n  var width = wide_offsets ? 4 : 1;\n  var used_storage_offsets = u8_to_dataview(used_storage_u8);\n  var offsets = [];\n  for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n    var off = used_storage_offsets.getUint16(C * 2, true);\n    if (off < 65535)\n      offsets.push([C, off]);\n  }\n  if (offsets.length != cnt)\n    throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n  var cells = [];\n  for (C = 0; C < offsets.length - 1; ++C)\n    cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n  if (offsets.length >= 1)\n    cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n  return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n  var ri = mappa(pb[5], function(u8) {\n    return parse_TST_TileRowInfo(u8, storage);\n  });\n  return {\n    nrows: varint_to_i32(pb[4][0].data) >>> 0,\n    data: ri.reduce(function(acc, x) {\n      if (!acc[x.R])\n        acc[x.R] = [];\n      x.cells.forEach(function(cell, C) {\n        if (acc[x.R][C])\n          throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n        acc[x.R][C] = cell;\n      });\n      return acc;\n    }, [])\n  };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n  range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n  if (range.e.r < 0)\n    throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n  range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n  if (range.e.c < 0)\n    throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n  ws[\"!ref\"] = encode_range(range);\n  var store = parse_shallow(pb[4][0].data);\n  var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n  var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n  var tile = parse_shallow(store[3][0].data);\n  var _R = 0;\n  tile[1].forEach(function(t) {\n    var tl = parse_shallow(t.data);\n    var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n    var mtype = varint_to_i32(ref.meta[1][0].data);\n    if (mtype != 6002)\n      throw new Error(\"6001 unexpected reference to \".concat(mtype));\n    var _tile = parse_TST_Tile(M, ref);\n    _tile.data.forEach(function(row, R) {\n      row.forEach(function(buf, C) {\n        var addr = encode_cell({ r: _R + R, c: C });\n        var res = parse_cell_storage(buf, sst, rsst);\n        if (res)\n          ws[addr] = res;\n      });\n    });\n    _R += _tile.nrows;\n  });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n  var pb = parse_shallow(root.data);\n  var out = { \"!ref\": \"A1\" };\n  var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n  var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n  if (mtype != 6001)\n    throw new Error(\"6000 unexpected reference to \".concat(mtype));\n  parse_TST_TableModelArchive(M, tableref[0], out);\n  return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var out = {\n    name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n    sheets: []\n  };\n  var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n  shapeoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 6e3)\n        out.sheets.push(parse_TST_TableInfoArchive(M, m));\n    });\n  });\n  return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n  var out = book_new();\n  var pb = parse_shallow(root.data);\n  var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n  sheetoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 2) {\n        var root2 = parse_TN_SheetArchive(M, m);\n        root2.sheets.forEach(function(sheet, idx) {\n          book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n        });\n      }\n    });\n  });\n  if (out.SheetNames.length == 0)\n    throw new Error(\"Empty NUMBERS file\");\n  return out;\n}\nfunction parse_numbers_iwa(cfb) {\n  var _a, _b, _c, _d;\n  var M = {}, indices = [];\n  cfb.FullPaths.forEach(function(p) {\n    if (p.match(/\\.iwpv2/))\n      throw new Error(\"Unsupported password protection\");\n  });\n  cfb.FileIndex.forEach(function(s) {\n    if (!s.name.match(/\\.iwa$/))\n      return;\n    var o;\n    try {\n      o = decompress_iwa_file(s.content);\n    } catch (e) {\n      return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n    }\n    var packets;\n    try {\n      packets = parse_iwa_file(o);\n    } catch (e) {\n      return console.log(\"## \" + (e.message || e));\n    }\n    packets.forEach(function(packet) {\n      M[packet.id] = packet.messages;\n      indices.push(packet.id);\n    });\n  });\n  if (!indices.length)\n    throw new Error(\"File has no messages\");\n  var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n  if (!docroot)\n    indices.forEach(function(idx) {\n      M[idx].forEach(function(iwam) {\n        var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n        if (mtype == 1) {\n          if (!docroot)\n            docroot = iwam;\n          else\n            throw new Error(\"Document has multiple roots\");\n        }\n      });\n    });\n  if (!docroot)\n    throw new Error(\"Cannot find Document root\");\n  return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n  var _a, _b, _c, _d;\n  if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n    throw \"Mutation only works on post-BNC storages!\";\n  var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n  if (wide_offsets)\n    throw \"Math only works with normal offsets\";\n  var cnt = 0;\n  var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n  var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n  for (var C = 0; C < data.length; ++C) {\n    if (data[C] == null) {\n      dv.setUint16(C * 2, 65535, true);\n      _dv.setUint16(C * 2, 65535);\n      continue;\n    }\n    dv.setUint16(C * 2, last_offset, true);\n    _dv.setUint16(C * 2, _last_offset, true);\n    var celload, _celload;\n    switch (typeof data[C]) {\n      case \"string\":\n        celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n        break;\n      case \"number\":\n        celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n        break;\n      case \"boolean\":\n        celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n        break;\n      default:\n        throw new Error(\"Unsupported value \" + data[C]);\n    }\n    cell_storage.push(celload);\n    last_offset += celload.length;\n    _cell_storage.push(_celload);\n    _last_offset += _celload.length;\n    ++cnt;\n  }\n  tri[2][0].data = write_varint49(cnt);\n  for (; C < tri[7][0].data.length / 2; ++C) {\n    dv.setUint16(C * 2, 65535, true);\n    _dv.setUint16(C * 2, 65535, true);\n  }\n  tri[6][0].data = u8concat(cell_storage);\n  tri[3][0].data = u8concat(_cell_storage);\n  return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n  if (!opts || !opts.numbers)\n    throw new Error(\"Must pass a `numbers` option -- check the README\");\n  var ws = wb.Sheets[wb.SheetNames[0]];\n  if (wb.SheetNames.length > 1)\n    console.error(\"The Numbers writer currently writes only the first table\");\n  var range = decode_range(ws[\"!ref\"]);\n  range.s.r = range.s.c = 0;\n  var trunc = false;\n  if (range.e.c > 9) {\n    trunc = true;\n    range.e.c = 9;\n  }\n  if (range.e.r > 49) {\n    trunc = true;\n    range.e.r = 49;\n  }\n  if (trunc)\n    console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n  var data = sheet_to_json(ws, { range: range, header: 1 });\n  var SST = [\"~Sh33tJ5~\"];\n  data.forEach(function(row) {\n    return row.forEach(function(cell) {\n      if (typeof cell == \"string\")\n        SST.push(cell);\n    });\n  });\n  var dependents = {};\n  var indices = [];\n  var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (fi.type != 2)\n      return;\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var old_content = fi.content;\n    var raw1 = decompress_iwa_file(old_content);\n    var x2 = parse_iwa_file(raw1);\n    x2.forEach(function(packet2) {\n      indices.push(packet2.id);\n      dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n    });\n  });\n  indices.sort(function(x2, y2) {\n    return x2 - y2;\n  });\n  var indices_varint = indices.filter(function(x2) {\n    return x2 > 1;\n  }).map(function(x2) {\n    return [x2, write_varint49(x2)];\n  });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n    x2.forEach(function(ia) {\n      ia.messages.forEach(function(m) {\n        indices_varint.forEach(function(ivi) {\n          if (ia.messages.some(function(mess) {\n            return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n          })) {\n            dependents[ivi[0]].deps.push(ia.id);\n          }\n        });\n      });\n    });\n  });\n  function get_unique_msgid() {\n    for (var i = 927262; i < 2e6; ++i)\n      if (!dependents[i])\n        return i;\n    throw new Error(\"Too many messages\");\n  }\n  var entry = CFB.find(cfb, dependents[1].location);\n  var x = parse_iwa_file(decompress_iwa_file(entry.content));\n  var docroot;\n  for (var xi = 0; xi < x.length; ++xi) {\n    var packet = x[xi];\n    if (packet.id == 1)\n      docroot = packet;\n  }\n  var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  var pb = parse_shallow(docroot.messages[0].data);\n  {\n    pb[6][0].data = write_varint49(range.e.r + 1);\n    pb[7][0].data = write_varint49(range.e.c + 1);\n    var cruidsref = parse_TSP_Reference(pb[46][0].data);\n    var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n    var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n    {\n      for (var j = 0; j < _x.length; ++j) {\n        if (_x[j].id == cruidsref)\n          break;\n      }\n      if (_x[j].id != cruidsref)\n        throw \"Bad ColumnRowUIDMapArchive\";\n      var cruids = parse_shallow(_x[j].messages[0].data);\n      cruids[1] = [];\n      cruids[2] = [], cruids[3] = [];\n      for (var C = 0; C <= range.e.c; ++C) {\n        var uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n        cruids[1].push({ type: 2, data: write_shallow(uuid) });\n        cruids[2].push({ type: 0, data: write_varint49(C) });\n        cruids[3].push({ type: 0, data: write_varint49(C) });\n      }\n      cruids[4] = [];\n      cruids[5] = [], cruids[6] = [];\n      for (var R = 0; R <= range.e.r; ++R) {\n        uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n        cruids[4].push({ type: 2, data: write_shallow(uuid) });\n        cruids[5].push({ type: 0, data: write_varint49(R) });\n        cruids[6].push({ type: 0, data: write_varint49(R) });\n      }\n      _x[j].messages[0].data = write_shallow(cruids);\n    }\n    oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n    oldbucket.size = oldbucket.content.length;\n    delete pb[46];\n    var store = parse_shallow(pb[4][0].data);\n    {\n      store[7][0].data = write_varint49(range.e.r + 1);\n      var row_headers = parse_shallow(store[1][0].data);\n      var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != row_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        var base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (R = 0; R < data.length; ++R) {\n          var _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(R);\n          _bucket[4][0].data = write_varint49(data[R].length);\n          base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var col_header_ref = parse_TSP_Reference(store[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != col_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (C = 0; C <= range.e.c; ++C) {\n          _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(C);\n          _bucket[4][0].data = write_varint49(range.e.r + 1);\n          base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var sstref = parse_TSP_Reference(store[4][0].data);\n      (function() {\n        var sentry = CFB.find(cfb, dependents[sstref].location);\n        var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n        var sstroot;\n        for (var sxi = 0; sxi < sx.length; ++sxi) {\n          var packet2 = sx[sxi];\n          if (packet2.id == sstref)\n            sstroot = packet2;\n        }\n        var sstdata = parse_shallow(sstroot.messages[0].data);\n        {\n          sstdata[3] = [];\n          var newsst = [];\n          SST.forEach(function(str, i) {\n            newsst[1] = [{ type: 0, data: write_varint49(i) }];\n            newsst[2] = [{ type: 0, data: write_varint49(1) }];\n            newsst[3] = [{ type: 2, data: stru8(str) }];\n            sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n          });\n        }\n        sstroot.messages[0].data = write_shallow(sstdata);\n        var sy = write_iwa_file(sx);\n        var raw32 = compress_iwa_file(sy);\n        sentry.content = raw32;\n        sentry.size = sentry.content.length;\n      })();\n      var tile = parse_shallow(store[3][0].data);\n      {\n        var t = tile[1][0];\n        delete tile[2];\n        var tl = parse_shallow(t.data);\n        {\n          var tileref = parse_TSP_Reference(tl[2][0].data);\n          (function() {\n            var tentry = CFB.find(cfb, dependents[tileref].location);\n            var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n            var tileroot;\n            for (var sxi = 0; sxi < tx.length; ++sxi) {\n              var packet2 = tx[sxi];\n              if (packet2.id == tileref)\n                tileroot = packet2;\n            }\n            var tiledata = parse_shallow(tileroot.messages[0].data);\n            {\n              delete tiledata[6];\n              delete tile[7];\n              var rowload = new Uint8Array(tiledata[5][0].data);\n              tiledata[5] = [];\n              var cnt = 0;\n              for (var R2 = 0; R2 <= range.e.r; ++R2) {\n                var tilerow = parse_shallow(rowload);\n                cnt += write_tile_row(tilerow, data[R2], SST);\n                tilerow[1][0].data = write_varint49(R2);\n                tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n              }\n              tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n              tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n              tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n              tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n            }\n            tileroot.messages[0].data = write_shallow(tiledata);\n            var ty = write_iwa_file(tx);\n            var raw32 = compress_iwa_file(ty);\n            tentry.content = raw32;\n            tentry.size = tentry.content.length;\n          })();\n        }\n        t.data = write_shallow(tl);\n      }\n      store[3][0].data = write_shallow(tile);\n    }\n    pb[4][0].data = write_shallow(store);\n  }\n  docroot.messages[0].data = write_shallow(pb);\n  var y = write_iwa_file(x);\n  var raw3 = compress_iwa_file(y);\n  entry.content = raw3;\n  entry.size = entry.content.length;\n  return cfb;\n}\nfunction fix_opts_func(defaults/*:Array<Array<any> >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet':  _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart':  _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro':  _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar.  Originally they were unified in one\n   export function.  This is horrible for tree shaking in the common case (most\n   applications need to export files in one format) so this function supports\n   both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array<number>*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array':  return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, header/*:number*/, hdr/*:Array<any>*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar out/*:Array<any>*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array<string>*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array<string>*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array<string>*/ = [], C;\n\tvar cmds/*:Array<string>*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array<string>*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array<any>*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"</table>\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n  set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","import { read, utils } from 'xlsx';\n\nexport function getAllSheetsFromXLS(blob) {\n  const workbook = read(blob, { type: 'array' });\n\n  const sheets = [];\n  const sheetNames = workbook.SheetNames;\n  for (const sheetName of sheetNames) {\n    const sheet = {\n      sheetName,\n      data: utils.sheet_to_json(workbook.Sheets[sheetName], {\n        header: 1,\n      }),\n    };\n    if (!sheet.data.length) continue;\n    sheets.push(sheet);\n  }\n  return sheets;\n}\n","export function parseDataSheet(sheet, options) {\n  const { keepUndefined } = options;\n  const data = sheet.data.slice(1);\n  const variableNames = data.shift();\n  const variableUnits = data.shift();\n  const variables = [];\n  for (let j = 0; j < data.length; j++) {\n    if (!keepUndefined) {\n      let containsUndefined = false;\n      for (let i = 0; i < variableNames.length; i++) {\n        if (data[j][i] === undefined) {\n          containsUndefined = true;\n        }\n      }\n      if (containsUndefined) {\n        continue;\n      }\n    }\n    for (let i = 0; i < variableNames.length; i++) {\n      variables.push({\n        label: variableNames[i],\n        units: variableUnits[i],\n        data: [],\n      });\n      variables[i].data.push(data[j][i]);\n    }\n  }\n  return variables;\n}\n\nexport function checkVariables(parsed, variables) {\n  for (let i = 0; i < parsed.length; i++) {\n    const targetVariable = variables[Object.keys(variables)[i]];\n    if (!targetVariable) {\n      continue;\n    }\n    if (\n      parsed[i].label !== targetVariable.label ||\n      parsed[i].units !== targetVariable.units\n    ) {\n      throw new Error(\n        `Column ${i} is not ${targetVariable.label} in ${targetVariable.units}`,\n      );\n    }\n  }\n}\n","import { getParts } from './utils/getParts';\n\nconst decoder = new TextDecoder('iso8859-1');\n\nexport function hgParseThermoFinnigan(blob) {\n  let text = decoder.decode(blob);\n\n  let lines = text.split(/\\r?\\n/);\n  let parts = getParts(lines);\n  let meta = {\n    solidReporting: parseMeta(parts, 'SOLID REPORTING'),\n    testInformation: parseMeta(parts, 'TEST INFORMATION'),\n    analyticalConditions: parseMeta(parts, 'ANALYTICAL CONDITIONS'),\n    preparation: parseMeta(parts, 'PREPARATION'),\n    totalPoreSize: parseMeta(parts, 'TOTAL PORE SIZE'),\n    tableTotalPoreSize: parseTable(parts, 'TABLE TOTAL PORE SIZE'),\n    tableTotalSurfaceArea: parseTable(parts, 'TABLE TOTAL SURFACE AREA'),\n  };\n\n  let variables = parseExperimentalData(parts['EXPERIMENTAL DATA']);\n\n  // remove undefined values\n  Object.keys(meta).forEach((key) => {\n    if (meta[key] === undefined) {\n      delete meta[key];\n    }\n  });\n  return { meta, variables };\n}\n\nfunction parseTable(parts, label) {\n  if (!parts[label]) {\n    return undefined;\n  }\n  let lines = parts[label].map((line) =>\n    line\n      .replace(/,+$/, '')\n      .split(/; * /)\n      .map((field) => field.trim()),\n  );\n\n  let headers = lines[0]\n    .filter((field) => field)\n    .map((field, index) => `${field}[${lines[1][index].replace(/[()]/g, '')}]`);\n\n  let result = [];\n  for (let i = 2; i < lines.length; i++) {\n    const line = lines[i];\n    const currentLine = {};\n    headers.forEach((header, index) => (currentLine[header] = line[index]));\n    result.push(currentLine);\n  }\n  return result;\n}\n\nfunction parseMeta(parts, label) {\n  let parsed = {};\n  if (!parts[label]) {\n    return undefined;\n  }\n  for (let line of parts[label]) {\n    let label = line.replace(/^(.*?); *(.*)$/, '$1').replace(/:? *$/, '');\n    let value = line\n      .replace(/^(.*?); *(.*)$/, '$2')\n      .replace(/,+$/, '')\n      .replace(' : ; ', ' : ');\n    if (!isNaN(value)) {\n      value = Number(value);\n    }\n    parsed[label] = value;\n  }\n  return parsed;\n}\n\nfunction parseExperimentalData(lines) {\n  let variables = lines[0]\n    .replace(/,+$/, '')\n    .split(/; * /)\n    .map((header) => header.trim())\n    .map((line, index) => {\n      return {\n        symbol: String.fromCharCode(index + 65),\n        data: [],\n        label: line.replace(/ ?\\(.*/, ''),\n        units: line.replace(/.*\\((.*)\\).*/, '$1'),\n      };\n    });\n\n  for (let i = 1; i < lines.length; i++) {\n    let fields = lines[i].replace(/,*$/, '').split(/ *; */);\n    for (let j = 0; j < variables.length; j++) {\n      variables[j].data.push(Number(fields[j]));\n    }\n  }\n\n  const variablesObject = {};\n  variables.forEach((variable) => {\n    variablesObject[variable.symbol] = {\n      data: variable.data,\n      units: variable.units,\n      label: variable.label,\n    };\n  });\n\n  return variablesObject;\n}\n","export function calculateResidual(result) {\n  if (!result?.meta?.zones) return;\n  if (!result?.meta?.sampleMass) return;\n\n  const zones = result.meta.zones;\n  let relativeResidual = 1;\n  const residual = {\n    value: result.meta.sampleMass.value,\n    units: result.meta.sampleMass.units,\n  };\n  for (let zone of zones) {\n    if (residual.units !== zone.massLoss.units) {\n      throw new Error('zone mass loss units different from sample mass units');\n    }\n    residual.value -= zone.massLoss.value;\n    relativeResidual -= zone.relativeMassLoss;\n  }\n  zones.push({\n    relativeMassLoss: relativeResidual,\n    massLoss: residual,\n    kind: 'Residual',\n  });\n}\n","/**\n * If the line starts with a text it is a label\n * @param {string} [text='']\n * @return {object}\n */\nexport function createLabeledRecords(text = '') {\n  let result = new Map(); // garanty the order of the keys\n  let lines = text.split(/[\\r\\n]+/);\n  let label = '';\n  for (let line of lines) {\n    if (line.startsWith(' ')) {\n      // we continue the previous field\n      let currentValue = result.get(label) || '';\n      if (currentValue) currentValue += '\\n';\n      if (line.startsWith('  ')) line = line.substring(2);\n      currentValue += line;\n      result.set(label, currentValue);\n    } else {\n      // it is a new label\n      label = line.replace(/:$/, '');\n    }\n  }\n  return result;\n}\n","/**\n * Return an object with the value and the unit\n * @param {string} [value]\n * @param {object} [options={}]\n * @param {number} [options.factor=1] multiply value by a factor during conversion\n * @return {object}\n */\nexport function split(string, options = {}) {\n  const { factor = 1 } = options;\n  const { stringValue, units } = string.match(\n    /(?<stringValue>[0-9.-]+[eE]?[0-9.-]*)(?<units>.*)/,\n    '$1',\n  ).groups;\n\n  return {\n    value: Number(stringValue) * factor,\n    units: units.trim(),\n  };\n}\n","import { split } from 'value-units';\n\n/**\n * We will parse some importation information that are present in the labeledRecords\n */\n\nexport function getMetaTGA(labeledRecords) {\n  let meta = {};\n  if (labeledRecords.get('Method')) {\n    meta.method = labeledRecords.get('Method');\n  }\n  if (labeledRecords.get('Sample Holder')) {\n    meta.holder = parseHolder(labeledRecords.get('Sample Holder'));\n  }\n  meta.initialValue = split(labeledRecords.get('Initial Value'));\n  if (labeledRecords.has('Results')) {\n    meta.zones = parseResults(labeledRecords.get('Results'));\n  }\n  return meta;\n}\n\nfunction parseHolder(text) {\n  if (!text) return {};\n  let holder = {};\n  let lines = text.split('\\n');\n  for (let line of lines) {\n    if (line.includes(':')) {\n      let fields = line.split(':', 2);\n      let label = fields[0].trim().toLowerCase();\n      let value = fields[1].trim();\n      switch (label) {\n        case 'weight':\n          holder.mass = split(value);\n          break;\n        case 'material':\n          holder[label] = value;\n          break;\n        default:\n      }\n    } else {\n      holder.kind = line.trim();\n    }\n  }\n  return holder;\n}\n\nfunction parseResults(text) {\n  let results = [];\n  let result = {};\n  let lines = text.split('\\n');\n  for (let i = 0; i < lines.length; i++) {\n    let line = lines[i];\n    let nextLine = lines[i + 1];\n    line = line.replace(/^\\? /, '');\n    if (line.includes('Step')) {\n      result = {};\n      results.push(result);\n      if (!line.includes('%')) {\n        throw new Error('tga parsing problem, step does not contain %');\n      }\n      result.relativeMassLoss =\n        Number(line.replace(/^.*Step(.*)%.*/, '$1')) / -100;\n      result.massLoss = split(nextLine, { factor: -1 });\n    } else if (line.startsWith('Type')) {\n      result.kind = line.replace('Type', '').trim();\n    } else if (line.startsWith('Left Limit')) {\n      result.from = split(line.replace('Left Limit', ''));\n    } else if (line.startsWith('Right Limit')) {\n      result.to = split(line.replace('Right Limit', ''));\n    } else if (line.startsWith('Midpoint')) {\n      result.middlePoint = split(line.replace('Midpoint', ''));\n    } else if (line.startsWith('Inflect. Pt.')) {\n      result.inflectionPoint = split(line.replace('Inflect. Pt.', ''));\n    }\n  }\n  return results;\n}\n","export function improveRelativeResult(result) {\n  if (result.meta.initialValue.units === 'mg') {\n    result.meta.sampleMass = result.meta.initialValue;\n    return;\n  }\n\n  if (result.meta.initialValue.units !== '%') return;\n  if (result.meta.zones?.length < 1) return;\n\n  const firstZone = result.meta.zones[0];\n\n  if (firstZone.massLoss.units !== 'mg') return;\n  if (Math.abs(firstZone.massLoss.value) < 0.0001) return;\n\n  result.meta.sampleMass = {\n    value: firstZone.massLoss.value / firstZone.relativeMassLoss,\n    units: firstZone.massLoss.units,\n  };\n\n  // we can now calculate the 'y' variable\n  const ratio = result.meta.sampleMass.value / result.meta.initialValue.value;\n\n  const percentData = result.variables['%'].data;\n  result.variables.y = {\n    label: 'Weight',\n    units: result.meta.sampleMass.units,\n    data: [],\n  };\n  for (let i = 0; i < percentData.length; i++) {\n    result.variables.y.data.push(percentData[i] * ratio);\n  }\n}\n","export function parseCurveValues(text = '') {\n  let lines = text.split('\\n').filter((line) => line.replace(/ /g, '') !== '');\n  let result = { columnIndex: [] };\n  // the 2 first lines are information about the data\n  // the first line is the label\n  // the second line is the unit\n  for (let i = 0; i < lines.length; i++) {\n    let fields = lines[i].trim().split(/ {2,}/);\n    if (i === 0) {\n      result.labels = fields;\n      result.data = new Array(fields.length);\n      for (let j = 0; j < fields.length; j++) {\n        result.columnIndex[fields[j]] = j;\n        result.data[j] = [];\n      }\n    } else if (i === 1) {\n      result.units = new Array(result.labels.length - fields.length);\n      result.units = result.units.concat(\n        fields.map((field) => field.replace(/[[\\]]/g, '')),\n      );\n    } else {\n      if (fields.length !== result.labels.length) {\n        throw new Error('Can not parse data for line: ', fields);\n      }\n      for (let j = 0; j < fields.length; j++) {\n        let value = Number(fields[j]);\n        if (isNaN(value)) {\n          throw new Error('Problem parsing number: ', fields[j]);\n        }\n        result.data[j].push(value);\n      }\n    }\n  }\n  return result;\n}\n","import { ensureString } from 'ensure-string';\n\nimport { calculateResidual } from './util/calculateResidual';\nimport { createLabeledRecords } from './util/createLabeledRecords';\nimport { getMetaTGA } from './util/getMetaTGA';\nimport { improveRelativeResult } from './util/improveRelativeResult';\nimport { parseCurveValues } from './util/parseCurveValues';\n\nconst variables = {\n  't-s': { code: 't', label: 'time' },\n  'Ts-°C': { code: 'x', label: 'Temperature recorded' },\n  'Tr-°C': { code: 'r', label: 'Temperature programmed' },\n  'Value-mg': { code: 'y', label: 'Weight' },\n  'Value-mW': { code: 'p', label: 'Power' },\n  'Value-%': { code: '%', label: 'Percent' },\n};\n\nexport function tgaParseMettlerToledo(arrayBuffer) {\n  const text = ensureString(arrayBuffer);\n\n  let results = [];\n  // TGA text format may contain many parts separated by 'Curve Name'\n  const parts = text.split(/(?=Curve Name:)/);\n  for (const part of parts) {\n    if (part.startsWith('Curve Name:')) {\n      let labeledRecords = createLabeledRecords(part);\n      let parsedCurveValues;\n      if (labeledRecords.has('Curve Values')) {\n        parsedCurveValues = parseCurveValues(\n          labeledRecords.get('Curve Values'),\n        );\n        labeledRecords.set('Curve Values', parsedCurveValues);\n      }\n\n      improveTGALabeledRecords(labeledRecords);\n\n      const data = {};\n      for (let i = 0; i < parsedCurveValues.units.length; i++) {\n        const variableName =\n          parsedCurveValues.labels && parsedCurveValues.labels[i];\n        const units = parsedCurveValues.units && parsedCurveValues.units[i];\n        const dataValues = parsedCurveValues.data && parsedCurveValues.data[i];\n        const variable = variables[`${variableName}-${units}`];\n        if (variable && variable.code) {\n          data[variable.code] = {\n            units,\n            data: dataValues,\n            label: variable.label,\n          };\n        }\n      }\n\n      let result = {\n        meta: getMetaTGA(labeledRecords),\n        variables: data,\n        info: {\n          dataType: 'TGA',\n        },\n      };\n\n      improveRelativeResult(result);\n      calculateResidual(result);\n\n      results.push(result);\n    }\n  }\n  return results;\n}\n\nfunction improveTGALabeledRecords(labeledRecords) {\n  let record = labeledRecords.get('Curve Values');\n  let value = `${record.data[record.data.length - 1][0]} ${record.units[\n    record.data.length - 1\n  ].replace(/[[\\]]/g, '')}`;\n  labeledRecords.set('Initial Value', value);\n}\n","import { getAllSheetsFromXLS } from '../../utils/getAllSheetsFromXLS';\nimport {\n  checkVariables,\n  parseDataSheet,\n} from '../../utils/taInstrumentsUtilities.js';\n\nexport function tgaParseTAInstrumentsXLS(blob, options = {}) {\n  const { keepUndefined = false } = options;\n  const xlsSheets = getAllSheetsFromXLS(blob);\n\n  const sheets = [];\n  for (let xlsSheet of xlsSheets) {\n    if (xlsSheet.sheetName === 'Details') continue;\n    sheets.push({\n      name: xlsSheet.sheetName,\n      variables: getVariables([xlsSheet], { keepUndefined }),\n    });\n  }\n\n  return {\n    meta: getMeta(xlsSheets),\n    variables: getVariables(xlsSheets, { keepUndefined }),\n    sheets,\n  };\n}\n\nfunction getMeta(sheets) {\n  const sheet = sheets.find((sheet) => sheet.sheetName === 'Details');\n  if (!sheet) {\n    return {};\n  }\n  const meta = {};\n  for (let datum of sheet.data) {\n    meta[datum[0]] = datum[1];\n  }\n  return meta;\n}\n\nfunction getVariables(sheets, options) {\n  const { keepUndefined } = options;\n  sheets = sheets.filter((sheet) => sheet.sheetName !== 'Details');\n\n  const variables = {\n    t: {\n      symbol: 't',\n      label: 'Time',\n      units: 'min',\n      data: [],\n    },\n    x: {\n      symbol: 'x',\n      label: 'Temperature',\n      units: '°C',\n      data: [],\n    },\n    y: {\n      symbol: 'y',\n      label: 'Weight',\n      units: 'mg',\n      data: [],\n    },\n    z: {\n      symbol: 'z',\n      label: 'Weight',\n      units: '%',\n      data: [],\n    },\n  };\n\n  for (let sheet of sheets) {\n    const parsed = parseDataSheet(sheet, { keepUndefined });\n    checkVariables(parsed, variables);\n\n    variables.t.data = variables.t.data.concat(parsed[0].data);\n    variables.x.data = variables.x.data.concat(parsed[1].data);\n    variables.y.data = variables.y.data.concat(parsed[2].data);\n    variables.z.data = variables.z.data.concat(parsed[3].data);\n  }\n  return variables;\n}\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n};\n\nconst isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n  return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n  return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n};\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n                xmlStr += indentation + options.indentBy + tagValue + indentation;\n            } else {\n                xmlStr += tagValue;\n            }\n            xmlStr += `</${tagName}>`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\nmodule.exports = toXml;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"&apos;\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \"&quot;\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nfunction Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '</' + key + this.tagEndChar;\n    let piClosingChar = \"\";\n    \n    if(key[0] === \"?\") {\n      piClosingChar = \"?\";\n      tagEndExp = \"\";\n    }\n  \n    // attrStr is an empty string in case the attribute came as undefined or null\n    if ((attrStr || attrStr === '') && val.indexOf('<') === -1) {\n      return ( this.indentate(level) + '<' +  key + attrStr + piClosingChar + '>' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `<!--${val}-->` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `></${key}`\n  }\n  return closeTag;\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n  if (val !== '') {\n    return this.buildObjectNode(val, key, attrStr, level);\n  } else {\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return  this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n      // return this.buildTagStr(level,key, attrStr);\n    }\n  }\n}\n\nBuilder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n  if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n    return this.indentate(level) + `<![CDATA[${val}]]>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `<!--${val}-->` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        '</' + key + this.tagEndChar;\n    }\n  }\n}\n\nBuilder.prototype.replaceEntitiesValue = function(textValue){\n  if(textValue && textValue.length > 0 && this.options.processEntities){\n    for (let i=0; i<this.options.entities.length; i++) {\n      const entity = this.options.entities[i];\n      textValue = textValue.replace(entity.regex, entity.val);\n    }\n  }\n  return textValue;\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = Builder;\n","const decoder = new TextDecoder('iso8859-1');\n\nexport function xrfParserPanalytical(blob) {\n  let text = decoder.decode(blob);\n\n  let lines = text.split(/\\r?\\n/);\n  let meta = {};\n  let headers;\n  let data = [];\n  let variables = {};\n  for (let line of lines) {\n    if (line.includes(':')) {\n      let fields = line.split(/ +: +/);\n      let value = fields.slice(1).join(':');\n      let numberValue = value.replace(/,/g, '.');\n      meta[fields[0]] = isNaN(numberValue) ? value : parseFloat(numberValue);\n    } else if (line.match(/^[A-Z]/)) {\n      // header of tables\n      headers = line.split(/\\t/);\n    } else if (line.match(/^\\s*$/)) {\n      // skip this line\n    } else {\n      data.push(\n        line.split(/\\t/).map((field) => parseFloat(field.replace(',', '.'))),\n      );\n    }\n  }\n  for (let i = 0; i < headers.length; i++) {\n    let id;\n    switch (i) {\n      case 0:\n        id = 'X';\n        break;\n      case 1:\n        id = 'Y';\n        break;\n      default:\n        id = String.fromCharCode(63 + i);\n    }\n    let units = headers[i].split('(')[1];\n    units = units ? units.replace(')', '') : '';\n    variables[id] = {\n      label: headers[i].replace(/ \\(.*/, ''),\n      units,\n      data: data.map((datum) => datum[i]),\n    };\n  }\n  return { meta, variables };\n}\n","// @ts-expect-error imported library for which we don't have types\nimport { tgaParseMettlerToledo } from 'physical-chemistry-parser';\nimport { Analysis } from '../index.js';\nexport function fromMettlerToledo(arrayBuffer) {\n    const analysis = new Analysis();\n    const results = tgaParseMettlerToledo(arrayBuffer);\n    // we try to find the right results\n    const result = results.find((result) => result.variables?.y &&\n        (result.variables.y.units === 'mg' || result.variables.y.units === '%'));\n    const cheminfo = { meta: result.meta };\n    analysis.pushSpectrum(result.variables, {\n        dataType: 'TGA',\n        meta: { ...result.meta, cheminfo },\n    });\n    return analysis;\n}\n//# sourceMappingURL=fromMettlerToledo.js.map","import { Analysis } from 'common-spectrum';\nimport { ensureString } from 'ensure-string';\nexport function fromNetzsch(arrayBuffer) {\n    const text = ensureString(arrayBuffer, { encoding: 'iso8859-1' });\n    const lines = text.split(/\\r?\\n/).filter(Boolean);\n    const parsed = {\n        meta: {},\n        variables: {\n            x: {\n                data: [],\n                label: 'Sample temperature [°C]',\n                isDependent: true,\n            },\n            y: {\n                data: [],\n                label: 'Weight [mg]',\n                isDependent: true,\n            },\n            t: {\n                data: [],\n                label: 'Time [min]',\n                isDependent: false,\n            },\n        },\n    };\n    let inData = false;\n    for (const line of lines) {\n        if (inData) {\n            const [temperature, time, weight] = line\n                .split(';')\n                .map(Number.parseFloat);\n            parsed.variables.x.data.push(temperature);\n            parsed.variables.y.data.push(weight);\n            parsed.variables.t.data.push(time);\n        }\n        else if (line.startsWith('##')) {\n            inData = true;\n        }\n        else {\n            const groups = /#(?<label>.*?):(?<value>.*)/.exec(line)?.groups;\n            if (!groups)\n                throw new Error('TGA Netzsch parsing error');\n            const { label, value } = groups;\n            parsed.meta[label] = value;\n        }\n    }\n    const mass = Number.parseFloat(parsed.meta['SAMPLE MASS /mg']);\n    parsed.variables.y.data = parsed.variables.y.data.map((i) => {\n        return (i / 100) * mass;\n    });\n    const analysis = new Analysis();\n    analysis.pushSpectrum(parsed.variables, {\n        meta: parsed.meta,\n        dataType: 'TGA',\n    });\n    return analysis;\n}\n//# sourceMappingURL=fromNetzsch.js.map","import { ensureString } from 'ensure-string';\nexport function parsePerkinElmerAscii(blob) {\n    const sections = getSections(blob);\n    return sections;\n}\nfunction getSections(blob) {\n    const result = {\n        header: {},\n        methodSteps: {\n            info: [],\n            steps: [],\n        },\n        footer: '',\n    };\n    const text = ensureString(blob);\n    const lines = text.split(/\\r?\\n/);\n    let currentSection = 'header';\n    let currentStep = {\n        id: 0,\n        label: '',\n        description: '',\n        variables: [],\n    };\n    let dataHeaders = [];\n    for (let i = 0; i < lines.length; i++) {\n        const line = lines[i];\n        if (line.startsWith('Method Steps:')) {\n            currentSection = 'methodSteps';\n            continue;\n        }\n        if (currentSection === 'methodSteps' &&\n            line.startsWith('1)') &&\n            result.methodSteps.steps.length > 0) {\n            currentSection = 'dataFirstLine';\n        }\n        switch (currentSection) {\n            case 'header':\n                {\n                    const [key, ...rest] = line.split(':').map((s) => s.trim());\n                    const value = rest.join(':');\n                    if (key && value.length > 0) {\n                        result.header[key] = value;\n                    }\n                }\n                break;\n            case 'methodSteps':\n                if (line.match(/^[0-9]/)) {\n                    // 1)\tHold for 1.0 min at 50.00�C\n                    const match = line.match(/^([0-9]+)\\)\\s+/);\n                    if (match) {\n                        result.methodSteps.steps.push({\n                            id: Number.parseInt(match[1], 10),\n                            label: line.replace('\\t', ' ').trim(),\n                            description: '',\n                            variables: [],\n                        });\n                    }\n                }\n                else {\n                    if (line.trim() === '')\n                        continue;\n                    result.methodSteps.info.push(line.replaceAll('\\t', '  '));\n                }\n                break;\n            case 'dataFirstLine':\n                {\n                    const { step, description } = parseDataBlockHeader(line, result);\n                    currentStep = step;\n                    currentStep.description = description;\n                    currentSection = 'dataHeader';\n                }\n                break;\n            case 'dataHeader':\n                dataHeaders = parseDataHeader(line, lines[i + 1]);\n                i++;\n                currentSection = 'data';\n                currentStep.variables = structuredClone(dataHeaders);\n                break;\n            case 'data':\n                if (line.trim() === '') {\n                    currentSection = 'endData';\n                    continue;\n                }\n                if (line.match(/^[0-9+]\\)/)) {\n                    // new data block\n                    const { description, step } = parseDataBlockHeader(line, result);\n                    currentStep = step;\n                    currentStep.variables = structuredClone(dataHeaders);\n                    currentStep.description = description;\n                }\n                else {\n                    const dataParts = line\n                        .split('\\t')\n                        .map((s) => s.trim())\n                        .map(Number);\n                    if (dataParts.length !== currentStep?.variables.length) {\n                        throw new Error(`Data length mismatch in step ${currentStep?.id}: expected ${currentStep?.variables.length}, got ${dataParts.length}`);\n                    }\n                    for (let j = 0; j < dataParts.length; j++) {\n                        currentStep?.variables[j].data.push(dataParts[j]);\n                    }\n                }\n                break;\n            case 'endData':\n                if (line.trim() === '') {\n                    continue;\n                }\n                currentSection = 'footer';\n                break;\n            case 'footer': {\n                result.footer += `${line}\\n`;\n                break;\n            }\n            default:\n                break;\n        }\n    }\n    return result;\n}\nfunction parseDataBlockHeader(line, result) {\n    const match = line.match(/^([0-9]+)\\) (.+)/);\n    if (!match) {\n        throw new Error(`Could not parse data block header line: ${line}`);\n    }\n    const id = Number.parseInt(match[1], 10);\n    // find the corresponding step\n    const step = result.methodSteps.steps.find((s) => s.id === id);\n    if (!step) {\n        throw new Error(`Could not find method step for data block id: ${id}`);\n    }\n    return {\n        id,\n        description: match[2].trim(),\n        step,\n    };\n}\n/**\n * need to combine both lines to get the full header information as an array\n * @param line\n * @param nextLine\n */\nfunction parseDataHeader(line, nextLine) {\n    const firstLineParts = line.split('\\t').map((s) => s.trim());\n    const secondLineParts = nextLine.split('\\t').map((s) => s.trim());\n    const combined = [];\n    for (let i = 0; i < firstLineParts.length; i++) {\n        let combinedHeader = firstLineParts[i];\n        if (i < secondLineParts.length && secondLineParts[i] !== '') {\n            combinedHeader += ` ${secondLineParts[i]}`;\n        }\n        combined.push(combinedHeader);\n    }\n    return combined.map((label) => ({ label, data: [] }));\n}\n//# sourceMappingURL=parsePerkinElmerAscii.js.map","import { ensureString } from 'ensure-string';\nimport { Analysis } from '../index.js';\nimport { parsePerkinElmerAscii } from \"./parser/parsePerkinElmerAscii.js\";\n/**\n * Creates a new Chromatogram element based in a JCAMP string\n * @param text - String containing the JCAMP data\n * @param arrayBuffer\n * @returns - New class element with the given data\n */\nexport function fromPerkinElmer(arrayBuffer) {\n    const text = ensureString(arrayBuffer);\n    const analysis = new Analysis();\n    const parsed = parsePerkinElmerAscii(text);\n    const meta = {\n        ...parsed.header,\n        stepsInfo: parsed.methodSteps.info,\n        methodSteps: parsed.methodSteps.steps.map((step) => step.label),\n        footer: parsed.footer,\n    };\n    const variables = parsed.methodSteps.steps[0].variables;\n    for (let i = 1; i < parsed.methodSteps.steps.length; i++) {\n        const stepVariable = parsed.methodSteps.steps[i].variables;\n        for (let j = 0; j < variables.length; j++) {\n            if (variables[j].data && stepVariable[j].data) {\n                variables[j].data = variables[j].data.concat(stepVariable[j].data);\n            }\n        }\n    }\n    analysis.pushSpectrum({\n        x: {\n            data: variables.find((v) => v.label.startsWith('Sample Temperature'))\n                ?.data || [],\n            label: 'Temperature [°C]',\n        },\n        y: {\n            data: variables.find((v) => v.label.startsWith('Unsubtracted Weight'))\n                ?.data || [],\n            label: 'Weight [mg]',\n        },\n    }, {\n        dataType: 'TGA',\n        title: meta['Sample ID'] || '',\n        meta,\n    });\n    analysis.pushSpectrum({\n        x: {\n            data: variables.find((v) => v.label.startsWith('Time'))?.data || [],\n            label: 'Time [min]',\n        },\n        y: {\n            data: variables.find((v) => v.label.startsWith('Unsubtracted Weight'))\n                ?.data || [],\n            label: 'Weight [mg]',\n        },\n    }, {\n        dataType: 'TGA',\n        title: meta['Sample ID'] || '',\n        meta,\n    });\n    return analysis;\n}\n//# sourceMappingURL=fromPerkinElmer.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});","import { ensureString } from 'ensure-string';\nimport Papa from 'papaparse';\nimport { Analysis } from '../index.js';\n/**\n * Creates a new Chromatogram element based in a JCAMP string\n * @param text - String containing the JCAMP data\n * @param arrayBuffer\n * @returns - New class element with the given data\n */\nexport function fromPerkinElmerCSV(arrayBuffer) {\n    const text = ensureString(arrayBuffer);\n    const parsed = Papa.parse(text, {\n        skipEmptyLines: true,\n        header: true,\n        dynamicTyping: true,\n    }).data;\n    const analysis = new Analysis();\n    analysis.pushSpectrum({\n        x: {\n            data: parsed.map((d) => d['Sample Temperature']),\n            label: 'Sample temperature [°C]',\n            isDependent: true,\n        },\n        y: {\n            data: parsed.map((d) => d['Unsubtracted Weight']),\n            label: 'Weight [mg]',\n            isDependent: true,\n        },\n        p: {\n            data: parsed.map((d) => d['Program Temperature']),\n            label: 'Program temperature [°C]',\n            isDependent: true,\n        },\n        t: {\n            data: parsed.map((d) => d.Time),\n            label: 'Time [min]',\n            isDependent: false,\n        },\n    }, { dataType: 'TGA' });\n    return analysis;\n}\n//# sourceMappingURL=fromPerkinElmerCSV.js.map","import { ensureString } from 'ensure-string';\nexport function parseTAInstruments(arrayBuffer) {\n    let text = ensureString(arrayBuffer);\n    text = text.replaceAll(/[\\r\\f]/g, '');\n    const metaLines = text.split(/\\n/).filter((line) => /^[a-zA-Z]/.test(line));\n    const allDataLines = text\n        .split(/\\n/)\n        .filter((line) => /^[0-9.-]/.exec(line))\n        .map((line) => line.split(/\\s+/).map(Number));\n    const meta = parseMeta(metaLines);\n    //let events = allDataLines.filter((line) => line[0] < 0);\n    const dataLines = allDataLines.filter((line) => line[0] > 0);\n    meta.balancePurgeFlow = [];\n    meta.samplePurgeFlow = [];\n    // We now assume that we always have 5 columns in the same order ...\n    const result = {\n        meta,\n        data: {\n            time: [],\n            weight: [],\n            temperature: [],\n        },\n    };\n    result.data.time = dataLines.map((fields) => fields[0]);\n    result.data.temperature = dataLines.map((fields) => fields[1]);\n    result.data.weight = dataLines.map((fields) => fields[2]);\n    result.meta.balancePurgeFlow = dataLines.map((fields) => fields[3]);\n    result.meta.samplePurgeFlow = dataLines.map((fields) => fields[4]);\n    return result;\n}\nfunction splitTrim(string, item = 1) {\n    return string.split(/\\t/)[item].replace(/^[ \\t]*(.*?)[ \\t]*$/, '$1');\n}\nfunction parseMeta(lines) {\n    const meta = { comments: [], methodSteps: [] };\n    for (const [i, line] of lines.entries()) {\n        if (/^Instrument/.exec(line)) {\n            meta.instrument = splitTrim(line);\n        }\n        else if (/^InstSerial/.exec(line)) {\n            meta.instrumentSerial = splitTrim(line);\n        }\n        else if (/^Sample/.exec(line)) {\n            meta.sampleName = splitTrim(line);\n        }\n        else if (/^Size/.exec(line)) {\n            meta.weight = Number.parseFloat(splitTrim(line));\n            meta.weightUnit = splitTrim(line, 2);\n        }\n        else if (/^Xcomment|^Comment/.exec(line)) {\n            meta.comments.push(splitTrim(line));\n        }\n        else if (/^Method/.exec(line)) {\n            meta.method = splitTrim(line);\n        }\n        else if (/^Mode/.exec(line)) {\n            meta.mode = splitTrim(line);\n        }\n        else if (/^File/.exec(line)) {\n            meta.file = splitTrim(line);\n        }\n        else if (/^Date/.exec(line)) {\n            meta.date = splitTrim(line);\n        }\n        else if (/^Time/.exec(line)) {\n            meta.time = splitTrim(line);\n        }\n        else if (/^OrgMethod/.exec(line)) {\n            meta.methodSteps.push(splitTrim(line));\n        }\n        else if (/^Controls/.exec(line)) {\n            meta.controls = splitTrim(line);\n        }\n        else if (/^FurnaceType/.exec(line)) {\n            meta.furnaceType = splitTrim(line);\n        }\n        else if (/^Operator/.exec(line)) {\n            meta.operator = splitTrim(line);\n        }\n        else if (/^RunSerial/.exec(line)) {\n            meta.runSerial = splitTrim(line);\n        }\n        else if (/^ProcName/.exec(line)) {\n            meta.procName = splitTrim(line);\n        }\n        else if (/^OrgFile/.exec(line)) {\n            meta.dataStart = i + 1;\n            break;\n        }\n    }\n    return meta;\n}\n//# sourceMappingURL=parseTAInstruments.js.map","import { ensureString } from 'ensure-string';\nimport { Analysis } from '../index.js';\nimport { parseTAInstruments } from \"./parser/parseTAInstruments.js\";\nexport function fromTAInstruments(arrayBuffer) {\n    const text = ensureString(arrayBuffer);\n    const analysis = new Analysis();\n    const parsed = parseTAInstruments(text);\n    analysis.pushSpectrum({\n        x: {\n            data: parsed.data.temperature,\n            isDependent: true,\n            label: 'Program temperature [°C]',\n        },\n        y: {\n            data: parsed.data.weight,\n            isDependent: true,\n            label: 'Weight [mg]',\n        },\n        t: {\n            data: parsed.data.time,\n            isDependent: false,\n            label: 'Time [min]',\n        },\n    }, { dataType: 'TGA', title: parsed.meta.sampleName, meta: parsed.meta });\n    return analysis;\n}\n//# sourceMappingURL=fromTAInstruments.js.map","//@ts-expect-error imported library\nimport { tgaParseTAInstrumentsXLS } from 'physical-chemistry-parser';\nimport { Analysis } from '../index.js';\nexport function fromTAInstrumentsExcel(arrayBuffer) {\n    const analysis = new Analysis();\n    const parsed = tgaParseTAInstrumentsXLS(arrayBuffer);\n    analysis.pushSpectrum(parsed.variables, {\n        dataType: 'TGA',\n        title: parsed.meta['Sample name'],\n        meta: {\n            ...parsed.meta,\n            cheminfo: {\n                meta: {\n                    method: 'Full',\n                },\n            },\n        },\n    });\n    for (const sheet of parsed.sheets) {\n        analysis.pushSpectrum(sheet.variables, {\n            dataType: 'TGA',\n            title: parsed.meta['Sample name'],\n            meta: {\n                ...parsed.meta,\n                cheminfo: {\n                    meta: {\n                        method: sheet.name,\n                    },\n                },\n            },\n        });\n    }\n    return analysis;\n}\n//# sourceMappingURL=fromTAInstrumentsExcel.js.map"],"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","xMultiply","max","arguments","_options$fromIndex","_options$toIndex","isInteger","maxValue","min","minValue","rescale","Array","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","defineProperty","matrix","require$$0","require$$1","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","constructor","name","inspectData","rows","columns","maxI","maxJ","result","loop","get","line","push","formatNumber","join","num","formatNumber2","padEnd","len","str","fix","toFixed","startsWith","exp","toExponential","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","expm1","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","data","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isDistance","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","n","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","dot","cumulativeSum","vector2","vector1","mmul","other","Bcolj","s","mpow","scalar","bb","e","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","y","r1","c1","r2","c2","console","warn","embed","mat","r","c","resultat","blockMult","a","b","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","entries","product","standardDeviation","center","Symbol","iterator","col","values","for","isArrayOfNumbers","every","element","randomInt","diagonal","identity","negate","tensorProduct","#initData","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","SymmetricMatrix","diagonalSize","isSymmetricMatrix","klassType","upperRightEntries","toMatrix","removeCross","addCross","applyMask","mask","sidesToRemove","passthroughs","reverse","sideIndex","toCompact","compact","fromCompact","compactSize","JSON","stringify","upperRightValues","DistanceMatrix","isDistanceMatrix","klassSubType","sideSize","toSymmetricMatrix","compactLength","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","g","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","d","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","svd","pseudoInverse","svdSolution","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","tred2","tql2","H","ort","orthes","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","hh","dl1","c3","el1","s2","tst1","nn","exshift","z","iter","w","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","L","isPositiveDefinite","B","nipals","scaleScores","maxIterations","terminationCriteria","u","tOld","counter","xResidual","residual","yResidual","betas","CHO","EVD","Matrix_1","MatrixTransposeView_1","NIPALS","Nipals","SVD","_default","default","solve_1","xMean","sumValue","xVariance","sqrError","xStandardDeviation","xDivide","xEnsureFloat64","FFT","_csize","table","angle","PI","power","_width","_bitrev","revShift","_out","_data","_inv","fromComplexArray","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","_transform4","realTransform","_realTransform4","inverseTransform","width","step","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","A","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","delta","base","firstExponent","object","replacer","space","internalReplacer","key","ArrayBuffer","isView","xMaxValue","xMinValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","at","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","val","simpleNormInv","magnitudeMode","SQRT2","simpleNormInvNumber","xNoiseSanPlot","cutOff","refine","scaleFactor","factorStd","fixOffset","prepareData","medianIndex","firstNegativeValueIndex","findIndex","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","minKi","whereToCutStat","top","elementsOfCutOff","filter","averageValue","kiSqrt","logBaseY","logOfBase","xAxis","_e","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","String","xPadding","fromEnd","toEnd","xParetoNormalization","sqrtSD","xRescale","xRolling","window","padding","padded","subarray","xRollingAverage","xRollingMedian","matrixCheck","firstLength","matrixMinMaxZ","nbRows","nbColumns","xyCheck","xyEnsureGrowingX","prevX","currentIndex","zonesNormalize","zones","exclusions","map","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","zoneIndex","zonesWithPoints","numberOfPoints","normalizedZones","zonesWithNumberOfPoints","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","tempZone","tempZoneNumberOfPoints","equallySpacedSlot","xLength","halfStep","lastStep","start","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x0","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","getSlope","y0","y1","xyEquallySpaced","variant","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyFilterXPositive","xyGrowingX","toReversed","addStyle","serie","color","opacity","lineWidth","match","toUpperCase","replace","style","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","strokeWidth","fillColor","centerMean","centerMedian","normed","divideBySD","paretoNormalization","ldlSymbolic","Ap","Lp","Parent","Lnz","Flag","kk","p2","ldlNumeric","Ax","Li","Lx","Pattern","lKi","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPerm","ldlPermt","prepare","M","Pinv","Mt","ar","ac","LNZ","coloffset","adr","bp1","cuthillMckee_1","cuthillMckee","compareNum","list","adj","visited","toVisit","eol","ptr","nbhd","getClosestNumber","goal","closest","prev","curr","getCloseIndex","indexOf","updateSystem","weights","nbPoints","newVector","next","getDeltaMatrix","lambda","lowerTriangularNonZeros","permutationEncodedArray","getControlPoints","controlPoints","Int8Array","forEach","indexFrom","indexTo","airPLS","baseline","iteration","sumNegDifferences","corrected","stopCriterion","getStopCriterion","prevNegSum","cho","cholesky","applyCorrection","absChange","_typeof","obj","sequentialFill","_options","_options$from","_options$to","_options$size","isArray","_i","airPLSBaseline","ys","numberPoints","regressionOptions","airpls","correctedSpectrum","checkArrayLength","BaseRegression","new","predict","_predict","xVal","train","precision","toLaTeX","score","y2","ySum","chi2","rmsd","xSquared","ySquared","xY","maybeToPrecision","number","figures","toPrecision","PolynomialRegression","degree","powers","coefficients","regress","_toFormula","isLaTeX","sup","closeSup","times","fn","load","json","interceptAtZero","nCoefficients","F","FT","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","rollingAverageBaseline","defaults","actualOptions","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","xs","windowSize","derivative","polynomial","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","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","beta","gamma","xCurrent","xPrevious","gsd","noiseLevel","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","peakDetectionAlgorithm","isEquallySpaced","noiseInfo","xValue","minY","maxY","peakData","calibrateX","targetX","nbPeaks","gsdOptions","xFunction","function","yFunction","setMaxY","setMinY","filterXY","filters","logs","Date","now","filterFct","Filters","time","getNormalizedSpectrum","newSpectrum","title","dataType","meta","applyRangeSelectionFirst","structuredClone","unshift","isMonotonic","global","factory","module","exports","this","isString","isFiniteImpl","isNumber","uniq","strings","seen","item","hasOwnProperty","compareArray","assign","properties","keys","mulSafe","decimals","arg","getFractional","divSafe","den","invDen","QtyError","err","create","message","stack","throwIncompatibleUnits","left","right","UNITS","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","numerator","denominator","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","kind","unitKeys","substr","getKinds","toLowerCase","getAliases","unitName","SIGNATURE_VECTOR","unitSignature","signature","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","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","isCompatible","isInverse","baseUnitCache","toBaseUnits","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","_isBase","NestedMap","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","ids","fromJSON","pushSpectrum","standardizeData","getXY","normalizedSpectra","getSpectrum","getXLabel","getYLabel","analysisOptions","appendDistinctParameter","appendDistinctValue","AnalysesManager","analysesManager","addAnalysis","getAnalysisIndex","getAnalyses","processedAnalysisIds","Set","has","getSpectra","getAnalysisBySpectrumId","getSpectrumById","getDistinctTitles","getDistinctUnits","getDistinctLabelUnits","normalizeLabelUnits","getDistinctLabels","getDistinctDataTypes","getDistinctMeta","removeAllAnalyses","removeAnalysis","originalLabel","originalUnits","search","isUtf8","buf","ensureString","blob","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","buffer","byteOffset","byteLength","isutf8","parseString","lowercase","gyromagneticRatioMHzT","getGyromagneticNucleus","nucleus","gyromagneticRatio","nucleusNumber","filteredNuclei","getGyromagneticRatio","realNucleus","fromEntries","_ref","quickSelectMedian","$","E","o","te","ne","ms","pageValue","chromatogram","re","O","logger","xFactor","info","yFactor","isXYdata","firstX","firstY","codePointAt","I","S","N","oe","isPeaktable","ce","ue","isXYAdata","se","Z","lastY","pe","ae","minX","maxX","minZ","maxZ","noise","ntuples","symbol","find","some","ie","nbContourLevels","fe","noiseMultiplier","zValue","lines","_","ee","T","segments","G","noContour","contourLines","minMax","observeFrequency","shiftOffsetVal","lastX","$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","checkNumberOrArray","getExtremeValues","firstRow","firstLast","creatorNtuples","owner","origin","resInfo","varName","varType","varDim","isDependent","point","getFactorNumber","getBestFactor","onlyInteger","extremeValues","getNumber","rounded","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","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","reset_ansi","set_cp","reset_cp","char_codes","utf16leread","fromCharCode","utf16beread","debom","_getchar","_gc1","_getansi","_ga1","$cptable","Base64_map","Base64_encode","e1","e2","e3","e4","Base64_decode","has_buf","Buffer","process","versions","node","Buffer_from","nbfs","enc","bind","new_raw_buf","alloc","new_unsafe_buf","allocUnsafe","s2a","a2s","ab2a","bconcat","bufs","isBuffer","maxlen","utf8decode","content","widx","ridx","chr0","chr1","_strrev","pad0","pad_","rpad_","pad0r1","pad0r2","p2_32","pad0r","SSF_isgeneral","days","months","SSF_init_table","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","opts","b2","date","dow","dout","date1904","setDate","getDate","getFullYear","getMonth","getDay","SSF_fix_hijri","SSFbasedate","SSFdnthresh","getTime","SSFbase1904","datenum_local","epoch","getTimezoneOffset","SSF_strip_decimal","SSF_normalize_exp","SSF_small_exp","SSF_large_exp","SSF_general_num","LOG10E","SSF_general","SSF_format","SSF_write_date","fmt","ss0","ss","tt","outl","outstr","commaify","pct1","write_num_pct","sfmt","write_num","write_num_cm","write_num_exp","period","fakee","$$","$1","$2","$3","frac1","write_num_f1","aval","rr","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","cc","rnd","dd","dec","_frac","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","lastIndexOf","SSF_split_fmt","in_str","SSF_abstime","fmt_is_date","eval_fmt","flen","lst","dt","hr","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","cfregex2","chkcond","thresh","choose_fmt","lat","dateNF","SSF_load","make_ssf","SSFImplicit","dateNFregex","dateNF_regex","dateNF_fix","datestr","timestr","CRC32","signed_crc_table","Int32Array","T0","slice_by_16_tables","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","crc32_buf","crc32_str","CFB","_CFB","namecmp","dirname","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_dos_date","read_shift","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_extra_field","prep_blob","sz","tgt","mtime","atime","ctime","mt","fs","get_fs","file","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","check_shifts","dir_cnt","chk","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","raw","HEADER_SIGNATURE","nsectors","FI","FP","pl","dad","get_mfat_entry","payload","mini","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","addr","nodes","__toBuffer","sl","minifat_store","namelen","__utf16le","clsid","state","ct","read_date","offset","__readUInt32LE","read_file","readFileSync","read","init_cfb","cfb","root","CLSID","seed_cfb","nm","rebuild_cfb","gc","_file","fullPaths","HEADER_CLSID","elt","_write","_opts","fileType","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","path","UCFullPaths","UCPaths","UCPath","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","_deflateRawIIFE","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","code","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","unsafe","cdirs","method","compression","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","get_content_type","ctype","ext","write_base64_76","write_quoted_printable","text","encoded","end","parse_quoted_printable","di","oi","parse_mime","fname","cte","fdata","mboundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","fpath","utils","cfb_gc","cfb_del","cfb_mov","old_name","new_name","writeFile","ReadShift","CheckField","_inflateRaw","read_binary","Deno","File","Folder","infile","open","close","o2","evert","basedate","datenum","dnthresh","refdate","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","arr","debomit","utf8write","dup","fuzzynum","wt","lower_months","fuzzydate","getYear","split_regex","safe_split_regex","def","getdatastr","asNodeBuffer","asBinary","getContent","getdatabin","getdata","safegetzipfile","zip","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","zip_read","resolve_path","XML_HEADER","attregexg","tagregex1","tagregex2","tagregex","nsregex","nsregex2","parsexmltag","skip_root","skip_LC","quot","strip_ns","encodings","rencoding","unescapexml","encregex","coderegex","decregex","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","parsexmlbool","utf8reada","orig","utf8readb","ww","utf8readc","utf8corpus","utf8read","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vt_regex","vtvregex","vtmregex","parseVector","matches","baseType","WTF","wtregex","wxt_helper","writextag","xlml_normalize","xlmlregex","XMLNS","CT","XMLNS_main","read_double_le","Infinity","write_double_le","bs","av","LN2","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","utf8_b","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","lpp4_","__lpp4","___8lpp4","__8lpp4","___double","__double","is_buf","is_buf_a","lpstr_b","readUInt32LE","cpstr_b","lpwstr_b","lpp4_b","lpp4_8b","double_","readDoubleLE","is_buf_b","__readInt16LE","__readInt32BE","oI","oR","oo","loc","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","hexstr","fld","pos","parsenoop","recordhopper","cb","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","ba_newblk","curbuf","endbuf","ba_endbuf","ba_next","ba_end","ba_push","_bufs","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_col","encode_row","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","split_cell","decode_cell","decode_range","encode_range","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","parse_Int32LE","parse_XLWideString","cchCharacters","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","parse_XLSBCell","iStyleRef","parse_XLSBShortCell","parse_XLSBCodeName","parse_XLNullableWideString","parse_XLNameWideString","parse_RelID","parse_RkNumber","fX100","fInt","RK","parse_RfX","parse_UncheckedRfX","parse_Xnum","parse_BrtColor","xColorType","nTS","bR","bG","bB","auto","icv","XLSIcv","rgb","rgb2Hex","theme","tint","parse_FontFlags","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_ClipboardFormatOrString","ClipFmt","parse_ClipboardFormatOrAnsiString","parse_ClipboardFormatOrUnicodeString","VT_I2","VT_I4","VT_BOOL","VT_VARIANT","VT_UI4","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR_VARIANT","VT_VECTOR_LPSTR","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","SummaryPIDSI","CountryEnum","XLSFillPattern","rgbify","_XLSIcv","RBErr","ct2type","new_ct","workbooks","charts","dialogs","macros","rels","strs","comments","threadedcomments","links","coreprops","extprops","custprops","themes","styles","calcchains","vba","drawings","metadata","people","TODO","xmlns","parse_ct","ctext","Extension","ContentType","PartName","calcchain","sst","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","CORE_PROPS","EXT_PROPS","CUST_PROPS","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","TCMNT","PEOPLE","VBA","get_rels_path","parse_rels","currentFilePath","rel","Type","Target","Id","TargetMode","canonictarget","CT_ODS","parse_manifest","Rn","FEtag","CORE_PROPS_REGEX","parse_core_props","cur","load_props_pairs","HP","TOP","props","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","parse_ext_props","xml","HeadingPairs","TitlesOfParts","custregex","parse_cust_props","toks","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","Application","LastPrinted","CreatedDate","ModifiedDate","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","evert_XLMLDPM","xlml_set_prop","Props","parse_FILETIME","dwLowDateTime","dwHighDateTime","toISOString","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtUnalignedString","parse_VtVecLpwstrValue","ret","parse_VtVecUnalignedLpstrValue","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","headerParts","parse_VtVecHeadingPairValue","cElements","parse_dictionary","CodePage","dict","pid","parse_BLOB","bytes","parse_ClipboardData","Size","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","fail","piddsi","oldpos","parsebool","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet0","rval","FMTID","PSet1","parsenoop2","parslurp","parseuint16","parseuint16a","parse_Bes","parse_ShortXLUnicodeString","cch","current_codepage","fHighByte","parse_XLUnicodeRichExtendedString","fExtSt","fRichSt","cRun","cbExtRst","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","parse_ControlInfo","accel","parse_URLMoniker","extra","url","parse_FileMoniker","cAnti","preamble","ansiPath","unicodePath","parse_HyperlinkMoniker","parse_HyperlinkString","parse_Hyperlink","sVer","displayName","targetFrameName","moniker","oleMoniker","Loc","guid","fileTime","Tooltip","parse_LongRGBA","parse_LongRGB","parse_XLSCell","rw","ixfe","parse_frtHeader","rt","parse_OptXLUnicodeString","parse_XTI","iSupBook","itabFirst","itabLast","parse_RkRec","parse_AddinUdf","udfName","parse_Ref8U","rwFirst","rwLast","colFirst","colLast","parse_RefU","parse_Ref","parse_FtCmo","ot","parse_FtNts","fSharedNote","parse_FtCf","cf","parse_FtSkip","FtTab","parse_FtArray","fts","ft","parse_BOF","BIFFVer","parse_InterfaceHdr","parse_WriteAccess","UserName","parse_WsBool","fDialog","fBelow","fRight","parse_BoundSheet8","hidden","parse_SST","ucnt","Count","Unique","parse_ExtSST","extsst","dsst","parse_Row","miyRw","level","hpt","parse_ForceFullCalculation","fullcalc","parse_RecalcId","parse_DefaultRowHeight","fl","Unsynced","DyZero","ExAsc","ExDsc","parse_Window1","xWn","yWn","dxWn","dyWn","iTabCur","iTabFirst","ctabSel","wTabRatio","Pos","Dim","Flags","CurTab","FirstTab","Selected","TabRatio","parse_Window2","RTL","parse_Pane","parse_Font","dyHeight","parse_LabelSst","isst","parse_Label","biffguess","parse_Format","fmtstr","parse_BIFF2Format","parse_Dimensions","parse_RK","rkrec","rknum","parse_MulRk","rkrecs","lastcol","parse_MulBlank","ixfes","parse_CellStyleXF","patternType","cellStyles","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","icvFore","icvBack","fsxButton","parse_XF","fStyle","parse_Guts","parse_BoolErr","parse_Number","xnum","parse_XLHeaderFooter","parse_SupBook","ctab","sbcch","virtPath","rgst","parse_ExternName","body","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","Name","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_NameCmt","cchName","cchComment","comment","parse_ShrFmla","ref","cUse","parse_SharedParsedFormula","parse_Array","parse_ArrayParsedFormula","parse_MTRSettings","fMTREnabled","fUserSetThreadCount","cUserThreadCount","parse_NoteSh","idObj","stAuthor","parse_Note","parse_MergeCells","merges","cmcs","parse_Obj","parse_BIFF5Obj","cmo","parse_BIFF5OT","grbit","parse_TxO","texts","lastobj","controlInfo","cchText","hdr","parse_HLink","hlink","parse_HLinkTooltip","wzTooltip","parse_Country","parse_ClrtClient","ccv","parse_Palette","parse_XFCRC","cxfs","crc","parse_ColInfo","coldx","parse_Setup","footer","parse_ShtProps","area","parse_Blank","parse_Scl","parse_String","parse_ImData","env","lcb","parse_BIFF2STR","parse_BIFF2NUM","parse_BIFF2INT","parse_BIFF2STRING","parse_BIFF2FONTXTRA","parse_RString","DBF_SUPPORTED_VERSIONS","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_aoa","memo","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","field","hend","sheetRows","dbf_to_sheet","wch","dbf_to_workbook","_RLEN","sheet_to_dbf","ba","aoa","sheet_to_json","headers","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","_f","hb","rout","_n","_s","to_workbook","to_sheet","from_sheet","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","a1_to_rc","write_ws_cols_sylk","rec","wpx","width2px","px2char","write_ws_rows_sylk","px2pt","sheet_to_sylk","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","pf","topic","push_value","po","ETH","encode","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","fuzzyfmla","cellText","cellNF","prn_to_sheet_str","prn_to_sheet","firstbyte","prn_to_workbook","sheet_to_prn","read_wb_ID","OLD_WTF","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","write_INTEGER","write_NUMBER","write_LABEL","book_to_wk3","wb","write_BOF_WK3","write_XFORMAT_SHEETNAME","wsidx","write_NUMBER_17","write_LABEL_16","wscnt","parse_RANGE","parse_cell","parse_LABEL","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","wk1_parse_rc","FuncTab","BinOpTab","argc","argL","argR","args","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","v1","v2","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_SHEETNAMECS","parse_SHEETNAMELP","parse_SHEETINFOQP","parse_XFORMAT","parse_rpr","rpr","font","pass","shadow","outline","strike","uval","family","valign","parse_rs","tregex","rpregex","parse_r","rregex","rend","rs","rs_to_html","parse_rs_factory","nlregex","parse_rpr2","intro","outro","align","r_to_html","sitregex","sirregex","sirphregex","parse_si","html","cellHTML","sstr0","sstr1","sstr2","parse_sst_xml","uniqueCount","parse_BrtBeginSst","parse_sst_bin","hopper_sst","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceVersionInfo","parse_DataSpaceMapEntry","comps","parse_DataSpaceMap","parse_DataSpaceDefinition","parse_TransformInfoHeader","parse_Primary","ename","cmode","parse_EncryptionHeader","AlgID","valid","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncryptionInfo","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","verifier","KeyData","xml_agile","encryptedHmacKey","encryptedHmacValue","encs","uri","parse_RC4CryptoHeader","EncryptionVersionInfo","EncryptionHeader","EncryptionVerifier","parse_RC4Header","EncryptedVerifier","EncryptedVerifierHash","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordDecoded","PasswordByte","Intermediate1","Intermediate2","Intermediate3","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","Ror","Byte","XorRor","byte1","byte2","CreateXorKey_Method1","XorKey","CurrentElement","Char","password","Index","ObfuscationArray","Temp","PasswordLastChar","PadIndex","crypto_DecryptData_Method1","Data","XorArrayIndex","XorArray","Value","crypto_MakeXorDecryptor","parse_XORObfuscation","verificationBytes","insitu","parse_FilePassHeader","Info","parse_FilePass","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rtf_to_workbook","sheet_to_rtf","hex2RGB","rgb2HSL","H6","L2","hsl2RGB","hsl","h6","rgb_tint","hex","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","_MDW","coll","customWidth","DEF_PPI","PPI","XLMLPatternTypeMap","parse_borders","Borders","border","diagonalUp","diagonalDown","parse_fills","Fills","bgColor","indexed","fgColor","parse_fonts","Fonts","bold","italic","underline","condense","extend","vertAlign","scheme","themeElements","clrScheme","parse_numFmts","NumberFmt","formatCode","cellXF_uint","cellXF_bool","parse_cellXfs","CellXf","xf","alignment","vertical","horizontal","textRotation","wrapText","parse_sty_xml","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","parse_BrtFmt","stFmtCode","parse_BrtFont","bls","bCharSet","charset","parse_BrtFill","parse_BrtXF","ixfeParent","ifmt","parse_BrtBorder","parse_sty_bin","hopper_sty","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","parse_themeElements","themeltregex","parse_theme_xml","write_theme","Themes","parse_Theme","dwThemeVersion","themeXML","parse_ColorTheme","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_XFExtGradient","parse_ExtProp","extType","parse_XFExt","cexts","update_xfext","xfext","xfe","parse_BrtMdtinfo","parse_BrtMdb","parse_BrtBeginEsmdb","parse_xlmeta_bin","Types","Cell","metatype","parse_xlmeta_xml","lastmeta","offsets","parse_cc_xml","parse_BrtCalcChainItem$","parse_cc_bin","hopper_cc","parse_xlink_xml","parse_xlink_bin","xlink_parse","parse_drawing","sheet_insert_comments","threaded","author","parse_comments_xml","authors","commentList","authtag","cmnttag","cm","authorId","textMatch","parse_tcmnt_xml","tidx","xml_tcmnt","personId","parse_people_xml","displayname","parse_BrtBeginComment","iauthor","rfx","parse_BrtCommentAuthor","parse_comments_bin","hopper_cmnt","CT_VBA","make_vba_xls","newcfb","newpath","parse_ds_bin","parse_ds_xml","parse_ms_bin","parse_ms_xml","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceAreaRel","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_RgceLocRel","parse_RgceLocRel_BIFF2","cl","rl","parse_PtgArea","parse_PtgArea3d","ixti","parse_PtgAreaErr","parse_PtgAreaErr3d","parse_PtgAreaN","parse_PtgArray","parse_PtgAttrBaxcel","bitSemi","bitBaxcel","parse_PtgAttrChoose","parse_PtgAttrGoto","bitGoto","parse_PtgAttrIf","bitIf","parse_PtgAttrIfError","parse_PtgAttrSemi","parse_PtgAttrSpaceType","parse_PtgAttrSpace","parse_PtgAttrSpaceSemi","parse_PtgRef","parse_PtgRefN","parse_PtgRef3d","parse_PtgFunc","iftab","FtabArgc","Ftab","parse_PtgFuncVar","cparams","tab","parsetab","Cetab","parse_PtgAttrSum","parse_PtgExp","parse_PtgErr","parse_PtgInt","parse_PtgBool","parse_PtgNum","parse_PtgStr","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgName","nameindex","parse_PtgNameX","parse_PtgNameX_BIFF5","parse_PtgMemArea","parse_PtgMemFunc","parse_PtgRefErr","parse_PtgRefErr3d","parse_PtgMemErr","parse_PtgMemNoMem","parse_PtgTbl","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfCol","parse_PtgElfColS","parse_PtgElfColSV","parse_PtgElfColV","parse_PtgElfLel","parse_PtgElfRadical","parse_PtgElfRadicalLel","parse_PtgElfRadicalS","parse_PtgElfRw","parse_PtgElfRwV","PtgListRT","parse_PtgList","coltype","parse_PtgSxName","parse_PtgSheet","parse_PtgEndSheet","parse_PtgMemAreaN","parse_PtgMemNoMemN","parse_PtgAttrNoop","PtgTypes","PtgDupes","Ptg18","Ptg19","parse_RgbExtra","parse_Rgce","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","formula_quote_sheet_name","sname","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","stringify_formula","nameidx","last_sp","fflen","func","lbl","names","xlfn","bookidx","externbook","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","PtgNonDisp","_left","rgcb","parse_XLSCellParsedFormula","parse_FormulaValue","parse_Formula","cbf","shared","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","ods_to_csf_3D","_ssfopts","default_margins","margins","mode","defs","safe_format","fmtid","fillid","raw_rgb","parse_ws_xml_dim","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","svs","parse_ws_xml_sheetviews","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","_merge","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","codeName","CodeName","location","Rel","tooltip","rng","margin","seencol","coli","colm","colM","outlineLevel","sviewregex","Views","zoomScale","zoom","rightToLeft","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","cells","cref","tagr","tagc","sstr","ftag","do_format","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","rslice","cellFormula","___f","_tag","fillId","xlmeta","_r","parse_BrtRowHdr","parse_BrtWsDim","parse_BrtWsFmtInfo","parse_BrtWsProp","above","parse_BrtCellBlank","parse_BrtShortBlank","parse_BrtCellBool","fBool","parse_BrtShortBool","parse_BrtCellError","bError","parse_BrtShortError","parse_BrtCellIsst","parse_BrtShortIsst","parse_BrtCellReal","parse_BrtShortReal","parse_BrtCellRk","parse_BrtShortRk","parse_BrtCellRString","parse_BrtCellSt","parse_BrtShortSt","parse_BrtFmlaBool","parse_BrtFmlaError","parse_BrtFmlaNum","parse_BrtFmlaString","parse_BrtMergeCell","parse_BrtHLink","relId","parse_BrtPane","parse_BrtArrFmla","fAlwaysCalc","parse_BrtShrFmla","BrtMarginKeys","parse_BrtMargins","parse_BrtBeginWsView","parse_BrtDVal","parse_BrtDVal14","parse_ws_bin","ai","af","Names","ws_parse","RR","aii","_d","parse_Cache","nf","parse_chart","csheet","nc","parse_cs_xml","parse_BrtCsProp","parse_cs_bin","cs_parse","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","badchars","check_ws_name","_good","wbnsregex","parse_wb_xml","dname","dnstart","xml_wb","Hidden","Comment","localSheetId","Sheet","Ref","parse_BrtBundleSh","iTabID","strRelID","parse_BrtWbProp","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","filterPrivacy","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","parse_BrtFRTArchID$","ArchID","parse_BrtName","Ptg","parse_wb_bin","hopper_wb","parse_wb","parse_ws","parse_cs","parse_ms","parse_ds","parse_sty","parse_theme","parse_sst","parse_cmnt","parse_cc","parse_xlink","parse_xlmeta","attregexg2","attregex2","xlml_parsexmltag","words","xlml_parsexmltagobj","XLMLFormatMap","xlml_format","xlml_set_custprop","Custprops","oval","safe_format_xlml","process_style_xlml","stag","Interior","ID","parse_xlml_data","csty","sid","StyleID","interiors","UTC","Formula","ArrayRange","xlml_clean_comment","parse_xlml_xml","opening","ishtml","_o","html_to_workbook","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","Workbook","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","Range","parse_fods","Margin","pagemargins","Top","Left","Right","Bottom","bookSheets","bookProps","SSF","parse_xlml","fix_read_opts","parse_compobj","AnsiUserType","AnsiClipboardFormat","Reserved1","UnicodeClipboardFormat","Reserved2","CONTINUE_RT","slurp","RecordType","nextrt","XLSRecordEnum","ll","safe_format_xf","make_cell","parse_workbook","Directory","last_formula","cur_sheet","Preamble","lastcell","last_cell","cmnt","rngC","rngR","temp_val","country","XFs","palette","get_rgb","getrgb","process_cell_style","pcs","xfd","addcell","file_depth","afi","rrtabid","lastuser","winlocked","wtf","objects","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","last_lbl","seen_codepage","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","ExternCount","tmpri","fakebs8","_fr","_fc","_fe","_arraystart","_j","_ixfe","b4idx","b2idx","TxO","ImData","noteobj","Strings","Encryption","Metadata","Country","PSCLSID","SI","DSI","UDI","parse_xls_props","DocSummary","Summary","parse_xlscfb","CompObj","WorkbookP","bookVBA","vbaraw","bookFiles","html_to_sheet","mtch2","hd","midx","colspan","rowspan","_t","make_html_row","editable","HTML_BEGIN","HTML_END","book_new","book_append_sheet","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","getElementsByTagName","is_dom_element_hidden","elts","hasAttribute","getAttribute","innerHTML","Aelts","Aelti","parse_dom_table","table_to_book","get_computed_style","get_get_computed_style_function","getPropertyValue","ownerDocument","defaultView","getComputedStyle","parse_text_p","fixed","number_formats_ods","day","month","year","hours","minutes","seconds","era","quarter","parse_content_xml","NFtag","NF","sheetag","rowtag","ctag","textp","textpidx","textR","row_ol","number_format_map","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","rptR","rpt","nrange","ptp","href","parse_ods","master_styles","wso","u8_to_dataview","DataView","u8str","u8","u8concat","u8a","popcnt","readDecimal128LE","mantissa","parse_varint49","varint","varint_to_i32","i32","parse_shallow","mappa","parse_iwa_file","_a","messages","mi","merge","parse_snappy_chunk","chunks","decompress_iwa_file","parse_old_storage","rsst","dv","getUint32","data_offset","ieee","getFloat64","parse_new_storage","d128","parse_cell_storage","parse_TSP_Reference","pb","parse_TST_TableDataList","rtp","rtpref","mtype","tswpsa","parse_TST_TileRowInfo","_b","_c","_g","_h","_k","_l","_m","wide_offsets","used_storage_u8","used_storage","used_storage_offsets","getUint16","parse_TST_Tile","nrows","parse_TST_TableModelArchive","store","tile","tl","_tile","parse_TST_TableInfoArchive","tableref","parse_TN_SheetArchive","shapeoffs","parse_TN_DocumentArchive","sheetoffs","root2","parse_numbers_iwa","packets","packet","docroot","iwam","fix_opts_func","fix_opts","get_sheet_type","safe_parse_wbrels","wbrels","pwbr","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","tcomments","strip_front_slash","_zip","dir","xlsb","binname","link","propdata","pluck","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","Deps","Styles","bin","parse_xlsxcfb","dsm","seds","einfo","decrypt_agile","decrypt_std76","read_cfb","read_zip","read_plaintext","read_plaintext_raw","read_utf16","bstrify","read_prn","readSync","ab","vu","foo","make_json_row","defval","isempty","enumerable","__rowNum__","rawNumbers","outi","header_cnt","skipHidden","blankrows","qreg","make_csv_row","txt","forceQuotes","sheet_to_csv","endregex","strip","sheet_to_txt","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","ws_get_cell_stub","json_to_sheet","RC","wb_sheet_idx","sh","roll","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","dynamic","rngstr","table_to_sheet","sheet_to_row_object_array","sheet_get_cell","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","getAllSheetsFromXLS","workbook","sheetNames","sheetName","parseDataSheet","keepUndefined","variableUnits","containsUndefined","checkVariables","parsed","targetVariable","calculateResidual","sampleMass","relativeResidual","massLoss","relativeMassLoss","createLabeledRecords","Map","stringValue","groups","getMetaTGA","labeledRecords","holder","parseHolder","initialValue","parseResults","mass","nextLine","middlePoint","inflectionPoint","improveRelativeResult","firstZone","ratio","percentData","parseCurveValues","tgaParseMettlerToledo","arrayBuffer","part","parsedCurveValues","improveTGALabeledRecords","dataValues","tgaParseTAInstrumentsXLS","xlsSheets","xlsSheet","getVariables","getMeta","datum","nameStartChar","nameChar","nameRegexp","regexName","getAllMatches","regex","allmatches","startIndex","isName","isExist","isEmptyObject","arrayMode","getValue","util","defaultOptions","allowBooleanAttributes","unpairedTags","validator","validate","xmlData","tags","tagFound","reachedRoot","readPI","tagStartPos","readCommentAndCDATA","closingTag","tagName","validateTagName","getErrorObject","getLineNumberForPosition","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","afterAmp","validateAmpersand","isWhiteSpace","char","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","lineNumber","getIgnoreAttributesFn","ignoreAttributes","pattern","EOL","toXml","jArray","indentation","indentBy","arrToStr","jPath","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","textNodeName","tagText","isStopNode","tagValueProcessor","replaceEntitiesValue","cdataPropName","commentPropName","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","attrMap","attr","attrVal","attributeValueProcessor","suppressBooleanAttributes","attributeNamePrefix","stopNodes","textValue","processEntities","entity","orderedJs2Xml","buildFromOrderedJs","attributesGroupName","preserveOrder","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","build","jObj","arrayNodeName","j2x","ajPath","buildTextValNode","buildAttrPairStr","newval","arrLen","listTagVal","listTagAttr","buildObjectNode","Ks","closeTag","tagEndExp","piClosingChar","fromMettlerToledo","cheminfo","fromNetzsch","inData","temperature","parsePerkinElmerAscii","sections","getSections","methodSteps","steps","currentSection","currentStep","description","dataHeaders","rest","parseDataBlockHeader","parseDataHeader","dataParts","firstLineParts","secondLineParts","combinedHeader","fromPerkinElmer","stepsInfo","stepVariable","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","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","status","readyState","responseText","getResponseHeader","statusText","LocalChunkSize","FileReader","webkitSlice","mozSlice","FileReaderSync","readAsText","pause","resume","on","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","removeListener","skipEmptyLines","DefaultDelimiter","transformHeader","dynamicTypingFunction","abort","delimiter","RECORD_SEP","UNIT_SEP","successful","bestDelimiter","delimitersToGuess","getCharIndex","setTimeout","fastMode","escapeChar","BAD_DELIMITERS","linebreak","truncated","renamedHeaders","userError","userStep","userChunk","userComplete","terminate","worker","WORKERS_SUPPORTED","NODE_STREAM_INPUT","download","readable","URL","webkitURL","BLOB_URL","createObjectURL","Blob","Worker","onmessage","config","unparse","quotes","escapeFormulae","BYTE_ORDER_MARK","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","each","inputElem","instanceConfig","before","action","reason","fromPerkinElmerCSV","Papa","Time","parseTAInstruments","metaLines","allDataLines","parseMeta","dataLines","balancePurgeFlow","samplePurgeFlow","splitTrim","instrument","instrumentSerial","sampleName","weightUnit","controls","furnaceType","operator","runSerial","procName","dataStart","fromTAInstruments","fromTAInstrumentsExcel"],"mappings":"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L,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CAC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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,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,173]}